198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/******************************************************************** 298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * * 398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * * 898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * 998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * by the XIPHOPHORUS Company http://www.xiph.org/ * 1098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * * 1198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ******************************************************************** 1298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project function: *unnormalized* fft transform 1498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project last mod: $Id: smallft.c,v 1.19 2003/10/08 05:12:37 jm Exp $ 1598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ********************************************************************/ 1798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/* FFT implementation from OggSquish, minus cosine transforms, 1998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * minus all but radix 2/4 case. In Vorbis we only need this 2098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * cut-down version. 2198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * 2298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * To do more than just power-of-two sized vectors, see the full 2398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * version I wrote for NetLib. 2498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * 2598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * Note that the packing is a little strange; rather than the FFT r/i 2698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, 2798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the 2898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * FORTRAN version 2998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 3098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#ifdef HAVE_CONFIG_H 3298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include "config.h" 3398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#endif 3498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include <math.h> 3698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include "smallft.h" 3798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include "arch.h" 3898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include "os_support.h" 3998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void drfti1(int n, float *wa, int *ifac){ 4198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static int ntryh[4] = { 4,2,3,5 }; 4298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float tpi = 6.28318530717958648f; 4398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float arg,argh,argld,fi; 4498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int ntry=0,i,j=-1; 4598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int k1, l1, l2, ib; 4698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int ld, ii, ip, is, nq, nr; 4798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int ido, ipm, nfm1; 4898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int nl=n; 4998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int nf=0; 5098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L101: 5298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project j++; 5398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if (j < 4) 5498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ntry=ntryh[j]; 5598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 5698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ntry+=2; 5798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L104: 5998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nq=nl/ntry; 6098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nr=nl-ntry*nq; 6198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if (nr!=0) goto L101; 6298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nf++; 6498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ifac[nf+1]=ntry; 6598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nl=nq; 6698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ntry!=2)goto L107; 6798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nf==1)goto L107; 6898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for (i=1;i<nf;i++){ 7098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ib=nf-i+1; 7198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ifac[ib+1]=ifac[ib]; 7298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 7398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ifac[2] = 2; 7498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 7598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L107: 7698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nl!=1)goto L104; 7798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ifac[0]=n; 7898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ifac[1]=nf; 7998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project argh=tpi/n; 8098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is=0; 8198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nfm1=nf-1; 8298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l1=1; 8398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 8498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nfm1==0)return; 8598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 8698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for (k1=0;k1<nfm1;k1++){ 8798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ip=ifac[k1+2]; 8898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ld=0; 8998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l2=l1*ip; 9098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ido=n/l2; 9198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ipm=ip-1; 9298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 9398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for (j=0;j<ipm;j++){ 9498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ld+=l1; 9598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project i=is; 9698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project argld=(float)ld*argh; 9798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project fi=0.f; 9898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for (ii=2;ii<ido;ii+=2){ 9998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project fi+=1.f; 10098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project arg=fi*argld; 10198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project wa[i++]=cos(arg); 10298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project wa[i++]=sin(arg); 10398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 10498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is+=ido; 10598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 10698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l1=l2; 10798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 10898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 10998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 11098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void fdrffti(int n, float *wsave, int *ifac){ 11198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 11298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if (n == 1) return; 11398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project drfti1(n, wsave+n, ifac); 11498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 11598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 11698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){ 11798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k; 11898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float ti2,tr2; 11998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int t0,t1,t2,t3,t4,t5,t6; 12098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 12198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 12298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=(t2=l1*ido); 12398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=ido<<1; 12498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 12598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1<<1]=cc[t1]+cc[t2]; 12698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(t1<<1)+t3-1]=cc[t1]-cc[t2]; 12798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 12898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 12998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 13098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 13198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<2)return; 13298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==2)goto L105; 13398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 13498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 13598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t0; 13698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 13798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t2; 13898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=(t1<<1)+(ido<<1); 13998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t1; 14098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t1+t1; 14198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 14298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 14398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4-=2; 14498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=2; 14598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=2; 14698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3]; 14798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1]; 14898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=cc[t5]+ti2; 14998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4]=ti2-cc[t5]; 15098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=cc[t5-1]+tr2; 15198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4-1]=cc[t5-1]-tr2; 15298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 15398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 15498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 15598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 15698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 15798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido%2==1)return; 15898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 15998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L105: 16098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=(t2=(t1=ido)-1); 16198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=t0; 16298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 16398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1]=-cc[t2]; 16498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1-1]=cc[t3]; 16598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido<<1; 16698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 16798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 16898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 16998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 17098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 17198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradf4(int ido,int l1,float *cc,float *ch,float *wa1, 17298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float *wa2,float *wa3){ 17398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float hsqt2 = .70710678118654752f; 17498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k,t0,t1,t2,t3,t4,t5,t6; 17598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4; 17698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 17798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 17898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=t0; 17998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t1<<1; 18098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1+(t1<<1); 18198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=0; 18298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 18398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 18498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=cc[t1]+cc[t2]; 18598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t3]+cc[t4]; 18698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 18798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5=t3<<2]=tr1+tr2; 18898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(ido<<2)+t5-1]=tr2-tr1; 18998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4]; 19098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=cc[t2]-cc[t1]; 19198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 19298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 19398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 19498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 19598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 19698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 19798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 19898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<2)return; 19998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==2)goto L105; 20098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 20198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 20298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 20398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 20498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 20598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t1<<2; 20698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=(t6=ido<<1)+t4; 20798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 20898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=(t2+=2); 20998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=2; 21098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=2; 21198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 21298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t0; 21398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3]; 21498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1]; 21598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t0; 21698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3]; 21798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1]; 21898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t0; 21998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3]; 22098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1]; 22198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 22298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=cr2+cr4; 22398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr4=cr4-cr2; 22498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti1=ci2+ci4; 22598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti4=ci2-ci4; 22698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 22798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=cc[t2]+ci3; 22898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti3=cc[t2]-ci3; 22998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t2-1]+cr3; 23098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr3=cc[t2-1]-cr3; 23198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 23298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4-1]=tr1+tr2; 23398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4]=ti1+ti2; 23498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 23598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5-1]=tr3-ti4; 23698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=tr4-ti3; 23798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 23898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4+t6-1]=ti4+tr3; 23998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4+t6]=tr4+ti3; 24098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 24198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+t6-1]=tr2-tr1; 24298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+t6]=ti1-ti2; 24398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 24498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 24598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 24698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido&1)return; 24798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 24898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L105: 24998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 25098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=(t1=t0+ido-1)+(t0<<1); 25198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=ido<<2; 25298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=ido; 25398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=ido<<1; 25498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=ido; 25598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 25698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 25798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti1=-hsqt2*(cc[t1]+cc[t2]); 25898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=hsqt2*(cc[t1]-cc[t2]); 25998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 26098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4-1]=tr1+cc[t6-1]; 26198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4+t5-1]=cc[t6-1]-tr1; 26298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 26398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4]=ti1-cc[t1+t0]; 26498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4+t5]=ti1+cc[t1+t0]; 26598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 26698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 26798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 26898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=t3; 26998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=ido; 27098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 27198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 27298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 27398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1, 27498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float *c2,float *ch,float *ch2,float *wa){ 27598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 27698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float tpi=6.283185307179586f; 27798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int idij,ipph,i,j,k,l,ic,ik,is; 27898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; 27998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float dc2,ai1,ai2,ar1,ar2,ds2; 28098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int nbd; 28198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float dcp,arg,dsp,ar1h,ar2h; 28298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int idp2,ipp2; 28398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 28498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project arg=tpi/(float)ip; 28598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dcp=cos(arg); 28698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dsp=sin(arg); 28798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ipph=(ip+1)>>1; 28898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ipp2=ip; 28998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idp2=ido; 29098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nbd=(ido-1)>>1; 29198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 29298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t10=ip*ido; 29398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 29498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)goto L119; 29598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik]; 29698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 29798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 29898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 29998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 30098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 30198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 30298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t2]=c1[t2]; 30398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 30498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 30598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 30698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 30798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is=-ido; 30898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 30998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd>l1){ 31098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 31198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 31298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is+=ido; 31398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2= -ido+t1; 31498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 31598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij=is-1; 31698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 31798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t2; 31898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 31998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij+=2; 32098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 32198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3]; 32298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1]; 32398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 32498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 32598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 32698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project }else{ 32798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 32898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 32998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is+=ido; 33098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij=is-1; 33198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 33298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 33398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 33498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij+=2; 33598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=2; 33698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t2; 33798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 33898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3]; 33998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1]; 34098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 34198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 34298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 34398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 34498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 34598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 34698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 34798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 34898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd<l1){ 34998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 35098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 35198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 35298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 35398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 35498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 35598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 35698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=2; 35798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3-ido; 35898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4-ido; 35998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 36098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=ido; 36198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=ido; 36298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t5-1]=ch[t5-1]+ch[t6-1]; 36398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t6-1]=ch[t5]-ch[t6]; 36498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t5]=ch[t5]+ch[t6]; 36598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t6]=ch[t6-1]-ch[t5-1]; 36698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 36798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 36898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 36998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project }else{ 37098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 37198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 37298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 37398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 37498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 37598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 37698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 37798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4; 37898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 37998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=2; 38098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=2; 38198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t5-1]=ch[t5-1]+ch[t6-1]; 38298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t6-1]=ch[t5]-ch[t6]; 38398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t5]=ch[t5]+ch[t6]; 38498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t6]=ch[t6-1]-ch[t5-1]; 38598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 38698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 38798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 38898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 38998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 39098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 39198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 39298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source ProjectL119: 39398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik]; 39498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 39598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 39698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*idl1; 39798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 39898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 39998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 40098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1-ido; 40198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2-ido; 40298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 40398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 40498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 40598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t3]=ch[t3]+ch[t4]; 40698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t4]=ch[t4]-ch[t3]; 40798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 40898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 40998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 41098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1=1.f; 41198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai1=0.f; 41298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 41398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*idl1; 41498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=(ip-1)*idl1; 41598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(l=1;l<ipph;l++){ 41698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=idl1; 41798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=idl1; 41898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1h=dcp*ar1-dsp*ai1; 41998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai1=dcp*ai1+dsp*ar1; 42098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1=ar1h; 42198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t1; 42298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t2; 42398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t3; 42498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=idl1; 42598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 42698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++){ 42798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch2[t4++]=c2[ik]+ar1*c2[t7++]; 42898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch2[t5++]=ai1*c2[t6++]; 42998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 43098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 43198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dc2=ar1; 43298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ds2=ai1; 43398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2=ar1; 43498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai2=ai1; 43598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 43698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=idl1; 43798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=(ipp2-1)*idl1; 43898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=2;j<ipph;j++){ 43998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=idl1; 44098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=idl1; 44198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 44298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2h=dc2*ar2-ds2*ai2; 44398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai2=dc2*ai2+ds2*ar2; 44498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2=ar2h; 44598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 44698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t1; 44798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t2; 44898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t4; 44998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=t5; 45098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++){ 45198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch2[t6++]+=ar2*c2[t8++]; 45298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch2[t7++]+=ai2*c2[t9++]; 45398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 45498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 45598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 45698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 45798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 45898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 45998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=idl1; 46098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 46198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++]; 46298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 46398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 46498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<l1)goto L132; 46598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 46698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 46798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=0; 46898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 46998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 47098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 47198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<ido;i++)cc[t4++]=ch[t3++]; 47298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 47398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=t10; 47498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 47598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 47698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L135; 47798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 47898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L132: 47998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<ido;i++){ 48098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=i; 48198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=i; 48298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 48398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t2]=ch[t1]; 48498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 48598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=t10; 48698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 48798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 48898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 48998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L135: 49098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 49198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ido<<1; 49298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=0; 49398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=ipp2*t0; 49498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 49598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 49698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t2; 49798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t0; 49898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4-=t0; 49998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 50098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t1; 50198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t3; 50298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t4; 50398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 50498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 50598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t5-1]=ch[t6]; 50698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t5]=ch[t7]; 50798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=t10; 50898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=ido; 50998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=ido; 51098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 51198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 51298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 51398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)return; 51498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd<l1)goto L141; 51598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 51698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=-ido; 51798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=0; 51898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=0; 51998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=ipp2*t0; 52098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 52198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t2; 52298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t2; 52398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=t0; 52498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=t0; 52598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t1; 52698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t3; 52798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t4; 52898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=t5; 52998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 53098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 53198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ic=idp2-i; 53298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1]; 53398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1]; 53498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[i+t7]=ch[i+t8]+ch[i+t9]; 53598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[ic+t6]=ch[i+t9]-ch[i+t8]; 53698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 53798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=t10; 53898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=t10; 53998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8+=ido; 54098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9+=ido; 54198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 54298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 54398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project return; 54498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 54598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L141: 54698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 54798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=-ido; 54898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=0; 54998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=0; 55098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=ipp2*t0; 55198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 55298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t2; 55398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t2; 55498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=t0; 55598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=t0; 55698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 55798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=idp2+t1-i; 55898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=i+t3; 55998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=i+t4; 56098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=i+t5; 56198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 56298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t7-1]=ch[t8-1]+ch[t9-1]; 56398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t6-1]=ch[t8-1]-ch[t9-1]; 56498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t7]=ch[t8]+ch[t9]; 56598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cc[t6]=ch[t9]-ch[t8]; 56698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=t10; 56798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=t10; 56898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8+=ido; 56998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9+=ido; 57098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 57198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 57298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 57398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 57498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 57598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void drftf1(int n,float *c,float *ch,float *wa,int *ifac){ 57698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k1,l1,l2; 57798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int na,kh,nf; 57898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int ip,iw,ido,idl1,ix2,ix3; 57998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 58098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nf=ifac[1]; 58198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1; 58298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l2=n; 58398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project iw=n; 58498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 58598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k1=0;k1<nf;k1++){ 58698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project kh=nf-k1; 58798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ip=ifac[kh+1]; 58898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l1=l2/ip; 58998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ido=n/l2; 59098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idl1=ido*l1; 59198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project iw-=(ip-1)*ido; 59298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1-na; 59398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 59498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ip!=4)goto L102; 59598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 59698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix2=iw+ido; 59798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix3=ix2+ido; 59898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 59998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1); 60098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 60198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1); 60298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L110; 60398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 60498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L102: 60598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ip!=2)goto L104; 60698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0)goto L103; 60798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 60898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradf2(ido,l1,c,ch,wa+iw-1); 60998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L110; 61098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 61198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L103: 61298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradf2(ido,l1,ch,c,wa+iw-1); 61398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L110; 61498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 61598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L104: 61698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)na=1-na; 61798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0)goto L109; 61898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 61998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1); 62098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1; 62198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L110; 62298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 62398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L109: 62498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1); 62598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=0; 62698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 62798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L110: 62898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l2=l1; 62998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 63098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 63198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na==1)return; 63298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 63398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<n;i++)c[i]=ch[i]; 63498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 63598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 63698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){ 63798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k,t0,t1,t2,t3,t4,t5,t6; 63898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float ti2,tr2; 63998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 64098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 64198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 64298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 64398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=0; 64498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=(ido<<1)-1; 64598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 64698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1]=cc[t2]+cc[t3+t2]; 64798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1+t0]=cc[t2]-cc[t3+t2]; 64898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=(t1+=ido)<<1; 64998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 65098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 65198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<2)return; 65298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==2)goto L105; 65398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 65498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 65598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=0; 65698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 65798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 65898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=(t4=t2)+(ido<<1); 65998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t0+t1; 66098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 66198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 66298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=2; 66398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=2; 66498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=2; 66598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3-1]=cc[t4-1]+cc[t5-1]; 66698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t4-1]-cc[t5-1]; 66798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=cc[t4]-cc[t5]; 66898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=cc[t4]+cc[t5]; 66998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2; 67098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2; 67198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 67298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=(t1+=ido)<<1; 67398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 67498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 67598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido%2==1)return; 67698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 67798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source ProjectL105: 67898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=ido-1; 67998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ido-1; 68098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 68198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1]=cc[t2]+cc[t2]; 68298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1+t0]=-(cc[t2+1]+cc[t2+1]); 68398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 68498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido<<1; 68598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 68698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 68798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 68898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradb3(int ido,int l1,float *cc,float *ch,float *wa1, 68998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float *wa2){ 69098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float taur = -.5f; 69198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float taui = .8660254037844386f; 69298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; 69398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2; 69498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 69598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 69698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 69798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t0<<1; 69898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=ido<<1; 69998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=ido+(ido<<1); 70098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=0; 70198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 70298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t3-1]+cc[t3-1]; 70398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr2=cc[t5]+(taur*tr2); 70498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1]=cc[t5]+tr2; 70598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci3=taui*(cc[t3]+cc[t3]); 70698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1+t0]=cr2-ci3; 70798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t1+t2]=cr2+ci3; 70898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 70998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t4; 71098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=t4; 71198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 71298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 71398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)return; 71498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 71598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 71698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=ido<<1; 71798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 71898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t1+(t1<<1); 71998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=(t5=t7+t3); 72098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t1; 72198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t10=(t9=t1+t0)+t0; 72298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 72398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 72498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=2; 72598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6-=2; 72698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=2; 72798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8+=2; 72898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9+=2; 72998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t10+=2; 73098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t5-1]+cc[t6-1]; 73198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr2=cc[t7-1]+(taur*tr2); 73298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t8-1]=cc[t7-1]+tr2; 73398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=cc[t5]-cc[t6]; 73498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci2=cc[t7]+(taur*ti2); 73598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t8]=cc[t7]+ti2; 73698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr3=taui*(cc[t5-1]-cc[t6-1]); 73798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci3=taui*(cc[t5]+cc[t6]); 73898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dr2=cr2-ci3; 73998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dr3=cr2+ci3; 74098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project di2=ci2+cr3; 74198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project di3=ci2-cr3; 74298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2; 74398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2; 74498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3; 74598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3; 74698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 74798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 74898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 74998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 75098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 75198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradb4(int ido,int l1,float *cc,float *ch,float *wa1, 75298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float *wa2,float *wa3){ 75398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float sqrt2=1.414213562373095f; 75498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8; 75598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4; 75698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 75798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 75898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 75998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ido<<2; 76098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=0; 76198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=ido<<1; 76298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 76398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t3+t6; 76498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t1; 76598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr3=cc[t4-1]+cc[t4-1]; 76698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr4=cc[t4]+cc[t4]; 76798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=cc[t3]-cc[(t4+=t6)-1]; 76898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t3]+cc[t4-1]; 76998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=tr2+tr3; 77098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=tr1-tr4; 77198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=tr2-tr3; 77298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=tr1+tr4; 77398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 77498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t2; 77598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 77698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 77798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<2)return; 77898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==2)goto L105; 77998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 78098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 78198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 78298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=(t4=(t3=(t2=t1<<2)+t6))+t6; 78398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t1; 78498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 78598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=2; 78698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 78798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4-=2; 78898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5-=2; 78998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=2; 79098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti1=cc[t2]+cc[t5]; 79198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=cc[t2]-cc[t5]; 79298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti3=cc[t3]-cc[t4]; 79398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr4=cc[t3]+cc[t4]; 79498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=cc[t2-1]-cc[t5-1]; 79598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t2-1]+cc[t5-1]; 79698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti4=cc[t3-1]-cc[t4-1]; 79798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr3=cc[t3-1]+cc[t4-1]; 79898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t7-1]=tr2+tr3; 79998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr3=tr2-tr3; 80098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t7]=ti2+ti3; 80198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci3=ti2-ti3; 80298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr2=tr1-tr4; 80398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project cr4=tr1+tr4; 80498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci2=ti1+ti4; 80598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ci4=ti1-ti4; 80698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 80798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2; 80898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2; 80998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3; 81098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3; 81198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4; 81298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4; 81398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 81498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 81598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 81698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 81798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido%2 == 1)return; 81898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 81998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L105: 82098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 82198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=ido; 82298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ido<<2; 82398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=ido-1; 82498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=ido+(ido<<1); 82598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 82698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 82798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti1=cc[t1]+cc[t4]; 82898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ti2=cc[t4]-cc[t1]; 82998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr1=cc[t1-1]-cc[t4-1]; 83098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project tr2=cc[t1-1]+cc[t4-1]; 83198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=tr2+tr2; 83298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=sqrt2*(tr1-ti1); 83398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=ti2+ti2; 83498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5+=t0]=-sqrt2*(tr1+ti1); 83598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 83698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 83798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t2; 83898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=t2; 83998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 84098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 84198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 84298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1, 84398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float *c2,float *ch,float *ch2,float *wa){ 84498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static float tpi=6.283185307179586f; 84598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10, 84698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11,t12; 84798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float dc2,ai1,ai2,ar1,ar2,ds2; 84898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int nbd; 84998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project float dcp,arg,dsp,ar1h,ar2h; 85098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int ipp2; 85198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 85298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t10=ip*ido; 85398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t0=l1*ido; 85498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project arg=tpi/(float)ip; 85598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dcp=cos(arg); 85698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dsp=sin(arg); 85798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nbd=(ido-1)>>1; 85898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ipp2=ip; 85998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ipph=(ip+1)>>1; 86098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido<l1)goto L103; 86198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 86298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 86398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=0; 86498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 86598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 86698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 86798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<ido;i++){ 86898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=cc[t4]; 86998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3++; 87098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4++; 87198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 87298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=ido; 87398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=t10; 87498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 87598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L106; 87698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 87798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L103: 87898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 87998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<ido;i++){ 88098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 88198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 88298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 88398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t2]=cc[t3]; 88498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 88598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=t10; 88698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 88798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1++; 88898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 88998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 89098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L106: 89198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 89298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 89398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=(t5=ido<<1); 89498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 89598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 89698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 89798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 89898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 89998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t5; 90098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 90198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=cc[t6-1]+cc[t6-1]; 90298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4]=cc[t6]+cc[t6]; 90398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 90498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 90598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=t10; 90698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 90798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=t7; 90898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 90998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 91098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if (ido == 1)goto L116; 91198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd<l1)goto L112; 91298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 91398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 91498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 91598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=0; 91698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 91798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 91898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 91998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 92098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 92198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 92298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=(ido<<1); 92398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t7; 92498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 92598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 92698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4; 92798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=t8; 92898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11=t8; 92998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 93098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=2; 93198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=2; 93298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9+=2; 93398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11-=2; 93498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5-1]=cc[t9-1]+cc[t11-1]; 93598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=cc[t9-1]-cc[t11-1]; 93698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=cc[t9]-cc[t11]; 93798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=cc[t9]+cc[t11]; 93898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 93998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 94098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 94198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8+=t10; 94298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 94398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 94498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L116; 94598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 94698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L112: 94798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 94898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 94998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=0; 95098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 95198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 95298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 95398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 95498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 95598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7+=(ido<<1); 95698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t7; 95798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=t7; 95898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 95998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 96098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=2; 96198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8+=2; 96298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9-=2; 96398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 96498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4; 96598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11=t8; 96698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t12=t9; 96798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 96898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5-1]=cc[t11-1]+cc[t12-1]; 96998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=cc[t11-1]-cc[t12-1]; 97098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=cc[t11]-cc[t12]; 97198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=cc[t11]+cc[t12]; 97298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=ido; 97398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=ido; 97498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11+=t10; 97598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t12+=t10; 97698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 97798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 97898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 97998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 98098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source ProjectL116: 98198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1=1.f; 98298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai1=0.f; 98398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 98498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t9=(t2=ipp2*idl1); 98598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=(ip-1)*idl1; 98698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(l=1;l<ipph;l++){ 98798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=idl1; 98898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=idl1; 98998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 99098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1h=dcp*ar1-dsp*ai1; 99198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai1=dcp*ai1+dsp*ar1; 99298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar1=ar1h; 99398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t1; 99498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t2; 99598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=0; 99698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=idl1; 99798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t8=t3; 99898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++){ 99998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c2[t4++]=ch2[t6++]+ar1*ch2[t7++]; 100098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c2[t5++]=ai1*ch2[t8++]; 100198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 100298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dc2=ar1; 100398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ds2=ai1; 100498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2=ar1; 100598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai2=ai1; 100698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 100798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=idl1; 100898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7=t9-idl1; 100998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=2;j<ipph;j++){ 101098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=idl1; 101198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t7-=idl1; 101298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2h=dc2*ar2-ds2*ai2; 101398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ai2=dc2*ai2+ds2*ar2; 101498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ar2=ar2h; 101598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t1; 101698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t2; 101798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t11=t6; 101898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t12=t7; 101998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++){ 102098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c2[t4++]+=ar2*ch2[t11++]; 102198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c2[t5++]+=ai2*ch2[t12++]; 102298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 102398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 102498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 102598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 102698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 102798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 102898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=idl1; 102998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 103098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++]; 103198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 103298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 103398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 103498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 103598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 103698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 103798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 103898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 103998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 104098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 104198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t3]=c1[t3]-c1[t4]; 104298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t4]=c1[t3]+c1[t4]; 104398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 104498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 104598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 104698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 104798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 104898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)goto L132; 104998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd<l1)goto L128; 105098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 105198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 105298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 105398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 105498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 105598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 105698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 105798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 105898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 105998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 106098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4; 106198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 106298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=2; 106398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=2; 106498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5-1]=c1[t5-1]-c1[t6]; 106598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=c1[t5-1]+c1[t6]; 106698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=c1[t5]+c1[t6-1]; 106798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=c1[t5]-c1[t6-1]; 106898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 106998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 107098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=ido; 107198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 107298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 107398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L132; 107498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 107598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L128: 107698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 107798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=ipp2*t0; 107898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ipph;j++){ 107998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 108098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2-=t0; 108198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t1; 108298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4=t2; 108398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 108498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 108598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t4+=2; 108698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5=t3; 108798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6=t4; 108898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 108998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5-1]=c1[t5-1]-c1[t6]; 109098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6-1]=c1[t5-1]+c1[t6]; 109198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t5]=c1[t5]+c1[t6-1]; 109298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ch[t6]=c1[t5]-c1[t6-1]; 109398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t5+=ido; 109498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t6+=ido; 109598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 109698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 109798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 109898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 109998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source ProjectL132: 110098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)return; 110198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 110298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik]; 110398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 110498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 110598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 110698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=(t1+=t0); 110798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 110898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t2]=ch[t2]; 110998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 111098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 111198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 111298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 111398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(nbd>l1)goto L139; 111498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 111598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is= -ido-1; 111698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 111798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 111898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is+=ido; 111998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 112098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij=is; 112198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 112298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 112398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=2; 112498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij+=2; 112598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t2; 112698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 112798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3]; 112898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1]; 112998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=ido; 113098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 113198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 113298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 113398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project return; 113498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 113598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L139: 113698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is= -ido-1; 113798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1=0; 113898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(j=1;j<ip;j++){ 113998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project is+=ido; 114098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t1+=t0; 114198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2=t1; 114298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k=0;k<l1;k++){ 114398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij=is; 114498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3=t2; 114598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=2;i<ido;i+=2){ 114698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idij+=2; 114798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t3+=2; 114898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3]; 114998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1]; 115098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 115198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project t2+=ido; 115298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 115398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 115498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 115598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 115698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstatic void drftb1(int n, float *c, float *ch, float *wa, int *ifac){ 115798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int i,k1,l1,l2; 115898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int na; 115998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project int nf,ip,iw,ix2,ix3,ido,idl1; 116098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 116198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project nf=ifac[1]; 116298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=0; 116398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l1=1; 116498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project iw=1; 116598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 116698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(k1=0;k1<nf;k1++){ 116798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ip=ifac[k1 + 2]; 116898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l2=ip*l1; 116998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ido=n/l2; 117098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project idl1=ido*l1; 117198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ip!=4)goto L103; 117298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix2=iw+ido; 117398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix3=ix2+ido; 117498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 117598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 117698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1); 117798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 117898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1); 117998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1-na; 118098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L115; 118198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 118298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L103: 118398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ip!=2)goto L106; 118498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 118598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 118698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb2(ido,l1,ch,c,wa+iw-1); 118798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 118898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb2(ido,l1,c,ch,wa+iw-1); 118998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1-na; 119098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L115; 119198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 119298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L106: 119398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ip!=3)goto L109; 119498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 119598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix2=iw+ido; 119698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 119798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1); 119898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 119998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1); 120098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1-na; 120198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L115; 120298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 120398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L109: 120498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/* The radix five case can be translated later..... */ 120598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/* if(ip!=5)goto L112; 120698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 120798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix2=iw+ido; 120898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix3=ix2+ido; 120998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ix4=ix3+ido; 121098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 121198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1); 121298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 121398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1); 121498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project na=1-na; 121598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project goto L115; 121698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 121798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L112:*/ 121898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na!=0) 121998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1); 122098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project else 122198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1); 122298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(ido==1)na=1-na; 122398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 122498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project L115: 122598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l1=l2; 122698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project iw+=(ip-1)*ido; 122798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 122898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 122998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(na==0)return; 123098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 123198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project for(i=0;i<n;i++)c[i]=ch[i]; 123298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 123398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 123498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectvoid spx_drft_forward(struct drft_lookup *l,float *data){ 123598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(l->n==1)return; 123698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache); 123798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 123898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 123998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectvoid spx_drft_backward(struct drft_lookup *l,float *data){ 124098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if (l->n==1)return; 124198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache); 124298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 124398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 124498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectvoid spx_drft_init(struct drft_lookup *l,int n) 124598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project{ 124698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l->n=n; 124798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l->trigcache=(float*)speex_alloc(3*n*sizeof(*l->trigcache)); 124898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project l->splitcache=(int*)speex_alloc(32*sizeof(*l->splitcache)); 124998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project fdrffti(n, l->trigcache, l->splitcache); 125098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 125198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 125298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectvoid spx_drft_clear(struct drft_lookup *l) 125398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project{ 125498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(l) 125598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project { 125698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(l->trigcache) 125798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project speex_free(l->trigcache); 125898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project if(l->splitcache) 125998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project speex_free(l->splitcache); 126098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 126198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 1262