reman3/Rayman_X/cpa/public/MTH/MTH_Real.h

215 lines
8.3 KiB
C

/* ##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 */