我有这个 C 代码:
for (k = 0; k < n_n; k++) {
if (k == i || k == j) continue;
dd=q2_vect[k]-q1_vect;
d2=dd*dd;
if (d2<0) {
a=1;
break;
}
}
出于编译器优化的原因(在 Cell 处理器的 SPE 上),我需要手动解循环,所以我尝试了:
dd=q2_vect[0]-q1_vect;
d2=dd*dd;
if (d2<0)goto done;
dd=q2_vect[1]-q1_vect;
d2=dd*dd;
if (d2<0)goto done;
dd=q2_vect[2]-q1_vect;
d2=dd*dd;
if (d2<0)goto done;
.....
.....
// end
goto notdone;
done:
ok=0;
notdone:
.....
但我不知道如何处理
if (k == i || k == j) continue;
并且事实上lopp取决于“n_n”上的每次运行,并且我应该手动编写代码多次,因为最大值“n_n”会得到。
你认为它可以如何修复?