TBCI Numerical high perf. C++ Library  2.8.0
Macros | Functions
vec_kern_unr_pref.h File Reference

Kernels to be called for array operations Unrolled and with prefetching. More...

#include "tbci/basics.h"
Include dependency graph for vec_kern_unr_pref.h:

Go to the source code of this file.

Macros

#define ADD3(r, v1, v2, f1, f2)   r = v1 + v2
 
#define SUB3(r, v1, v2, f1, f2)   r = v1 - v2
 
#define MUL3(r, v1, v2, f1, f2)   r = v1 * v2
 
#define CMUL3(r, v1, v2, f1, f2)   r = CPLX__ conj(v1) * v2
 
#define DIV3(r, v1, v2, f1, f2)   r = v1 / v2
 
#define CDIV3(r, v1, v2, f1, f2)   r = CPLX__ conj(v1) / v2
 
#define ADD2(r, v1, f1, f2)   r += v1
 
#define SUB2(r, v1, f1, f2)   r -= v1
 
#define SUB2I(r, v1, f1, f2)   r = v1 - r
 
#define MUL2(r, v1, f1, f2)   r *= v1
 
#define CMUL2(r, v1, f1, f2)   r = CPLX__ conj(r) * v1
 
#define CMUL2I(r, v1, f1, f2)   r *= CPLX__ conj(v1)
 
#define DIV2(r, v1, f1, f2)   r /= v1
 
#define DIV2I(r, v1, f1, f2)   r = v1 / r
 
#define CDIV2(r, v1, f1, f2)   r = CPLX__ conj(r) / v1
 
#define CDIV2I(r, v1, f1, f2)   r = CPLX__ conj(v1) / r
 
#define ADD2NV(r, v1, f1, f2)   r = v1 + f2
 
#define SUB2NV(r, v1, f1, f2)   r = v1 - f2
 
#define MUL2NV(r, v1, f1, f2)   r = v1 * f2
 
#define ADD2RV(r, v1, f1, f2)   r = f2 + v1
 
#define SUB2RV(r, v1, f1, f2)   r = f2 - v1
 
#define MUL2RV(r, v1, f1, f2)   r = f2 * v1
 
#define DIV2RV(r, v1, f1, f2)   r = f2 / v1
 
#define ADD1NV(r, f1, f2)   r += f2
 
#define SUB1NV(r, f1, f2)   r -= f2
 
#define SUB1RV(r, f1, f2)   r = f2 - r
 
#define MUL1NV(r, f1, f2)   r *= f2
 
#define DIV1NV(r, f1, f2)   r /= f2
 
#define DIV1RV(r, f1, f2)   r = f2 / r
 
#define ADD1RV(r, f1, f2)   r = f2 + r
 
#define MUL1RV(r, f1, f2)   r = f2 * r;
 
#define ADD2NS(r, v1, f1, f2)   r += f2*v1
 
#define SUB2NS(r, v1, f1, f2)   r -= f2*v1
 
#define SUB2RS(r, v1, f1, f2)   r = f2*v1 - r
 
#define ADD3NS(r, v1, v2, f1, f2)   r = v1 + f2*v2
 
#define SUB3NS(r, v1, v2, f1, f2)   r = v1 - f2*v2
 
#define ADD3SN(r, v1, v2, f1, f2)   r = f2*v1 + v2
 
#define SUB3SN(r, v1, v2, f1, f2)   r = f2*v1 - v2
 
#define ADD3SS(r, v1, v2, f1, f2)   r = f1*v1 + f2*v2
 
#define SUB3SS(r, v1, v2, f1, f2)   r = f1*v1 - f2*v2
 
#define ADD2SN(r, v1, f1, f2)   r = f2*r + v1
 
#define SUB2SN(r, v1, f1, f2)   r = f2*r - v1
 
#define ADD2SS(r, v1, f1, f2)   r = f1*r + f2*v1
 
#define SUB2SS(r, v1, f1, f2)   r = f1*r - f2*v1
 
#define ADD2SV(r, v1, f1, f2)   r = f1*v1 + f2
 
#define SUB2SV(r, v1, f1, f2)   r = f1*v1 - f2
 
#define ADD1SV(r, f1, f2)   r = f1*r + f2
 
