On Wed, Dec 22, 2021 at 02:33:52PM +0200, Andy Shevchenko wrote: > On Wed, Dec 22, 2021 at 5:47 AM Liam Beguin <liambeguin@xxxxxxxxx> wrote: > > > > From: Liam Beguin <lvb@xxxxxxxxxx> > > > > Make use of well-defined SI metric prefixes to improve code readability. > > ... > > > case IIO_VAL_FRACTIONAL_LOG2: > > - tmp = (s64)*val * 1000000000LL; > > + tmp = (s64)*val * NANO; > > tmp = div_s64(tmp, rescale->denominator); > > tmp *= rescale->numerator; > > > > - tmp = div_s64_rem(tmp, 1000000000LL, &rem); > > + tmp = div_s64_rem(tmp, NANO, &rem); > > *val = tmp; > > Thanks! The important part of this conversion is to get one trick, > i.e. NANO and GIGA are both represented by 10^9. We need to be sure > that here we use the proper sign of the power of these numbers. So > please double check in all cases that the chosen SI prefixes are > correct from the power sign point of view, e.g. it is 10^-9 and not > 10^9 or otherwise. I get the difference, but I guess I'm not sure I understand how you want me to use them. I was using NANO here as that made most sense for me. If we go by the positive vs. negative powers of ten, I should always use GIGA as we're multiplying by 10^9 and dividing by 10^9. Is that what you expected? IMO, that wouldn't be as clear, but I believe you know better. Cheers, Liam > ... > > > *val2 = rem / (int)tmp; > > if (rem2) > > - *val2 += div_s64((s64)rem2 * 1000000000LL, tmp); > > + *val2 += div_s64((s64)rem2 * NANO, tmp); > > Ditto here and for the rest > > -- > With Best Regards, > Andy Shevchenko