📄 fftpack.cpp
字号:
} *nac = 0; i__1 = *idl1; for (ik = 1; ik <= i__1; ++ik) { c2[ik + c2_dim1] = ch2[ik + ch2_dim1];/* L121: */ } i__1 = *ip; for (j = 2; j <= i__1; ++j) { i__2 = *l1; for (k = 1; k <= i__2; ++k) { c1[(k + j * c1_dim2) * c1_dim1 + 1] = ch[(k + j * ch_dim2) * ch_dim1 + 1]; c1[(k + j * c1_dim2) * c1_dim1 + 2] = ch[(k + j * ch_dim2) * ch_dim1 + 2];/* L122: */ }/* L123: */ } if (idot > *l1) { goto L127; } idij = 0; i__1 = *ip; for (j = 2; j <= i__1; ++j) { idij += 2; i__2 = *ido; for (i__ = 4; i__ <= i__2; i__ += 2) { idij += 2; i__3 = *l1; for (k = 1; k <= i__3; ++k) { c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[ i__ - 1 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ + (k + j * ch_dim2) * ch_dim1]; c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__ + (k + j * ch_dim2) * ch_dim1] - wa[idij] * ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1];/* L124: */ }/* L125: */ }/* L126: */ } return;L127: idj = 2 - *ido; i__1 = *ip; for (j = 2; j <= i__1; ++j) { idj += *ido; i__2 = *l1; for (k = 1; k <= i__2; ++k) { idij = idj; i__3 = *ido; for (i__ = 4; i__ <= i__3; i__ += 2) { idij += 2; c1[i__ - 1 + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[ i__ - 1 + (k + j * ch_dim2) * ch_dim1] + wa[idij] * ch[i__ + (k + j * ch_dim2) * ch_dim1]; c1[i__ + (k + j * c1_dim2) * c1_dim1] = wa[idij - 1] * ch[i__ + (k + j * ch_dim2) * ch_dim1] - wa[idij] * ch[i__ - 1 + (k + j * ch_dim2) * ch_dim1];/* L128: */ }/* L129: */ }/* L130: */ } return;} /* passf_ *//* Subroutine */ static void passf2(integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1){ /* System generated locals */ integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2; /* Local variables */ integer_t i__, k; real_t ti2, tr2; /* Parameter adjustments */ ch_dim1 = *ido; ch_dim2 = *l1; ch_offset = 1 + ch_dim1 * (1 + ch_dim2); ch -= ch_offset; cc_dim1 = *ido; cc_offset = 1 + cc_dim1 * 3; cc -= cc_offset; --wa1; /* Function Body */ if (*ido > 2) { goto L102; } i__1 = *l1; for (k = 1; k <= i__1; ++k) { ch[(k + ch_dim2) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1 + 1] + cc[((k << 1) + 2) * cc_dim1 + 1]; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cc[((k << 1) + 1) * cc_dim1 + 1] - cc[((k << 1) + 2) * cc_dim1 + 1]; ch[(k + ch_dim2) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1 + 2] + cc[((k << 1) + 2) * cc_dim1 + 2]; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = cc[((k << 1) + 1) * cc_dim1 + 2] - cc[((k << 1) + 2) * cc_dim1 + 2];/* L101: */ } return;L102: i__1 = *l1; for (k = 1; k <= i__1; ++k) { i__2 = *ido; for (i__ = 2; i__ <= i__2; i__ += 2) { ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + ((k << 1) + 1) * cc_dim1] + cc[i__ - 1 + ((k << 1) + 2) * cc_dim1]; tr2 = cc[i__ - 1 + ((k << 1) + 1) * cc_dim1] - cc[i__ - 1 + ((k << 1) + 2) * cc_dim1]; ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + ((k << 1) + 1) * cc_dim1] + cc[i__ + ((k << 1) + 2) * cc_dim1]; ti2 = cc[i__ + ((k << 1) + 1) * cc_dim1] - cc[i__ + ((k << 1) + 2) * cc_dim1]; ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ti2 - wa1[i__] * tr2; ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * tr2 + wa1[i__] * ti2;/* L103: */ }/* L104: */ } return;} /* passf2_ *//* Subroutine */ static void passf3(integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2){ /* Initialized data */ static real_t taur = REAL_CONSTANT(-0.5); static real_t taui = REAL_CONSTANT(-0.8660254037844386467637231707529361834740262690519031402790348975); /* System generated locals */ integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2; /* Local variables */ integer_t i__, k; real_t ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2; /* Parameter adjustments */ ch_dim1 = *ido; ch_dim2 = *l1; ch_offset = 1 + ch_dim1 * (1 + ch_dim2); ch -= ch_offset; cc_dim1 = *ido; cc_offset = 1 + (cc_dim1 << 2); cc -= cc_offset; --wa1; --wa2; /* Function Body */ if (*ido != 2) { goto L102; } i__1 = *l1; for (k = 1; k <= i__1; ++k) { tr2 = cc[(k * 3 + 2) * cc_dim1 + 1] + cc[(k * 3 + 3) * cc_dim1 + 1]; cr2 = cc[(k * 3 + 1) * cc_dim1 + 1] + taur * tr2; ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 3 + 1) * cc_dim1 + 1] + tr2; ti2 = cc[(k * 3 + 2) * cc_dim1 + 2] + cc[(k * 3 + 3) * cc_dim1 + 2]; ci2 = cc[(k * 3 + 1) * cc_dim1 + 2] + taur * ti2; ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 3 + 1) * cc_dim1 + 2] + ti2; cr3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 1] - cc[(k * 3 + 3) * cc_dim1 + 1]); ci3 = taui * (cc[(k * 3 + 2) * cc_dim1 + 2] - cc[(k * 3 + 3) * cc_dim1 + 2]); ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci3; ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr2 + ci3; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr3; ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci2 - cr3;/* L101: */ } return;L102: i__1 = *l1; for (k = 1; k <= i__1; ++k) { i__2 = *ido; for (i__ = 2; i__ <= i__2; i__ += 2) { tr2 = cc[i__ - 1 + (k * 3 + 2) * cc_dim1] + cc[i__ - 1 + (k * 3 + 3) * cc_dim1]; cr2 = cc[i__ - 1 + (k * 3 + 1) * cc_dim1] + taur * tr2; ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 3 + 1) * cc_dim1] + tr2; ti2 = cc[i__ + (k * 3 + 2) * cc_dim1] + cc[i__ + (k * 3 + 3) * cc_dim1]; ci2 = cc[i__ + (k * 3 + 1) * cc_dim1] + taur * ti2; ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 3 + 1) * cc_dim1] + ti2; cr3 = taui * (cc[i__ - 1 + (k * 3 + 2) * cc_dim1] - cc[i__ - 1 + ( k * 3 + 3) * cc_dim1]); ci3 = taui * (cc[i__ + (k * 3 + 2) * cc_dim1] - cc[i__ + (k * 3 + 3) * cc_dim1]); dr2 = cr2 - ci3; dr3 = cr2 + ci3; di2 = ci2 + cr3; di3 = ci2 - cr3; ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 - wa1[i__] * dr2; ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2 + wa1[i__] * di2; ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 - wa2[ i__] * dr3; ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 + wa2[i__] * di3;/* L103: */ }/* L104: */ } return;} /* passf3_ *//* Subroutine */ static void passf4(integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3){ /* System generated locals */ integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2; /* Local variables */ integer_t i__, k; real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4; /* Parameter adjustments */ ch_dim1 = *ido; ch_dim2 = *l1; ch_offset = 1 + ch_dim1 * (1 + ch_dim2); ch -= ch_offset; cc_dim1 = *ido; cc_offset = 1 + cc_dim1 * 5; cc -= cc_offset; --wa1; --wa2; --wa3; /* Function Body */ if (*ido != 2) { goto L102; } i__1 = *l1; for (k = 1; k <= i__1; ++k) { ti1 = cc[((k << 2) + 1) * cc_dim1 + 2] - cc[((k << 2) + 3) * cc_dim1 + 2]; ti2 = cc[((k << 2) + 1) * cc_dim1 + 2] + cc[((k << 2) + 3) * cc_dim1 + 2]; tr4 = cc[((k << 2) + 2) * cc_dim1 + 2] - cc[((k << 2) + 4) * cc_dim1 + 2]; ti3 = cc[((k << 2) + 2) * cc_dim1 + 2] + cc[((k << 2) + 4) * cc_dim1 + 2]; tr1 = cc[((k << 2) + 1) * cc_dim1 + 1] - cc[((k << 2) + 3) * cc_dim1 + 1]; tr2 = cc[((k << 2) + 1) * cc_dim1 + 1] + cc[((k << 2) + 3) * cc_dim1 + 1]; ti4 = cc[((k << 2) + 4) * cc_dim1 + 1] - cc[((k << 2) + 2) * cc_dim1 + 1]; tr3 = cc[((k << 2) + 2) * cc_dim1 + 1] + cc[((k << 2) + 4) * cc_dim1 + 1]; ch[(k + ch_dim2) * ch_dim1 + 1] = tr2 + tr3; ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = tr2 - tr3; ch[(k + ch_dim2) * ch_dim1 + 2] = ti2 + ti3; ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ti2 - ti3; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = tr1 + tr4; ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = tr1 - tr4; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ti1 + ti4; ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ti1 - ti4;/* L101: */ } return;L102: i__1 = *l1; for (k = 1; k <= i__1; ++k) { i__2 = *ido; for (i__ = 2; i__ <= i__2; i__ += 2) { ti1 = cc[i__ + ((k << 2) + 1) * cc_dim1] - cc[i__ + ((k << 2) + 3) * cc_dim1]; ti2 = cc[i__ + ((k << 2) + 1) * cc_dim1] + cc[i__ + ((k << 2) + 3) * cc_dim1]; ti3 = cc[i__ + ((k << 2) + 2) * cc_dim1] + cc[i__ + ((k << 2) + 4) * cc_dim1]; tr4 = cc[i__ + ((k << 2) + 2) * cc_dim1] - cc[i__ + ((k << 2) + 4) * cc_dim1]; tr1 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] - cc[i__ - 1 + ((k << 2) + 3) * cc_dim1]; tr2 = cc[i__ - 1 + ((k << 2) + 1) * cc_dim1] + cc[i__ - 1 + ((k << 2) + 3) * cc_dim1]; ti4 = cc[i__ - 1 + ((k << 2) + 4) * cc_dim1] - cc[i__ - 1 + ((k << 2) + 2) * cc_dim1]; tr3 = cc[i__ - 1 + ((k << 2) + 2) * cc_dim1] + cc[i__ - 1 + ((k << 2) + 4) * cc_dim1]; ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = tr2 + tr3; cr3 = tr2 - tr3; ch[i__ + (k + ch_dim2) * ch_dim1] = ti2 + ti3; ci3 = ti2 - ti3; cr2 = tr1 + tr4; cr4 = tr1 - tr4; ci2 = ti1 + ti4; ci4 = ti1 - ti4; ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * cr2 + wa1[i__] * ci2; ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * ci2 - wa1[i__] * cr2; ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * cr3 + wa2[i__] * ci3; ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * ci3 - wa2[ i__] * cr3; ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * cr4 + wa3[i__] * ci4; ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * ci4 - wa3[i__] * cr4;/* L103: */ }/* L104: */ } return;} /* passf4_ *//* Subroutine */ static void passf5(integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4){ /* Initialized data */ static real_t tr11 = REAL_CONSTANT(0.3090169943749474241022934171828195886015458990288143106772431137); static real_t ti11 = REAL_CONSTANT(-0.9510565162951535721164393337938214340569863412575022244730564442); static real_t tr12 = REAL_CONSTANT(-0.8090169943749474241022934171828190588601545899028814310677431135); static real_t ti12 = REAL_CONSTANT(-0.5877852522924731291687059546390727685976524376431459107227248076); /* System generated locals */ integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2; /* Local variables */ integer_t i__, k; real_t ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4, ti2, ti3, ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5; /* Parameter adjustments */ ch_dim1 = *ido; ch_dim2 = *l1; ch_offset = 1 + ch_dim1 * (1 + ch_dim2); ch -= ch_offset; cc_dim1 = *ido; cc_offset = 1 + cc_dim1 * 6; cc -= cc_offset; --wa1; --wa2; --wa3; --wa4; /* Function Body */ if (*ido != 2) { goto L102; } i__1 = *l1; for (k = 1; k <= i__1; ++k) { ti5 = cc[(k * 5 + 2) * cc_dim1 + 2] - cc[(k * 5 + 5) * cc_dim1 + 2]; ti2 = cc[(k * 5 + 2) * cc_dim1 + 2] + cc[(k * 5 + 5) * cc_dim1 + 2]; ti4 = cc[(k * 5 + 3) * cc_dim1 + 2] - cc[(k * 5 + 4) * cc_dim1 + 2]; ti3 = cc[(k * 5 + 3) * cc_dim1 + 2] + cc[(k * 5 + 4) * cc_dim1 + 2]; tr5 = cc[(k * 5 + 2) * cc_dim1 + 1] - cc[(k * 5 + 5) * cc_dim1 + 1]; tr2 = cc[(k * 5 + 2) * cc_dim1 + 1] + cc[(k * 5 + 5) * cc_dim1 + 1]; tr4 = cc[(k * 5 + 3) * cc_dim1 + 1] - cc[(k * 5 + 4) * cc_dim1 + 1]; tr3 = cc[(k * 5 + 3) * cc_dim1 + 1] + cc[(k * 5 + 4) * cc_dim1 + 1]; ch[(k + ch_dim2) * ch_dim1 + 1] = cc[(k * 5 + 1) * cc_dim1 + 1] + tr2 + tr3; ch[(k + ch_dim2) * ch_dim1 + 2] = cc[(k * 5 + 1) * cc_dim1 + 2] + ti2 + ti3; cr2 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr11 * tr2 + tr12 * tr3; ci2 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr11 * ti2 + tr12 * ti3; cr3 = cc[(k * 5 + 1) * cc_dim1 + 1] + tr12 * tr2 + tr11 * tr3; ci3 = cc[(k * 5 + 1) * cc_dim1 + 2] + tr12 * ti2 + tr11 * ti3; cr5 = ti11 * tr5 + ti12 * tr4; ci5 = ti11 * ti5 + ti12 * ti4; cr4 = ti12 * tr5 - ti11 * tr4; ci4 = ti12 * ti5 - ti11 * ti4; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 1] = cr2 - ci5; ch[(k + ch_dim2 * 5) * ch_dim1 + 1] = cr2 + ci5; ch[(k + (ch_dim2 << 1)) * ch_dim1 + 2] = ci2 + cr5; ch[(k + ch_dim2 * 3) * ch_dim1 + 2] = ci3 + cr4; ch[(k + ch_dim2 * 3) * ch_dim1 + 1] = cr3 - ci4; ch[(k + (ch_dim2 << 2)) * ch_dim1 + 1] = cr3 + ci4; ch[(k + (ch_dim2 << 2)) * ch_dim1 + 2] = ci3 - cr4; ch[(k + ch_dim2 * 5) * ch_dim1 + 2] = ci2 - cr5;/* L101: */ } return;L102: i__1 = *l1; for (k = 1; k <= i__1; ++k) { i__2 = *ido; for (i__ = 2; i__ <= i__2; i__ += 2) { ti5 = cc[i__ + (k * 5 + 2) * cc_dim1] - cc[i__ + (k * 5 + 5) * cc_dim1]; ti2 = cc[i__ + (k * 5 + 2) * cc_dim1] + cc[i__ + (k * 5 + 5) * cc_dim1]; ti4 = cc[i__ + (k * 5 + 3) * cc_dim1] - cc[i__ + (k * 5 + 4) * cc_dim1]; ti3 = cc[i__ + (k * 5 + 3) * cc_dim1] + cc[i__ + (k * 5 + 4) * cc_dim1]; tr5 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] - cc[i__ - 1 + (k * 5 + 5) * cc_dim1]; tr2 = cc[i__ - 1 + (k * 5 + 2) * cc_dim1] + cc[i__ - 1 + (k * 5 + 5) * cc_dim1]; tr4 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] - cc[i__ - 1 + (k * 5 + 4) * cc_dim1]; tr3 = cc[i__ - 1 + (k * 5 + 3) * cc_dim1] + cc[i__ - 1 + (k * 5 + 4) * cc_dim1]; ch[i__ - 1 + (k + ch_dim2) * ch_dim1] = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr2 + tr3; ch[i__ + (k + ch_dim2) * ch_dim1] = cc[i__ + (k * 5 + 1) * cc_dim1] + ti2 + ti3; cr2 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr11 * tr2 + tr12 * tr3; ci2 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr11 * ti2 + tr12 * ti3; cr3 = cc[i__ - 1 + (k * 5 + 1) * cc_dim1] + tr12 * tr2 + tr11 * tr3; ci3 = cc[i__ + (k * 5 + 1) * cc_dim1] + tr12 * ti2 + tr11 * ti3; cr5 = ti11 * tr5 + ti12 * tr4; ci5 = ti11 * ti5 + ti12 * ti4; cr4 = ti12 * tr5 - ti11 * tr4; ci4 = ti12 * ti5 - ti11 * ti4; dr3 = cr3 - ci4; dr4 = cr3 + ci4; di3 = ci3 + cr4; di4 = ci3 - cr4; dr5 = cr2 + ci5; dr2 = cr2 - ci5; di5 = ci2 - cr5; di2 = ci2 + cr5; ch[i__ - 1 + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * dr2 + wa1[i__] * di2; ch[i__ + (k + (ch_dim2 << 1)) * ch_dim1] = wa1[i__ - 1] * di2 - wa1[i__] * dr2; ch[i__ - 1 + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * dr3 + wa2[i__] * di3; ch[i__ + (k + ch_dim2 * 3) * ch_dim1] = wa2[i__ - 1] * di3 - wa2[ i__] * dr3; ch[i__ - 1 + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * dr4 + wa3[i__] * di4; ch[i__ + (k + (ch_dim2 << 2)) * ch_dim1] = wa3[i__ - 1] * di4 - wa3[i__] * dr4; ch[i__ - 1 + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * dr5 + wa4[i__] * di5; ch[i__ + (k + ch_dim2 * 5) * ch_dim1] = wa4[i__ - 1] * di5 - wa4[ i__] * dr5;/* L103: */ }/* L104: */ } return;} /* passf5_ *//* Subroutine */ static void radb2(integer_t *ido, integer_t *l1, real_t *cc, real_t *ch, real_t *wa1){ /* System generated locals */ integer_t cc_dim1, cc_offset, ch_dim1, ch_dim2, ch_offset, i__1, i__2; /* Local variables */ integer_t i__, k, ic; real_t ti2, tr2; integer_t idp2; /* Parameter adjustments */ ch_dim1 = *ido; ch_dim2 = *l1; ch_offset = 1 + ch_dim1 * (1 + ch_dim2); ch -= ch_offset
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -