1

Comment pourrais-je faire pour multiplier une expression par 80 en décalant les bits? (C'est pour la projection de mon moteur 3D smile )
www.wikio.fr/user1921&info=comments

2

80=64+16
64=2^6
16=2^4
vala
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

3

16 + 64 = 80, on est d'accord ?
Et bien tu multiplies par 16, puis par 64, et tu additionnes smile

Mais saches que TIGCC optimiserait lui-même la multiplication par 80 : en écrivant a= b*80; il génèrerait un code équivalent à a= b*16; a+= a*4;
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

4

Posts croisés wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

5

yop
mais si il fait un moteur 3D et qu'il ne sait pas optimiser une multiplication par 80 lui-même, je lui souhaite bonne chance smile
et aussi il devrait plutôt le faire en assembleur, et dans ce cas TIGCC n'optimisera pas roll
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

6

On peut pas aussi faire b=a*80 en faisant:
tmp=a*16
b=tmp+4*tmp
?
avatar
;)

7

mais si il fait un moteur 3D et qu'il ne sait pas optimiser une multiplication par 80 lui-même, je lui souhaite bonne chance

lol... Oui mais il n'y a pas grand chose que je sais faire. Le pire c que j'ai cherché un peu avant d'aller sur le forum mais j'avais pas penser au 16+64 ! lol

Mon moteur 3D il est fini depuis 2 mois (du moins je ne pense pas aller plus loin) et il est assez puissant. Pas autant que la mythique Trinity Engine de Sbibi mais je ne me suis pas mis à l'asm et puis il mes rotation ne sont pas fait avec des matrices mais comme je fais uniquement une roation autour des y ça gène pas trop.
Et puis par ex avec un perso de 68 vertices, 130 triangle avec flat filling le moteur tourne à 11-20 Fps (suivant si on le perso occupe tout l'écran ou la moitié) sur Vti (hw1).

Et j'ai bcp, bcp optimisé le moteur (par ex j'utilise autant que je peux les shorts et le travail le moins possible avec des tableau) et jusqu'à mnt le seul truc qui me reste plus que ces 2 multiplication lors de la projection. Au pire je pourrais remplacer par 64 ou 128 mais c pas génial.

Et puis si TIGCC optimise ça tout seul alors g plus rien à faire smile Mais je vais qd même faire un bench.

Ah oui ! Je sais pourquoi je n'y ai pas penser : parce-que en additionnant et bien il faut lire deux fois la variable et dans ce cas c peut-être pas plus rapide non ?
Parce-que si on fait (sin(mavar))<<4 + (sin(mavar))<<6 c'est pas plus rapide que de faire sin(mavar) * 80. Bon évidement il faut être pas bien malin pour ne pas utiliser de table à la place des fonction sin et cos, mais bon passons. wink

En tout cas merci bien pour vos réponses ! smile
www.wikio.fr/user1921&info=comments

8

Raphaël
a écrit : Pas autant que la mythique Trinity Engine de Sbibi



hum ca fait tjrs plaisir ms bon, ce truc la est completement a l'abandon grin
(polite va me taper grin)
et c'est un moteur assez general, qui supporte plein de truc, en clair il est pas adapte aux ti, meme si il tourne pas [trop] mal dessus... par exemple ton optimisation de la projection, moi j'ai pas fait ca, j'ai laisse une formule generale pour pouvoir changer le FOV a la volee pdt que le moteur tourne, y a plein de trucs comme ca, qui font aussi qu'il pourrait etre bcp + rapide, mais avoir des possibilites + restreintes...
parce-que en additionnant et bien il faut lire deux fois la variable et dans ce cas c peut-être pas plus rapide non ?


ca a la rigueur tu mets "register" devant la declaration de ta var et c bon...

register short temp_sin;

temp_sin = sin[mavar];
temp_sin <<= 4;
temp_sin += (temp_sin << 2);

In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

9

J'allais le dire, il ne faut surtout pas écrire a= (sin[mavar] << 4) + (sin[mavar] << 6) ! C'est une anti-optimisation :/
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

10

BiHi a écrit :
On peut pas aussi faire b=a*80 en faisant:
tmp=a*16
b=tmp+4*tmp ?

Oui, et c'est probablement ce qu'il y a de mieux (à condition d'utiliser des shifts pour *16 et 4*, évidemment!). C'est aussi ce que donnera TIGCC normalement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

bah dans ce cas, tmp sert a rien...
ca fait une var de plus qui sert pas, tigcc l'optimise aussi?
b = a << 4;
b += (b << 2);
?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

12

sBibi a écrit :
bah dans ce cas, tmp sert a rien...
ca fait une var de plus qui sert pas, tigcc l'optimise aussi?
b = a << 4;
b += (b << 2); ?

Normalement oui, mais tu as raison.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

(x<<2+x)<<4;
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

14

ah oue, aussi... ms ca revient au meme smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

15

oups, j'avais pas lu le topic jusqu'au bout smile)
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!