1- Tes allocations sont systématiquement fausses
1 2 3 4 5
| double complex **matrice = malloc(dimension * sizeof(double complex *)); // il faut allouer dynamiquement pour accéder à toute la mémoire
for (i = 0; i < dimension; i++)
{
matrice[i] = malloc(dimension * sizeof(double complex));
} |
2- Lorsque je vois le code de boulangerOuvertLisse(), quelque chose m'interpelle :
zgemm_ (&TRANSA, &TRANSB, &dimension, &dimension, &dimension, &alpha, &(fourier[0][0]), &dimension, &(blocs[0][0]), &dimension, &beta, &(matrice[0][0]), &dimension);
Je ne connais pas la fonction zgemm_ () mais les arguments &(fourier[0][0]), &(matrice[0][0]) et &(blocs[0][0]) m'intriguent : à partir de ces adresses, et compte tenu de la méthode d'allocation, il est impossible d'avoir accès à tous les éléments des tableaux mais seulement aux dimension éléments commençant aux adresses fourier[0], matrice[0] et blocs[0] (tous les éléments ne sont pas consécutifs en mémoire, ils sont consécutifs par blocs de dimension éléments)
Partager