Décomposition minimale - C++ - Programmation
Marsh Posté le 29-01-2006 à 18:47:57
Salut
Pour ta décomposition, n'aurais-tu pas intérêt à décomposer en utilisant les puissances de 2 les plus proches à chaque fois ?
style ce genre d'algo :
Code :
|
Il est évident qu'en C, on doit pouvoir optimiser la fonction plus_proche en lui faisant renvoyer le reste et le signe.
On doit pouvoir aussi trouver le plus proche en testant les bits à 1 contigus à partir des poids les plus forts.
style
pour 15 on prend 16
car 15 = 8 * 1 + 4 * 1 + 2 * 1 + 1 * 1
les bits de 8 et 4 sont contigus et ont la valeur 1
alors que pour 11 on prend 8
car 11 = 8 * 1 + 4 * 0 + 2 * 1 + 1 * 1
les bits de 8 et 4 sont contigus et n'ont pas la même valeur
Marsh Posté le 25-01-2006 à 23:21:06
Hello,
Je galere sur un truc qui à l'air con
Mon but est de générer du code MIPS pour permettre de multiplier un nombre entier par une
valeur m avec un minimum de décalages, d'addition et de soustractions.
Je m'entraine d'abord à produire des strings lisibles pour l'instant ...
Exemples :
i * 6 = i * 4 + i * 2 = i << 2 + i << 1 OK
i * 7 = i * 8 - i = i << 3 - i OK
...
Donc il ne suffit pas de décomposer en base 2 car i * 15 est plus efficacement calculé par i * 16 - i
J'ai quelques cas de base qui marchent quand même.
i * 10 = i << 3 + i << 1
i * 17 = i << 4 + i
...
ET la ça mird
i * 24 = i << 4 + i << 1 + i << 1 + i << 1 + i << 1
au lieu d'un simple
i * 24 = i << 4 + i << 3
Une idée quelqu'un ?
EDIT :
La c'est deja un peu mieu mais bon ca beug pour 25
Message édité par Chronoklazm le 26-01-2006 à 03:31:34
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !