PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ rt_util_float16_to_float()

float rt_util_float16_to_float ( uint16_t  value)

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}
int value
Definition genraster.py:62

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().

Here is the caller graph for this function: