Amesos Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
amesos_cholmod_template.h
Go to the documentation of this file.
1 /* ========================================================================== */
2 /* === Include/cholmod_template.h =========================================== */
3 /* ========================================================================== */
4 
5 /* -------------------------------------------------------------------------- */
6 /* undefine current xtype macros, and then define macros for current type */
7 /* -------------------------------------------------------------------------- */
8 
9 #undef TEMPLATE
10 #undef XTYPE
11 #undef XTYPE2
12 #undef XTYPE_OK
13 #undef ENTRY_IS_NONZERO
14 #undef ENTRY_IS_ZERO
15 #undef ENTRY_IS_ONE
16 #undef IMAG_IS_NONZERO
17 
18 #undef ASSEMBLE
19 #undef ASSIGN
20 #undef ASSIGN_CONJ
21 #undef ASSIGN2
22 #undef ASSIGN2_CONJ
23 #undef ASSIGN_REAL
24 #undef MULT
25 #undef MULTADD
26 #undef ADD
27 #undef ADD_REAL
28 #undef MULTSUB
29 #undef MULTADDCONJ
30 #undef MULTSUBCONJ
31 #undef LLDOT
32 #undef CLEAR
33 #undef DIV
34 #undef DIV_REAL
35 #undef MULT_REAL
36 #undef CLEAR_IMAG
37 #undef LDLDOT
38 #undef PREFIX
39 
40 #undef ENTRY_SIZE
41 
42 #undef XPRINT0
43 #undef XPRINT1
44 #undef XPRINT2
45 #undef XPRINT3
46 
47 /* -------------------------------------------------------------------------- */
48 /* pattern */
49 /* -------------------------------------------------------------------------- */
50 
51 
52 #ifdef PATTERN
53 
54 #define PREFIX amesos_p_
55 #define TEMPLATE(name) P_TEMPLATE(name)
56 #define XTYPE CHOLMOD_PATTERN
57 #define XTYPE2 CHOLMOD_REAL
58 #define XTYPE_OK(type) (TRUE)
59 #define ENTRY_IS_NONZERO(ax,az,q) (TRUE)
60 #define ENTRY_IS_ZERO(ax,az,q) (FALSE)
61 #define ENTRY_IS_ONE(ax,az,q) (TRUE)
62 #define IMAG_IS_NONZERO(ax,az,q) (FALSE)
63 #define ENTRY_SIZE 0
64 
65 #define ASSEMBLE(x,z,p,ax,az,q)
66 #define ASSIGN(x,z,p,ax,az,q)
67 #define ASSIGN_CONJ(x,z,p,ax,az,q)
68 #define ASSIGN2(x,z,p,ax,az,q) P_ASSIGN2(x,z,p,ax,az,q)
69 #define ASSIGN2_CONJ(x,z,p,ax,az,q) P_ASSIGN2(x,z,p,ax,az,q)
70 #define ASSIGN_REAL(x,p,ax,q)
71 #define MULT(x,z,p,ax,az,q,bx,bz,pb)
72 #define MULTADD(x,z,p,ax,az,q,bx,bz,pb)
73 #define ADD(x,z,p,ax,az,q,bx,bz,pb)
74 #define ADD_REAL(x,p, ax,q, bx,r)
75 #define MULTSUB(x,z,p,ax,az,q,bx,bz,pb)
76 #define MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb)
77 #define MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb)
78 #define LLDOT(x,p,ax,az,q)
79 #define CLEAR(x,z,p)
80 #define CLEAR_IMAG(x,z,p)
81 #define DIV(x,z,p,ax,az,q)
82 #define DIV_REAL(x,z,p, ax,az,q, bx,r)
83 #define MULT_REAL(x,z,p, ax,az,q, bx,r)
84 #define LDLDOT(x,p, ax,az,q, bx,r)
85 
86 #define XPRINT0(x,z,p) P_PRINT(0,x,z,p)
87 #define XPRINT1(x,z,p) P_PRINT(1,x,z,p)
88 #define XPRINT2(x,z,p) P_PRINT(2,x,z,p)
89 #define XPRINT3(x,z,p) P_PRINT(3,x,z,p)
90 
91 /* -------------------------------------------------------------------------- */
92 /* real */
93 /* -------------------------------------------------------------------------- */
94 
95 #elif defined (REAL)
96 
97 #define PREFIX amesos_r_
98 #define TEMPLATE(name) R_TEMPLATE(name)
99 #define XTYPE CHOLMOD_REAL
100 #define XTYPE2 CHOLMOD_REAL
101 #define XTYPE_OK(type) R_XTYPE_OK(type)
102 #define ENTRY_IS_NONZERO(ax,az,q) R_IS_NONZERO(ax,az,q)
103 #define ENTRY_IS_ZERO(ax,az,q) R_IS_ZERO(ax,az,q)
104 #define ENTRY_IS_ONE(ax,az,q) R_IS_ONE(ax,az,q)
105 #define IMAG_IS_NONZERO(ax,az,q) (FALSE)
106 #define ENTRY_SIZE 1
107 
108 #define ASSEMBLE(x,z,p,ax,az,q) R_ASSEMBLE(x,z,p,ax,az,q)
109 #define ASSIGN(x,z,p,ax,az,q) R_ASSIGN(x,z,p,ax,az,q)
110 #define ASSIGN_CONJ(x,z,p,ax,az,q) R_ASSIGN(x,z,p,ax,az,q)
111 #define ASSIGN2(x,z,p,ax,az,q) R_ASSIGN(x,z,p,ax,az,q)
112 #define ASSIGN2_CONJ(x,z,p,ax,az,q) R_ASSIGN(x,z,p,ax,az,q)
113 #define ASSIGN_REAL(x,p,ax,q) R_ASSIGN_REAL(x,p,ax,q)
114 #define MULT(x,z,p,ax,az,q,bx,bz,pb) R_MULT(x,z,p,ax,az,q,bx,bz,pb)
115 #define MULTADD(x,z,p,ax,az,q,bx,bz,pb) R_MULTADD(x,z,p,ax,az,q,bx,bz,pb)
116 #define ADD(x,z,p,ax,az,q,bx,bz,pb) R_ADD(x,z,p,ax,az,q,bx,bz,pb)
117 #define ADD_REAL(x,p, ax,q, bx,r) R_ADD_REAL(x,p, ax,q, bx,r)
118 #define MULTSUB(x,z,p,ax,az,q,bx,bz,pb) R_MULTSUB(x,z,p,ax,az,q,bx,bz,pb)
119 #define MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb) \
120  R_MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb)
121 #define MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb) \
122  R_MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb)
123 #define LLDOT(x,p,ax,az,q) R_LLDOT(x,p,ax,az,q)
124 #define CLEAR(x,z,p) R_CLEAR(x,z,p)
125 #define CLEAR_IMAG(x,z,p) R_CLEAR_IMAG(x,z,p)
126 #define DIV(x,z,p,ax,az,q) R_DIV(x,z,p,ax,az,q)
127 #define DIV_REAL(x,z,p, ax,az,q, bx,r) R_DIV_REAL(x,z,p, ax,az,q, bx,r)
128 #define MULT_REAL(x,z,p, ax,az,q, bx,r) R_MULT_REAL(x,z,p, ax,az,q, bx,r)
129 #define LDLDOT(x,p, ax,az,q, bx,r) R_LDLDOT(x,p, ax,az,q, bx,r)
130 
131 #define XPRINT0(x,z,p) R_PRINT(0,x,z,p)
132 #define XPRINT1(x,z,p) R_PRINT(1,x,z,p)
133 #define XPRINT2(x,z,p) R_PRINT(2,x,z,p)
134 #define XPRINT3(x,z,p) R_PRINT(3,x,z,p)
135 
136 /* -------------------------------------------------------------------------- */
137 /* complex */
138 /* -------------------------------------------------------------------------- */
139 
140 #elif defined (COMPLEX)
141 
142 #define PREFIX amesos_c_
143 
144 #ifdef NCONJUGATE
145 #define TEMPLATE(name) CT_TEMPLATE(name)
146 #else
147 #define TEMPLATE(name) C_TEMPLATE(name)
148 #endif
149 
150 #define ASSEMBLE(x,z,p,ax,az,q) C_ASSEMBLE(x,z,p,ax,az,q)
151 #define ASSIGN(x,z,p,ax,az,q) C_ASSIGN(x,z,p,ax,az,q)
152 #define ASSIGN_CONJ(x,z,p,ax,az,q) C_ASSIGN_CONJ(x,z,p,ax,az,q)
153 #define ASSIGN2(x,z,p,ax,az,q) C_ASSIGN(x,z,p,ax,az,q)
154 #define ASSIGN2_CONJ(x,z,p,ax,az,q) C_ASSIGN_CONJ(x,z,p,ax,az,q)
155 #define ASSIGN_REAL(x,p,ax,q) C_ASSIGN_REAL(x,p,ax,q)
156 #define XTYPE CHOLMOD_COMPLEX
157 #define XTYPE2 CHOLMOD_COMPLEX
158 #define XTYPE_OK(type) C_XTYPE_OK(type)
159 #define ENTRY_IS_NONZERO(ax,az,q) C_IS_NONZERO(ax,az,q)
160 #define ENTRY_IS_ZERO(ax,az,q) C_IS_ZERO(ax,az,q)
161 #define ENTRY_IS_ONE(ax,az,q) C_IS_ONE(ax,az,q)
162 #define IMAG_IS_NONZERO(ax,az,q) C_IMAG_IS_NONZERO(ax,az,q)
163 #define ENTRY_SIZE 2
164 
165 #define MULTADD(x,z,p,ax,az,q,bx,bz,pb) C_MULTADD(x,z,p,ax,az,q,bx,bz,pb)
166 #define MULT(x,z,p,ax,az,q,bx,bz,pb) C_MULT(x,z,p,ax,az,q,bx,bz,pb)
167 #define ADD(x,z,p,ax,az,q,bx,bz,pb) C_ADD(x,z,p,ax,az,q,bx,bz,pb)
168 #define ADD_REAL(x,p, ax,q, bx,r) C_ADD_REAL(x,p, ax,q, bx,r)
169 #define MULTSUB(x,z,p,ax,az,q,bx,bz,pb) C_MULTSUB(x,z,p,ax,az,q,bx,bz,pb)
170 #define MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb) \
171  C_MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb)
172 #define MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb) \
173  C_MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb)
174 #define LLDOT(x,p,ax,az,q) C_LLDOT(x,p,ax,az,q)
175 #define CLEAR(x,z,p) C_CLEAR(x,z,p)
176 #define CLEAR_IMAG(x,z,p) C_CLEAR_IMAG(x,z,p)
177 #define DIV(x,z,p,ax,az,q) C_DIV(x,z,p,ax,az,q)
178 #define DIV_REAL(x,z,p, ax,az,q, bx,r) C_DIV_REAL(x,z,p, ax,az,q, bx,r)
179 #define MULT_REAL(x,z,p, ax,az,q, bx,r) C_MULT_REAL(x,z,p, ax,az,q, bx,r)
180 #define LDLDOT(x,p, ax,az,q, bx,r) C_LDLDOT(x,p, ax,az,q, bx,r)
181 
182 #define XPRINT0(x,z,p) C_PRINT(0,x,z,p)
183 #define XPRINT1(x,z,p) C_PRINT(1,x,z,p)
184 #define XPRINT2(x,z,p) C_PRINT(2,x,z,p)
185 #define XPRINT3(x,z,p) C_PRINT(3,x,z,p)
186 
187 /* -------------------------------------------------------------------------- */
188 /* zomplex */
189 /* -------------------------------------------------------------------------- */
190 
191 #elif defined (ZOMPLEX)
192 
193 #define PREFIX amesos_z_
194 
195 #ifdef NCONJUGATE
196 #define TEMPLATE(name) ZT_TEMPLATE(name)
197 #else
198 #define TEMPLATE(name) Z_TEMPLATE(name)
199 #endif
200 
201 #define ASSEMBLE(x,z,p,ax,az,q) Z_ASSEMBLE(x,z,p,ax,az,q)
202 #define ASSIGN(x,z,p,ax,az,q) Z_ASSIGN(x,z,p,ax,az,q)
203 #define ASSIGN_CONJ(x,z,p,ax,az,q) Z_ASSIGN_CONJ(x,z,p,ax,az,q)
204 #define ASSIGN2(x,z,p,ax,az,q) Z_ASSIGN(x,z,p,ax,az,q)
205 #define ASSIGN2_CONJ(x,z,p,ax,az,q) Z_ASSIGN_CONJ(x,z,p,ax,az,q)
206 #define ASSIGN_REAL(x,p,ax,q) Z_ASSIGN_REAL(x,p,ax,q)
207 #define XTYPE CHOLMOD_ZOMPLEX
208 #define XTYPE2 CHOLMOD_ZOMPLEX
209 #define XTYPE_OK(type) Z_XTYPE_OK(type)
210 #define ENTRY_IS_NONZERO(ax,az,q) Z_IS_NONZERO(ax,az,q)
211 #define ENTRY_IS_ZERO(ax,az,q) Z_IS_ZERO(ax,az,q)
212 #define ENTRY_IS_ONE(ax,az,q) Z_IS_ONE(ax,az,q)
213 #define IMAG_IS_NONZERO(ax,az,q) Z_IMAG_IS_NONZERO(ax,az,q)
214 #define ENTRY_SIZE 1
215 
216 #define MULTADD(x,z,p,ax,az,q,bx,bz,pb) Z_MULTADD(x,z,p,ax,az,q,bx,bz,pb)
217 #define MULT(x,z,p,ax,az,q,bx,bz,pb) Z_MULT(x,z,p,ax,az,q,bx,bz,pb)
218 #define ADD(x,z,p,ax,az,q,bx,bz,pb) Z_ADD(x,z,p,ax,az,q,bx,bz,pb)
219 #define ADD_REAL(x,p, ax,q, bx,r) Z_ADD_REAL(x,p, ax,q, bx,r)
220 #define MULTSUB(x,z,p,ax,az,q,bx,bz,pb) Z_MULTSUB(x,z,p,ax,az,q,bx,bz,pb)
221 #define MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb) \
222  Z_MULTADDCONJ(x,z,p,ax,az,q,bx,bz,pb)
223 #define MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb) \
224  Z_MULTSUBCONJ(x,z,p,ax,az,q,bx,bz,pb)
225 #define LLDOT(x,p,ax,az,q) Z_LLDOT(x,p,ax,az,q)
226 #define CLEAR(x,z,p) Z_CLEAR(x,z,p)
227 #define CLEAR_IMAG(x,z,p) Z_CLEAR_IMAG(x,z,p)
228 #define DIV(x,z,p,ax,az,q) Z_DIV(x,z,p,ax,az,q)
229 #define DIV_REAL(x,z,p, ax,az,q, bx,r) Z_DIV_REAL(x,z,p, ax,az,q, bx,r)
230 #define MULT_REAL(x,z,p, ax,az,q, bx,r) Z_MULT_REAL(x,z,p, ax,az,q, bx,r)
231 #define LDLDOT(x,p, ax,az,q, bx,r) Z_LDLDOT(x,p, ax,az,q, bx,r)
232 
233 #define XPRINT0(x,z,p) Z_PRINT(0,x,z,p)
234 #define XPRINT1(x,z,p) Z_PRINT(1,x,z,p)
235 #define XPRINT2(x,z,p) Z_PRINT(2,x,z,p)
236 #define XPRINT3(x,z,p) Z_PRINT(3,x,z,p)
237 
238 #endif