Caracteristiques internes des types numériques

new art 12



L'interrogation des types entiers


bit_size (i)

nombre de bits catégorie: A arguments: i résultat: i

Renvoie le nombre (un entier de même variante que i) de bits utilisés pour représenter des entiers dans le type de i. L'argument i correspond au numéro de variante du type entier prédéfini.


Exemples:

bit_size (i) vaut 8 pour i de variante kind=1
bit_size (i) vaut 16 pour i de variante kind=2
bit_size (i) vaut 32 pour i de variante kind=3



Caracteristiques des types entiers et réels

Toutes ces fonctions peuvent recevoir un argument scalaire numérique ou un tableau numérique, mais elles fournissent toujours un résultat scalaire.


digits (x)

nombre de chiffres significatifs en base b catégorie: A arguments: i/r résultat: i

Renvoie le nombre (un entier standard) de chiffres (significatifs) de base b utilisés pour représenter la valeur x (de type réel ou entier). Si x est un entier, on obtient digits(x)= bit_size(x)-1. Si x est un réel, on obtient la valeur de p dans le modèle de virgule flottante (en précision simple, par exemple on aura: p=24 en base b=2, 13 en base b=8, 6 en base 16).


epsilon (x)

le plus petit réel non négligeable par rapport à 1 catégorie: A arguments: r résultat: r

Renvoie le plus petit réel positif du sous-type de x (appelé l'epsilon machine) tel que 1+ epsilon > 1(on obtient b1-p). Le résultat est de même variante que x.


huge(x)

la plus grande valeur représentable catégorie: A arguments: i
arguments: r
résultat: i
résultat: r

Renvoie la plus grande valeur représentable dans le type de x (l'image de "+{short description of image}" de la machine). Le résultat est du même sous-type que x qui peut être entier ou réel. Pour un sous-type réel on obtient


maxexponent (x)

exposant maximal catégorie: A arguments: r résultat: i

Renvoie un entier standard correspondant à la plus grande valeur emax possible pour un exposant dans le type (réel) de x.


minexponent (x)

exposant minimal catégorie: A arguments: r résultat: i

Renvoie un entier standard correspondant à la plus petite valeur emin possible pour un exposant dans le type (réel) de x.


precision (x)

précision en chiffres décimaux catégorie: A arguments: r/z résultat: i

Fournit le nombre minimal (un entier standard) de chiffres décimaux significatifs dans le sous-type de x (x doit être réel ou complexe). C'est int((p-1)*log10(b)).


radix (x)

base de numérotation interne catégorie: A arguments: i,r résultat: i

Renvoie la base (un entier standard) de la numération interne du modèle utilisée pour représenter les valeurs du type de x (entier ou réel). En pratique, il s'agit de 2, 8 ou 16.


range (x)

étendue de l'exposant décimal catégorie: A arguments: i/r/z résultat: i

Renvoie la valeur maximale r (entier standard) d'un exposant (en puissance de 10) dans le type de x (entier, réel ou complexe) telle que les nombres 10 r et 10 -r soient représentables dans le type en question. Pour x entier la valeur de r est égale au nombre de chiffres décimaux garanti par ce sous-type. Pour x réel ou complexe, on obtient l'intervalle minimal des valeurs représentables, sous la forme du plus grand entier r tel que tiny(x) <= 10 -r < 10+r <= huge(x).


tiny (x)

le plus petit réel représentable catégorie: A arguments: r résultat: r

Renvoie le plus petit réel >0, représentable dans le sous-type de x. Le résultat est du même type (variante comprise) que x qui doit être réel. On obtient .


Exemples:

type integer
radix (x) vaut 2
digits (x) vaut 7 (en base b) pour x entier de variante kind=1
digits (x) vaut 15 (en base b) pour x entier de variante kind=2
digits (x) vaut 31 (en base b) pour x entier de variante kind=3
huge (x) vaut 127 pour x entier de variante kind=1
huge (x) vaut 32767 pour x entier de variante kind=2
huge (x) vaut 2147483647 pour x entier de variante kind=3
range (x) vaut 2 pour x entier de variante kind=1
range (x) vaut 4 pour x entier de variante kind=2
range (x) vaut 9 pour x entier de variante kind=3
type real
radix (x) vaut 2
digits (x) vaut 24 (en base b) pour x réel de variante kind=1
digits (x) vaut 53 (en base b) pour x réel de variante kind=2
epsilon (x) vaut 1.1920929E-07 pour x réel de variante kind=1
epsilon (x) vaut 2.2204460492503131E-16 pour x réel de variante kind=2
huge (x) vaut 3.4028235E+38 pour x réel de variante kind=1
huge (x) vaut 1.7976931348623157E+308 pour x réel de variante kind=2
minexponent (x) vaut -125 pour x réel de variante kind=1
minexponent (x) vaut -1021 pour x réel de variante kind=2
maxexponent(x) vaut 128 pour x réel de variante kind=1
maxexponent(x) vaut 1024 pour x réel de variante kind=2
precision (x) vaut 6 chiffres décimaux pour x réel de variante kind=1
precision (x) vaut 15 chiffres décimaux pour x réel de variante kind=2
range (x) vaut 37 pour x réel de variante kind=1
range (x) vaut 307 pour x réel de variante kind=2
tiny (x) vaut 1.1754944E-38 pour x réel de variante kind=1
tiny (x) vaut 2.2250738585072014E-308 pour x réel de variante kind=2



Les fonctions liées au typage


selected_int_kind (r)

choix de no de variante de type entier catégorie: T arguments: i résultat: i

Renvoie le numéro (un entier standard) de variante du type integer susceptible de représenter les nombres entiers s'étendant de 10 -r à 10 +r. Si plusieurs variantes conviennent, on obtient le numéro de celui qui correspond au domaine le moins étendu (s'il y en a encore plusieurs, on obtient le plus petit numéro). S'il n'en existe aucun, on obtient la valeur -1.


selected_real_kind (p, r)

choix de no de variante de type réel catégorie: T arguments: i,i résultat: i

Renvoie le numéro (un entier standard) de variante du type real susceptible de représenter des nombres réels avec une précision (au sens de la fonction prédéfinie precision) au moins égale à p chiffres décimaux et une étendue de l'exposant décimal (au sens de la fonction range) au moins égale à r. Les deux arguments p ou r sont entiers et au moins un d'entre eux doit être présent. Si plusieurs variantes conviennent, on obtient le numéro de celui qui correspond à la précision la moins grande (s'il y en a encore plusieurs, on obtient le plus petit numéro). S'il n'en existe aucune, on obtient : -1 si la précision demandée n'est pas disponible, -2 si l'étendue demandée n'est pas disponible et -3 si ni la précision ni l'étendue ne sont disponibles.


kind (x)

no de variante de type catégorie: A arguments: i/r/l/z résultat: i

Fournit un résultat de type integer, dont la valeur correspond au numéro de variante du type prédefini de x


Exemples:

selected_int_kind (2) vaut 1 selected_real_kind (6) vaut 1
selected_int_kind (3) vaut 2 selected_real_kind (7) vaut 2
selected_int_kind (9) vaut 3 selected_real_kind (15) vaut 2
selected_int_kind (10) vaut -1 selected_real_kind (16) vaut -1

selected_real_kind (15,16) vaut 2
selected_real_kind (16,16) vaut -2
selected_real_kind (16,17) vaut -1

integer, parameter :: k1=selected_real_kind(10)
real (kind=k1) :: r1
real :: r
kind (r1) vaut 2
kind (r) vaut 1 ! la valeur par défaut


Retour à la table des matières