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 !