#define SUB1SV(r, f1, f2)   r = f1*r - f2
 
#define ADD2VS(r, v1, f1, f2)   r = f1 + f2*v1
 
#define SUB2VS(r, v1, f1, f2)   r = f1 - f2*v1
 
#define DIV2VS(r, v1, f1, f2)   r = f1 / (f2*v1)
 
#define NEG2(r, v1, f1, f2)   r = -v1
 
#define NEG1(r, f1, f2)   r = -r
 
#define DOT2(r, v1, f1, f2)   f2 += CPLX__ conj(r) * v1
 
#define XDOT2(r, v1, f1, f2)   { T y = CPLX__ conj(r) * v1; T t = f2+y; f1 += (t-f2)-y; f2 = t; }
 
#define MULT2(r, v1, f1, f2)   f2 += r * v1
 
#define XMULT2(r, v1, f1, f2)   { T y = r * v1; T t = f2+y; f1 += (t-f2)-y; f2 = t; }
 
#define FABS1(r, f1, f2)   f2 += fabssqr(r)
 
#define XFABS1(r, f1, f2)   { double y = fabssqr(r); double t = f2+y; f1 += (t-f2)-y; f2 = t; }
 
#define SQR1(r, f1, f2)   f2 += r*r
 
#define XSQR1(r, f1, f2)   { T y = r*r; T t = f2+y; f1 += (t-f2)-y; f2 = t; }
 
#define SUM1(r, f1, f2)   f2 += r
 
#define XSUM1(r, f1, f2)   { T t = f2+r; f1 += (t-f2)-r; f2 = t; }
 
#define SUMMULT3(r, v1, v2, f1, f2)   r += v1*v2
 
#define SUMCMULT3(r, v1, v2, f1, f2)   r += CPLX__ conj(v1)*v2
 

