1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html> 3 4<head> 5<META http-equiv="Content-Type" content="text/html; charset=windows-1252"> 6<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 8.0.0.0 for Windows"> 7<META http-equiv="Content-Style-Type" content="text/css"> 8<title>fx32 Type Macros</title> 9<LINK rel="stylesheet" href="../css/nitro.css" type="text/css"> 10</head> 11 12<body> 13 14<h1 align="left">fx32 Type Macros <img src="../image/NTR.gif"align="middle"><img src="../image/TWL.gif" align="middle"></h1> 15<h2>Description</h2> 16<TABLE border="0" width="100%"> 17 <TBODY> 18 <TR> 19 <TD width="149">FX32_SHIFT</TD> 20 <TD width="381">Defines the shift number (12) for <CODE>fx32</CODE> types.</TD> 21 </TR> 22 <TR> 23 <TD width="149">FX32_INT_SIZE</TD> 24 <TD width="381">Defines the bit width of the integer portion (19) for <CODE>fx32</CODE> types.</TD> 25 </TR> 26 <TR> 27 <TD width="149">FX32_DEC_SIZE</TD> 28 <TD width="381">Defines the bit width for the decimal portion (12) for <CODE>fx32</CODE> types.</TD> 29 </TR> 30 <TR> 31 <TD width="149">FX32_INT_MASK</TD> 32 <TD width="381">Defines the mask (<CODE>0x7ffff000</CODE>) for the integer portion of <CODE>fx32</CODE> types.</TD> 33 </TR> 34 <TR> 35 <TD width="149">FX32_DEC_MASK</TD> 36 <TD width="381">Defines the mask (<CODE>0x0fff</CODE>) for the decimal portion of <CODE>fx32</CODE> types.</TD> 37 </TR> 38 <TR> 39 <TD width="149">FX32_SIGN_MASK</TD> 40 <TD width="381">Defines the mask (<CODE>0x80000000</CODE>) for the sign portion of <CODE>fx32</CODE> types.</TD> 41 </TR> 42 <TR> 43 <TD width="149">FX32_MAX</TD> 44 <TD width="381">Defines the maximum value (<CODE>0x7fffffff</CODE>) that can be obtained with <CODE>fx32</CODE> types.</TD> 45 </TR> 46 <TR> 47 <TD width="149">FX32_MIN</TD> 48 <TD width="381">Defines the minimum value (<CODE>0x80000000</CODE>) that can be obtained with <CODE>fx32</CODE> types.</TD> 49 </TR> 50 <TR> 51 <TD width="149">FX_MUL</TD> 52 <TD width="381">Multiplies two <CODE>fx32</CODE> types.</TD> 53 </TR> 54 <TR> 55 <TD width="149">FX_MUL32x64C</TD> 56 <TD width="381">Multiplies an <CODE>fx32</CODE> type and an <CODE>fx64c</CODE> type.</TD> 57 </TR> 58 <TR> 59 <TD width="149">FX_FX32_TO_F32</TD> 60 <TD width="381">Converts an <CODE>fx32</CODE> type to an <CODE>f32</CODE> type.</TD> 61 </TR> 62 <TR> 63 <TD width="149">FX_F32_TO_FX32<BR> 64 FX32_CONST</TD> 65 <TD width="381">Converts an <CODE>f32</CODE> type to an <CODE>fx32</CODE> type.</TD> 66 </TR> 67 </TBODY> 68</TABLE> 69<H2>Macro Definitions</H2> 70<PRE>#define FX32_SHIFT 12 71#define FX32_INT_SIZE 19 72#define FX32_DEC_SIZE 12 73 74#define FX32_INT_MASK 0x7ffff000 75#define FX32_DEC_MASK 0x00000fff 76#define FX32_SIGN_MASK 0x80000000 77 78#define FX32_MAX (fx32)(0x7fffffff) 79#define FX32_MIN (fx32)(0x80000000) 80 81#define FX_MUL(v1, v2) ((fx32)(((fx64)(v1) * (v2) + 0x800LL) >> FX32_SHIFT)) 82#define FX_MUL32x64C(v1, v2) ((fx32)(((v2) * (v1) + 0x80000000LL) >> 32)) 83 84#define FX_FX32_TO_F32(x) ((f32)((x) / (f32)(1 << FX32_SHIFT))) 85#define FX_F32_TO_FX32(x) ((fx32)(((x) > 0) ? \ 86 ((x) * (1 << FX32_SHIFT) + 0.5f ) : \ 87 ((x) * (1 << FX32_SHIFT) - 0.5f ))) 88 89#define FX32_CONST(x) FX_F32_TO_FX32(x) 90</PRE> 91<H2>Revision History</H2> 92<P>2004/02/25 Initial version.</P> 93<hr><p>CONFIDENTIAL</p></body> 94</html> 95