41 lines
		
	
	
		
			526 B
		
	
	
	
		
			C
		
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			526 B
		
	
	
	
		
			C
		
	
	
| 
								 | 
							
								/* Some functions for converting floating point numbers to binary
							 | 
						||
| 
								 | 
							
								representations and vice versa */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef union {
							 | 
						||
| 
								 | 
							
								    double x;
							 | 
						||
| 
								 | 
							
								    u64 y;
							 | 
						||
| 
								 | 
							
								} F_DOUBLE_BITS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INLINE u64 double_bits(double x)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									F_DOUBLE_BITS b;
							 | 
						||
| 
								 | 
							
									b.x = x;
							 | 
						||
| 
								 | 
							
									return b.y;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INLINE double bits_double(u64 y)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									F_DOUBLE_BITS b;
							 | 
						||
| 
								 | 
							
									b.y = y;
							 | 
						||
| 
								 | 
							
									return b.x;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef union {
							 | 
						||
| 
								 | 
							
								    float x;
							 | 
						||
| 
								 | 
							
								    u32 y;
							 | 
						||
| 
								 | 
							
								} F_FLOAT_BITS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INLINE u32 float_bits(float x)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									F_FLOAT_BITS b;
							 | 
						||
| 
								 | 
							
									b.x = x;
							 | 
						||
| 
								 | 
							
									return b.y;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INLINE float bits_float(u32 y)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									F_FLOAT_BITS b;
							 | 
						||
| 
								 | 
							
									b.y = y;
							 | 
						||
| 
								 | 
							
									return b.x;
							 | 
						||
| 
								 | 
							
								}
							 |