Functions

 VKERN_TEMPL_3V (do_vec_vec_add, ADD3)
 vec = vec + vec; More...
 
 VKERN_TEMPL_3V (do_vec_vec_sub, SUB3)
 vec = vec - vec; More...
 
 VKERN_TEMPL_3V (do_vec_vec_mul, MUL3)
 vec = emul (vec, vec); More...
 
 VKERN_TEMPL_3V (do_vec_vec_cmul, CMUL3)
 vec = cemul(vec, vec); More...
 
 VKERN_TEMPL_3V (do_vec_vec_div, DIV3)
 vec = ediv (vec, vec); More...
 
 VKERN_TEMPL_3V (do_vec_vec_cdiv, CDIV3)
 vec = cediv(vec, vec); More...
 
 VKERN_TEMPL_2V (do_vec_add_vec, ADD2)
 vec += vec; More...
 
 VKERN_TEMPL_2V (do_vec_sub_vec, SUB2)
 vec -= vec; More...
 
 VKERN_TEMPL_2V (do_vec_sub_vec_inv, SUB2I)
 vec -= vec; vec = -vec; More...
 
 VKERN_TEMPL_2V (do_vec_mul_vec, MUL2)
 vec *= vec; (emul) More...
 
 VKERN_TEMPL_2V (do_vec_cmul_vec, CMUL2)
 vec *= conj(vec); (cemul) More...
 
 VKERN_TEMPL_2V (do_vec_cmul_vec_inv, CMUL2I)
 vec *= conj(vec); (cemul) More...
 
 VKERN_TEMPL_2V (do_vec_div_vec, DIV2)
 vec /= vec; (ediv) More...
 
 VKERN_TEMPL_2V (do_vec_div_vec_inv, DIV2I)
 vec /= vec; (ediv) More...
 
 VKERN_TEMPL_2V (do_vec_cdiv_vec, CDIV2)
 vec /= conj(vec); (cediv) More...
 
 VKERN_TEMPL_2V (do_vec_cdiv_vec_inv, CDIV2I)
 vec /= conj(vec); (cediv) More...
 
 VKERN_TEMPL_2V_C (do_vec_val_add, ADD2NV)
 vec = vec + val More...
 
 VKERN_TEMPL_2V_C (do_vec_val_sub, SUB2NV)
 vec = vec - val More...
 
 VKERN_TEMPL_2V_C (do_vec_val_mul, MUL2NV)
 vec = vec * val; More...
 
 VKERN_TEMPL_2V_C (do_val_vec_add, ADD2RV)
 vec = val + vec; More...
 
 VKERN_TEMPL_2V_C (do_val_vec_sub, SUB2RV)
 vec = val - vec; More...
 
 VKERN_TEMPL_2V_C (do_val_vec_mul, MUL2RV)
 vec = val * vec; More...
 
 VKERN_TEMPL_2V_C (do_val_vec_div, DIV2RV)
 vec = val / vec; More...
 
 VKERN_TEMPL_1V_C (do_vec_add_val, ADD1NV)
 vec += val; More...
 
 VKERN_TEMPL_1V_C (do_vec_sub_val, SUB1NV)
 vec -= val; More...
 
 VKERN_TEMPL_1V_C (do_val_sub_vec, SUB1RV)
 vec -= val; vec = -vec; More...
 
 VKERN_TEMPL_1V_C (do_vec_mul_val, MUL1NV)
 vec *= val; More...
 
 VKERN_TEMPL_1V_C (do_vec_div_val, DIV1NV)
 vec /= val; More...
 
 VKERN_TEMPL_1V_C (do_val_div_vec, DIV1RV)
 vec = val / vec; More...
 
 VKERN_TEMPL_1V_C (do_val_add_vec, ADD1RV)
 vec += val More...
 
 VKERN_TEMPL_2V_C (do_vec_add_svc, ADD2NS)
 vec += val*vec More...
 
 VKERN_TEMPL_2V_C (do_vec_sub_svc, SUB2NS)
 vec -= val*vec More...
 
 VKERN_TEMPL_2V_C (do_vec_sub_svc_inv, SUB2RS)
 vec -= val*vec More...
 
 VKERN_TEMPL_3V_C (do_vec_svc_add, ADD3NS)
 vec = vec + s*vec; More...
 
 VKERN_TEMPL_3V_C (do_vec_svc_sub, SUB3NS)
 vec = vec - s*vec; More...
 
 VKERN_TEMPL_3V_C (do_svc_vec_add, ADD3SN)
 vec = s*vec + vec; More...
 
 VKERN_TEMPL_3V_C (do_svc_vec_sub, SUB3SN)
 vec = s*vec - vec; More...
 
 VKERN_TEMPL_3V_CC (do_svc_svc_add, ADD3SS)
 vec = s*vec + s*vec; More...
 
 VKERN_TEMPL_3V_CC (do_svc_svc_sub, SUB3SS)
 vec = s*vec - s*vec; More...
 
 VKERN_TEMPL_2V_C (do_svc_add_vec, ADD2SN)
 vec *= s; vec += vec; More...
 
 VKERN_TEMPL_2V_C (do_svc_sub_vec, SUB2SN)
 vec *= s; vec -= vec; More...
 
 VKERN_TEMPL_2V_CC (do_svc_add_svc, ADD2SS)
 vec *= s; vec += s*vec; More...
 
 VKERN_TEMPL_2V_CC (do_svc_sub_svc, SUB2SS)
 vec *= s; vec -= s*vec; More...
 
 VKERN_TEMPL_2V_CC (do_svc_val_add, ADD2SV)
 vec = s*vec + val More...
 
 VKERN_TEMPL_2V_CC (do_svc_val_sub, SUB2SV)
 vec = s*vec - val More...
 
 VKERN_TEMPL_1V_CC (do_svc_add_val, ADD1SV)
 vec = s*vec; vec += val; More...
 
 VKERN_TEMPL_1V_CC (do_svc_sub_val, SUB1SV)
 vec = s*vec; vec -= val; More...
 
 VKERN_TEMPL_2V_CC (do_val_svc_add, ADD2VS)
 vec = val + s*vec; More...
 
 VKERN_TEMPL_2V_CC (do_val_svc_sub, SUB2VS)
 vec = val - s*vec; More...
 
 VKERN_TEMPL_2V_CC (do_val_svc_div, DIV2VS)
 vec = val / s*vec; More...
 
 VKERN_TEMPL_2V (do_vec_neg_vec, NEG2)
 vec = -vec More...
 
 VKERN_TEMPL_1V (do_vec_neg, NEG1)
 vec = -vec More...
 
 VKERN_TEMPL_2V_T (do_vec_dot_quick, DOT2, T)
 val = SUM vec * ~vec; More...
 
 VKERN_TEMPL_2V_T (do_vec_dot_exact, XDOT2, T)
 val = SUM vec * ~vec; More...
 
 VKERN_TEMPL_2V_T (do_vec_mult_quick, MULT2, T)
 val = SUM vec * vec; More...
 
 VKERN_TEMPL_2V_T_STRIDE (do_vec_mult_stride_quick, MULT2, T)
 
 VKERN_TEMPL_2V_T (do_vec_mult_exact, XMULT2, T)
 val = SUM vec * vec; More...
 
 VKERN_TEMPL_2V_T_STRIDE (do_vec_mult_stride_exact, XMULT2, T)
 
 VKERN_TEMPL_1V_T_LD (do_vec_fabssqr_quick, FABS1, double)
 val = SUM fabssqr vec ; More...
 
 VKERN_TEMPL_1V_T (do_vec_fabssqr_exact, XFABS1, double)
 val = SUM fabssqr vec ; More...
 
 VKERN_TEMPL_1V_T (do_vec_sumsqr_quick, SQR1, T)
 val = SUM sqr vec ; More...
 
 VKERN_TEMPL_1V_T (do_vec_sumsqr_exact, XSQR1, T)
 val = SUM sqr vec ; More...
 
 VKERN_TEMPL_1V_T (do_vec_sum_quick, SUM1, T)
 val = SUM vec ; More...
 
 VKERN_TEMPL_1V_T (do_vec_sum_exact, XSUM1, T)
 val = exact SUM vec More...
 
 VKERN_TEMPL_3V (do_add_vec_vec_mul, SUMMULT3)
 
 VKERN_TEMPL_3V (do_add_vec_vec_cmul, SUMCMULT3)
 

