On Mon, Mar 23, 2020 at 2:49 AM Stefano Brivio <sbrivio@xxxxxxxxxx> wrote: > On Mon, 23 Mar 2020 01:44:20 +0200 > Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > > On Sun, Mar 22, 2020 at 9:57 PM Deepak R Varma <mh12gx2825@xxxxxxxxx> wrote: > > > > > > Current implementation of the function ad7192_get_available_filter_freq > > > repeats calculation of output data rate a few times. We can simplify > > > these steps by refactoring out the calculation of fADC. This would also > > > addresses the checkpatch warning of line exceeding 80 character. > > > > I'm not sure you did an equivalent changes. I believe in the original > > code precision is better. Consider low clock frequencies when 10 bit > > right shift may hide some bits of the division. > > Note that those bits are eventually "hidden" in the same way later, Even if mathematically (arithmetically) evaluation is correct, we have to remember that computers are bad with floating point and especially kernel, which uses integer arithmetic. That said, it's easy to get off-by-one error (due to precision lost) if we do big division before (not so big) multiplication. > despite the different sequence, due to DIV_ROUND_CLOSEST() being used > at every step (both before and after the change) without other > operations occurring. By the way, where AD7192_SINC3_FILTER and AD7192_SINC4_FILTER multiplications disappear and why? -- With Best Regards, Andy Shevchenko