간단한거 같지만 저는 모르는 질문입니다.
말근
질문 제목 : cpp 문장을 c에서 사용할 수 있도록 바꾸고 싶습니다.질문 요약 :cpp 문을 c로 바꾸고 싶습니다.질문 내용 :
다음은 cpp로 작성된 것입니다.
void engenjacobi(_n, _a, _x, _d) {
int i, j, r, s, iter=0;
double theta, cost, sint, gr, gs, grr, gss, grs;
mfree(x); forpp(i, 1, n) x[i][i]=1;
again: ++iter;
grs=0;
forpp(i, 1, n-1)
forpp(j, i+1, n) if(fabs(a[i][j] grs) { grs=fabs(a[i][j]); r=i; s=j;}
ifeps(grs) goto done;
grr=a[r][r]; gss=a[s][s]; grs=a[r][s];
theta=(fabs(g=(fabs(grr-gss) sml ? 0.5*atan(2*grs/(grr-gss)) : 0.25*pi);
cost=cos(theta);
sint=sin(theta);
a[r][r]=grr*cost*cost+gss*sint*sint+2*grs*sint*cost;
a[s][s]=gss*cost*cost+grr*sint*sint-2*grs*sint*cost;
a[r][s]=a[s][r]=0;
forpp(i,1,n) {if(i!=r && i!=s) { gr=a[i][r]; gs=a[i][s];
a[i][r]=a[r][i]=gr*cost+gs*sint;
a[i][s]=a[s][i]=gs*cost-gr*sint;}
gr=x[i][r]; gs=x[i][s];
x[i][r]=gr*cost+gs*sint;
x[i][s]=gs*cost-gr*sint;
}
if(view) { line;
printf(\n iter=%3d, (r,s)=(%d, %d), theta=%f, iter, r, s, theta);
mout(a); mout(x); }
if(iter100) goto again;
error( no convergence);
done: forpp(i,1,n) d[i][i]=a[i][i];
}붉은 색으로 표시된 부분을 c에서 실행하고 싶은데 어떻게 바꾸어야할지 모르겠습니다.
가능하시면 위의 표시된 문장이 의미하는 것도 알려주십시요.
많은 지식을 가지신 분들께 부탁드릴게요.