Detailed Description

Kernels to be called for array operations Unrolled and with prefetching.

Kurt Garloff kurt@.nosp@m.garl.nosp@m.off.d.nosp@m.e, 07/2002, GNU LGPL

Id:
vec_kern_unr_pref.h,v 1.1.2.39 2019/05/28 11:13:02 garloff Exp

Definition in file vec_kern_unr_pref.h.

Macro Definition Documentation

#define ADD1NV (   r,
  f1,
  f2 
)    r += f2

Definition at line 114 of file vec_kern_unr_pref.h.

#define ADD1RV (   r,
  f1,
  f2 
)    r = f2 + r

Definition at line 138 of file vec_kern_unr_pref.h.

#define ADD1SV (   r,
  f1,
  f2 
)    r = f1*r + f2

Definition at line 215 of file vec_kern_unr_pref.h.

#define ADD2 (   r,
  v1,
  f1,
  f2 
)    r += v1

Definition at line 42 of file vec_kern_unr_pref.h.

#define ADD2NS (   r,
  v1,
  f1,
  f2 
)    r += f2*v1

Definition at line 148 of file vec_kern_unr_pref.h.

#define ADD2NV (   r,
  v1,
  f1,
  f2 
)    r = v1 + f2

Definition at line 84 of file vec_kern_unr_pref.h.

#define ADD2RV (   r,
  v1,
  f1,
  f2 
)    r = f2 + v1

Definition at line 97 of file vec_kern_unr_pref.h.

#define ADD2SN (   r,
  v1,
  f1,
  f2 
)    r = f2*r + v1

Definition at line 188 of file vec_kern_unr_pref.h.

#define ADD2SS (   r,
  v1,
  f1,
  f2 
)    r = f1*r + f2*v1

Definition at line 197 of file vec_kern_unr_pref.h.

#define ADD2SV (   r,
  v1,
  f1,
  f2 
)    r = f1*v1 + f2

Definition at line 206 of file vec_kern_unr_pref.h.

#define ADD2VS (   r,
  v1,
  f1,
  f2 
)    r = f1 + f2*v1

Definition at line 224 of file vec_kern_unr_pref.h.

#define ADD3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 + v2

Definition at line 17 of file vec_kern_unr_pref.h.

#define ADD3NS (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 + f2*v2

Definition at line 161 of file vec_kern_unr_pref.h.

#define ADD3SN (   r,
  v1,
  v2,
  f1,
  f2 
)    r = f2*v1 + v2

