📄 fhf_16.c
字号:
/* * Copyright (c) 1997-1999, 2003 Massachusetts Institute of Technology * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *//* This file was automatically generated --- DO NOT EDIT *//* Generated on Mon Mar 24 02:08:11 EST 2003 */#include "fftw-int.h"#include "fftw.h"/* Generated by: /homee/stevenj/cvs/fftw/gensrc/genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2hc-forward 16 *//* * This function contains 298 FP additions, 130 FP multiplications, * (or, 244 additions, 76 multiplications, 54 fused multiply/add), * 51 stack variables, and 128 memory accesses */static const fftw_real K277785116 =FFTW_KONST(+0.277785116509801112371415406974266437187468595);static const fftw_real K415734806 =FFTW_KONST(+0.415734806151272618539394188808952878369280406);static const fftw_real K490392640 =FFTW_KONST(+0.490392640201615224563091118067119518486966865);static const fftw_real K097545161 =FFTW_KONST(+0.097545161008064133924142434238511120463845809);static const fftw_real K1_414213562 =FFTW_KONST(+1.414213562373095048801688724209698078569671875);static const fftw_real K2_000000000 =FFTW_KONST(+2.000000000000000000000000000000000000000000000);static const fftw_real K707106781 =FFTW_KONST(+0.707106781186547524400844362104849039284835938);static const fftw_real K923879532 =FFTW_KONST(+0.923879532511286756128183189396788286822416626);static const fftw_real K382683432 =FFTW_KONST(+0.382683432365089771728459984030398866761344562);/* * Generator Id's : * $Id: exprdag.ml,v 1.43 2003/03/16 23:43:46 stevenj Exp $ * $Id: fft.ml,v 1.44 2003/03/16 23:43:46 stevenj Exp $ * $Id: to_c.ml,v 1.26 2003/03/16 23:43:46 stevenj Exp $ */void fftw_hc2hc_forward_16(fftw_real *A, const fftw_complex *W, int iostride, int m, int dist){ int i; fftw_real *X; fftw_real *Y; X = A; Y = A + (16 * iostride); { fftw_real tmp277; fftw_real tmp280; fftw_real tmp281; fftw_real tmp309; fftw_real tmp292; fftw_real tmp307; fftw_real tmp314; fftw_real tmp322; fftw_real tmp330; fftw_real tmp284; fftw_real tmp287; fftw_real tmp288; fftw_real tmp310; fftw_real tmp291; fftw_real tmp300; fftw_real tmp315; fftw_real tmp325; fftw_real tmp331; fftw_real tmp290; fftw_real tmp289; fftw_real tmp317; fftw_real tmp318; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp275; fftw_real tmp276; fftw_real tmp278; fftw_real tmp279; ASSERT_ALIGNED_DOUBLE; tmp275 = X[0]; tmp276 = X[8 * iostride]; tmp277 = tmp275 + tmp276; tmp278 = X[4 * iostride]; tmp279 = X[12 * iostride]; tmp280 = tmp278 + tmp279; tmp281 = tmp277 + tmp280; tmp309 = tmp275 - tmp276; tmp292 = tmp278 - tmp279; } { fftw_real tmp303; fftw_real tmp320; fftw_real tmp306; fftw_real tmp321; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp301; fftw_real tmp302; fftw_real tmp304; fftw_real tmp305; ASSERT_ALIGNED_DOUBLE; tmp301 = X[iostride]; tmp302 = X[9 * iostride]; tmp303 = tmp301 - tmp302; tmp320 = tmp301 + tmp302; tmp304 = X[5 * iostride]; tmp305 = X[13 * iostride]; tmp306 = tmp304 - tmp305; tmp321 = tmp304 + tmp305; } tmp307 = (K382683432 * tmp303) + (K923879532 * tmp306); tmp314 = (K923879532 * tmp303) - (K382683432 * tmp306); tmp322 = tmp320 - tmp321; tmp330 = tmp320 + tmp321; } { fftw_real tmp282; fftw_real tmp283; fftw_real tmp285; fftw_real tmp286; ASSERT_ALIGNED_DOUBLE; tmp282 = X[2 * iostride]; tmp283 = X[10 * iostride]; tmp284 = tmp282 + tmp283; tmp290 = tmp282 - tmp283; tmp285 = X[14 * iostride]; tmp286 = X[6 * iostride]; tmp287 = tmp285 + tmp286; tmp289 = tmp285 - tmp286; } tmp288 = tmp284 + tmp287; tmp310 = K707106781 * (tmp290 + tmp289); tmp291 = K707106781 * (tmp289 - tmp290); { fftw_real tmp296; fftw_real tmp323; fftw_real tmp299; fftw_real tmp324; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp294; fftw_real tmp295; fftw_real tmp297; fftw_real tmp298; ASSERT_ALIGNED_DOUBLE; tmp294 = X[15 * iostride]; tmp295 = X[7 * iostride]; tmp296 = tmp294 - tmp295; tmp323 = tmp294 + tmp295; tmp297 = X[3 * iostride]; tmp298 = X[11 * iostride]; tmp299 = tmp297 - tmp298; tmp324 = tmp297 + tmp298; } tmp300 = (K382683432 * tmp296) - (K923879532 * tmp299); tmp315 = (K923879532 * tmp296) + (K382683432 * tmp299); tmp325 = tmp323 - tmp324; tmp331 = tmp323 + tmp324; } { fftw_real tmp329; fftw_real tmp332; fftw_real tmp327; fftw_real tmp328; ASSERT_ALIGNED_DOUBLE; X[4 * iostride] = tmp281 - tmp288; tmp329 = tmp281 + tmp288; tmp332 = tmp330 + tmp331; X[8 * iostride] = tmp329 - tmp332; X[0] = tmp329 + tmp332; Y[-4 * iostride] = tmp331 - tmp330; tmp327 = tmp287 - tmp284; tmp328 = K707106781 * (tmp325 - tmp322); Y[-2 * iostride] = tmp327 + tmp328; Y[-6 * iostride] = tmp328 - tmp327; } { fftw_real tmp319; fftw_real tmp326; fftw_real tmp313; fftw_real tmp316; ASSERT_ALIGNED_DOUBLE; tmp319 = tmp277 - tmp280; tmp326 = K707106781 * (tmp322 + tmp325); X[6 * iostride] = tmp319 - tmp326; X[2 * iostride] = tmp319 + tmp326; tmp313 = tmp309 + tmp310; tmp316 = tmp314 + tmp315; X[7 * iostride] = tmp313 - tmp316; X[iostride] = tmp313 + tmp316; } tmp317 = tmp292 + tmp291; tmp318 = tmp315 - tmp314; Y[-3 * iostride] = tmp317 + tmp318; Y[-5 * iostride] = tmp318 - tmp317; { fftw_real tmp293; fftw_real tmp308; fftw_real tmp311; fftw_real tmp312; ASSERT_ALIGNED_DOUBLE; tmp293 = tmp291 - tmp292; tmp308 = tmp300 - tmp307; Y[-iostride] = tmp293 + tmp308; Y[-7 * iostride] = tmp308 - tmp293; tmp311 = tmp309 - tmp310; tmp312 = tmp307 + tmp300; X[5 * iostride] = tmp311 - tmp312; X[3 * iostride] = tmp311 + tmp312; } } X = X + dist; Y = Y - dist; for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 15) { fftw_real tmp77; fftw_real tmp161; fftw_real tmp249; fftw_real tmp262; fftw_real tmp88; fftw_real tmp263; fftw_real tmp164; fftw_real tmp246; fftw_real tmp147; fftw_real tmp158; fftw_real tmp231; fftw_real tmp198; fftw_real tmp214; fftw_real tmp232; fftw_real tmp233; fftw_real tmp234; fftw_real tmp193; fftw_real tmp213; fftw_real tmp100; fftw_real tmp222; fftw_real tmp170; fftw_real tmp206; fftw_real tmp111; fftw_real tmp223; fftw_real tmp175; fftw_real tmp207; fftw_real tmp124; fftw_real tmp135; fftw_real tmp226; fftw_real tmp187; fftw_real tmp211; fftw_real tmp227; fftw_real tmp228; fftw_real tmp229; fftw_real tmp182; fftw_real tmp210; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp71; fftw_real tmp248; fftw_real tmp76; fftw_real tmp247; ASSERT_ALIGNED_DOUBLE; tmp71 = X[0]; tmp248 = Y[-15 * iostride]; { fftw_real tmp73; fftw_real tmp75; fftw_real tmp72; fftw_real tmp74; ASSERT_ALIGNED_DOUBLE; tmp73 = X[8 * iostride]; tmp75 = Y[-7 * iostride]; tmp72 = c_re(W[7]); tmp74 = c_im(W[7]); tmp76 = (tmp72 * tmp73) - (tmp74 * tmp75); tmp247 = (tmp74 * tmp73) + (tmp72 * tmp75); } tmp77 = tmp71 + tmp76; tmp161 = tmp71 - tmp76; tmp249 = tmp247 + tmp248; tmp262 = tmp248 - tmp247; } { fftw_real tmp82; fftw_real tmp162; fftw_real tmp87; fftw_real tmp163; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp79; fftw_real tmp81; fftw_real tmp78; fftw_real tmp80; ASSERT_ALIGNED_DOUBLE; tmp79 = X[4 * iostride]; tmp81 = Y[-11 * iostride]; tmp78 = c_re(W[3]); tmp80 = c_im(W[3]); tmp82 = (tmp78 * tmp79) - (tmp80 * tmp81); tmp162 = (tmp80 * tmp79) + (tmp78 * tmp81); } { fftw_real tmp84; fftw_real tmp86; fftw_real tmp83; fftw_real tmp85; ASSERT_ALIGNED_DOUBLE; tmp84 = X[12 * iostride]; tmp86 = Y[-3 * iostride]; tmp83 = c_re(W[11]); tmp85 = c_im(W[11]); tmp87 = (tmp83 * tmp84) - (tmp85 * tmp86); tmp163 = (tmp85 * tmp84) + (tmp83 * tmp86); } tmp88 = tmp82 + tmp87; tmp263 = tmp82 - tmp87; tmp164 = tmp162 - tmp163; tmp246 = tmp162 + tmp163; } { fftw_real tmp141; fftw_real tmp194; fftw_real tmp157; fftw_real tmp191; fftw_real tmp146; fftw_real tmp195; fftw_real tmp152; fftw_real tmp190; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp138; fftw_real tmp140; fftw_real tmp137; fftw_real tmp139; ASSERT_ALIGNED_DOUBLE; tmp138 = X[15 * iostride]; tmp140 = Y[0]; tmp137 = c_re(W[14]); tmp139 = c_im(W[14]); tmp141 = (tmp137 * tmp138) - (tmp139 * tmp140); tmp194 = (tmp139 * tmp138) + (tmp137 * tmp140); } { fftw_real tmp154; fftw_real tmp156; fftw_real tmp153; fftw_real tmp155; ASSERT_ALIGNED_DOUBLE; tmp154 = X[11 * iostride]; tmp156 = Y[-4 * iostride]; tmp153 = c_re(W[10]); tmp155 = c_im(W[10]); tmp157 = (tmp153 * tmp154) - (tmp155 * tmp156); tmp191 = (tmp155 * tmp154) + (tmp153 * tmp156); } { fftw_real tmp143; fftw_real tmp145; fftw_real tmp142; fftw_real tmp144; ASSERT_ALIGNED_DOUBLE; tmp143 = X[7 * iostride]; tmp145 = Y[-8 * iostride]; tmp142 = c_re(W[6]); tmp144 = c_im(W[6]); tmp146 = (tmp142 * tmp143) - (tmp144 * tmp145); tmp195 = (tmp144 * tmp143) + (tmp142 * tmp145); } { fftw_real tmp149; fftw_real tmp151; fftw_real tmp148; fftw_real tmp150; ASSERT_ALIGNED_DOUBLE; tmp149 = X[3 * iostride]; tmp151 = Y[-12 * iostride]; tmp148 = c_re(W[2]); tmp150 = c_im(W[2]); tmp152 = (tmp148 * tmp149) - (tmp150 * tmp151); tmp190 = (tmp150 * tmp149) + (tmp148 * tmp151); } { fftw_real tmp196; fftw_real tmp197; fftw_real tmp189; fftw_real tmp192; ASSERT_ALIGNED_DOUBLE; tmp147 = tmp141 + tmp146; tmp158 = tmp152 + tmp157; tmp231 = tmp147 - tmp158; tmp196 = tmp194 - tmp195; tmp197 = tmp152 - tmp157; tmp198 = tmp196 + tmp197; tmp214 = tmp196 - tmp197; tmp232 = tmp194 + tmp195; tmp233 = tmp190 + tmp191; tmp234 = tmp232 - tmp233; tmp189 = tmp141 - tmp146; tmp192 = tmp190 - tmp191; tmp193 = tmp189 - tmp192; tmp213 = tmp189 + tmp192; } } { fftw_real tmp94; fftw_real tmp166; fftw_real tmp99; fftw_real tmp167; fftw_real tmp168; fftw_real tmp169; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp91; fftw_real tmp93; fftw_real tmp90; fftw_real tmp92; ASSERT_ALIGNED_DOUBLE; tmp91 = X[2 * iostride]; tmp93 = Y[-13 * iostride]; tmp90 = c_re(W[1]); tmp92 = c_im(W[1]); tmp94 = (tmp90 * tmp91) - (tmp92 * tmp93); tmp166 = (tmp92 * tmp91) + (tmp90 * tmp93); } { fftw_real tmp96; fftw_real tmp98; fftw_real tmp95; fftw_real tmp97; ASSERT_ALIGNED_DOUBLE; tmp96 = X[10 * iostride]; tmp98 = Y[-5 * iostride]; tmp95 = c_re(W[9]); tmp97 = c_im(W[9]); tmp99 = (tmp95 * tmp96) - (tmp97 * tmp98); tmp167 = (tmp97 * tmp96) + (tmp95 * tmp98); } tmp100 = tmp94 + tmp99; tmp222 = tmp166 + tmp167; tmp168 = tmp166 - tmp167; tmp169 = tmp94 - tmp99; tmp170 = tmp168 - tmp169; tmp206 = tmp169 + tmp168; } { fftw_real tmp105; fftw_real tmp172; fftw_real tmp110; fftw_real tmp173; fftw_real tmp171; fftw_real tmp174; ASSERT_ALIGNED_DOUBLE; { fftw_real tmp102; fftw_real tmp104; fftw_real tmp101; fftw_real tmp103; ASSERT_ALIGNED_DOUBLE; tmp102 = X[14 * iostride]; tmp104 = Y[-iostride]; tmp101 = c_re(W[13]); tmp103 = c_im(W[13]); tmp105 = (tmp101 * tmp102) - (tmp103 * tmp104); tmp172 = (tmp103 * tmp102) + (tmp101 * tmp104); } { fftw_real tmp107; fftw_real tmp109; fftw_real tmp106; fftw_real tmp108; ASSERT_ALIGNED_DOUBLE; tmp107 = X[6 * iostride]; tmp109 = Y[-9 * iostride]; tmp106 = c_re(W[5]); tmp108 = c_im(W[5]); tmp110 = (tmp106 * tmp107) - (tmp108 * tmp109); tmp173 = (tmp108 * tmp107) + (tmp106 * tmp109); } tmp111 = tmp105 + tmp110; tmp223 = tmp172 + tmp173; tmp171 = tmp105 - tmp110;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -