Fonctions de manipulation de réels

new art 11


Le premier argument, noté x de toutes ces fonctions est un réel quelconque.
Un nombre réel x est représenté en machine (de façon approchée) par sa mantisse m (la suite des chiffres ck dans la base de la numération interne b, avec c1 different de 0) et son exposant e. La valeur de l'exposant est telle, que . Ce codage est complété par un bit de signe. Par convention, zéro s'écrit avec e=0.
Une valeur approchée d'un réel x correspond au modèle

p est le nombre de chiffres de la mantisse dans la base b (b est égale en général à 2 ou 16).
Ce mode de représentation est appelé virgule flottante. Il se caractérise par la précision de la représentation et le domaine des valeurs couvert.



Fonctions dissequant un réel


exponent (x)

exposant catégorie: D arguments: r résultat: i

Renvoie l'exposant e (du type entier standard) de la représentation interne de la valeur de x (de type réel quelconque). Si x est égal à 0, le résultat est 0.


fraction (x)

mantisse catégorie: D arguments: r résultat: r

Renvoie la mantisse m (la partie fractionnaire) de la représentation interne de la valeur de x. Le résultat est du même type et variante que x (réel) et vaut m=x* b-e.


rrspacing (x)

valeur absolue de la mantisse catégorie: D arguments: r résultat: r

Renvoie la valeur absolue (un réel de même variante que x) de la mantisse m considérée comme un nombre entier, soit . Ce nombre est appelée aussi la "réciproque" de l'espacement relatif des réels au voisinage de x (p représentant le nombre de bits utiles de la mantisse, le bit de signe non compris).


Exemples:

exponent (0.0) vaut 0
exponent (4.0) vaut 3

fraction (0.0) vaut 0.0
fraction (4.0) vaut 0.5

rrspacing (0.0) vaut 0.0
rrspacing (4.0) vaut 8.3886080E+06

exponent (-10.0) vaut 7
exponent (1024.0) vaut 10
fraction (-10.0) vaut -0.7812500
fraction (1024.0) vaut 0.5

rrspacing (-10.0) vaut 1.3107200E+07
rrspacing (1024.0) vaut 8.3886080E+06



Fonctions d'interrogation sur le voisinage d'un réel


nearest (x, s)

réel le plus proche catégorie: D arguments: r,r résultat: r

Fournit le réel (de même variante que x) exactement représentable dans le type de x qui soit le plus proche de x dans le sens indiqué par le signe de s. Le paramètre s doit être différent de zéro. On obtient le réel le plus proche inférieur si s < 0, et le plus proche supérieur si s > 0.


spacing (x)

écart entre deux réels voisins catégorie: D arguments: r résultat: r

Renvoie l'écart absolu (l'espacement absolu) entre deux réels successifs au voisinage de x. Le résultat est du même type que x (variante comprise). On obtient l'écart entre les deux réels représentables les plus proches de x c'est à dire be-p ou tiny(x) si x=0.


Exemples:

nearest (0.0, 1.0) vaut 1.4012985E-45 nearest (-2.0, 1.0) vaut -2.0000002
spacing (0.0, 1.0) vaut 1.1754944E-38 spacing (-2.0, 1.0) vaut 2.3841858E-07
nearest (0.0, -1.0) vaut -1.4012985E-45 nearest (-2.0, -1.0) vaut -1.9999999
spacing (0.0, -1.0) vaut 1.1754944E-38 spacing (-2.0, -1.0) vaut 2.3841858E-07



Fonctions de modification


scale (x, i)

mise à l'échelle de la valeur catégorie: D arguments: r,i résultat: r

Renvoie la valeur (un réel de même variante que x) de la quantité x*bi (i est d'un type entier).


set_exponent (x, i)

mise à l'échelle de la mantisse catégorie: D arguments: r,i résultat: r

Renvoie la valeur (un réel de même variante que x) de la quantité m*bi =x* bi-e (un réel ayant la même mantisse que x, mais l'exposant i).


Exemples:

scale (2.0, -2) vaut 0.5 set_exponent (2.0, -2) vaut 0.125
scale (2.0, -1) vaut 1.0 set_exponent (2.0, -1) vaut 0.25
scale (2.0, 0) vaut 2.0 set_exponent (2.0, 0) vaut 0.5
scale (2.0, 1) vaut 4.0 set_exponent (2.0, 1) vaut 1.0
scale (2.0, 2) vaut 8.0 set_exponent (2.0, 2) vaut 2.0


Retour à la table des matières