Commit 70003c6d authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Perform conditional assignments in cgev()

parent 7a3ffd68
Loading
Loading
Loading
Loading
+30 −21
Original line number Diff line number Diff line
@@ -400,9 +400,28 @@ dcomplex cdtp(dcomplex z, dcomplex *vec_am, int i, int jf, int k, int nj, np_int
  return result;
}

// #ifdef USE_TARGET_OFFLOAD
// #pragma omp begin declare target device_type(any)
// #endif
double cgev(int ipamo, int mu, int l, int m) {
  double xd, xn;
  if (ipamo == 0) {
    if (mu != 0) {
      xd = 2.0 * l * (l + 1);
      xn = (mu < 0) ? 1.0 * (l + m) * (l - m + 1)
	: 1.0 * (l - m) * (l + m + 1);
      double result = sqrt(xn / xd);
      return (mu <= 0) ? result : -result;
    } else { // mu == 0
      return -1.0 * m / sqrt(1.0 * (l + 1) * l);
    }
    return 0.0;
  } else { // ipamo != 0
    xd = 2.0 * l * (l * 2 - 1);
    xn = (mu == 0) ? 2.0 * (l - m) * (l + m)
      : ((mu < 0) ? 1.0 * (l - 1 + m) * (l + m) : 1.0 * (l - 1 - m) * (l - m));
    return sqrt(xn / xd);
  }
}

/*
double cgev(int ipamo, int mu, int l, int m) {
  double result = 0.0;
  double xd = 0.0, xn = 0.0;
@@ -436,9 +455,7 @@ double cgev(int ipamo, int mu, int l, int m) {
  }
  return result;
}
// #ifdef USE_TARGET_OFFLOAD
// #pragma omp end declare target
// #endif
*/

void cms(dcomplex **am, ParticleDescriptor *c1) {
  const int nsph = c1->nsph;
@@ -803,10 +820,10 @@ dcomplex ghit(
  int lminpo = (l2 - l1mp > 0) ? l2 - l1mp + 1 : l1mp - l2 + 1;
  int lmaxpo = l2 + l1mp + 1;
  int i3j0in = c1->ind3j[l1mp][l2 - 1];
  int ilin = -1;
  if (m1mm2m > lminpo && (m1mm2m - lminpo) % 2 != 0) ilin = 0;
  int isn = 1;
  if (m1 % 2 != 0) isn *= -1;
  int ilin = (m1mm2m > lminpo && (m1mm2m - lminpo) % 2 != 0) ? 0 : -1;
  // if (m1mm2m > lminpo && (m1mm2m - lminpo) % 2 != 0) ilin = 0;
  int isn = (m1 % 2 != 0) ? -1 : 1;
  // if (m1 % 2 != 0) isn *= -1;
  if (lminpo % 2 == 0) {
    isn *= -1;
    if (l2 > l1mp) isn *= -1;
@@ -1540,9 +1557,6 @@ void r3j000(int j2, int j3, double *rac3j) {
  }
}

// #ifdef USE_TARGET_OFFLOAD
// #pragma omp begin declare target device_type(any)
// #endif
void r3jjr(int j2, int j3, int m2, int m3, double *rac3j) {
  int jmx = j3 + j2;
  int jdf = j3 - j2;
@@ -1597,8 +1611,7 @@ void r3jjr(int j2, int j3, int m2, int m3, double *rac3j) {
	  cj = sqrt(ccj * (jsmpos - j1s));
	  sjt = rac3j[irr - 1] * rac3j[irr - 1];
	  dj = 1.0 * jf * (j1 * j1po * mdf + idjc);
	  rac3j[irr - 2] = -(rac3j[irr - 1] * dj
				 + rac3j[irr] * cjp * j1) / (cj * j1po);
	  rac3j[irr - 2] = -(rac3j[irr - 1] * dj + rac3j[irr] * cjp * j1) / (cj * j1po);
	  sjr += (sjt * jf);
	} // ibr45 loop
      }
@@ -1642,8 +1655,7 @@ void r3jjr(int j2, int j3, int m2, int m3, double *rac3j) {
	  sjt = rac3j[irl70 - 1] * rac3j[irl70 - 1];
	  dj = 1.0 * jf * (j1 * j1po * mdf + idjc);
	  rac3j[irl70] = -(
			   rac3j[irl70 - 1] * dj
			   + rac3j[irl70 - 2] * cj * j1po
	    rac3j[irl70 - 1] * dj + rac3j[irl70 - 2] * cj * j1po
	  ) / (cjp * j1);
	  sjl += (sjt * jf);
	}
@@ -1660,9 +1672,6 @@ void r3jjr(int j2, int j3, int m2, int m3, double *rac3j) {
    }
  }
}
// #ifdef USE_TARGET_OFFLOAD
// #pragma omp end declare target
// #endif

// #ifdef USE_TARGET_OFFLOAD
// #pragma omp begin declare target device_type(any)