18 this->value = value16.value;
20 inline operator float() {
23 explicit inline operator double() {
26 explicit inline operator int() {
29 explicit inline operator int()
const {
32 inline bool operator< (
float16 other)
const{
33 return float() < (float)other;
35 inline bool operator<= (
float16 other)
const{
36 return float() <= (float)other;
38 inline bool operator> (
float16 other)
const{
39 return float() > (float)other;
41 inline bool operator>= (
float16 other)
const{
42 return float() >= (float)other;
44 inline bool operator== (
float16 other)
const{
45 return float() == (float)other;
47 inline bool operator!= (
float16 other)
const{
48 return float() != (float)other;
66 const uint32_t e = (x&0x7C00)>>10;
67 const uint32_t m = (x&0x03FF)<<13;
68 const uint32_t v =
as_uint((
float)m)>>23;
69 return as_float((x&0x8000)<<16 | (e!=0)*((e+112)<<23|m) | ((e==0)&(m!=0))*((v-37)<<23|((m<<(150-v))&0x007FE000)));
73 const uint32_t b =
as_uint(x)+0x00001000;
74 const uint32_t e = (b&0x7F800000)>>23;
75 const uint32_t m = b&0x007FFFFF;
76 return (b&0x80000000)>>16 | (e>112)*((((e-112)<<10)&0x7C00)|m>>13) | ((e<113)&(e>101))*((((0x007FF000+m)>>(125-e))+1)>>1) | (e>143)*0x7FFF;
81 inline float operator+ (float16 one, float16 two)
83 return (
float)one + (float)two;
85 inline float operator- (float16 one, float16 two)
87 return (
float)one - (float)two;
89 inline float operator* (float16 one, float16 two)
91 return (
float)one * (float)two;
93 inline float operator/ (float16 one, float16 two)
95 return (
float)one / (float)two;
97 inline float operator+ (float16 one,
float two)
99 return (
float)one + two;
101 inline float operator- (float16 one,
float two)
103 return (
float)one - two;
105 inline float operator* (float16 one,
float two)
107 return (
float)one * two;
109 inline float operator/ (float16 one,
float two)
111 return (
float)one / two;
113 inline float operator+ (
float one, float16 two)
115 return two + float(one);
117 inline float operator- (
float one, float16 two)
119 return two - float(one);
121 inline float operator* (
float one, float16 two)
123 return two * float(one);
125 inline float operator/ (
float one, float16 two)
127 return two / float(one);
134 inline float floor ( float16 arg ) {
return std::floor((
float)arg);}
135 inline float fabs ( float16 arg ) {
return std::fabs((
float)arg);}