Multiplication matricielle - C - Programmation
Marsh Posté le 05-10-2006 à 17:16:15
ReplyMarsh Posté le 05-10-2006 à 17:19:21
_darkalt3_ a écrit : =+ ? |
Je suis vraiment tête en l'air!
Je viens de me remotiver à refaire du C après 6 mois d'inactivité C'est impressionant tous les automatismes que j'ai perdu!
Merci beaucoup sinon je vais voir ça.
Edit: Oui c'est bon c'est ça. Tu m'a évité de perdre beaucoup de temps.
Code :
|
Marsh Posté le 05-10-2006 à 18:47:06
juste une remarque en passant : en pratique il est souvent plus rapide d'effectuer la sommation sur une variable temporaire qu'on recopie après dans la case de la matrice (ne me demande pas pourquoi, je sais pas vraiment)
Code :
|
je sais pas si ça t'intéresse, mais au cas où...
Marsh Posté le 05-10-2006 à 19:31:02
oui, car la somme se fait dans une variable temporaire qui a toutes les chances d'être dans un registre.
au passage, une déclaration
register int tmp = 0;
serait + explicite
Marsh Posté le 06-10-2006 à 10:46:04
jesus_christ a écrit : oui, car la somme se fait dans une variable temporaire qui a toutes les chances d'être dans un registre. |
Il y a aussi il me semble le fait que si resultat est un pointeur, ton compilo fait extrêment gaffe aux problèmes d'aliasing et du coup certaines optimisations ne peuvent pas être faites.
Marsh Posté le 06-10-2006 à 19:32:08
exact, il vaut mieux déréférencer, calculer puis remettre en mémoire
Marsh Posté le 06-10-2006 à 19:37:04
Ca risquerais pas un ptit peut de faire mal si les entiers sont un poil trop gros ?
( ce qui va vite quand on fait la somme de plusieurs produits )
Marsh Posté le 05-10-2006 à 17:13:33
J'essaye de faire un programme pour multiplier des matrices carrées.
Pour ce faire j'utilise la ligne suivante dans une boucle:
Cela équivaut à la formule:
J'utilise cette ligne dans une boucle (le curseur allant de 0 à la taille de la matrice-1). Je répète tout ça pour chaque "case" de la matrice du résultat biensûr.
Ca donne:
Le problème est que ça ne fonctionne pas comme vous vous en doutez. Mais je voudrai juste savoir si vous auriez fait la même chose que moi pour la formule du dessus?
Merci pour votre aide