Erreur "Expression must have integral type"

Résolu/Fermé
maniqk - 26 juil. 2013 à 09:38
 maniqk - 26 juil. 2013 à 13:13
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...

Merci d'avance !
maniqk

3 réponses

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...
1