Share via


Float to XR_BIAS Conversion Rules

Questa sezione si applica solo ai sistemi operativi Windows 7 e versioni successive.

Le regole seguenti si applicano per la conversione di float in XR_BIAS. In queste regole si supponga che il valore float iniziale sia c.

  • Se c è NaN, il risultato è 0; in caso contrario, si applicano le regole seguenti. NaN indica "non un numero", ovvero un'entità simbolica che rappresenta un valore non altrimenti disponibile in formato a virgola mobile.

  • Eseguire l'operazione seguente per convertire da scalabilità float a scala integer:

    c = c * 510

    L'operazione precedente potrebbe causare overflow.

  • Eseguire l'operazione seguente per la distorsione:

    c = c + 384

    L'operazione precedente potrebbe causare overflow.

  • Eseguire una delle operazioni seguenti per bloccare, a seconda dell'esponente di c:

    Se, post bias, l'esponente di c è maggiore o uguale a 2 (>= 2 o c è INF), il risultato è 0x3ff, che equivale approssimativamente a 1,2529.

    Se, post bias, l'esponente di c è minore di 0 (< 0 o c è -INF), il risultato è 0x0, che rappresenta circa -0,7529.

  • Interpretare nuovamente i 10 bit più significativi della mantissa di c come risultato.

La conversione di float in XR_BIAS è consentita la tolleranza pari a 0,6f Unit-Last-Place (ULP) sul lato XR. Questa tolleranza significa che dopo la conversione da float a XR, qualsiasi valore entro 0,6f ULP di un valore di formato di destinazione con supporto per rappresentare è consentito eseguire il mapping a tale valore. Si noti che 1 ULP del risultato infinito preciso significa che, ad esempio, un'implementazione è consentita per troncare i risultati a 32 bit anziché eseguire round-to-near-even, in quanto genera un errore di almeno un'unità nell'ultima posizione (meno significativa) rappresentata nel numero a virgola mobile.

Si applica anche il requisito standard Direct3D versione 10 per l'invertimento dei dati.