Definition at line 170 of file vec_kern_unr_pref.h.

#define ADD3SS (   r,
  v1,
  v2,
  f1,
  f2 
)    r = f1*v1 + f2*v2

Definition at line 179 of file vec_kern_unr_pref.h.

#define CDIV2 (   r,
  v1,
  f1,
  f2 
)    r = CPLX__ conj(r) / v1

Definition at line 74 of file vec_kern_unr_pref.h.

#define CDIV2I (   r,
  v1,
  f1,
  f2 
)    r = CPLX__ conj(v1) / r

Definition at line 78 of file vec_kern_unr_pref.h.

#define CDIV3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = CPLX__ conj(v1) / v2

Definition at line 37 of file vec_kern_unr_pref.h.

#define CMUL2 (   r,
  v1,
  f1,
  f2 
)    r = CPLX__ conj(r) * v1

Definition at line 58 of file vec_kern_unr_pref.h.

#define CMUL2I (   r,
  v1,
  f1,
  f2 
)    r *= CPLX__ conj(v1)

Definition at line 62 of file vec_kern_unr_pref.h.

#define CMUL3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = CPLX__ conj(v1) * v2

Definition at line 29 of file vec_kern_unr_pref.h.

#define DIV1NV (   r,
  f1,
  f2 
)    r /= f2

Definition at line 130 of file vec_kern_unr_pref.h.

#define DIV1RV (   r,
  f1,
  f2 
)    r = f2 / r

Definition at line 134 of file vec_kern_unr_pref.h.

#define DIV2 (   r,
  v1,
  f1,
  f2 
)    r /= v1

Definition at line 66 of file vec_kern_unr_pref.h.

#define DIV2I (   r,
  v1,
  f1,
  f2 
)    r = v1 / r

Definition at line 70 of file vec_kern_unr_pref.h.

#define DIV2RV (   r,
  v1,
  f1,
  f2 
)    r = f2 / v1

Definition at line 109 of file vec_kern_unr_pref.h.

#define DIV2VS (   r,
  v1,
  f1,
  f2 
)    r = f1 / (f2*v1)

Definition at line 232 of file vec_kern_unr_pref.h.

#define DIV3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 / v2

Definition at line 33 of file vec_kern_unr_pref.h.

#define DOT2 (   r,
  v1,
  f1,
  f2 
)    f2 += CPLX__ conj(r) * v1

Definition at line 245 of file vec_kern_unr_pref.h.

#define FABS1 (   r,
  f1,
  f2 
)    f2 += fabssqr(r)

Definition at line 263 of file vec_kern_unr_pref.h.

#define MUL1NV (   r,
  f1,
  f2 
)    r *= f2

Definition at line 126 of file vec_kern_unr_pref.h.

#define MUL1RV (   r,
  f1,
  f2 
)    r = f2 * r;

Definition at line 143 of file vec_kern_unr_pref.h.

#define MUL2 (   r,
  v1,
  f1,
  f2 
)    r *= v1

Definition at line 54 of file vec_kern_unr_pref.h.

#define MUL2NV (   r,
  v1,
  f1,
  f2 
)    r = v1 * f2

Definition at line 92 of file vec_kern_unr_pref.h.

#define MUL2RV (   r,
  v1,
  f1,
  f2 
)    r = f2 * v1

Definition at line 105 of file vec_kern_unr_pref.h.

#define MUL3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 * v2

Definition at line 25 of file vec_kern_unr_pref.h.

#define MULT2 (   r,
  v1,
  f1,
  f2 
)    f2 += r * v1

Definition at line 253 of file vec_kern_unr_pref.h.

#define NEG1 (   r,
  f1,
  f2 
)    r = -r

Definition at line 241 of file vec_kern_unr_pref.h.

#define NEG2 (   r,
  v1,
  f1,
  f2 
)    r = -v1

Definition at line 237 of file vec_kern_unr_pref.h.

#define SQR1 (   r,
  f1,
  f2 
)    f2 += r*r

Definition at line 271 of file vec_kern_unr_pref.h.

#define SUB1NV (   r,
  f1,
  f2 
)    r -= f2

Definition at line 118 of file vec_kern_unr_pref.h.

#define SUB1RV (   r,
  f1,
  f2 
)    r = f2 - r

