libInterpolate icon indicating copy to clipboard operation
libInterpolate copied to clipboard

Bug in BicubicInterpolator setup

Open jamiescottie1 opened this issue 8 months ago • 1 comments

There seems to be a copy-paste error in the setupInterpolator() function of the BicubicInterpolator class. The code snippet computing the finite difference approximations of $f_y(0, 1)$ and $f_y(1, 1)$ currently reads

jm = std::max(j, 0);
jp = std::min(j + 2, jN - 1);

dy = ((*Y)(jp) - (*Y)(jm)) / yL;

fp = (*Z)(i, jp);
fm = (*Z)(i, jm);
fy01 = (fp - fm) / dx;  // <<<<<< This is wrong

fp = (*Z)(i + 1, jp);
fm = (*Z)(i + 1, jm);
fy11 = (fp - fm) / dx;  // <<<<<< This is wrong

The two expressions assigning the final values, fy01 = (fp - fm) / dx and fy11 = (fp - fm) / dx, are using the wrong denominator dx. Since they are expressions for the derivative in y direction, the correct denominator should be dy (as correctly used in the computation of $f_y(0, 0)$ and $f_y(1, 0)$ ).

jamiescottie1 avatar May 15 '25 14:05 jamiescottie1