Flutuar para XR_BIAS regras de conversão

Esta seção se aplica somente aos sistemas operacionais Windows 7 e posteriores.

As regras a seguir se aplicam à conversão de float em XR_BIAS. Nessas regras, suponha que o valor float inicial seja c.

  • Se c for NaN, o resultado será 0; caso contrário, as regras a seguir se aplicam. NaN significa "não um número", o que significa uma entidade simbólica que representa um valor não disponível de outra forma no formato de ponto flutuante.

  • Execute a seguinte operação para converter de escala float em escala de inteiro:

    c = c * 510

    A operação anterior pode induzir estouro.

  • Execute a seguinte operação para desvio:

    c = c + 384

    A operação anterior pode induzir estouro.

  • Execute uma das seguintes operações para fixar, dependendo do expoente de c:

    Se, após o viés, o expoente de c for maior ou igual a 2 (>= 2 ou c for INF), o resultado será 0x3ff, que é aproximadamente equivalente a 1,2529.

    Se, após o viés, o expoente de c for menor que 0 (< 0 ou c for -INF), o resultado será 0x0, que representa aproximadamente -0,7529.

  • Interprete novamente os 10 bits mais significativos da mantissa de c como resultado.

A conversão de float em XR_BIAS é permitida tolerância de 0,6f ULP (Unit-Last-Place) no lado XR. Essa tolerância significa que, depois de converter de float para XR, qualquer valor dentro de 0,6f ULP de um valor de formato de destino compatível com representação tem permissão para mapear para esse valor. Observe que 1 ULP do resultado infinitamente preciso significa que, por exemplo, uma implementação tem permissão para truncar os resultados para 32 bits em vez de executar round-to-nearest-even, pois isso resultaria em um erro de no máximo uma unidade no último lugar (menos significativo) representado no número de ponto flutuante.

O requisito padrão do Direct3D versão 10 para inverter dados também se aplica.