Definition at line 122 of file vec_kern_unr_pref.h.

#define SUB1SV (   r,
  f1,
  f2 
)    r = f1*r - f2

Definition at line 219 of file vec_kern_unr_pref.h.

#define SUB2 (   r,
  v1,
  f1,
  f2 
)    r -= v1

Definition at line 46 of file vec_kern_unr_pref.h.

#define SUB2I (   r,
  v1,
  f1,
  f2 
)    r = v1 - r

Definition at line 50 of file vec_kern_unr_pref.h.

#define SUB2NS (   r,
  v1,
  f1,
  f2 
)    r -= f2*v1

Definition at line 152 of file vec_kern_unr_pref.h.

#define SUB2NV (   r,
  v1,
  f1,
  f2 
)    r = v1 - f2

Definition at line 88 of file vec_kern_unr_pref.h.

#define SUB2RS (   r,
  v1,
  f1,
  f2 
)    r = f2*v1 - r

Definition at line 156 of file vec_kern_unr_pref.h.

#define SUB2RV (   r,
  v1,
  f1,
  f2 
)    r = f2 - v1

Definition at line 101 of file vec_kern_unr_pref.h.

#define SUB2SN (   r,
  v1,
  f1,
  f2 
)    r = f2*r - v1

Definition at line 192 of file vec_kern_unr_pref.h.

#define SUB2SS (   r,
  v1,
  f1,
  f2 
)    r = f1*r - f2*v1

Definition at line 201 of file vec_kern_unr_pref.h.

#define SUB2SV (   r,
  v1,
  f1,
  f2 
)    r = f1*v1 - f2

Definition at line 210 of file vec_kern_unr_pref.h.

#define SUB2VS (   r,
  v1,
  f1,
  f2 
)    r = f1 - f2*v1

Definition at line 228 of file vec_kern_unr_pref.h.

#define SUB3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 - v2

Definition at line 21 of file vec_kern_unr_pref.h.

#define SUB3NS (   r,
  v1,
  v2,
  f1,
  f2 
)    r = v1 - f2*v2

Definition at line 165 of file vec_kern_unr_pref.h.

#define SUB3SN (   r,
  v1,
  v2,
  f1,
  f2 
)    r = f2*v1 - v2

Definition at line 174 of file vec_kern_unr_pref.h.

#define SUB3SS (   r,
  v1,
  v2,
  f1,
  f2 
)    r = f1*v1 - f2*v2

Definition at line 183 of file vec_kern_unr_pref.h.

#define SUM1 (   r,
  f1,
  f2 
)    f2 += r

Definition at line 279 of file vec_kern_unr_pref.h.

#define SUMCMULT3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r += CPLX__ conj(v1)*v2

Definition at line 291 of file vec_kern_unr_pref.h.

#define SUMMULT3 (   r,
  v1,
  v2,
  f1,
  f2 
)    r += v1*v2

Definition at line 289 of file vec_kern_unr_pref.h.

#define XDOT2 (   r,
  v1,
  f1,
  f2 
)    { T y = CPLX__ conj(r) * v1; T t = f2+y; f1 += (t-f2)-y; f2 = t; }

Definition at line 249 of file vec_kern_unr_pref.h.

#define XFABS1 (   r,
  f1,
  f2 
)    { double y = fabssqr(r); double t = f2+y; f1 += (t-f2)-y; f2 = t; }

Definition at line 267 of file vec_kern_unr_pref.h.

#define XMULT2 (   r,
  v1,
  f1,
  f2 
)    { T y = r * v1; T t = f2+y; f1 += (t-f2)-y; f2 = t; }

Definition at line 258 of file vec_kern_unr_pref.h.

#define XSQR1 (   r,
  f1,
  f2 
)    { T y = r*r; T t = f2+y; f1 += (t-f2)-y; f2 = t; }

Definition at line 275 of file vec_kern_unr_pref.h.

#define XSUM1 (   r,
  f1,
  f2 
)    { T t = f2+r; f1 += (t-f2)-r; f2 = t; }

Definition at line 283 of file vec_kern_unr_pref.h.

Function Documentation

VKERN_TEMPL_1V ( do_vec_neg  ,
NEG1   
)

vec = -vec

