#define N 32768
#define M 3072
struct kValues {
  float Kx;
  float Ky;
  float Kz;
  float PhiMag;
};
extern float sinf(float);
extern float cosf(float);

void
ComputeQCPU(int numK, int numX,struct kValues kVals[M],float x[N], float y[N], float z[N],float Qr[N], float Qi[N]) {
  float expArg;
  float cosArg;
  float sinArg;
  float phi;
  int i;
  int j;
  numK = M;
  numX = N;
  for ( i = 0; i < M; i++) {
    for ( j = 0; j < N; j++) {
      expArg = 6.2831853071795864769252867665590058f * (kVals[i].Kx * x[j] +kVals[i].Ky * y[j] +kVals[i].Kz * z[j]);
      cosArg = cosf(expArg);
      sinArg = sinf(expArg);
      phi = kVals[i].PhiMag;
      Qr[j] += phi * cosArg;
      Qi[j] += phi * sinArg;
    }
  }
}