factor/vm/float_bits.hpp

46 lines
561 B
C++
Raw Normal View History

2009-05-04 02:46:13 -04:00
namespace factor
{
2009-05-02 05:04:19 -04:00
/* Some functions for converting floating point numbers to binary
representations and vice versa */
2009-05-04 05:50:24 -04:00
union double_bits_pun {
2009-09-14 04:09:03 -04:00
double x;
u64 y;
2009-05-04 05:50:24 -04:00
};
2009-05-02 05:04:19 -04:00
inline static u64 double_bits(double x)
2009-05-02 05:04:19 -04:00
{
2009-05-04 05:50:24 -04:00
double_bits_pun b;
2009-05-02 05:04:19 -04:00
b.x = x;
return b.y;
}
inline static double bits_double(u64 y)
2009-05-02 05:04:19 -04:00
{
2009-05-04 05:50:24 -04:00
double_bits_pun b;
2009-05-02 05:04:19 -04:00
b.y = y;
return b.x;
}
2009-05-04 05:50:24 -04:00
union float_bits_pun {
2009-09-14 04:09:03 -04:00
float x;
u32 y;
2009-05-04 05:50:24 -04:00
};
2009-05-02 05:04:19 -04:00
inline static u32 float_bits(float x)
2009-05-02 05:04:19 -04:00
{
2009-05-04 05:50:24 -04:00
float_bits_pun b;
2009-05-02 05:04:19 -04:00
b.x = x;
return b.y;
}
inline static float bits_float(u32 y)
2009-05-02 05:04:19 -04:00
{
2009-05-04 05:50:24 -04:00
float_bits_pun b;
2009-05-02 05:04:19 -04:00
b.y = y;
return b.x;
}
2009-05-04 02:46:13 -04:00
}