VKERN_TEMPL_1V_C ( do_vec_add_val  ,
ADD1NV   
)

vec += val;

VKERN_TEMPL_1V_C ( do_vec_sub_val  ,
SUB1NV   
)

vec -= val;

VKERN_TEMPL_1V_C ( do_val_sub_vec  ,
SUB1RV   
)

vec -= val; vec = -vec;

VKERN_TEMPL_1V_C ( do_vec_mul_val  ,
MUL1NV   
)

vec *= val;

VKERN_TEMPL_1V_C ( do_vec_div_val  ,
DIV1NV   
)

vec /= val;

VKERN_TEMPL_1V_C ( do_val_div_vec  ,
DIV1RV   
)

vec = val / vec;

VKERN_TEMPL_1V_C ( do_val_add_vec  ,
ADD1RV   
)

vec += val

VKERN_TEMPL_1V_CC ( do_svc_add_val  ,
ADD1SV   
)

vec = s*vec; vec += val;

VKERN_TEMPL_1V_CC ( do_svc_sub_val  ,
SUB1SV   
)

vec = s*vec; vec -= val;

VKERN_TEMPL_1V_T ( do_vec_fabssqr_exact  ,
XFABS1  ,
double   
)

val = SUM fabssqr vec ;

VKERN_TEMPL_1V_T ( do_vec_sumsqr_quick  ,
SQR1  ,
T   
)

val = SUM sqr vec ;

VKERN_TEMPL_1V_T ( do_vec_sumsqr_exact  ,
XSQR1  ,
T   
)

val = SUM sqr vec ;

VKERN_TEMPL_1V_T ( do_vec_sum_quick  ,
SUM1  ,
T   
)

val = SUM vec ;

VKERN_TEMPL_1V_T ( do_vec_sum_exact  ,
XSUM1  ,
T   
)

val = exact SUM vec

VKERN_TEMPL_1V_T_LD ( do_vec_fabssqr_quick  ,
FABS1  ,
double   
)

val = SUM fabssqr vec ;

VKERN_TEMPL_2V ( do_vec_add_vec  ,
ADD2   
)

vec += vec;

VKERN_TEMPL_2V ( do_vec_sub_vec  ,
SUB2   
)

vec -= vec;

VKERN_TEMPL_2V ( do_vec_sub_vec_inv  ,
SUB2I   
)

vec -= vec; vec = -vec;

VKERN_TEMPL_2V ( do_vec_mul_vec  ,
MUL2   
)

vec *= vec; (emul)

VKERN_TEMPL_2V ( do_vec_cmul_vec  ,
CMUL2   
)

vec *= conj(vec); (cemul)

VKERN_TEMPL_2V ( do_vec_cmul_vec_inv  ,
CMUL2I   
)

vec *= conj(vec); (cemul)

VKERN_TEMPL_2V ( do_vec_div_vec  ,
DIV2   
)

vec /= vec; (ediv)

VKERN_TEMPL_2V ( do_vec_div_vec_inv  ,
DIV2I   
)

vec /= vec; (ediv)

VKERN_TEMPL_2V ( do_vec_cdiv_vec  ,
CDIV2   
)

vec /= conj(vec); (cediv)

VKERN_TEMPL_2V ( do_vec_cdiv_vec_inv  ,
CDIV2I   
)

vec /= conj(vec); (cediv)

VKERN_TEMPL_2V ( do_vec_neg_vec  ,
NEG2   
)

vec = -vec

VKERN_TEMPL_2V_C ( do_vec_val_add  ,
ADD2NV   
)

vec = vec + val

VKERN_TEMPL_2V_C ( do_vec_val_sub  ,
SUB2NV   
)

vec = vec - val

VKERN_TEMPL_2V_C ( do_vec_val_mul  ,
MUL2NV   
)

vec = vec * val;

VKERN_TEMPL_2V_C ( do_val_vec_add  ,
ADD2RV   
)

vec = val + vec;

VKERN_TEMPL_2V_C ( do_val_vec_sub  ,
SUB2RV   
)

vec = val - vec;

VKERN_TEMPL_2V_C ( do_val_vec_mul  ,
MUL2RV   
)

vec = val * vec;

VKERN_TEMPL_2V_C ( do_val_vec_div  ,
DIV2RV   
)

