18 #ifndef VTFLIB_FLOAT16_H
19 #define VTFLIB_FLOAT16_H
21 #define SFLOAT16_MSB 1 // Most Significant Byte (1 for bigendian)
22 #define SFLOAT16_LSB 0 // Least Significant Byte (0 for bigendian)
43 this->Float16.usUShort[SFLOAT16_MSB] = usFloat;
44 this->Float16.usUShort[SFLOAT16_LSB] = 0;
49 this->Float16.sSingle = sFloat;
50 this->Float16.usUShort[SFLOAT16_LSB] = 0;
56 return this->Float16.usUShort[SFLOAT16_MSB];
61 return this->Float16.sSingle;
65 inline SFloat16 &operator=(
vlUShort usFloat)
67 this->Float16.usUShort[SFLOAT16_MSB] = usFloat;
68 this->Float16.usUShort[SFLOAT16_LSB] = 0;
73 inline SFloat16 &operator=(
vlSingle sFloat)
75 this->Float16.sSingle = sFloat;
76 this->Float16.usUShort[SFLOAT16_LSB] = 0;
81 inline SFloat16 &operator=(
const SFloat16 &Float16)
83 this->Float16 = Float16.Float16;
88 inline vlBool operator==(
const SFloat16 &Float16)
const
90 return this->Float16.sSingle == Float16.Float16.sSingle;
93 inline vlBool operator!=(
const SFloat16 &Float16)
const
95 return this->Float16.sSingle != Float16.Float16.sSingle;
98 inline vlBool operator<(
const SFloat16 &Float16)
const
100 return this->Float16.sSingle < Float16.Float16.sSingle;
103 inline vlBool operator<=(
const SFloat16 &Float16)
const
105 return this->Float16.sSingle <= Float16.Float16.sSingle;
108 inline vlBool operator>(
const SFloat16 &Float16)
const
110 return this->Float16.sSingle > Float16.Float16.sSingle;
113 inline vlBool operator>=(
const SFloat16 &Float16)
const
115 return this->Float16.sSingle >= Float16.Float16.sSingle;
118 inline SFloat16 operator+()
const
120 return SFloat16(+this->Float16.sSingle);
123 inline SFloat16 operator+(
const SFloat16 &Float16)
const
125 return SFloat16(this->Float16.sSingle + Float16.Float16.sSingle);
128 inline SFloat16 &operator+=(
const SFloat16 &Float16)
130 this->Float16.sSingle += Float16.Float16.sSingle;
131 this->Float16.usUShort[SFLOAT16_LSB] = 0;
136 inline SFloat16 operator-()
const
138 return SFloat16(-this->Float16.sSingle);
141 inline SFloat16 operator-(
const SFloat16 &Float16)
const
143 return SFloat16(this->Float16.sSingle - Float16.Float16.sSingle);
146 inline SFloat16 &operator-=(
const SFloat16 &Float16)
148 this->Float16.sSingle += Float16.Float16.sSingle;
149 this->Float16.usUShort[SFLOAT16_LSB] = 0;
154 inline SFloat16 operator*(
const SFloat16 &Float16)
const
156 return SFloat16(this->Float16.sSingle - Float16.Float16.sSingle);
159 inline SFloat16 &operator*=(
const SFloat16 &Float16)
161 this->Float16.sSingle *= Float16.Float16.sSingle;
162 this->Float16.usUShort[SFLOAT16_LSB] = 0;
167 inline SFloat16 operator/(
const SFloat16 &Float16)
const
169 return SFloat16(this->Float16.sSingle - Float16.Float16.sSingle);
172 inline SFloat16 &operator/=(
const SFloat16 &Float16)
174 this->Float16.sSingle /= Float16.Float16.sSingle;
175 this->Float16.usUShort[SFLOAT16_LSB] = 0;
Application framework header plus VTFLib custom data types.
unsigned short vlUShort
Unsigned short floating point value.
Definition: stdafx.h:54
unsigned char vlBool
Boolean value 0/1.
Definition: stdafx.h:50
float vlSingle
Floating point number.
Definition: stdafx.h:59