Bonjour,
Le message d'erreur du titre est affiché avec le code suivant :
void LU_simple(float *tableau, int nombreLignes, float nombreColonnes){
int i = 0, j = 0, k = 0, l = 0;
__x128_t a,b;
float var1 = nombreColonnes/4;
int var2 = var1;
int var3 = nombreColonnes - 4*var2;
while(k < nombreColonnes){
for(l = k; l<nombreColonnes-1 ; l++){
j = 0;
b = _fto128(tableau[k*nombreColonnes+(l+1)],tableau[k*nombreColonnes+(l+1)],tableau[k*nombreColonnes+(l+1)],tableau[k*nombreColonnes+(l+1)]);
while(j<=var2){
if(4*j+4 < nombreColonnes){
a = _fto128(tableau[(j+4)*nombreColonnes+k],tableau[(j+3)*nombreColonnes+k],tableau[(j+2)*nombreColonnes+k],tableau[(j+1)*nombreColonnes+k]);
tableau[(4*j+1)*nombreColonnes+(l+1)] -= _get32f_128(_qmpysp(a,b),0);
tableau[(4*j+2)*nombreColonnes+(l+1)] -= _get32f_128(_qmpysp(a,b),1);
tableau[(4*j+3)*nombreColonnes+(l+1)] -= _get32f_128(_qmpysp(a,b),2);
tableau[(4*j+4)*nombreColonnes+(l+1)] -= _get32f_128(_qmpysp(a,b),3);
j++;
}
else{
for(i = 0; i < var3; i++){
tableau[(4*var2+i+1)*nombreColonnes+(l+1)] -= tableau[(4*var2+(i+1))*nombreColonnes+k]*tableau[k*nombreColonnes+(l+1)];
// J'ai enlevé ici toutes les accolades fermantes pour gain de place sur le forum
La fonction _fto128(float,float,float,float) me rassemble 4 floats en une seule variable de 128 bits. La fonction _get32f_128() récupère 32 bits d'une variable de 128 bits (pour récupérer mes valeurs) et la fonction _qmpysp(a,b) multiplie a et b.
J'ai donc le message d'erreur qui s'affiche pour chaque instruction où il y a l'une de ces fonctions. Cependant, j'ai aussi fait ceci dans un autre projet, avec le code suivant, et là pas d'erreur :
int main(){
float a1 = 30.5; float b1 = -5.3; float c1 = 3.1; float d1 = 1.5;
float a2 = 0.5; float b2 = 2.3; float c2 = -9.0; float d2 = 3.5;
__x128_t premier = _fto128(a1,b1,c1,d1);
__x128_t deuxieme = _fto128(a2,b2,c2,d2);
__x128_t resultat = _qmpysp(premier,deuxieme);
float A,B,C,D;
A = _get32f_128(resultat,0);
B = _get32f_128(resultat,1);
C = _get32f_128(resultat,2);
D = _get32f_128(resultat,3);
printf("A = %f, B = %f, C = %f, D = %f",A,B,C,D);
return 0;
}
Si quelqu'un a eu la motiv de tout lire, voit il la différence entre ces deux programmes ? Je ne vois pas pourquoi l'un toune et pas l'autre...
Hm ok dommage que je puisse pas supprimer le post :/
C'était juste à côté des arguments de mon tableau, il faut forcément un int dedans et il n'aime pas le "float nombreColonnes" qui est en argument dans la fonction !
Problem solved...