MCPcopy Create free account
hub / github.com/NVIDIA-RTX/Donut / test_float16

Function test_float16

tests/src/engine/test_float.cpp:129–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

127}
128
129bool test_float16()
130{
131 float16_t f16i;
132 float16_t f16o;
133 float f32;
134 uint32_t errorCount = 0;
135 for (int i = 0; i < 65536; ++i)
136 {
137 f16i.bits = i;
138 f32 = Float16ToFloat32(f16i);
139 f16o = Float32ToFloat16(f32);
140
141 bool pass;
142 if (isinf(f16i))
143 pass = std::isinf(f32) == isinf(f16o) && signbit(f16i) == signbit(f16o);
144 else if (isnan(f16i))
145 pass = std::isnan(f32) == isnan(f16o);
146 else
147 pass = f16o.bits == f16i.bits && std::isfinite(f32) == isfinite(f16o);
148
149 if (!pass)
150 {
151 ++errorCount;
152 if (errorCount < MAX_ERRORS)
153 {
154 fprintf(stderr, "FLOAT16 mismatch: expected 0x%04x, got 0x%04x, float value %f\n",
155 f16i.bits, f16o.bits, f32);
156 }
157 }
158 }
159
160 if (errorCount >= MAX_ERRORS)
161 {
162 fprintf(stderr, "... %u more error(s) ...\n", errorCount - MAX_ERRORS);
163 }
164
165 return errorCount == 0;
166}
167
168bool test_gpu_float16(nvrhi::IDevice* device)
169{

Callers 1

mainFunction · 0.85

Calls 6

Float16ToFloat32Function · 0.85
Float32ToFloat16Function · 0.85
isinfFunction · 0.85
signbitFunction · 0.85
isnanFunction · 0.85
isfiniteFunction · 0.50

Tested by

no test coverage detected