vec = val / vec;

VKERN_TEMPL_2V_C ( do_vec_add_svc  ,
ADD2NS   
)

vec += val*vec

VKERN_TEMPL_2V_C ( do_vec_sub_svc  ,
SUB2NS   
)

vec -= val*vec

VKERN_TEMPL_2V_C ( do_vec_sub_svc_inv  ,
SUB2RS   
)

vec -= val*vec

VKERN_TEMPL_2V_C ( do_svc_add_vec  ,
ADD2SN   
)

vec *= s; vec += vec;

VKERN_TEMPL_2V_C ( do_svc_sub_vec  ,
SUB2SN   
)

vec *= s; vec -= vec;

VKERN_TEMPL_2V_CC ( do_svc_add_svc  ,
ADD2SS   
)

vec *= s; vec += s*vec;

VKERN_TEMPL_2V_CC ( do_svc_sub_svc  ,
SUB2SS   
)

vec *= s; vec -= s*vec;

VKERN_TEMPL_2V_CC ( do_svc_val_add  ,
ADD2SV   
)

vec = s*vec + val

VKERN_TEMPL_2V_CC ( do_svc_val_sub  ,
SUB2SV   
)

vec = s*vec - val

VKERN_TEMPL_2V_CC ( do_val_svc_add  ,
ADD2VS   
)

vec = val + s*vec;

VKERN_TEMPL_2V_CC ( do_val_svc_sub  ,
SUB2VS   
)

vec = val - s*vec;

VKERN_TEMPL_2V_CC ( do_val_svc_div  ,
DIV2VS   
)

vec = val / s*vec;

VKERN_TEMPL_2V_T ( do_vec_dot_quick  ,
DOT2  ,
T   
)

val = SUM vec * ~vec;

VKERN_TEMPL_2V_T ( do_vec_dot_exact  ,
XDOT2  ,
T   
)

val = SUM vec * ~vec;

VKERN_TEMPL_2V_T ( do_vec_mult_quick  ,
MULT2  ,
T   
)

val = SUM vec * vec;

VKERN_TEMPL_2V_T ( do_vec_mult_exact  ,
XMULT2  ,
T   
)

val = SUM vec * vec;

VKERN_TEMPL_2V_T_STRIDE ( do_vec_mult_stride_quick  ,
MULT2  ,
T   
)
VKERN_TEMPL_2V_T_STRIDE ( do_vec_mult_stride_exact  ,
XMULT2  ,
T   
)
VKERN_TEMPL_3V ( do_vec_vec_add  ,
ADD3   
)

vec = vec + vec;

VKERN_TEMPL_3V ( do_vec_vec_sub  ,
SUB3   
)

vec = vec - vec;

VKERN_TEMPL_3V ( do_vec_vec_mul  ,
MUL3   
)

vec = emul (vec, vec);

VKERN_TEMPL_3V ( do_vec_vec_cmul  ,
CMUL3   
)

vec = cemul(vec, vec);

VKERN_TEMPL_3V ( do_vec_vec_div  ,
DIV3   
)

vec = ediv (vec, vec);

VKERN_TEMPL_3V ( do_vec_vec_cdiv  ,
CDIV3   
)

vec = cediv(vec, vec);

VKERN_TEMPL_3V ( do_add_vec_vec_mul  ,
SUMMULT3   
)
VKERN_TEMPL_3V ( do_add_vec_vec_cmul  ,
SUMCMULT3   
)
VKERN_TEMPL_3V_C ( do_vec_svc_add  ,
ADD3NS   
)

vec = vec + s*vec;

VKERN_TEMPL_3V_C ( do_vec_svc_sub  ,
SUB3NS   
)

vec = vec - s*vec;

VKERN_TEMPL_3V_C ( do_svc_vec_add  ,
ADD3SN   
)

vec = s*vec + vec;

VKERN_TEMPL_3V_C ( do_svc_vec_sub  ,
SUB3SN   
)

vec = s*vec - vec;

VKERN_TEMPL_3V_CC ( do_svc_svc_add  ,
ADD3SS   
)

vec = s*vec + s*vec;

VKERN_TEMPL_3V_CC ( do_svc_svc_sub  ,
SUB3SS   
)

vec = s*vec - s*vec;