/* ##H_FILE# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FILE : MTH_Real.h MODULE : MTH (Common Mathematic Library) DESCRIPTION : Real definitions VERSION : MTH V5.0.13 / Alexandre LANGER [ALX] Ubi R&D / Add Comments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ #ifndef MTH_REAL_H #define MTH_REAL_H /* ##INCLUDE#---------------------------------------------------------------------------- Includes Files ---------------------------------------------------------------------------------------*/ #include "MTH_def.h" /* ##TYPEDEF#---------------------------------------------------------------------------- Types definition ---------------------------------------------------------------------------------------*/ /* ##-################################# ## Define different Real Definition #################################### */ typedef long MTH_tdxFixed16_16; /* Fixed real number type [16:16] */ typedef float MTH_tdxFloat; /* Float real number type */ typedef double MTH_tdxDouble; /* Double real number type */ /* ##-#################################### ## Now decide witch one to use as Real ####################################### */ #ifdef MTH_RealIsFixed16_16 typedef MTH_tdxFixed16_16 MTH_tdxReal; #include "MTH_fx16.h" #endif /* MTH_RealIsFixed16_16 */ #ifdef MTH_RealIsFloat typedef MTH_tdxFloat MTH_tdxReal; #include "MTH_flt.h" #endif /* MTH_RealIsFloat */ #ifdef MTH_RealIsDouble typedef MTH_tdxDouble MTH_tdxReal; #include "MTH_dble.h" #endif /* MTH_RealIsDouble */ /* ##MACRO#---------------------------------------------------------------------------- MACRO definition ---------------------------------------------------------------------------------------*/ /* ##-################################# ## Real Conversions #################################### */ /* Fixed16_16 to Others : */ #define MTH_M_xFixed16_16ToFixed16_16( X ) \ (X) #define MTH_M_xFixed16_16ToFloat( X ) \ (float) ( (X) / 65536.0F ) #define MTH_M_xFixed16_16ToDouble( X ) \ (double) ( (X) / 65536.0 ) #define MTH_M_xFixed16_16ToLong( X ) \ (long)( (float) (X) / 65536.0F ) /* Float to Others : */ #define MTH_M_xFloatToFixed16_16( X ) \ (long)( (X) * 65536.0F ) #define MTH_M_xFloatToFloat( X ) \ (X) #define MTH_M_xFloatToDouble( X ) \ (double) (X) #ifdef MTH_OPTIMIZE #define MTH_M_xFloatToLong MTH_M_xRealToLongOpt #else /* NOT MTH_OPTIMIZE */ #define MTH_M_xFloatToLong( X ) \ (long) ( X ) #endif /* MTH_OPTIMIZE */ /* Double to Others : */ #define MTH_M_xDoubleToFixed16_16( X ) \ (long) ( (X) * 65536.0 ) #define MTH_M_xDoubleToFloat( X ) \ (float) (X) #define MTH_M_xDoubleToDouble( X ) \ (X) #define MTH_M_xDoubleToLong( X ) \ (long) ( X ) /* Long to Others : */ #define MTH_M_xLongToFixed16_16( X ) \ (long) ( (X) * 65536 ) #define MTH_M_xLongToFloat( X ) \ (float) (X) #define MTH_M_xLongToDouble( X ) \ (double) (X) #define MTH_M_xLongToLong( X ) \ (long)( X ) /* Common Real definition : */ #ifdef MTH_RealIsFloat /* ##M================================================================================== NAME : MTH_M_xRealToFixed16_16 DESCRIPTION : Convert real to fixed 16:16 INPUT : a : MTH_tdxReal OUTPUT : (fixed16:16)(a) : MTH_tdxFixed16_16 =======================================================================================*/ #define MTH_M_xRealToFixed16_16 MTH_M_xFloatToFixed16_16 /* ##M================================================================================== NAME : MTH_M_xRealToFloat DESCRIPTION : Convert real to float INPUT : a : MTH_tdxReal OUTPUT : (float)(a) : MTH_tdxFloat =======================================================================================*/ #define MTH_M_xRealToFloat MTH_M_xFloatToFloat /* ##M================================================================================== NAME : MTH_M_xRealToDouble DESCRIPTION : Convert real to double INPUT : a : MTH_tdxReal OUTPUT : (double)(a) : MTH_tdxDouble =======================================================================================*/ #define MTH_M_xRealToDouble MTH_M_xFloatToDouble /* ##M================================================================================== NAME : MTH_M_xFixed16_16ToReal DESCRIPTION : Convert fixed 16:16 to real INPUT : a : MTH_tdxFixed16_16 OUTPUT : (real)(a) : MTH_tdxReal =======================================================================================*/ #define MTH_M_xFixed16_16ToReal MTH_M_xFixed16_16ToFloat /* ##M================================================================================== NAME : MTH_M_xFloatToReal DESCRIPTION : Convert float to real INPUT : a : MTH_tdxFloat OUTPUT : (real)(a) : MTH_tdxReal =======================================================================================*/ #define MTH_M_xFloatToReal MTH_M_xFloatToFloat /* ##M================================================================================== NAME : MTH_M_xDoubleToReal DESCRIPTION : Convert double to real INPUT : a : MTH_tdxDouble OUTPUT : (real)(a) : MTH_tdxReal =======================================================================================*/ #define MTH_M_xDoubleToReal MTH_M_xDoubleToFloat /* ##M================================================================================== NAME : MTH_M_xLongToReal DESCRIPTION : Convert long to real INPUT : a : long OUTPUT : (real)(a) : MTH_tdxReal =======================================================================================*/ #define MTH_M_xLongToReal MTH_M_xLongToFloat /* ##M================================================================================== NAME : MTH_M_xRealToLong DESCRIPTION : Convert real to long INPUT : a : MTH_tdxReal OUTPUT : (long)(a) : long =======================================================================================*/ #define MTH_M_xRealToLong MTH_M_xFloatToLong #endif /* MTH_RealIsFloat */ #ifdef MTH_RealIsDouble #define MTH_M_xRealToFixed16_16 MTH_M_xDoubleToFixed16_16 #define MTH_M_xRealToFloat MTH_M_xDoubleToFloat #define MTH_M_xRealToDouble MTH_M_xDoubleToDouble #define MTH_M_xFixed16_16ToReal MTH_M_xFixed16_16ToDouble #define MTH_M_xFloatToReal MTH_M_xFloatToDouble #define MTH_M_xDoubleToReal MTH_M_xDoubleToDouble #define MTH_M_xLongToReal MTH_M_xLongToDouble #define MTH_M_xRealToLong MTH_M_xDoubleToLong #endif /* MTH_RealIsDouble */ #ifdef MTH_RealIsFixed16_16 #define MTH_M_xRealToFixed16_16 MTH_M_xFixed16_16ToFixed16_16 #define MTH_M_xRealToFloat MTH_M_xFixed16_16ToFloat #define MTH_M_xRealToDouble MTH_M_xFixed16_16ToDouble #define MTH_M_xFixed16_16ToReal MTH_M_xFixed16_16ToFixed16_16 #define MTH_M_xFloatToReal MTH_M_xFloatToFixed16_16 #define MTH_M_xDoubleToReal MTH_M_xDoubleToFixed16_16 #define MTH_M_xLongToReal MTH_M_xLongToFixed16_16 #define MTH_M_xRealToLong MTH_M_xFixed16_16ToLong #endif /* MTH_RealIsFixed16_16 */ #endif /* MTH_REAL_H */