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