Definition at line 134 of file rt_util.c.
135{
136 union {
137 uint32_t u;
138 float f;
139 } v;
140
141 uint32_t sign = (uint32_t)(value & 0x8000U) << 16;
142 uint32_t exponent = (
value >> 10) & 0x1fU;
143 uint32_t mantissa =
value & 0x3ffU;
144
145 if (exponent == 0)
146 {
147 if (mantissa == 0)
148 {
149 v.u = sign;
150 }
151 else
152 {
153 exponent = 1;
154 while ((mantissa & 0x400U) == 0)
155 {
156 mantissa <<= 1;
157 exponent--;
158 }
159 mantissa &= 0x3ffU;
160 v.u = sign | ((exponent + 127 - 15) << 23) | (mantissa << 13);
161 }
162 }
163 else if (exponent == 31)
164 {
165 v.u = sign | 0x7f800000U | (mantissa << 13);
166 }
167 else
168 {
169 v.u = sign | ((exponent + 127 - 15) << 23) | (mantissa << 13);
170 }
171
172 return v.f;
173}
Referenced by rt_band_from_wkb(), rt_band_get_pixel(), rt_band_init_value(), rt_band_set_nodata(), rt_band_set_pixel(), and rt_raster_deserialize().