Main Page | Modules | File List | Globals | Related Pages

Floating Point


Detailed Description

Unavailable if POSH_NO_FLOAT is defined.

By default floating point support is enabled, but if you find that this causes problems or is inconvenient and you're not using the support, you can define POSH_NO_FLOAT to disable POSH's use of any floating point types or operations.

Here are some code examples:

//read a little-endian float from disk float LoadFloat( FILE *fp ) { float f; posh_u32_t u32; fread( &u32, sizeof( u32 ), 1, fp ); f = POSH_FloatFromLittleBits( u32 ); return f; } //write a little-endian float to disk void WriteFloat( FILE *fp, float f ) { posh_u32_t u32; u32 = POSH_LittleFloatBits( f ); fwrite( &u32, sizeof( u32 ), 1, fp ); }


Functions

posh_u32_t POSH_LittleFloatBits (float f)
posh_u32_t POSH_BigFloatBits (float f)
 Extracts raw big-endian bits from a 32-bit floating point value.

void POSH_DoubleBits (double d, posh_byte_t dst[8])
 Extracts raw, little-endian bit representation from a 64-bit double.

double POSH_DoubleFromBits (const posh_byte_t src[8])
 Creates a double-precision, 64-bit floating point value from a set of raw, little-endian bits.

float POSH_FloatFromLittleBits (posh_u32_t bits)
 Creates a floating point number from little endian bits.

float POSH_FloatFromBigBits (posh_u32_t bits)
 Creates a floating point number from big-endian bits.


Function Documentation

posh_u32_t POSH_BigFloatBits float  f  ) 
 

Extracts raw big-endian bits from a 32-bit floating point value.

Parameters:
f [in] floating point value
Returns:
a big-endian bit representation of f

Definition at line 857 of file posh.c.

References POSH_BigU32, and posh_u32_t.

void POSH_DoubleBits double  d,
posh_byte_t  dst[8]
 

Extracts raw, little-endian bit representation from a 64-bit double.

Parameters:
d [in] 64-bit double precision value
dst [out] 8-byte storage buffer
Returns:
the raw bits used to represent the value 'd', in the form dst[0]=LSB

Definition at line 879 of file posh.c.

References posh_byte_t.

double POSH_DoubleFromBits const posh_byte_t  src[8]  ) 
 

Creates a double-precision, 64-bit floating point value from a set of raw, little-endian bits.

Parameters:
src [in] little-endian byte representation of 64-bit double precision floating point value
Returns:
double precision floating point representation of the raw bits
Remarks:
No error checking is performed, so there are no guarantees that the result is a valid number, nor is there any check to ensure that src is non-NULL. BE CAREFUL USING THIS.

Definition at line 923 of file posh.c.

References posh_byte_t.

float POSH_FloatFromBigBits posh_u32_t  bits  ) 
 

Creates a floating point number from big-endian bits.

Parameters:
bits [in] raw floating point bits in big-endian form
Returns:
a floating point number based on the given bit representation
Remarks:
No error checking is performed, so there are no guarantees that the result is a valid number. BE CAREFUL USING THIS.

Definition at line 990 of file posh.c.

References POSH_SwapU32(), and posh_u32_t.

float POSH_FloatFromLittleBits posh_u32_t  bits  ) 
 

Creates a floating point number from little endian bits.

Parameters:
bits [in] raw floating point bits in little-endian form
Returns:
a floating point number based on the given bit representation
Remarks:
No error checking is performed, so there are no guarantees that the result is a valid number. BE CAREFUL USING THIS.

Definition at line 964 of file posh.c.

References POSH_SwapU32(), and posh_u32_t.

posh_u32_t POSH_LittleFloatBits float  f  ) 
 

Parameters:
[in] f floating point value
Returns:
a little-endian bit representation of f

Definition at line 836 of file posh.c.

References POSH_LittleU32, and posh_u32_t.


Generated on Tue Jan 31 18:27:36 2006 for POSH by doxygen 1.3.7