📄 pfafft.c
字号:
t6r = z[j3]-z[j4]; t6i = z[j3+1]-z[j4+1]; t7r = z[j00]-0.5f*t3r; t7i = z[j00+1]-0.5f*t3i; t8r = t1r-t3r; t8i = t1i-t3i; t9r = t2r-t3r; t9i = t2i-t3i; y1r = t7r+c1*t8r+c2*t9r; y1i = t7i+c1*t8i+c2*t9i; y2r = t7r+c2*t8r+c3*t9r; y2i = t7i+c2*t8i+c3*t9i; y3r = t7r+c3*t8r+c1*t9r; y3i = t7i+c3*t8i+c1*t9i; y4r = c6*t4r-c4*t5r+c5*t6r; y4i = c6*t4i-c4*t5i+c5*t6i; y5r = c5*t4r-c6*t5r-c4*t6r; y5i = c5*t4i-c6*t5i-c4*t6i; y6r = c4*t4r+c5*t5r+c6*t6r; y6i = c4*t4i+c5*t5i+c6*t6i; z[j00] = z[j00]+t1r+t2r+t3r; z[j00+1] = z[j00+1]+t1i+t2i+t3i; z[j01] = y1r-y6i; z[j01+1] = y1i+y6r; z[j2] = y2r-y5i; z[j2+1] = y2i+y5r; z[j3] = y3r-y4i; z[j3+1] = y3i+y4r; z[j4] = y3r+y4i; z[j4+1] = y3i-y4r; z[j5] = y2r+y5i; z[j5+1] = y2i-y5r; z[j6] = y1r+y6i; z[j6+1] = y1i-y6r; jt = j6+2; j6 = j5+2; j5 = j4+2; j4 = j3+2; j3 = j2+2; j2 = j01+2; j01 = j00+2; j00 = jt; } continue; } j7 = j6+jinc; if (j7>=jmax) j7 = j7-jmax; /* if factor is 8 */ if (ifac==8) { if (mu==1) { c1 = 1.0; c2 = P707; } else if (mu==3) { c1 = -1.0; c2 = -P707; } else if (mu==5) { c1 = 1.0; c2 = -P707; } else { c1 = -1.0; c2 = P707; } c3 = c1*c2; for (l=0; l<m; l++) { t1r = z[j00]+z[j4]; t1i = z[j00+1]+z[j4+1]; t2r = z[j00]-z[j4]; t2i = z[j00+1]-z[j4+1]; t3r = z[j01]+z[j5]; t3i = z[j01+1]+z[j5+1]; t4r = z[j01]-z[j5]; t4i = z[j01+1]-z[j5+1]; t5r = z[j2]+z[j6]; t5i = z[j2+1]+z[j6+1]; t6r = c1*(z[j2]-z[j6]); t6i = c1*(z[j2+1]-z[j6+1]); t7r = z[j3]+z[j7]; t7i = z[j3+1]+z[j7+1]; t8r = z[j3]-z[j7]; t8i = z[j3+1]-z[j7+1]; t9r = t1r+t5r; t9i = t1i+t5i; t10r = t3r+t7r; t10i = t3i+t7i; t11r = c2*(t4r-t8r); t11i = c2*(t4i-t8i); t12r = c3*(t4r+t8r); t12i = c3*(t4i+t8i); y1r = t2r+t11r; y1i = t2i+t11i; y2r = t1r-t5r; y2i = t1i-t5i; y3r = t2r-t11r; y3i = t2i-t11i; y5r = t12r-t6r; y5i = t12i-t6i; y6r = c1*(t3r-t7r); y6i = c1*(t3i-t7i); y7r = t12r+t6r; y7i = t12i+t6i; z[j00] = t9r+t10r; z[j00+1] = t9i+t10i; z[j01] = y1r-y7i; z[j01+1] = y1i+y7r; z[j2] = y2r-y6i; z[j2+1] = y2i+y6r; z[j3] = y3r-y5i; z[j3+1] = y3i+y5r; z[j4] = t9r-t10r; z[j4+1] = t9i-t10i; z[j5] = y3r+y5i; z[j5+1] = y3i-y5r; z[j6] = y2r+y6i; z[j6+1] = y2i-y6r; z[j7] = y1r+y7i; z[j7+1] = y1i-y7r; jt = j7+2; j7 = j6+2; j6 = j5+2; j5 = j4+2; j4 = j3+2; j3 = j2+2; j2 = j01+2; j01 = j00+2; j00 = jt; } continue; } j8 = j7+jinc; if (j8>=jmax) j8 = j8-jmax; /* if factor is 9 */ if (ifac==9) { if (mu==1) { c1 = P866; c2 = P766; c3 = P642; c4 = P173; c5 = P984; } else if (mu==2) { c1 = -P866; c2 = P173; c3 = P984; c4 = -P939; c5 = P342; } else if (mu==4) { c1 = P866; c2 = -P939; c3 = P342; c4 = P766; c5 = -P642; } else if (mu==5) { c1 = -P866; c2 = -P939; c3 = -P342; c4 = P766; c5 = P642; } else if (mu==7) { c1 = P866; c2 = P173; c3 = -P984; c4 = -P939; c5 = -P342; } else { c1 = -P866; c2 = P766; c3 = -P642; c4 = P173; c5 = -P984; } c6 = c1*c2; c7 = c1*c3; c8 = c1*c4; c9 = c1*c5; for (l=0; l<m; l++) { t1r = z[j3]+z[j6]; t1i = z[j3+1]+z[j6+1]; t2r = z[j00]-0.5f*t1r; t2i = z[j00+1]-0.5f*t1i; t3r = c1*(z[j3]-z[j6]); t3i = c1*(z[j3+1]-z[j6+1]); t4r = z[j00]+t1r; t4i = z[j00+1]+t1i; t5r = z[j4]+z[j7]; t5i = z[j4+1]+z[j7+1]; t6r = z[j01]-0.5f*t5r; t6i = z[j01+1]-0.5f*t5i; t7r = z[j4]-z[j7]; t7i = z[j4+1]-z[j7+1]; t8r = z[j01]+t5r; t8i = z[j01+1]+t5i; t9r = z[j2]+z[j5]; t9i = z[j2+1]+z[j5+1]; t10r = z[j8]-0.5f*t9r; t10i = z[j8+1]-0.5f*t9i; t11r = z[j2]-z[j5]; t11i = z[j2+1]-z[j5+1]; t12r = z[j8]+t9r; t12i = z[j8+1]+t9i; t13r = t8r+t12r; t13i = t8i+t12i; t14r = t6r+t10r; t14i = t6i+t10i; t15r = t6r-t10r; t15i = t6i-t10i; t16r = t7r+t11r; t16i = t7i+t11i; t17r = t7r-t11r; t17i = t7i-t11i; t18r = c2*t14r-c7*t17r; t18i = c2*t14i-c7*t17i; t19r = c4*t14r+c9*t17r; t19i = c4*t14i+c9*t17i; t20r = c3*t15r+c6*t16r; t20i = c3*t15i+c6*t16i; t21r = c5*t15r-c8*t16r; t21i = c5*t15i-c8*t16i; t22r = t18r+t19r; t22i = t18i+t19i; t23r = t20r-t21r; t23i = t20i-t21i; y1r = t2r+t18r; y1i = t2i+t18i; y2r = t2r+t19r; y2i = t2i+t19i; y3r = t4r-0.5f*t13r; y3i = t4i-0.5f*t13i; y4r = t2r-t22r; y4i = t2i-t22i; y5r = t3r-t23r; y5i = t3i-t23i; y6r = c1*(t8r-t12r); y6i = c1*(t8i-t12i); y7r = t21r-t3r; y7i = t21i-t3i; y8r = t3r+t20r; y8i = t3i+t20i; z[j00] = t4r+t13r; z[j00+1] = t4i+t13i; z[j01] = y1r-y8i; z[j01+1] = y1i+y8r; z[j2] = y2r-y7i; z[j2+1] = y2i+y7r; z[j3] = y3r-y6i; z[j3+1] = y3i+y6r; z[j4] = y4r-y5i; z[j4+1] = y4i+y5r; z[j5] = y4r+y5i; z[j5+1] = y4i-y5r; z[j6] = y3r+y6i; z[j6+1] = y3i-y6r; z[j7] = y2r+y7i; z[j7+1] = y2i-y7r; z[j8] = y1r+y8i; z[j8+1] = y1i-y8r; jt = j8+2; j8 = j7+2; j7 = j6+2; j6 = j5+2; j5 = j4+2; j4 = j3+2; j3 = j2+2; j2 = j01+2; j01 = j00+2; j00 = jt; } continue; } j9 = j8+jinc; if (j9>=jmax) j9 = j9-jmax; j10 = j9+jinc; if (j10>=jmax) j10 = j10-jmax; /* if factor is 11 */ if (ifac==11) { if (mu==1) { c1 = P841; c2 = P415; c3 = -P142; c4 = -P654; c5 = -P959; c6 = P540; c7 = P909; c8 = P989; c9 = P755; c10 = P281; } else if (mu==2) { c1 = P415; c2 = -P654; c3 = -P959; c4 = -P142; c5 = P841; c6 = P909; c7 = P755; c8 = -P281; c9 = -P989; c10 = -P540; } else if (mu==3) { c1 = -P142; c2 = -P959; c3 = P415; c4 = P841; c5 = -P654; c6 = P989; c7 = -P281; c8 = -P909; c9 = P540; c10 = P755; } else if (mu==4) { c1 = -P654; c2 = -P142; c3 = P841; c4 = -P959; c5 = P415; c6 = P755; c7 = -P989; c8 = P540; c9 = P281; c10 = -P909; } else if (mu==5) { c1 = -P959; c2 = P841; c3 = -P654; c4 = P415; c5 = -P142; c6 = P281; c7 = -P540; c8 = P755; c9 = -P909; c10 = P989; } else if (mu==6) { c1 = -P959; c2 = P841; c3 = -P654; c4 = P415; c5 = -P142; c6 = -P281; c7 = P540; c8 = -P755; c9 = P909; c10 = -P989; } else if (mu==7) { c1 = -P654; c2 = -P142; c3 = P841; c4 = -P959; c5 = P415; c6 = -P755; c7 = P989; c8 = -P540; c9 = -P281; c10 = P909; } else if (mu==8) { c1 = -P142; c2 = -P959; c3 = P415; c4 = P841; c5 = -P654; c6 = -P989; c7 = P281; c8 = P909; c9 = -P540; c10 = -P755; } else if (mu==9) { c1 = P415; c2 = -P654; c3 = -P959; c4 = -P142; c5 = P841; c6 = -P909; c7 = -P755; c8 = P281; c9 = P989; c10 = P540; } else { c1 = P841; c2 = P415; c3 = -P142; c4 = -P654; c5 = -P959; c6 = -P540; c7 = -P909; c8 = -P989; c9 = -P755; c10 = -P281; } for (l=0; l<m; l++) { t1r = z[j01]+z[j10]; t1i = z[j01+1]+z[j10+1]; t2r = z[j2]+z[j9]; t2i = z[j2+1]+z[j9+1]; t3r = z[j3]+z[j8]; t3i = z[j3+1]+z[j8+1]; t4r = z[j4]+z[j7]; t4i = z[j4+1]+z[j7+1]; t5r = z[j5]+z[j6]; t5i = z[j5+1]+z[j6+1]; t6r = z[j01]-z[j10]; t6i = z[j01+1]-z[j10+1]; t7r = z[j2]-z[j9]; t7i = z[j2+1]-z[j9+1]; t8r = z[j3]-z[j8]; t8i = z[j3+1]-z[j8+1]; t9r = z[j4]-z[j7]; t9i = z[j4+1]-z[j7+1]; t10r = z[j5]-z[j6]; t10i = z[j5+1]-z[j6+1]; t11r = z[j00]-0.5f*t5r; t11i = z[j00+1]-0.5f*t5i; t12r = t1r-t5r; t12i = t1i-t5i; t13r = t2r-t5r; t13i = t2i-t5i; t14r = t3r-t5r; t14i = t3i-t5i; t15r = t4r-t5r; t15i = t4i-t5i; y1r = t11r+c1*t12r+c2*t13r+c3*t14r+c4*t15r; y1i = t11i+c1*t12i+c2*t13i+c3*t14i+c4*t15i; y2r = t11r+c2*t12r+c4*t13r+c5*t14r+c3*t15r; y2i = t11i+c2*t12i+c4*t13i+c5*t14i+c3*t15i; y3r = t11r+c3*t12r+c5*t13r+c2*t14r+c1*t15r; y3i = t11i+c3*t12i+c5*t13i+c2*t14i+c1*t15i; y4r = t11r+c4*t12r+c3*t13r+c1*t14r+c5*t15r; y4i = t11i+c4*t12i+c3*t13i+c1*t14i+c5*t15i; y5r = t11r+c5*t12r+c1*t13r+c4*t14r+c2*t15r; y5i = t11i+c5*t12i+c1*t13i+c4*t14i+c2*t15i; y6r = c10*t6r-c6*t7r+c9*t8r-c7*t9r+c8*t10r; y6i = c10*t6i-c6*t7i+c9*t8i-c7*t9i+c8*t10i; y7r = c9*t6r-c8*t7r+c6*t8r+c10*t9r-c7*t10r; y7i = c9*t6i-c8*t7i+c6*t8i+c10*t9i-c7*t10i; y8r = c8*t6r-c10*t7r-c7*t8r+c6*t9r+c9*t10r; y8i = c8*t6i-c10*t7i-c7*t8i+c6*t9i+c9*t10i; y9r = c7*t6r+c9*t7r-c10*t8r-c8*t9r-c6*t10r; y9i = c7*t6i+c9*t7i-c10*t8i-c8*t9i-c6*t10i; y10r = c6*t6r+c7*t7r+c8*t8r+c9*t9r+c10*t10r; y10i = c6*t6i+c7*t7i+c8*t8i+c9*t9i+c10*t10i; z[j00] = z[j00]+t1r+t2r+t3r+t4r+t5r; z[j00+1] = z[j00+1]+t1i+t2i+t3i+t4i+t5i; z[j01] = y1r-y10i; z[j01+1] = y1i+y10r; z[j2] = y2r-y9i; z[j2+1] = y2i+y9r; z[j3] = y3r-y8i; z[j3+1] = y3i+y8r; z[j4] = y4r-y7i; z[j4+1] = y4i+y7r; z[j5] = y5r-y6i; z[j5+1] = y5i+y6r; z[j6] = y5r+y6i; z[j6+1] = y5i-y6r; z[j7] = y4r+y7i; z[j7+1] = y4i-y7r; z[j8] = y3r+y8i; z[j8+1] = y3i-y8r; z[j9] = y2r+y9i; z[j9+1] = y2i-y9r; z[j10] = y1r+y10i; z[j10+1] = y1i-y10r; jt = j10+2; j10 = j9+2; j9 = j8+2; j8 = j7+2; j7 = j6+2; j6 = j5+2; j5 = j4+2; j4 = j3+2; j3 = j2+2; j2 = j01+2; j01 = j00+2; j00 = jt; } continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -