/usr/include/libwildmagic/Wm5HalfFloat.h is in libwildmagic-dev 5.13-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | // Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.0.1 (2010/10/01)
#ifndef WM5HALFFLOAT_H
#define WM5HALFFLOAT_H
#include "Wm5GraphicsLIB.h"
namespace Wm5
{
//----------------------------------------------------------------------------
// A 16-bit floating-point number has a 1-bit sign (S), a 5-bit
// exponent (E), and a 10-bit mantissa (M). The value of a 16-bit
// floating-point number is determined by the following:
// (-1)^S * 0.0, if E == 0 and M == 0,
// (-1)^S * 2^-14 * (M / 2^10), if E == 0 and M != 0,
// (-1)^S * 2^(E-15) * (1 + M/2^10), if 0 < E < 31,
// (-1)^S * INF, if E == 31 and M == 0, or
// NaN, if E == 31 and M != 0,
// where
// S = floor((N mod 65536) / 32768),
// E = floor((N mod 32768) / 1024), and
// M = N mod 1024.
// Implementations are also allowed to use any of the following
// alternative encodings:
// (-1)^S * 0.0, if E == 0 and M != 0,
// (-1)^S * 2^(E-15) * (1 + M/2^10), if E == 31 and M == 0, or
// (-1)^S * 2^(E-15) * (1 + M/2^10), if E == 31 and M != 0,
//
// This table explains the conversions in ToHalf and ToFloat.
// ---------------------------
// bias16 exp32 bias32
// ---------------------------
// 0 -127 0 (0x00)
// : : :
// 0 -15 112 (0x70)
// ---------------------------
// 1 -14 113 (0x71)
// : : :
// 15 0 127 (0x7F)
// : : :
// 30 15 142 (0x8E)
// ---------------------------
// 31 16 143 (0x8F)
// : : :
// 31 128 255 (0xFF)
// ---------------------------
//----------------------------------------------------------------------------
typedef unsigned short HalfFloat;
WM5_GRAPHICS_ITEM HalfFloat ToHalf (float value);
WM5_GRAPHICS_ITEM float ToFloat (HalfFloat value);
}
#endif
|