00001
00009 #ifndef TBCI_VEC_KERN_UNR_PREF_H
00010 #define TBCI_VEC_KERN_UNR_PREF_H
00011 #include "basics.h"
00012
00013 NAMESPACE_TBCI
00014
00015 #define ADD3(r,v1,v2,f1,f2) r = v1 + v2
00017 VKERN_TEMPL_3V(do_vec_vec_add, ADD3)
00018
00019 #define SUB3(r,v1,v2,f1,f2) r = v1 - v2
00021 VKERN_TEMPL_3V(do_vec_vec_sub, SUB3)
00022
00023 #define MUL3(r,v1,v2,f1,f2) r = v1 * v2
00025 VKERN_TEMPL_3V(do_vec_vec_mul, MUL3)
00026
00027 #define CMUL3(r,v1,v2,f1,f2) r = CPLX__ conj(v1) * v2
00029 VKERN_TEMPL_3V(do_vec_vec_cmul, CMUL3)
00030
00031 #define DIV3(r,v1,v2,f1,f2) r = v1 / v2
00033 VKERN_TEMPL_3V(do_vec_vec_div, DIV3)
00034
00035 #define CDIV3(r,v1,v2,f1,f2) r = CPLX__ conj(v1) / v2
00037 VKERN_TEMPL_3V(do_vec_vec_cdiv, CDIV3)
00038
00039
00040 #define ADD2(r,v1,f1,f2) r += v1
00042 VKERN_TEMPL_2V(do_vec_add_vec, ADD2)
00043
00044 #define SUB2(r,v1,f1,f2) r -= v1
00046 VKERN_TEMPL_2V(do_vec_sub_vec, SUB2)
00047
00048 #define SUB2I(r,v1,f1,f2) r = v1 - r
00050 VKERN_TEMPL_2V(do_vec_sub_vec_inv, SUB2I)
00051
00052 #define MUL2(r,v1,f1,f2) r *= v1
00054 VKERN_TEMPL_2V(do_vec_mul_vec, MUL2)
00055
00056 #define CMUL2(r,v1,f1,f2) r = CPLX__ conj(r) * v1
00058 VKERN_TEMPL_2V(do_vec_cmul_vec, CMUL2)
00059
00060 #define CMUL2I(r,v1,f1,f2) r *= CPLX__ conj(v1)
00062 VKERN_TEMPL_2V(do_vec_cmul_vec_inv, CMUL2I)
00063
00064 #define DIV2(r,v1,f1,f2) r /= v1
00066 VKERN_TEMPL_2V(do_vec_div_vec, DIV2)
00067
00068 #define DIV2I(r,v1,f1,f2) r = v1 / r
00070 VKERN_TEMPL_2V(do_vec_div_vec_inv, DIV2I)
00071
00072 #define CDIV2(r,v1,f1,f2) r = CPLX__ conj(r) / v1
00074 VKERN_TEMPL_2V(do_vec_cdiv_vec, CDIV2)
00075
00076 #define CDIV2I(r,v1,f1,f2) r = CPLX__ conj(v1) / r
00078 VKERN_TEMPL_2V(do_vec_cdiv_vec_inv, CDIV2I)
00079
00080
00081
00082 #define ADD2NV(r,v1,f1,f2) r = v1 + f2
00084 VKERN_TEMPL_2V_C(do_vec_val_add, ADD2NV)
00085
00086 #define SUB2NV(r,v1,f1,f2) r = v1 - f2
00088 VKERN_TEMPL_2V_C(do_vec_val_sub, SUB2NV)
00089
00090 #define MUL2NV(r,v1,f1,f2) r = v1 * f2
00092 VKERN_TEMPL_2V_C(do_vec_val_mul, MUL2NV)
00093
00094
00095 #define ADD2RV(r,v1,f1,f2) r = f2 + v1
00097 VKERN_TEMPL_2V_C(do_val_vec_add, ADD2RV)
00098
00099 #define SUB2RV(r,v1,f1,f2) r = f2 - v1
00101 VKERN_TEMPL_2V_C(do_val_vec_sub, SUB2RV)
00102
00103 #define MUL2RV(r,v1,f1,f2) r = f2 * v1
00105 VKERN_TEMPL_2V_C(do_val_vec_mul, MUL2RV)
00106
00107 #define DIV2RV(r,v1,f1,f2) r = f2 / v1
00109 VKERN_TEMPL_2V_C(do_val_vec_div, DIV2RV)
00110
00111
00112 #define ADD1NV(r,f1,f2) r += f2
00114 VKERN_TEMPL_1V_C(do_vec_add_val, ADD1NV)
00115
00116 #define SUB1NV(r,f1,f2) r -= f2
00118 VKERN_TEMPL_1V_C(do_vec_sub_val, SUB1NV)
00119
00120 #define SUB1RV(r,f1,f2) r = f2 - r
00122 VKERN_TEMPL_1V_C(do_val_sub_vec, SUB1RV)
00123
00124 #define MUL1NV(r,f1,f2) r *= f2
00126 VKERN_TEMPL_1V_C(do_vec_mul_val, MUL1NV)
00127
00128 #define DIV1NV(r,f1,f2) r /= f2
00130 VKERN_TEMPL_1V_C(do_vec_div_val, DIV1NV)
00131
00132 #define DIV1RV(r,f1,f2) r = f2 / r
00134 VKERN_TEMPL_1V_C(do_val_div_vec, DIV1RV)
00135
00136 #define ADD1RV(r,f1,f2) r = f2 + r
00138 VKERN_TEMPL_1V_C(do_val_add_vec, ADD1RV)
00139
00140
00141 #define MUL1RV(r,f1,f2) r = f2 * r;
00142
00143
00144
00145
00146 #define ADD2NS(r,v1,f1,f2) r += f2*v1
00148 VKERN_TEMPL_2V_C(do_vec_add_svc, ADD2NS)
00149
00150 #define SUB2NS(r,v1,f1,f2) r -= f2*v1
00152 VKERN_TEMPL_2V_C(do_vec_sub_svc, SUB2NS)
00153
00154 #define SUB2RS(r,v1,f1,f2) r = f2*v1 - r
00156 VKERN_TEMPL_2V_C(do_vec_sub_svc_inv, SUB2RS)
00157
00158
00159 #define ADD3NS(r,v1,v2,f1,f2) r = v1 + f2*v2
00161 VKERN_TEMPL_3V_C(do_vec_svc_add, ADD3NS)
00162
00163 #define SUB3NS(r,v1,v2,f1,f2) r = v1 - f2*v2
00165 VKERN_TEMPL_3V_C(do_vec_svc_sub, SUB3NS)
00166
00167
00168 #define ADD3SN(r,v1,v2,f1,f2) r = f2*v1 + v2
00170 VKERN_TEMPL_3V_C(do_svc_vec_add, ADD3SN)
00171
00172 #define SUB3SN(r,v1,v2,f1,f2) r = f2*v1 - v2
00174 VKERN_TEMPL_3V_C(do_svc_vec_sub, SUB3SN)
00175
00176
00177 #define ADD3SS(r,v1,v2,f1,f2) r = f1*v1 + f2*v2
00179 VKERN_TEMPL_3V_CC(do_svc_svc_add, ADD3SS)
00180
00181 #define SUB3SS(r,v1,v2,f1,f2) r = f1*v1 - f2*v2
00183 VKERN_TEMPL_3V_CC(do_svc_svc_sub, SUB3SS)
00184
00185
00186 #define ADD2SN(r,v1,f1,f2) r = f2*r + v1
00188 VKERN_TEMPL_2V_C(do_svc_add_vec, ADD2SN)
00189
00190 #define SUB2SN(r,v1,f1,f2) r = f2*r - v1
00192 VKERN_TEMPL_2V_C(do_svc_sub_vec, SUB2SN)
00193
00194
00195 #define ADD2SS(r,v1,f1,f2) r = f1*r + f2*v1
00197 VKERN_TEMPL_2V_CC(do_svc_add_svc, ADD2SS)
00198
00199 #define SUB2SS(r,v1,f1,f2) r = f1*r - f2*v1
00201 VKERN_TEMPL_2V_CC(do_svc_sub_svc, SUB2SS)
00202
00203
00204 #define ADD2SV(r,v1,f1,f2) r = f1*v1 + f2
00206 VKERN_TEMPL_2V_CC(do_svc_val_add, ADD2SV)
00207
00208 #define SUB2SV(r,v1,f1,f2) r = f1*v1 - f2
00210 VKERN_TEMPL_2V_CC(do_svc_val_sub, SUB2SV)
00211
00212
00213 #define ADD1SV(r,f1,f2) r = f1*r + f2
00215 VKERN_TEMPL_1V_CC(do_svc_add_val, ADD1SV)
00216
00217 #define SUB1SV(r,f1,f2) r = f1*r - f2
00219 VKERN_TEMPL_1V_CC(do_svc_sub_val, SUB1SV)
00220
00221
00222 #define ADD2VS(r,v1,f1,f2) r = f1 + f2*v1
00224 VKERN_TEMPL_2V_CC(do_val_svc_add, ADD2VS)
00225
00226 #define SUB2VS(r,v1,f1,f2) r = f1 - f2*v1
00228 VKERN_TEMPL_2V_CC(do_val_svc_sub, SUB2VS)
00229
00230 #define DIV2VS(r,v1,f1,f2) r = f1 / (f2*v1)
00232 VKERN_TEMPL_2V_CC(do_val_svc_div, DIV2VS)
00233
00234
00235 #define NEG2(r,v1,f1,f2) r = -v1
00237 VKERN_TEMPL_2V(do_vec_neg_vec, NEG2)
00238
00239 #define NEG1(r,f1,f2) r = -r
00241 VKERN_TEMPL_1V(do_vec_neg, NEG1)
00242
00243
00244 #define DOT2(r,v1,f1,f2) f2 += CPLX__ conj(r) * v1
00246 VKERN_TEMPL_2V_T(do_vec_dot, DOT2, T)
00247
00248 #define MULT2(r,v1,f1,f2) f2 += r * v1
00250 VKERN_TEMPL_2V_T(do_vec_mult, MULT2, T)
00251
00252
00253 #define FABS1(r,f1,f2) f2 += fabssqr(r)
00255 VKERN_TEMPL_1V_T(do_vec_fabssqr, FABS1, LONG_DOUBLE)
00256
00257 #define SQR1(r,f1,f2) f2 += r*r
00259 VKERN_TEMPL_1V_T(do_vec_sumsqr, SQR1, T)
00260
00261 #define SUM1(r,f1,f2) f2 += r
00263 VKERN_TEMPL_1V_T(do_vec_sum, SUM1, T)
00264
00265
00266 #define COMP2(r,v1,f1,f2) if (r != v1) ++f2
00268 VKERN_TEMPL_2V_T(do_vv_comp, COMP2, volatile long)
00269
00270
00271
00272 #define SUMMULT3(r,v1,v2,f1,f2) r += v1*v2
00273 VKERN_TEMPL_3V(do_add_vec_vec_mul, SUMMULT3)
00274 #define SUMCMULT3(r,v1,v2,f1,f2) r += CPLX__ conj(v1)*v2
00275 VKERN_TEMPL_3V(do_add_vec_vec_cmul, SUMCMULT3)
00276
00277
00278 NAMESPACE_END
00279
00280 #endif
00281