|
|
@ -273,8 +273,8 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
i2max = i3 + np2 - np1;
|
|
|
|
i2max = i3 + np2 - np1;
|
|
|
|
i = 1;
|
|
|
|
i = 1;
|
|
|
|
for (i2 = i3; i2 <= i2max; i2 += np1) {
|
|
|
|
for (i2 = i3; i2 <= i2max; i2 += np1) {
|
|
|
|
chunk_save(datar, i2, workr[i]);
|
|
|
|
chunk_array_save(datar, i2, workr[i]);
|
|
|
|
chunk_save(datai, i2, worki[i]);
|
|
|
|
chunk_array_save(datai, i2, worki[i]);
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -387,10 +387,10 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
|
|
|
|
|
|
|
|
tempr = valueri * wr - valueii * wi;
|
|
|
|
tempr = valueri * wr - valueii * wi;
|
|
|
|
tempi = valueri * wi + valueii * wr;
|
|
|
|
tempi = valueri * wi + valueii * wr;
|
|
|
|
chunk_data_save(datar, i, valuerj - tempr);
|
|
|
|
chunk_array_save(datar, i, valuerj - tempr);
|
|
|
|
chunk_data_save(datai, i, valueij - tempi);
|
|
|
|
chunk_array_save(datai, i, valueij - tempi);
|
|
|
|
chunk_data_save(datar, j, valuerj + tempr);
|
|
|
|
chunk_array_save(datar, j, valuerj + tempr);
|
|
|
|
chunk_data_save(datai, j, valueij + tempi);
|
|
|
|
chunk_array_save(datai, j, valueij + tempi);
|
|
|
|
j += istep;
|
|
|
|
j += istep;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
imin = 2 * imin - i1;
|
|
|
|
imin = 2 * imin - i1;
|
|
|
@ -532,10 +532,10 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
difi = (valueii - valueij) / 2.;
|
|
|
|
difi = (valueii - valueij) / 2.;
|
|
|
|
tempr = wr * sumi + wi * difr;
|
|
|
|
tempr = wr * sumi + wi * difr;
|
|
|
|
tempi = wi * sumi - wr * difr;
|
|
|
|
tempi = wi * sumi - wr * difr;
|
|
|
|
chunk_data_save(datar, i, sumr + tempr);
|
|
|
|
chunk_array_save(datar, i, sumr + tempr);
|
|
|
|
chunk_data_save(datai, i, difi + tempi);
|
|
|
|
chunk_array_save(datai, i, difi + tempi);
|
|
|
|
chunk_data_save(datar, j, sumr - tempr);
|
|
|
|
chunk_array_save(datar, j, sumr - tempr);
|
|
|
|
chunk_data_save(datai, j, tempi - difi);
|
|
|
|
chunk_array_save(datai, j, tempi - difi);
|
|
|
|
j += np2;
|
|
|
|
j += np2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
imin++;
|
|
|
|
imin++;
|
|
|
@ -553,8 +553,8 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
goto L740;
|
|
|
|
goto L740;
|
|
|
|
for (i = imin; i <= ntot; i += np2) {
|
|
|
|
for (i = imin; i <= ntot; i += np2) {
|
|
|
|
double valueii;
|
|
|
|
double valueii;
|
|
|
|
chunk_data_get(datai, i, &valueii);
|
|
|
|
chunk_array_get(datai, i, &valueii);
|
|
|
|
chunk_data_save(datai, i, -valueii);
|
|
|
|
chunk_array_save(datai, i, -valueii);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
L740:
|
|
|
|
L740:
|
|
|
|
np2 *= 2;
|
|
|
|
np2 *= 2;
|
|
|
@ -567,54 +567,54 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
goto L755;
|
|
|
|
goto L755;
|
|
|
|
L750: ;
|
|
|
|
L750: ;
|
|
|
|
double valueri, valueii;
|
|
|
|
double valueri, valueii;
|
|
|
|
chunk_data_get(datar, i, &valueri);
|
|
|
|
chunk_array_get(datar, i, &valueri);
|
|
|
|
chunk_data_get(datai, i, &valueii);
|
|
|
|
chunk_array_get(datai, i, &valueii);
|
|
|
|
chunk_data_save(datar, j, valueri);
|
|
|
|
chunk_array_save(datar, j, valueri);
|
|
|
|
chunk_data_save(datai, j, -valueii);
|
|
|
|
chunk_array_save(datai, j, -valueii);
|
|
|
|
L755:
|
|
|
|
L755:
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
j--;
|
|
|
|
j--;
|
|
|
|
if (i < imax)
|
|
|
|
if (i < imax)
|
|
|
|
goto L750;
|
|
|
|
goto L750;
|
|
|
|
double valuerimin, valueiimin;
|
|
|
|
double valuerimin, valueiimin;
|
|
|
|
chunk_data_get(datar, imin, &valuerimin);
|
|
|
|
chunk_array_get(datar, imin, &valuerimin);
|
|
|
|
chunk_data_get(datai, imin, &valueiimin);
|
|
|
|
chunk_array_get(datai, imin, &valueiimin);
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, j, valuerimin - valueiimin);
|
|
|
|
chunk_array_save(datar, j, valuerimin - valueiimin);
|
|
|
|
chunk_data_save(datai, j, 0.);
|
|
|
|
chunk_array_save(datai, j, 0.);
|
|
|
|
if (i >= j) {
|
|
|
|
if (i >= j) {
|
|
|
|
goto L780;
|
|
|
|
goto L780;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
goto L770;
|
|
|
|
goto L770;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
L765:
|
|
|
|
L765:
|
|
|
|
chunk_data_get(datar, i, &valueri);
|
|
|
|
chunk_array_get(datar, i, &valueri);
|
|
|
|
chunk_data_get(datai, i, &valueii);
|
|
|
|
chunk_array_get(datai, i, &valueii);
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, j, valueri);
|
|
|
|
chunk_array_save(datar, j, valueri);
|
|
|
|
chunk_data_save(datai, j, valueii);
|
|
|
|
chunk_array_save(datai, j, valueii);
|
|
|
|
L770:
|
|
|
|
L770:
|
|
|
|
i--;
|
|
|
|
i--;
|
|
|
|
j--;
|
|
|
|
j--;
|
|
|
|
if (i > imin)
|
|
|
|
if (i > imin)
|
|
|
|
goto L765;
|
|
|
|
goto L765;
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_get(datar, imin, &valuerimin);
|
|
|
|
chunk_array_get(datar, imin, &valuerimin);
|
|
|
|
chunk_data_get(datai, imin, &valueiimin);
|
|
|
|
chunk_array_get(datai, imin, &valueiimin);
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, j, valuerimin + valueiimin);
|
|
|
|
chunk_array_save(datar, j, valuerimin + valueiimin);
|
|
|
|
chunk_data_save(datai, j, 0.);
|
|
|
|
chunk_array_save(datai, j, 0.);
|
|
|
|
|
|
|
|
|
|
|
|
imax = imin;
|
|
|
|
imax = imin;
|
|
|
|
goto L745;
|
|
|
|
goto L745;
|
|
|
|
L780: ;
|
|
|
|
L780: ;
|
|
|
|
double valuei1, valuer1;
|
|
|
|
double valuei1, valuer1;
|
|
|
|
chunk_data_get(datai, 1, &valuei1);
|
|
|
|
chunk_array_get(datai, 1, &valuei1);
|
|
|
|
chunk_data_get(datar, 1, &valuer1);
|
|
|
|
chunk_array_get(datar, 1, &valuer1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, 1, valuei1 + valuer1);
|
|
|
|
chunk_array_save(datar, 1, valuei1 + valuer1);
|
|
|
|
chunk_data_save(datai, 1, 0.);
|
|
|
|
chunk_array_save(datai, 1, 0.);
|
|
|
|
goto L900;
|
|
|
|
goto L900;
|
|
|
|
|
|
|
|
|
|
|
|
/*complete a real transform for the 2nd, 3rd, ... dimension by conjugate symmetries*/
|
|
|
|
/*complete a real transform for the 2nd, 3rd, ... dimension by conjugate symmetries*/
|
|
|
@ -633,22 +633,22 @@ void fourt(chunk_array_t* datar, chunk_array_t* datai, int nn[3], int ndim, int
|
|
|
|
j = jmax + np0;
|
|
|
|
j = jmax + np0;
|
|
|
|
for (i = imin; i <= imax; i++) {
|
|
|
|
for (i = imin; i <= imax; i++) {
|
|
|
|
double valuerj, valueij;
|
|
|
|
double valuerj, valueij;
|
|
|
|
chunk_data_get(datar, j, &valuerj);
|
|
|
|
chunk_array_get(datar, j, &valuerj);
|
|
|
|
chunk_data_get(datai, j, &valueij);
|
|
|
|
chunk_array_get(datai, j, &valueij);
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, i, valuerj);
|
|
|
|
chunk_array_save(datar, i, valuerj);
|
|
|
|
chunk_data_save(datai, i, -valueij);
|
|
|
|
chunk_array_save(datai, i, -valueij);
|
|
|
|
j--;
|
|
|
|
j--;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
j = jmax;
|
|
|
|
j = jmax;
|
|
|
|
for (i = imin; i <= imax; i += np0) {
|
|
|
|
for (i = imin; i <= imax; i += np0) {
|
|
|
|
double valuerj, valueij;
|
|
|
|
double valuerj, valueij;
|
|
|
|
chunk_data_get(datar, j, &valuerj);
|
|
|
|
chunk_array_get(datar, j, &valuerj);
|
|
|
|
chunk_data_get(datai, j, &valueij);
|
|
|
|
chunk_array_get(datai, j, &valueij);
|
|
|
|
|
|
|
|
|
|
|
|
chunk_data_save(datar, i, valuerj);
|
|
|
|
chunk_array_save(datar, i, valuerj);
|
|
|
|
chunk_data_save(datai, i, -valueij);
|
|
|
|
chunk_array_save(datai, i, -valueij);
|
|
|
|
|
|
|
|
|
|
|
|
j -= np0;
|
|
|
|
j -= np0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|