how pytorch implement bilinear algorithm in interpolation

Hi, i want to implement my bilinear interpolation algorithm in c++ and i want to know how pytorch do it.

In the example, the source tensor (1, 1) = 4, and the scale_factor = 2, so we can know the destination tensor (2, 2) = 4, but why the result is 3.4?? what the inner calculation process is ?

I know the bilinear interpolation in mathmatics very well, so it must be something i dont know when we implement it, anyone know it ?