Calculs en virgule flottante
Instructions
Utilisation
Exemple
Principe
Les calculs en virgule flottante son
nécessaires pour l'évaluation des fonctions mathématiques
et il est donc indispensable d'en disposer dans tout système
informatique qui se respecte.
J'ai choisi le format normalisé
IEEE décliné en simple précision dans le
mini système et en double précision dans son grand
frère :
- IEEE simple précision
(+/-5,8774e-39 à +/-170,14e36)
- le nombre est codé sur 32
bits:
- - bit 31 pour le signe S (0 pour
un nombre positif),
- - bits 30 à 23 pour l'exposan
E (8 bits) avec un biais de 127,
- - bits 22 à 0 pour la mantisse
M (23 bits) sachant que le bit 23 toujours à 1 est supprimé.
- Si E=255 et M#0 alors ce n'est pas
un nombre à virgule flottante.
- Si E=255 et M=0 alors c'est l'infini
avec le signe de S.
- Si 0<E<255 alors le nombre
est normalisé.
- Si E=0 et M#0 alors le nombre es
dénormalisé.
- Si E=0 et M=0 alors le nombre es
nul.
- IEEE double précision
(+/-11,125e-309 à +/-89,884e306)
- le nombre est codé sur 64
bits (2 niveaux de pile sur mon système):
- - bit 63 pour le signe S (0 pour
un nombre positif),
- - bits 62 à 52 pour l'exposan
E (11 bits) avec un biais de 1023,
- - bits 51 à 0 pour la mantisse
M (52 bits) sachant que le bit 52 toujours à 1 est supprimé.
- Si E=2047 et M#0 alors ce n'es
pas un nombre à virgule flottante.
- Si E=2047 et M=0 alors c'est l'infini
avec le signe de S.
- Si 0<E<2047 alors le nombre
est normalisé.
- Si E=0 et M#0 alors le nombre es
dénormalisé.
- Si E=0 et M=0 alors le nombre es
nul.
Les algorithmes des fonctions mathématiques
sont basés sur ceux présentés dans le livre
suivant:
- "implantation des fonctions
usuelles en 68000"
de François BRET aux éditions MASSON.
Certaines instructions sont des développements
limités uniquement utilisés pour l'élaboration
des fonctions mathématiques.
Instructions
ATTENTION:
"flottant" dans la liste des paramètres indique
un nombre de 32 bits donc 1 seul niveau de pile pour le mini système,
et un nombre de 64 bits donc 2 niveaux de pile pour son grand
frère.
flottant FNEGATE -flottant
Valeur opposée (inversion de S)
flottant FABS abs(flottant)
Valeur absolue (mise à 0 de S)
exposant,n* NORM flottant
Normalisation de la mantisse d'un nombre
*: n occupe 2 niveaux de la pile en IEEE
double précision
flottant1,flottant2 F+ flottant1+flottant2
Addition
flottant1,flottant2 F- flottant1-flottant2
Soustraction
flottant1,flottant2 F* flottant1*flottant2
Multiplication
flottant1,flottant2 F/ flottant1/flottant2
Division
flottant INT n
Conversion flottant vers entier signé
(32 bits)
n UFLOAT flottant
Conversion entier signé (32 bits)
vers flottant
flottant,n PUISSANCE flottant^n
Elévation du flottant à la
puissance n
flottant1,flottant2 F/MOD flottant1-(n*flottant2),n
Calcul du reste et du quotient (entier signé
32 bits) de la division de 2 flottants
flottant,adresse FCONVERT flottant',adresse'
Conversion de la chaîne de caractère
pointée par adresse en nombre flottant jusqu'au premier
caractère non convertible
flottant <##F#> adresse,n
Conversion d'un flottant en chaîne
de n caractères pointée par adresse
6 chiffres significatifs en simple précision
et 12 en double précision
flottant F. -
Affichage d'un flottant sur la sortie terminal
flottant FSQRT flottant'
Extraction de la racine carrée d'un
flottant
flottant FEXP0 flottant'
Calcul de l'exponentielle d'un flottant par
développement limité
flottant FLN0 flottant'
Calcul du logarithme népérien
d'un flottant par développement limité
flottant FEXP flottant'
Calcul de l'exponentielle d'un flottant
flottant FLN flottant'
Calcul du logarithme népérien
d'un flottant
- FPI flottant
Constante PI
flottant FATAN0 flottant'
Calcul de l'arc-tangente d'un flottant par
développement limité
arc,y,x,ki,fatan(ki) AJUSTEXY
arc',y',x'
Sous programme pour calcul de la tangente
de l'angle moitié
flottant FTANU flottant'
Calcul de la tangente de l'angle moitié
flottant FTAN flottant'
Calcul de la tangente
flottant FSIN flottant'
Calcul du sinus
flottant FCOS flottant'
Calcul du cosinus
flottant FATAN flottant'
Calcul de l'arc-tangente
flottant FASIN flottant'
Calcul de l'arc-sinus
flottant FACOS flottant'
Calcul de l'arc-cosinus
Utilisation
En ce qui concerne le mini système,
les instructions de calcul en virgule flottante s'utilisent comme
celles des nombres entiers. Seul le format change.
Pour le système principal,
il ne faut pas oublier que chaque nombre flottant se décompose
en 2 nombres sur la pile. Il faut donc prendre certaines précautions
pour les manipuler.
L'instruction "DUP" devra
être remplacée par la suite "OVER OVER".
L'instruction "DROP" devra
être remplacée par la suite "DROP DROP".
On peut imaginer la création
des instructions suivantes:
: FDUP OVER OVER ;
: FDROP DROP DROP ;
A vous d'imaginer l'équivalen
des autres instructions de manipulation de la pile pour les nombres
flottants 64 bits...
Exemple
Pour illustrer cette présentation,
voici le résultat du calcul de 3 valeurs souvent utilisées
en mathématique (IEEE double précision):
la constante PI:

la racine carrée de
2:

la constante e:
