looking at the raw buffer sizes and content of a single Float16_t leaf (with no range, no nbits),
it seems to me the Float16_t is actually encoded as a regular float (so 4bytes), not on 2bytes.
is this on purpose? (or a too-eager copy-paste from Double32_t?)
According to the code (it should be 12 ‘active’ bits for the mantissa and 8 for the exponent. Stored as char and a short … so actually 24 bits / 3 bytes where some of the bits have a fixed/constant value of 0.
If you see 4 bytes, then the interface used is not ‘catching’ the fact that it is a Float16_t