Message ID | 20180607181306.9766-1-ctatlor97@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Thu, Jun 7, 2018 at 8:12 PM, Craig Tatlor <ctatlor97@gmail.com> wrote: > Adds a function to interpolate against two points, > this is carried arount as a helper function by tons of drivers. > > Signed-off-by: Craig Tatlor <ctatlor97@gmail.com> The linear formula seems to fit the most natural form of linear interpolation. I bet some John Carmack algorithm type people will soon start to optimize this... :D Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
On Wed, Jun 13, 2018 at 1:06 PM, Linus Walleij <linus.walleij@linaro.org> wrote: > On Thu, Jun 7, 2018 at 8:12 PM, Craig Tatlor <ctatlor97@gmail.com> wrote: > >> Adds a function to interpolate against two points, >> this is carried arount as a helper function by tons of drivers. >> >> Signed-off-by: Craig Tatlor <ctatlor97@gmail.com> > > The linear formula seems to fit the most natural form of linear > interpolation. > > I bet some John Carmack algorithm type people will soon > start to optimize this... :D For your entertainment here is some sunday reading: https://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/ Yours, Linus Walleij
On Wed, Jun 13, 2018 at 01:12:45PM +0200, Linus Walleij wrote: > On Wed, Jun 13, 2018 at 1:06 PM, Linus Walleij <linus.walleij@linaro.org> wrote: > > On Thu, Jun 7, 2018 at 8:12 PM, Craig Tatlor <ctatlor97@gmail.com> wrote: > > > >> Adds a function to interpolate against two points, > >> this is carried arount as a helper function by tons of drivers. > >> > >> Signed-off-by: Craig Tatlor <ctatlor97@gmail.com> > > > > The linear formula seems to fit the most natural form of linear > > interpolation. > > > > I bet some John Carmack algorithm type people will soon > > start to optimize this... :D > > For your entertainment here is some sunday reading: > https://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/ > > Yours, > Linus Walleij Thanks, interesting read.
diff --git a/include/linux/fixp-arith.h b/include/linux/fixp-arith.h index d4686fe1cac7..c21de4f358dd 100644 --- a/include/linux/fixp-arith.h +++ b/include/linux/fixp-arith.h @@ -153,4 +153,24 @@ static inline s32 fixp_sin32_rad(u32 radians, u32 twopi) #define fixp_cos32_rad(rad, twopi) \ fixp_sin32_rad(rad + twopi / 4, twopi) + +/** + * fixp_linear_interpolate() - interpolates a value from two known points + * + * @x0: x value of point 0 + * @y0: y value of point 0 + * @x1: x value of point 1 + * @y1: y value of point 1 + * @x: the linear interpolant + */ +static inline int fixp_linear_interpolate(int x0, int y0, int x1, int y1, int x) +{ + if (y0 == y1 || x == x0) + return y0; + if (x1 == x0 || x == x1) + return y1; + + return y0 + ((y1 - y0) * (x - x0) / (x1 - x0)); +} + #endif
Adds a function to interpolate against two points, this is carried arount as a helper function by tons of drivers. Signed-off-by: Craig Tatlor <ctatlor97@gmail.com> --- include/linux/fixp-arith.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)