int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const std::complex *in = reinterpret_cast *>(input_items[0]); float *out = reinterpret_cast(output_items[0]); gruel::high_res_timer_type t1, t2, tit; t1 = gruel::high_res_timer_now(); for(int i = 0; i < noutput_items; i++){ std::complex product = in[i+1] * conj(in[i]); out[i] = d_gain * gr_fast_atan2f(imag(product), real(product)); } t2 = gruel::high_res_timer_now(); tit = t2 - t1; printf(">> time to demod one [%d] buffer: %lld ticks\n", noutput_items, tit); return noutput_items; }