void srslte_vec_sum_fff(float *x, float *y, float *z, uint32_t len) { #ifndef HAVE_VOLK_ADD_FLOAT_FUNCTION int i; for (i=0;i<len;i++) { z[i] = x[i]+y[i]; } #else volk_32f_x2_add_32f(z,x,y,len); #endif }
void Add<float>::work( const InputItems &ins, const OutputItems &outs ){ const size_t n_nums = std::min(ins.min(), outs.min()); float *out = outs[0].cast<float *>(); const float *in0 = ins[0].cast<const float *>(); for (size_t n = 1; n < ins.size(); n++) { const float *in = ins[n].cast<const float *>(); volk_32f_x2_add_32f(out, in0, in, n_nums * _vlen); in0 = out; //for next input, we do output += input } this->consume(n_nums); this->produce(n_nums); }