1 #include<DD-AVX_internal.hpp>
2 using namespace ddavx_core;
8 #pragma omp parallel private(regs)
11 get_isie(x.
size(), is, ie);
12 reg alpha_hi = broadcast(alpha.x[0]);
13 reg alpha_lo = broadcast(alpha.x[1]);
14 for(i = is; i < (ie-SIMD_Length+1); i += SIMD_Length){
16 reg x_hi = load(x.
hi[i]);
17 reg x_lo = load(x.
lo[i]);
19 Mul(x_hi, x_lo, alpha_hi, alpha_lo, x_hi, x_lo, regs);
25 Mul(x.
hi[i], x.
lo[i], alpha.x[0], alpha.x[1], x.
hi[i], x.
lo[i]);
33 #pragma omp parallel private(regs)
36 get_isie(x.
size(), is, ie);
37 reg alpha_hi = broadcast(alpha);
38 reg alpha_lo = regs.zeros;
39 for(i = is; i < (ie-SIMD_Length+1); i += SIMD_Length){
41 reg x_hi = load(x.
hi[i]);
42 reg x_lo = load(x.
lo[i]);
44 Mul(x_hi, x_lo, alpha_hi, alpha_lo, x_hi, x_lo, regs);
50 Mul(x.
hi[i], x.
lo[i], alpha, 0.0, x.
hi[i], x.
lo[i]);
58 #pragma omp parallel private(regs)
61 get_isie(x.size(), is, ie);
62 reg alpha_hi = broadcast(alpha.x[0]);
63 reg alpha_lo = broadcast(alpha.x[1]);
64 for(i = is; i < (ie-SIMD_Length+1); i += SIMD_Length){
66 reg x_hi = load(x.data()[i]);
67 reg x_lo = regs.zeros;
69 Mul(x_hi, x_lo, alpha_hi, alpha_lo, x_hi, x_lo, regs);
71 store(x.data()[i], x_hi);
74 Mul(x.data()[i], alpha.x[0], alpha.x[1], x.data()[i], 0.0);
82 #pragma omp parallel private(regs)
85 get_isie(x.size(), is, ie);
86 reg alpha_hi = broadcast(alpha);
87 reg alpha_lo = regs.zeros;
88 for(i = is; i < (ie-SIMD_Length+1); i += SIMD_Length){
90 reg x_hi = load(x.data()[i]);
91 reg x_lo = regs.zeros;
93 Mul(x_hi, x_lo, alpha_hi, alpha_lo, x_hi, x_lo, regs);
95 store(x.data()[i], x_hi);
98 Mul(x.data()[i], alpha, 0.0, x.data()[i], 0.0);
Double precision vector class, This class is almost same as std::vector<double>
Double-double precision vector class.
void scale(const dd_real &alpha, dd_real_vector &x)
scale: x = ax