void axmb(int w, int ns1, int ns2, double* src, double* dst, double* xg, double* yg)

{

    #define M_PI 3.14159265358979323846


    int h = ns2 - ns1 + 1;

    double s1 = (xg[1] - xg[0]) * (xg[1] - xg[0]);

    double s2 = (yg[1] - yg[0]) * (yg[1] - yg[0]);

    int x, y;

    int y_set = 1;

    int y_end = h - y_set;

    int x_set = 1;

    int x_end = w - x_set;


    for(x = x_set; x < x_end; ++x)

        dst[x] = (2. * M_PI * M_PI) * cos(M_PI * xg[x]);


    for(y = y_set; y < y_end; ++y)

    {

        double* dst1 = dst + (y    ) * w;

        double* src0 = src + (y - 1) * w;

        double* src1 = src + (y    ) * w;

        double* src2 = src + (y + 1) * w;

        double* cos_xg = dst;

        double  cos_yg_y = cos(M_PI * yg[y + ns1 - 1]); // 부분영역 처리를 고려한 니 함수에 일관성이 없다.

        for(x = x_set; x < x_end; ++x)

        {

            dst1[x] = + (-2. * src1[x] + src1[x - 1] + src1[x + 1]) / s1

                      + (-2. * src1[x] + src0[x] + src2[x]) / s2

                      + (cos_xg[x] * cos_yg_y);

        }

    }

}


이런걸 하고 싶었다는거지?