Variable d'induction, réduction de force - C - Programmation
Marsh Posté le 03-04-2006 à 08:53:16
 for(i = min ; i <= max; i=i+3) 
 { 
    t = a * i;   
 } 
 
=> 
 
int t=min*a, delta_t=a*3; 
 
 for(i = min ; i <= max; i=i+3) 
 { 
    t += delta_t;  
    ... 
 }  
 
 
Marsh Posté le 03-04-2006 à 09:39:23
| bjone a écrit : for(i = min ; i <= max; i=i+3)  | 
 
 
 
Oui pardon j'avais oublié de caler 3*a dans une variable. 
 
Mais genre pour q = q + b * t; ? Je peux faire comment ?
Marsh Posté le 03-04-2006 à 10:42:08
alors attends je réfléchi si c'est possible de faire quelque chose: 
 
int q=....., b=.... 
 
for(i = min ; i <= max; i=i+3) 
 { 
    t += delta_t;   
    q = q + b * t;  
    ... 
 }  
 
q = q + b * t;  
 
q+=b*t; 
 
=> 
 
int t = min*a,  delta_t =a*3; 
 
int bt = b*t; 
 
int delta_bt =  delta_t * b; 
 
for( i = min ; i <= max ; i=i+3 ) 
 { 
    t += delta_t;   
    bt + = delta_bt; 
    q += bt;  
    ... 
 }  
 
je pense que ça doit être bon.... 
Marsh Posté le 03-04-2006 à 10:54:46
pareil pour 
r = r + c * p; 
 
tu dois pouvoir déterminer une forme: 
r+=delta_r; 
ou 
cp += delta_cp; 
r += cp;
Marsh Posté le 03-04-2006 à 01:36:41
Hello,
Voila je suis entrain d'essayer de comprendre certaines optimisations possibles sur une boucle
- variable d'induction simple : dont la valeur suit une progression arithmetique dans une boucle par exemple i = i + 10
- variable d'induction dépendante : dont le calcul dans la boucle est une fonction linéaire d'une variable d'induction simple i : i * k1 + k2
- réduction de force : si j= c1 * i + c2 et que i est une variable
d'induction simple i = i + c3 alors j progresse de c1 * c3
Bon alors voila un code on s'en fout de ce qu'il fait :
A priori ca à l'air bon ...
Bon ca c'était pour éviter de faire la multiplication a * i .
Par contre pour eviter les autres multiplications je sais pas si c'est possible ...
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !