[DAPL2] sync with WinOF 2.1 branch
[mirror/winof/.git] / inc / complib / cl_math.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
4  *\r
5  * This software is available to you under the OpenIB.org BSD license\r
6  * below:\r
7  *\r
8  *     Redistribution and use in source and binary forms, with or\r
9  *     without modification, are permitted provided that the following\r
10  *     conditions are met:\r
11  *\r
12  *      - Redistributions of source code must retain the above\r
13  *        copyright notice, this list of conditions and the following\r
14  *        disclaimer.\r
15  *\r
16  *      - Redistributions in binary form must reproduce the above\r
17  *        copyright notice, this list of conditions and the following\r
18  *        disclaimer in the documentation and/or other materials\r
19  *        provided with the distribution.\r
20  *\r
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
24  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
25  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
26  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
28  * SOFTWARE.\r
29  *\r
30  * $Id$\r
31  */\r
32 \r
33 \r
34 /*\r
35  * Abstract:\r
36  *      Defines standard math related macros and functions.\r
37  *\r
38  * Environment:\r
39  *      All\r
40  */\r
41 \r
42 \r
43 #ifndef _CL_MATH_H_\r
44 #define _CL_MATH_H_\r
45 \r
46 \r
47 #include <complib/cl_types.h>\r
48 \r
49 \r
50 /****d* Component Library: Math/MAX\r
51 * NAME\r
52 *       MAX\r
53 *\r
54 * DESCRIPTION\r
55 *       The MAX macro returns the greater of two values.\r
56 *\r
57 * SYNOPSIS\r
58 *       MAX( x, y );\r
59 *\r
60 * PARAMETERS\r
61 *       x\r
62 *               [in] First of two values to compare.\r
63 *\r
64 *       y\r
65 *               [in] Second of two values to compare.\r
66 *\r
67 * RETURN VALUE\r
68 *       Returns the greater of the x and y parameters.\r
69 *\r
70 * SEE ALSO\r
71 *       MIN, ROUNDUP\r
72 *********/\r
73 #ifndef MAX\r
74 #define MAX(x,y)        ((x) > (y) ? (x) : (y))\r
75 #endif\r
76 \r
77 \r
78 /****d* Component Library: Math/MIN\r
79 * NAME\r
80 *       MIN\r
81 *\r
82 * DESCRIPTION\r
83 *       The MIN macro returns the greater of two values.\r
84 *\r
85 * SYNOPSIS\r
86 *       MIN( x, y );\r
87 *\r
88 * PARAMETERS\r
89 *       x\r
90 *               [in] First of two values to compare.\r
91 *\r
92 *       y\r
93 *               [in] Second of two values to compare.\r
94 *\r
95 * RETURN VALUE\r
96 *       Returns the lesser of the x and y parameters.\r
97 *\r
98 * SEE ALSO\r
99 *       MAX, ROUNDUP\r
100 *********/\r
101 #ifndef MIN\r
102 #define MIN(x,y)        ((x) < (y) ? (x) : (y))\r
103 #endif\r
104 \r
105 \r
106 /****d* Component Library: Math/ROUNDUP\r
107 * NAME\r
108 *       ROUNDUP\r
109 *\r
110 * DESCRIPTION\r
111 *       The ROUNDUP macro rounds a value up to a given multiple.\r
112 *\r
113 * SYNOPSIS\r
114 *       ROUNDUP( val, align );\r
115 *\r
116 * PARAMETERS\r
117 *       val\r
118 *               [in] Value that is to be rounded up. The type of the value is\r
119 *               indeterminate, but must be at most the size of a natural integer\r
120 *               for the platform.\r
121 *\r
122 *       align\r
123 *               [in] Multiple to which the val parameter must be rounded up.\r
124 *\r
125 * RETURN VALUE\r
126 *       Returns a value that is the input value specified by val rounded up to\r
127 *       the nearest multiple of align.\r
128 *\r
129 * NOTES\r
130 *       The value provided must be of a type at most the size of a natural integer.\r
131 *********/\r
132 #ifndef ROUNDUP\r
133 #define ROUNDUP(val, align)     \\r
134         ((((val) / (align))*(align)) + (((val) % (align)) ? (align) : 0))\r
135 #endif\r
136 \r
137 \r
138 #endif /* _CL_MATH_H_ */\r