On Wed, Aug 13, 2014 at 10:15 AM, Daniele Nicolodi <[email protected]> wrote:
> Hello, > > I haven't checked if it is true for the code currently in git (some > network problems here, I cannot access the repository), but in GNURadio > 3.7.2 the complex_to_arg() block is implemented with an atan2() function > which has a quite large error (for my purposes, at least) and not the > standard math library atan2() function. > > I think that this should be mentioned in the documentation. Should I > send a patch to add this info to the documentation? > The version we have in there is much (MUCH) faster than the libm atan2 function. So yes, we trade off a bit of error for a massive computational gain. The error is very small from what I recall, expect in a few instances (near 0 or near pi/2 or something like that). Having a graph of the error somewhere would be helpful. But yes, I agree. Mentioning that this function is a fast approximation in the documentation would be a good thing. Please send a patch (via a github pull request preferably). > Furthermore, even if the block does not use Volk for the computation the > block constructor still enforces alignment of the buffer to satisfy Volk > requirements, or at least this is what I believe the following code does: > > const int alignment_multiple = > volk_get_alignment() / sizeof(float); > set_alignment(std::max(1,alignment_multiple)); > > I think this should be removed. Should I send a patch for this as well? > > There is interest in adding a complex_to_arg_slow() or similar block > that trades execution speed for precision? > > Thanks. Cheers, > Daniele > The fast atan method we use is still faster than what we have in VOLK. I remember testing this out myself, which included putting that code into the constructor. However, take a look at this post: http://www.trondeau.com/blog/2012/2/17/volk-benchmarking.html We see an improvement in speed of blocks by doing the alignment. Actually, I think that all blocks should probably have their alignment set whether or not they use VOLK. But that would be a lot of work to do correctly with all of our blocks to make sure it's done right and is actually giving us a benefit. But having test this one in particular, no, I don't see any need to remove this code. Tom
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
