Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Take a look at the C header <ieee754.h>. It's not on all systems but it provides a union for type punning between a double and its decomposed parts. IEEE754_DOUBLE_BIAS is provided for bias correction. The same are available for floats.

(Unfortunately, the "not on all systems" part is why I don't use it, but instead copy the union and the constant verbatim into the project if I need it.)



I thought that type punning via union is against the standard.

I personally do not think it should be ... It's a very handy tool.


I think it may be a GNU extension to explicitly allow it, but I'm no language lawyer. This header is from glibc; it may explain why it's not available on some platforms.


It’s legal in C.


I think you're right. Most of the top google results seem to be from people who can't mentally separate c and c++. So when i tried to look it up around the time of the comment, i didn't get clear answers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: