Exponentielle et Logarithme |
Fonctions élémentaires |
On réalise les fonctions Exponentielle, Logarithme, Sinus, Cosinus et Arc tangente avec des additions/soustractions et des décalages fixes. Le décalage fixe est de coût et délai négligeable si l'opérateur est câblé. Les additions/soustractions sont sans propagation de retenue, donc à délai constant.
|
De la pesée du pain à l'exponentielle |
Supposons que on veut calculer X = exp ( Y ). On dispose d'une balance, d'un pain dont le poids est justement Y et enfin d'une série de poids de valeur log(1 + 2-j ). La pesée nous donne le résultat cherché sous forme d'un produit de rationnels (2j + 1) / 2j .Chacune de ces multiplications se réduit à une addition et un décalage. |
Division "SRT" pour l'exponentielle |
On remplace la balance par un diviseur "SRT" dont voici le "diagramme de Robertson". Un poids sur le plateau de droite (celui du pain) change sa valeur en -log(1 – 2-j ). Remarquez que le '0' est nécessaire car sans lui il y aurait un trou.
|
Diviseur "SRT pour l'exponentielle |
Le dividende Y (en haut) est dans l'intervalle ] -1.0 , +1.0 [ . Les constantes log(1 + 2-j ) et -log(1 – 2-j ) entrant dans les cellules "tail" sont câblées . Il y a donc 4 variantes de la cellule "tail" fonction des valeurs de 2 bits. |
Cellule de tête du diviseur "SRT" pour l'exponentielle |
Chaque qj est choisi par une cellule "head" en fonction de
|
Suite de multiplications |
La suite de multiplications conditionnelles par 1, par (1 + 2-j ) ou par (1 – 2-j ) nécessite une seule propagation de retenue finale grâce à des additionneurs en "CS" et des décalages câblés. Les additions en "CS" sont tronquées à 2 n chiffres, dont trois avant la virgule. Le troisième chiffre poids fort ( tout à gauche ) est le signe. Bien que les résultats partiels soient tous positifs, exécuter des soustractions en "CS" entraîne un signe parfois non résolu. Le résultat final (en bas) doit être traduit de "CS" en binaire par une addition (avec propagation). La fenêtre en bas permet de comparer le produit "vraie" des multiplications (sans troncature) au produit avec troncature. |
Cellule "ME" |
La cellule "ME" est une variante de la cellule d'addition "CS" avec en plus une entrée "aj" pour contrôler l'addition ou bien la soustraction. Observer que l'activité de la retenue entrante "e" ne se propage pas vers la retenue sortante "h".
|
Exemple numérique de division |
Ce tableau montre les restes partiels du diviseur "SRT" pour le calcul d'exponentielle. La fenêtre du bas permet de comparer la valeur "vraie" de l'exponentielle au produit de multiplications par (1 + 2-j ) ou par (1 – 2-j ). |
Exemple numérique de conversion |
Ce tableau montre les résultats partiels des multiplications par (1 + 2-j ) ou par (1 – 2-j ) effectués par des additions sans propagation tronqués. La fenêtre du bas permet de comparer le produit "vraie" des multiplications (sans troncature) au produit avec troncature. |
Extension du domaine | Le circuit précédent fonctionne pour Y dans ] -1 , +1 [ . Pour l'exponentielle d'un nombre Y quelconque, on écrit Y = Q*log(8) + R, où Q est le quotient entier de la division de Y par log(8) et R < log(8) < 1. Alors exp(Y) = 8Q * exp(R) = 23Q * exp(R). Comme exp(R) < 1, cette exponentielle est calculable par le circuit précédent. |
Logarithme et exponentielle |
![]() Le même opérateur calcule Logarithme ou d'Exponentielle avec des additions/soustraction (c'est la même opération), des décalages et des constantes. Les constantes sont log(1 + 2-j ) et -log (1 – 2-j ) et les chiffres q j Î{ '-1' , '0' , '1' }. Cette souplesse dans le choix des chiffres, qui fera malheureusement défaut pour Sinus et Cosinus, permet d'éviter la propagation de retenue (sauf pour l'addition finale). |