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) &gt;&gt; FX32_SHIFT))
82#define FX_MUL32x64C(v1, v2) ((fx32)(((v2) * (v1) + 0x80000000LL) &gt;&gt; 32))
83
84#define FX_FX32_TO_F32(x)    ((f32)((x) / (f32)(1 &lt;&lt; FX32_SHIFT)))
85#define FX_F32_TO_FX32(x)    ((fx32)(((x) &gt; 0) ? \
86                                                   ((x) * (1 &lt;&lt; FX32_SHIFT) + 0.5f ) : \
87                                                   ((x) * (1 &lt;&lt; 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