Règles de conversion float en XR_BIAS
Cette section s’applique uniquement aux systèmes d’exploitation Windows 7 et versions ultérieures.
Les règles suivantes s’appliquent à la conversion de float en XR_BIAS. Dans ces règles, supposons que la valeur float de départ est c.
Si c est NaN, le résultat est 0 ; dans le cas contraire, les règles suivantes s’appliquent. NaN signifie « not a number », ce qui signifie une entité symbolique qui représente une valeur qui n’est pas disponible au format à virgule flottante.
Effectuez l’opération suivante pour convertir de l’échelle float à l’échelle entière :
c = c * 510
L’opération précédente peut provoquer un dépassement de capacité.
Effectuez l’opération suivante pour les biais :
c = c + 384
L’opération précédente peut provoquer un dépassement de capacité.
Effectuez l’une des opérations suivantes pour serrer, en fonction de l’exposant de c :
Si, après le biais, l’exposant de c est supérieur ou égal à 2 (>= 2 ou c est INF), le résultat est 0x3ff, ce qui équivaut approximativement à 1,2529.
Si, après le biais, l’exposant de c est inférieur à 0 (< 0 ou c est -INF), le résultat est 0x0, ce qui représente environ -0,7529.
Ré-interpréter les 10 bits les plus significatifs de la mantisse de c comme résultat.
La conversion de float en XR_BIAS est autorisée avec une tolérance de 0,6f Unit-Last-Place (ULP) côté XR. Cette tolérance signifie qu’après la conversion de float en XR, toute valeur comprise dans 0,6f ULP d’une valeur de format cible compatible avec la représentation est autorisée à être mappée à cette valeur. Notez que 1 ULP du résultat infiniment précis signifie, par exemple, qu’une implémentation est autorisée à tronquer les résultats en 32 bits plutôt que d’effectuer d’un tour à l’autre, même le plus proche, car cela entraînerait une erreur d’au plus une unité dans le dernier emplacement (le moins significatif) représenté dans le nombre à virgule flottante.
La spécification standard de Direct3D version 10 pour l’inversion des données s’applique également.