diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index fedba43a56..edcbd8e731 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -546,8 +546,8 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int ii) co for (int il = 0; il < nqlist; il++) { int l = d_qlist[il]; double wlsum = 0.0; - int sgn = 1; for (int m1 = -l; m1 <= 0; m1++) { + const int sgn = 1 - 2*(m1&1); // sgn = (-1)^m1 for (int m2 = 0; m2 <= ((-m1)>>1); m2++) { const int m3 = -(m1 + m2); // Loop enforces -L<=m1<=0<=m2<=m3<=L, and m1+m2+m3=0 @@ -566,7 +566,6 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int ii) co wlsum += Q1Q2Q3*c; } - sgn = -sgn; // sgn = (-1)^m1 } d_qnarray(i,jj++) = wlsum/d_qnormfac2(il); nterms++; @@ -600,14 +599,12 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int ii) co } else { const double qnfac = d_qnormfac(il)/d_qnarray(i,il); - int sgn = 1; for (int m = -l; m < 0; m++) { // Computed only qnm for m>=0. // qnm[-m] = (-1)^m * conjg(qnm[m]) + const int sgn = 1 - 2*(m&1); // sgn = (-1)^m d_qnarray(i,jj++) = d_qnm(ii,il,-m).re * qnfac * sgn; d_qnarray(i,jj++) = -d_qnm(ii,il,-m).im * qnfac * sgn; - - sgn = -sgn; // sgn = (-1)^m } for (int m = 0; m < l+1; m++) { d_qnarray(i,jj++) = d_qnm(ii,il,m).re * qnfac; diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index a9162a4485..1feb461424 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -524,8 +524,8 @@ void ComputeOrientOrderAtom::calc_boop(double **rlist, for (int il = 0; il < nqlist; il++) { int l = qlist[il]; double wlsum = 0.0; - int sgn = 1; for (int m1 = -l; m1 <= 0; m1++) { + const int sgn = 1 - 2*(m1&1); // sgn = (-1)^m1 for (int m2 = 0; m2 <= ((-m1)>>1); m2++) { const int m3 = -(m1 + m2); // Loop enforces -L<=m1<=0<=m2<=m3<=L, and m1+m2+m3=0 @@ -543,7 +543,6 @@ void ComputeOrientOrderAtom::calc_boop(double **rlist, wlsum += Q1Q2Q3*c; } - sgn = -sgn; // sgn = (-1)^m1 } qn[jj++] = wlsum/qnormfac2[il]; nterms++; @@ -577,14 +576,12 @@ void ComputeOrientOrderAtom::calc_boop(double **rlist, } else { double qnfac = qnormfac[il]/qn[il]; - int sgn = 1; for (int m = -l; m < 0; m++) { // Computed only qnm for m>=0. // qnm[-m] = (-1)^m * conjg(qnm[m]) + const int sgn = 1 - 2*(m&1); // sgn = (-1)^m qn[jj++] = qnm_r[il][-m] * qnfac * sgn; qn[jj++] = -qnm_i[il][-m] * qnfac * sgn; - - sgn = -sgn; // sgn = (-1)^m } for (int m = 0; m < l+1; m++) { qn[jj++] = qnm_r[il][m] * qnfac;