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);
}
}
}
cos_yg[y] 도 double 하나로 빼두는게 낫지만 코드가 안얘뻐서 냅둠.
지금 눈으론 잘 안보이고 내일 한번 스케줄러에 넣어볼렵니다ㅠㅠ
안녕히 주무세여
아 폰으로 다시봤는데 안보인다 마포대교각 보인다.
-2 곱한 놈을 다시 빼는게 웃겨서 + 로 바꿔 두고 double 로 빼 둠. dst 의 가로 세로 첫 줄은 무슨 값이 들어가든 별로 신경 안쓰는것 같길래 냠냠 해서 new double를 없앴음.
니가 짠 코드보다 몇 배 더 빠를거양.
몇 십배 정도는 예상한다만
안예뻐서 ㅋㄷ
오늘도 코드세이퍼 성님의 코드는 세이프!
dst의 init 된 값을 유지하는 방향으로 살짝 고처야겠어요
차이 나는건 젤 갓줄 1줄씩인데 그건 따로 cos 식만 넣으면 됨.
글고 네 소스코드의 젤 갓 줄도 내가 보기엔 제대로 된 값이 아니야.