Match NVFP4 midpoint rounding

This commit is contained in:
Daniel Maddern 2026-08-15 02:45:16 +07:00
parent 9c0992350f
commit 11d3c4164e

View file

@ -58,19 +58,19 @@ __inline__ __device__ uint8_t encode_fp4_e2m1(float value) {
const bool negative = signbit(value);
float abs_value = fabsf(value);
uint8_t code = 0;
if (abs_value >= 5.0f) {
if (abs_value > 5.0f) {
code = 7;
} else if (abs_value >= 3.5f) {
} else if (abs_value > 3.5f) {
code = 6;
} else if (abs_value >= 2.5f) {
} else if (abs_value > 2.5f) {
code = 5;
} else if (abs_value >= 1.75f) {
} else if (abs_value > 1.75f) {
code = 4;
} else if (abs_value >= 1.25f) {
} else if (abs_value > 1.25f) {
code = 3;
} else if (abs_value >= 0.75f) {
} else if (abs_value > 0.75f) {
code = 2;
} else if (abs_value >= 0.25f) {
} else if (abs_value > 0.25f) {
code = 1;
}
return negative ? static_cast<uint8_t>(code | 0x8u) : code;