Re: [PATCH v3 2/6] iio: frequency: adf41513: driver implementation
From: Andy Shevchenko
Date: Fri Jan 16 2026 - 08:51:05 EST
On Fri, Jan 16, 2026 at 1:32 PM Rodrigo Alencar
<455.rodrigo.alencar@xxxxxxxxx> wrote:
> On 26/01/13 09:32AM, Rodrigo Alencar wrote:
> > On 26/01/12 12:57PM, Andy Shevchenko wrote:
> > > On Mon, Jan 12, 2026 at 09:56:25AM +0000, Rodrigo Alencar wrote:
> > > > On 26/01/09 08:55PM, Andy Shevchenko wrote:
> > > > > On Thu, Jan 08, 2026 at 12:14:51PM +0000, Rodrigo Alencar via B4 Relay wrote:
...
> > > > > > +#define ADF41513_MAX_PHASE_MICRORAD 6283185UL
> > > > >
> > > > > Basically I'm replying to this just for this line. 180° is PI radians, which is
> > > > > something like 31415926... Can we use here (2 * 314...) where PI is provided in
> > > > > one of the used form? This will help to grep and replace in case we will have a
> > > > > common PI constant defined in the kernel (units.h).
> > >
> > > Any comment on this?
> >
> > will adjust as suggested.
>
> I am finishing putting the V4 together and I decided to leave as is.
> doing (2 * 314...) might lose precision, by not much (maybe negligible)
> but it does, as (2 * 3141592) != 6283185.
> And that it is part of the reasons why PI is already multiplied by a
> power of 10. I suppose there would be multiple constants defined:
> - pi in micro radians and nano radians
> - 2*pi in micro radians and nano radians
The problem is that we will have off-by-one errors in plenty of
drivers. Depending on the driver the PI may be floor()ed or ceil()ed.
That's why I think it is best to use 2*PI with the precision you like.
In this case it can be as simple as
((2 * 31415926) / 10)
But you might actually want to have the maximum 32-bit PI, as
314159265 for the same reason.
--
With Best Regards,
Andy Shevchenko