Alien-FreeImage

 view release on metacpan or  search on metacpan

src/Source/OpenEXR/Half/toFloat.cpp  view on Meta::CPAN

	    // Denormalized number -- renormalize it
	    //

	    while (!(m & 0x00000400))
	    {
		m <<= 1;
		e -=  1;
	    }

	    e += 1;
	    m &= ~0x00000400;
	}
    }
    else if (e == 31)
    {
	if (m == 0)
	{
	    //
	    // Positive or negative infinity
	    //

	    return (s << 31) | 0x7f800000;
	}
	else
	{
	    //
	    // Nan -- preserve sign and significand bits
	    //

	    return (s << 31) | 0x7f800000 | (m << 13);
	}
    }

    //
    // Normalized number
    //

    e = e + (127 - 15);
    m = m << 13;

    //
    // Assemble s, e and m.
    //

    return (s << 31) | (e << 23) | m;
}


//---------------------------------------------
// Main - prints the half-to-float lookup table
//---------------------------------------------

int
main ()
{
    cout.precision (9);
    cout.setf (ios_base::hex, ios_base::basefield);

    cout << "//\n"
	    "// This is an automatically generated file.\n"
	    "// Do not edit.\n"
	    "//\n\n";

    cout << "{\n    ";

    const int iMax = (1 << 16);

    for (int i = 0; i < iMax; i++)
    {
	cout << "{0x" << setfill ('0') << setw (8) << halfToFloat (i) << "}, ";

	if (i % 4 == 3)
	{
	    cout << "\n";

	    if (i < iMax - 1)
		cout << "    ";
	}
    }

    cout << "};\n";
    return 0;
}



( run in 1.244 second using v1.01-cache-2.11-cpan-56fb94df46f )