h0 = GET(h,0) h1 = GET(h,1) h2 = GET(h,2) h3 = GET(h,3) h4 = GET(h,4) h5 = GET(h,5) h6 = GET(h,6) h7 = GET(h,7) f = exp(h) f0 = GET(f,0) g = 1/f g0 = GET(g,0) g0fft = FFT((g0)) f0fft = FFT((f0)) y1below = IFFT(+1*g0fft*f0fft) y1above = 0 y1 = GET(y1below,1) + GET(y1above,1) kill(y1below) kill(y1above) y1fft = FFT((y1)) DTh0fft = FFT(DT(h0)) DTf0fft = FFT(DT(f0)) z1below = IFFT(-1*g0fft*DTf0fft) z1above = IFFT(+1*y1fft*DTh0fft) z1 = GET(z1below,1) + GET(z1above,1) +1*DT(h1) kill(z1below) kill(z1above) ITz1fft = FFT(IT(z1)) f1above = IFFT(+1*f0fft*ITz1fft) f1 = GET(f1above,1) kill(f1above) f1fft = FFT((f1)) u1above = IFFT(+1*g0fft*f1fft) u1 = GET(u1above,1) +1*(y1) kill(u1above) u1fft = FFT((u1)) g1above = IFFT(-1*g0fft*u1fft) g1 = GET(g1above,1) kill(g1above) \\ 14.000000 overall iteration efficiency \\ 8.500000 for y, 3 ffts \\ 11.000000 for z, 8 ffts \\ 12.000000 for f, 10 ffts \\ 13.000000 for u, 12 ffts \\ 14.000000 for g, 14 ffts g1fft = FFT((g1)) y2below = IFFT(+1*g0fft*f1fft+1*g1fft*f0fft) y2above = IFFT(+1*g1fft*f1fft) y3above = 0 y2 = GET(y2below,2) + GET(y2above,2) y3 = GET(y2above,3) + GET(y3above,3) kill(y2below) kill(y2above) kill(y3above) y2fft = FFT((y2)) y3fft = FFT((y3)) DTh1fft = FFT(DT(h1)) DTf1fft = FFT(DT(f1)) z2below = IFFT(-1*g0fft*DTf1fft-1*g1fft*DTf0fft) z2above = IFFT(+1*y2fft*DTh0fft-1*g1fft*DTf1fft) z3above = IFFT(+1*y2fft*DTh1fft+1*y3fft*DTh0fft) z2 = GET(z2below,2) + GET(z2above,2) +1*DT(h2) z3 = GET(z2above,3) + GET(z3above,3) +1*DT(h3) kill(z2below) kill(z2above) kill(z3above) ITz2fft = FFT(IT(z2)) ITz3fft = FFT(IT(z3)) f2above = IFFT(+1*f0fft*ITz2fft) f3above = IFFT(+1*f0fft*ITz3fft+1*f1fft*ITz2fft) f2 = GET(f2above,2) f3 = GET(f2above,3) + GET(f3above,3) kill(f2above) kill(f3above) f2fft = FFT((f2)) f3fft = FFT((f3)) u2above = IFFT(+1*g0fft*f2fft) u3above = IFFT(+1*g0fft*f3fft+1*g1fft*f2fft) u2 = GET(u2above,2) +1*(y2) u3 = GET(u2above,3) + GET(u3above,3) +1*(y3) kill(u2above) kill(u3above) u2fft = FFT((u2)) u3fft = FFT((u3)) g2above = IFFT(-1*g0fft*u2fft) g3above = IFFT(-1*g0fft*u3fft-1*g1fft*u2fft) g2 = GET(g2above,2) g3 = GET(g2above,3) + GET(g3above,3) kill(g2above) kill(g3above) \\ 12.000000 overall iteration efficiency \\ 7.250000 for y, 17 ffts \\ 9.000000 for z, 24 ffts \\ 10.000000 for f, 28 ffts \\ 11.000000 for u, 32 ffts \\ 12.000000 for g, 36 ffts g2fft = FFT((g2)) g3fft = FFT((g3)) y4below = IFFT(+1*g0fft*f3fft+1*g1fft*f2fft+1*g2fft*f1fft+1*g3fft*f0fft) y4above = IFFT(+1*g1fft*f3fft+1*g2fft*f2fft+1*g3fft*f1fft) y5above = IFFT(+1*g2fft*f3fft+1*g3fft*f2fft) y6above = IFFT(+1*g3fft*f3fft) y7above = 0 y4 = GET(y4below,4) + GET(y4above,4) y5 = GET(y4above,5) + GET(y5above,5) y6 = GET(y5above,6) + GET(y6above,6) y7 = GET(y6above,7) + GET(y7above,7) kill(y4below) kill(y4above) kill(y5above) kill(y6above) kill(y7above) y4fft = FFT((y4)) y5fft = FFT((y5)) y6fft = FFT((y6)) y7fft = FFT((y7)) DTh2fft = FFT(DT(h2)) DTh3fft = FFT(DT(h3)) DTf2fft = FFT(DT(f2)) DTf3fft = FFT(DT(f3)) z4below = IFFT(-1*g0fft*DTf3fft-1*g1fft*DTf2fft-1*g2fft*DTf1fft-1*g3fft*DTf0fft) z4above = IFFT(+1*y4fft*DTh0fft-1*g1fft*DTf3fft-1*g2fft*DTf2fft-1*g3fft*DTf1fft) z5above = IFFT(+1*y4fft*DTh1fft+1*y5fft*DTh0fft-1*g2fft*DTf3fft-1*g3fft*DTf2fft) z6above = IFFT(+1*y4fft*DTh2fft+1*y5fft*DTh1fft+1*y6fft*DTh0fft-1*g3fft*DTf3fft) z7above = IFFT(+1*y4fft*DTh3fft+1*y5fft*DTh2fft+1*y6fft*DTh1fft+1*y7fft*DTh0fft) z4 = GET(z4below,4) + GET(z4above,4) +1*DT(h4) z5 = GET(z4above,5) + GET(z5above,5) +1*DT(h5) z6 = GET(z5above,6) + GET(z6above,6) +1*DT(h6) z7 = GET(z6above,7) + GET(z7above,7) +1*DT(h7) kill(z4below) kill(z4above) kill(z5above) kill(z6above) kill(z7above) ITz4fft = FFT(IT(z4)) ITz5fft = FFT(IT(z5)) ITz6fft = FFT(IT(z6)) ITz7fft = FFT(IT(z7)) f4above = IFFT(+1*f0fft*ITz4fft) f5above = IFFT(+1*f0fft*ITz5fft+1*f1fft*ITz4fft) f6above = IFFT(+1*f0fft*ITz6fft+1*f1fft*ITz5fft+1*f2fft*ITz4fft) f7above = IFFT(+1*f0fft*ITz7fft+1*f1fft*ITz6fft+1*f2fft*ITz5fft+1*f3fft*ITz4fft) f4 = GET(f4above,4) f5 = GET(f4above,5) + GET(f5above,5) f6 = GET(f5above,6) + GET(f6above,6) f7 = GET(f6above,7) + GET(f7above,7) kill(f4above) kill(f5above) kill(f6above) kill(f7above) f4fft = FFT((f4)) f5fft = FFT((f5)) f6fft = FFT((f6)) f7fft = FFT((f7)) u4above = IFFT(+1*g0fft*f4fft) u5above = IFFT(+1*g0fft*f5fft+1*g1fft*f4fft) u6above = IFFT(+1*g0fft*f6fft+1*g1fft*f5fft+1*g2fft*f4fft) u7above = IFFT(+1*g0fft*f7fft+1*g1fft*f6fft+1*g2fft*f5fft+1*g3fft*f4fft) u4 = GET(u4above,4) +1*(y4) u5 = GET(u4above,5) + GET(u5above,5) +1*(y5) u6 = GET(u5above,6) + GET(u6above,6) +1*(y6) u7 = GET(u6above,7) + GET(u7above,7) +1*(y7) kill(u4above) kill(u5above) kill(u6above) kill(u7above) u4fft = FFT((u4)) u5fft = FFT((u5)) u6fft = FFT((u6)) u7fft = FFT((u7)) g4above = IFFT(-1*g0fft*u4fft) g5above = IFFT(-1*g0fft*u5fft-1*g1fft*u4fft) g6above = IFFT(-1*g0fft*u6fft-1*g1fft*u5fft-1*g2fft*u4fft) g7above = IFFT(-1*g0fft*u7fft-1*g1fft*u6fft-1*g2fft*u5fft-1*g3fft*u4fft) g4 = GET(g4above,4) g5 = GET(g4above,5) + GET(g5above,5) g6 = GET(g5above,6) + GET(g6above,6) g7 = GET(g6above,7) + GET(g7above,7) kill(g4above) kill(g5above) kill(g6above) kill(g7above) \\ 11.285714 overall iteration efficiency \\ 6.660714 for y, 42 ffts \\ 8.285714 for z, 55 ffts \\ 9.285714 for f, 63 ffts \\ 10.285714 for u, 71 ffts \\ 11.285714 for g, 79 ffts f - f0- f1- f2- f3- f4- f5- f6- f7 g - g0- g1- g2- g3- g4- g5- g6- g7