您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ C_MUL函数代码示例

51自学网 2021-06-01 20:08:42
  C++
这篇教程C++ C_MUL函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中C_MUL函数的典型用法代码示例。如果您正苦于以下问题:C++ C_MUL函数的具体用法?C++ C_MUL怎么用?C++ C_MUL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了C_MUL函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: kf_bfly5

static void kf_bfly5(        kiss_fft_cpx * Fout,        const size_t fstride,        const kiss_fft_cfg st,        int m        ){    kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;    int u;    kiss_fft_cpx scratch[13];    kiss_fft_cpx * twiddles = st->twiddles;    kiss_fft_cpx *tw;    kiss_fft_cpx ya,yb;    ya = twiddles[fstride*m];    yb = twiddles[fstride*2*m];    Fout0=Fout;    Fout1=Fout0+m;    Fout2=Fout0+2*m;    Fout3=Fout0+3*m;    Fout4=Fout0+4*m;    tw=st->twiddles;    for ( u=0; u<m; ++u ) {        C_FIXDIV( *Fout0,5); C_FIXDIV( *Fout1,5); C_FIXDIV( *Fout2,5); C_FIXDIV( *Fout3,5); C_FIXDIV( *Fout4,5);        scratch[0] = *Fout0;        C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);        C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);        C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);        C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);        C_ADD( scratch[7],scratch[1],scratch[4]);        C_SUB( scratch[10],scratch[1],scratch[4]);        C_ADD( scratch[8],scratch[2],scratch[3]);        C_SUB( scratch[9],scratch[2],scratch[3]);        Fout0->r += scratch[7].r + scratch[8].r;        Fout0->i += scratch[7].i + scratch[8].i;        scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r);        scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r);        scratch[6].r =  S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i);        scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i);        C_SUB(*Fout1,scratch[5],scratch[6]);        C_ADD(*Fout4,scratch[5],scratch[6]);        scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r);        scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r);        scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i);        scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i);        C_ADD(*Fout2,scratch[11],scratch[12]);        C_SUB(*Fout3,scratch[11],scratch[12]);        ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;    }}
开发者ID:Arcko,项目名称:xbmc,代码行数:60,


示例2: kf_bfly3

static void kf_bfly3(                     kiss_fft_cpx * Fout,                     const size_t fstride,                     const kiss_fft_state *st,                     int m,                     int N,                     int mm                    ){   int i;   size_t k;   const size_t m2 = 2*m;   const kiss_twiddle_cpx *tw1,*tw2;   kiss_fft_cpx scratch[5];   kiss_twiddle_cpx epi3;   kiss_fft_cpx * Fout_beg = Fout;#ifdef FIXED_POINT   /*epi3.r = -16384;*/ /* Unused */   epi3.i = -28378;#else   epi3 = st->twiddles[fstride*m];#endif   for (i=0;i<N;i++)   {      Fout = Fout_beg + i*mm;      tw1=tw2=st->twiddles;      /* For non-custom modes, m is guaranteed to be a multiple of 4. */      k=m;      do {         C_MUL(scratch[1],Fout[m] , *tw1);         C_MUL(scratch[2],Fout[m2] , *tw2);         C_ADD(scratch[3],scratch[1],scratch[2]);         C_SUB(scratch[0],scratch[1],scratch[2]);         tw1 += fstride;         tw2 += fstride*2;         Fout[m].r = SUB32_ovflw(Fout->r, HALF_OF(scratch[3].r));         Fout[m].i = SUB32_ovflw(Fout->i, HALF_OF(scratch[3].i));         C_MULBYSCALAR( scratch[0] , epi3.i );         C_ADDTO(*Fout,scratch[3]);         Fout[m2].r = ADD32_ovflw(Fout[m].r, scratch[0].i);         Fout[m2].i = SUB32_ovflw(Fout[m].i, scratch[0].r);         Fout[m].r = SUB32_ovflw(Fout[m].r, scratch[0].i);         Fout[m].i = ADD32_ovflw(Fout[m].i, scratch[0].r);         ++Fout;      } while(--k);   }}
开发者ID:Appsgeyser,项目名称:Custom-messenger,代码行数:56,


示例3: kf_bfly3

static void kf_bfly3(                     kiss_fft_cpx * Fout,                     const size_t fstride,                     const kiss_fft_state *st,                     int m,                     int N,                     int mm                    ){   int i;   size_t k;   const size_t m2 = 2*m;   const kiss_twiddle_cpx *tw1,*tw2;   kiss_fft_cpx scratch[5];   kiss_twiddle_cpx epi3;   kiss_fft_cpx * Fout_beg = Fout;   epi3 = st->twiddles[fstride*m];   for (i=0;i<N;i++)   {      Fout = Fout_beg + i*mm;      tw1=tw2=st->twiddles;      k=m;      do {         C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3);         C_MUL(scratch[1],Fout[m] , *tw1);         C_MUL(scratch[2],Fout[m2] , *tw2);         C_ADD(scratch[3],scratch[1],scratch[2]);         C_SUB(scratch[0],scratch[1],scratch[2]);         tw1 += fstride;         tw2 += fstride*2;         Fout[m].r = Fout->r - HALF_OF(scratch[3].r);         Fout[m].i = Fout->i - HALF_OF(scratch[3].i);         C_MULBYSCALAR( scratch[0] , epi3.i );         C_ADDTO(*Fout,scratch[3]);         Fout[m2].r = Fout[m].r + scratch[0].i;         Fout[m2].i = Fout[m].i - scratch[0].r;         Fout[m].r -= scratch[0].i;         Fout[m].i += scratch[0].r;         ++Fout;      } while(--k);   }}
开发者ID:FreshLeaf8865,项目名称:mumble,代码行数:51,


示例4: kf_bfly4

static void kf_bfly4(    kiss_fft_cpx * Fout,    const size_t fstride,    const kiss_fft_cfg st,    const size_t m){    kiss_fft_cpx *tw1,*tw2,*tw3;    kiss_fft_cpx scratch[6];    size_t k=m;    const size_t m2=2*m;    const size_t m3=3*m;    tw3 = tw2 = tw1 = st->twiddles;    do {        C_FIXDIV(*Fout,4);        C_FIXDIV(Fout[m],4);        C_FIXDIV(Fout[m2],4);        C_FIXDIV(Fout[m3],4);        C_MUL(scratch[0],Fout[m] , *tw1 );        C_MUL(scratch[1],Fout[m2] , *tw2 );        C_MUL(scratch[2],Fout[m3] , *tw3 );        C_SUB( scratch[5] , *Fout, scratch[1] );        C_ADDTO(*Fout, scratch[1]);        C_ADD( scratch[3] , scratch[0] , scratch[2] );        C_SUB( scratch[4] , scratch[0] , scratch[2] );        C_SUB( Fout[m2], *Fout, scratch[3] );        tw1 += fstride;        tw2 += fstride*2;        tw3 += fstride*3;        C_ADDTO( *Fout , scratch[3] );        if(st->inverse) {            Fout[m].r = scratch[5].r - scratch[4].i;            Fout[m].i = scratch[5].i + scratch[4].r;            Fout[m3].r = scratch[5].r + scratch[4].i;            Fout[m3].i = scratch[5].i - scratch[4].r;        } else {            Fout[m].r = scratch[5].r + scratch[4].i;            Fout[m].i = scratch[5].i - scratch[4].r;            Fout[m3].r = scratch[5].r - scratch[4].i;            Fout[m3].i = scratch[5].i + scratch[4].r;        }        ++Fout;    } while(--k);}
开发者ID:Biohazard90,项目名称:CorsairRGBSpectrumVisualizer,代码行数:50,


示例5: kf_bfly_generic

/* perform the butterfly for one stage of a mixed radix FFT */static voidkf_bfly_generic (kiss_fft_s16_cpx * Fout,    const size_t fstride, const kiss_fft_s16_cfg st, int m, int p){  int u, k, q1, q;  kiss_fft_s16_cpx *twiddles = st->twiddles;  kiss_fft_s16_cpx t;  int Norig = st->nfft;  CHECKBUF (scratchbuf, nscratchbuf, p);  for (u = 0; u < m; ++u) {    k = u;    for (q1 = 0; q1 < p; ++q1) {      scratchbuf[q1] = Fout[k];      C_FIXDIV (scratchbuf[q1], p);      k += m;    }    k = u;    for (q1 = 0; q1 < p; ++q1) {      int twidx = 0;      Fout[k] = scratchbuf[0];      for (q = 1; q < p; ++q) {        twidx += fstride * k;        if (twidx >= Norig)          twidx -= Norig;        C_MUL (t, scratchbuf[q], twiddles[twidx]);        C_ADDTO (Fout[k], t);      }      k += m;    }  }}
开发者ID:ConfusedReality,项目名称:pkg_multimedia_gst-plugins-base,代码行数:36,


示例6: kf_bfly2

static void kf_bfly2(                     kiss_fft_cpx * Fout,                     const size_t fstride,                     const kiss_fft_state *st,                     int m,                     int N,                     int mm                    ){   kiss_fft_cpx * Fout2;   const kiss_twiddle_cpx * tw1;   int i,j;   kiss_fft_cpx * Fout_beg = Fout;   for (i=0;i<N;i++)   {      Fout = Fout_beg + i*mm;      Fout2 = Fout + m;      tw1 = st->twiddles;      for(j=0;j<m;j++)      {         kiss_fft_cpx t;         Fout->r = SHR(Fout->r, 1);Fout->i = SHR(Fout->i, 1);         Fout2->r = SHR(Fout2->r, 1);Fout2->i = SHR(Fout2->i, 1);         C_MUL (t,  *Fout2 , *tw1);         tw1 += fstride;         C_SUB( *Fout2 ,  *Fout , t );         C_ADDTO( *Fout ,  t );         ++Fout2;         ++Fout;      }   }}
开发者ID:FreshLeaf8865,项目名称:mumble,代码行数:32,


示例7: kf_bfly_generic

/* perform the butterfly for one stage of a mixed radix FFT */static void kf_bfly_generic(kiss_fft_cpx *Fout, const size_t fstride,                            const kiss_fft_cfg st, int m, int p) {  int u, k, q1, q;  kiss_fft_cpx *twiddles = st->twiddles;  kiss_fft_cpx t;  int Norig = st->nfft;  kiss_fft_cpx *scratch =      (kiss_fft_cpx *)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx) * p);  for (u = 0; u < m; ++u) {    k = u;    for (q1 = 0; q1 < p; ++q1) {      scratch[q1] = Fout[k];      C_FIXDIV(scratch[q1], p);      k += m;    }    k = u;    for (q1 = 0; q1 < p; ++q1) {      int twidx = 0;      Fout[k] = scratch[0];      for (q = 1; q < p; ++q) {        twidx += static_cast<int>(fstride) * k;        if (twidx >= Norig)          twidx -= Norig;        C_MUL(t, scratch[q], twiddles[twidx]);        C_ADDTO(Fout[k], t);      }      k += m;    }  }  KISS_FFT_TMP_FREE(scratch);}
开发者ID:AdmiralCurtiss,项目名称:dolphin,代码行数:35,


示例8: kf_bfly2

static void kf_bfly2(        kiss_fft_cpx * Fout,        const size_t fstride,        const kiss_fft_cfg st,        int m,        int N,        int mm        ){    kiss_fft_cpx * Fout2;    kiss_fft_cpx * tw1;    kiss_fft_cpx t;    if (!st->inverse) {       int i,j;       kiss_fft_cpx * Fout_beg = Fout;       for (i=0;i<N;i++)       {          Fout = Fout_beg + i*mm;          Fout2 = Fout + m;          tw1 = st->twiddles;          for(j=0;j<m;j++)          {             /* Almost the same as the code path below, except that we divide the input by two              (while keeping the best accuracy possible) */             ms_word32_t tr, ti;             tr = SHR32(SUB32(MULT16_16(Fout2->r , tw1->r),MULT16_16(Fout2->i , tw1->i)), 1);             ti = SHR32(ADD32(MULT16_16(Fout2->i , tw1->r),MULT16_16(Fout2->r , tw1->i)), 1);             tw1 += fstride;             Fout2->r = PSHR32(SUB32(SHL32(EXTEND32(Fout->r), 14), tr), 15);             Fout2->i = PSHR32(SUB32(SHL32(EXTEND32(Fout->i), 14), ti), 15);             Fout->r = PSHR32(ADD32(SHL32(EXTEND32(Fout->r), 14), tr), 15);             Fout->i = PSHR32(ADD32(SHL32(EXTEND32(Fout->i), 14), ti), 15);             ++Fout2;             ++Fout;          }       }    } else {       int i,j;       kiss_fft_cpx * Fout_beg = Fout;       for (i=0;i<N;i++)       {          Fout = Fout_beg + i*mm;          Fout2 = Fout + m;          tw1 = st->twiddles;          for(j=0;j<m;j++)          {             C_MUL (t,  *Fout2 , *tw1);             tw1 += fstride;             C_SUB( *Fout2 ,  *Fout , t );             C_ADDTO( *Fout ,  t );             ++Fout2;             ++Fout;          }       }    }}
开发者ID:Amini-Philips,项目名称:mediastreamer2,代码行数:56,


示例9: kf_bfly2

static void kf_bfly2(kiss_fft_cpx *Fout, const size_t fstride,                     const kiss_fft_cfg st, int m) {  kiss_fft_cpx *Fout2;  kiss_fft_cpx *tw1 = st->twiddles;  kiss_fft_cpx t;  Fout2 = Fout + m;  do {    C_FIXDIV(*Fout, 2);    C_FIXDIV(*Fout2, 2);    C_MUL(t, *Fout2, *tw1);    tw1 += fstride;    C_SUB(*Fout2, *Fout, t);    C_ADDTO(*Fout, t);    ++Fout2;    ++Fout;  } while (--m);}
开发者ID:AdmiralCurtiss,项目名称:dolphin,代码行数:18,


示例10: kf_bfly_generic

/* perform the butterfly for one stage of a mixed radix FFT */static void kf_bfly_generic(        kiss_fft_cpx * Fout,        const size_t fstride,        const kiss_fft_cfg st,        int m,        int p        ){    int u,k,q1,q;    kiss_fft_cpx * twiddles = st->twiddles;    kiss_fft_cpx t;    kiss_fft_cpx scratchbuf[17];    int Norig = st->nfft;    /*CHECKBUF(scratchbuf,nscratchbuf,p);*/    if (p>17)       ms_fatal("KissFFT: max radix supported is 17");        for ( u=0; u<m; ++u ) {        k=u;        for ( q1=0 ; q1<p ; ++q1 ) {            scratchbuf[q1] = Fout[ k  ];        if (!st->inverse) {            C_FIXDIV(scratchbuf[q1],p);	}            k += m;        }        k=u;        for ( q1=0 ; q1<p ; ++q1 ) {            int twidx=0;            Fout[ k ] = scratchbuf[0];            for (q=1;q<p;++q ) {                twidx += fstride * k;                if (twidx>=Norig) twidx-=Norig;                C_MUL(t,scratchbuf[q] , twiddles[twidx] );                C_ADDTO( Fout[ k ] ,t);            }            k += m;        }    }}
开发者ID:Amini-Philips,项目名称:mediastreamer2,代码行数:43,


示例11: kf_bfly_generic

/* perform the butterfly for one stage of a mixed radix FFT */static void kf_bfly_generic(        complex * Fout,        const size_t fstride,        const kiss_fft_cfg st,        int m,        int p        ){    int u,k,q1,q;    complex * twiddles = st->twiddles;    complex t;    int Norig = st->nfft;    complex * scratch = (complex*)malloc(sizeof(complex)*p);    for ( u=0; u<m; ++u ) {        k=u;        for ( q1=0 ; q1<p ; ++q1 ) {            scratch[q1] = Fout[ k  ];            C_FIXDIV(scratch[q1],p);            k += m;        }        k=u;        for ( q1=0 ; q1<p ; ++q1 ) {            int twidx=0;            Fout[ k ] = scratch[0];            for (q=1;q<p;++q ) {                twidx += fstride * k;                if (twidx>=Norig) twidx-=Norig;                C_MUL(t,scratch[q] , twiddles[twidx] );                C_ADDTO( Fout[ k ] ,t);            }            k += m;        }    }    free(scratch);}
开发者ID:JanThorbecke,项目名称:OpenSource,代码行数:39,


示例12: kf_bfly4

static void kf_bfly4(                     kiss_fft_cpx * Fout,                     const size_t fstride,                     const kiss_fft_state *st,                     int m,                     int N,                     int mm                    ){   int i;   if (m==1)   {      /* Degenerate case where all the twiddles are 1. */      for (i=0;i<N;i++)      {         kiss_fft_cpx scratch0, scratch1;         C_SUB( scratch0 , *Fout, Fout[2] );         C_ADDTO(*Fout, Fout[2]);         C_ADD( scratch1 , Fout[1] , Fout[3] );         C_SUB( Fout[2], *Fout, scratch1 );         C_ADDTO( *Fout , scratch1 );         C_SUB( scratch1 , Fout[1] , Fout[3] );         Fout[1].r = ADD32_ovflw(scratch0.r, scratch1.i);         Fout[1].i = SUB32_ovflw(scratch0.i, scratch1.r);         Fout[3].r = SUB32_ovflw(scratch0.r, scratch1.i);         Fout[3].i = ADD32_ovflw(scratch0.i, scratch1.r);         Fout+=4;      }   } else {      int j;      kiss_fft_cpx scratch[6];      const kiss_twiddle_cpx *tw1,*tw2,*tw3;      const int m2=2*m;      const int m3=3*m;      kiss_fft_cpx * Fout_beg = Fout;      for (i=0;i<N;i++)      {         Fout = Fout_beg + i*mm;         tw3 = tw2 = tw1 = st->twiddles;         /* m is guaranteed to be a multiple of 4. */         for (j=0;j<m;j++)         {            C_MUL(scratch[0],Fout[m] , *tw1 );            C_MUL(scratch[1],Fout[m2] , *tw2 );            C_MUL(scratch[2],Fout[m3] , *tw3 );            C_SUB( scratch[5] , *Fout, scratch[1] );            C_ADDTO(*Fout, scratch[1]);            C_ADD( scratch[3] , scratch[0] , scratch[2] );            C_SUB( scratch[4] , scratch[0] , scratch[2] );            C_SUB( Fout[m2], *Fout, scratch[3] );            tw1 += fstride;            tw2 += fstride*2;            tw3 += fstride*3;            C_ADDTO( *Fout , scratch[3] );            Fout[m].r = ADD32_ovflw(scratch[5].r, scratch[4].i);            Fout[m].i = SUB32_ovflw(scratch[5].i, scratch[4].r);            Fout[m3].r = SUB32_ovflw(scratch[5].r, scratch[4].i);            Fout[m3].i = ADD32_ovflw(scratch[5].i, scratch[4].r);            ++Fout;         }      }   }}
开发者ID:Appsgeyser,项目名称:Custom-messenger,代码行数:68,


示例13: kf_bfly4

static void kf_bfly4(        kiss_fft_cpx * Fout,        const size_t fstride,        const kiss_fft_cfg st,        int m,        int N,        int mm        ){    kiss_fft_cpx *tw1,*tw2,*tw3;    kiss_fft_cpx scratch[6];    const size_t m2=2*m;    const size_t m3=3*m;    int i, j;    if (st->inverse)    {       kiss_fft_cpx * Fout_beg = Fout;       for (i=0;i<N;i++)       {          Fout = Fout_beg + i*mm;          tw3 = tw2 = tw1 = st->twiddles;          for (j=0;j<m;j++)          {             C_MUL(scratch[0],Fout[m] , *tw1 );             C_MUL(scratch[1],Fout[m2] , *tw2 );             C_MUL(scratch[2],Fout[m3] , *tw3 );                          C_SUB( scratch[5] , *Fout, scratch[1] );             C_ADDTO(*Fout, scratch[1]);             C_ADD( scratch[3] , scratch[0] , scratch[2] );             C_SUB( scratch[4] , scratch[0] , scratch[2] );             C_SUB( Fout[m2], *Fout, scratch[3] );             tw1 += fstride;             tw2 += fstride*2;             tw3 += fstride*3;             C_ADDTO( *Fout , scratch[3] );                          Fout[m].r = scratch[5].r - scratch[4].i;             Fout[m].i = scratch[5].i + scratch[4].r;             Fout[m3].r = scratch[5].r + scratch[4].i;             Fout[m3].i = scratch[5].i - scratch[4].r;             ++Fout;          }       }    } else    {       kiss_fft_cpx * Fout_beg = Fout;       for (i=0;i<N;i++)       {          Fout = Fout_beg + i*mm;          tw3 = tw2 = tw1 = st->twiddles;          for (j=0;j<m;j++)          {             C_MUL4(scratch[0],Fout[m] , *tw1 );             C_MUL4(scratch[1],Fout[m2] , *tw2 );             C_MUL4(scratch[2],Fout[m3] , *tw3 );                          Fout->r = PSHR16(Fout->r, 2);             Fout->i = PSHR16(Fout->i, 2);             C_SUB( scratch[5] , *Fout, scratch[1] );             C_ADDTO(*Fout, scratch[1]);             C_ADD( scratch[3] , scratch[0] , scratch[2] );             C_SUB( scratch[4] , scratch[0] , scratch[2] );             Fout[m2].r = PSHR16(Fout[m2].r, 2);             Fout[m2].i = PSHR16(Fout[m2].i, 2);             C_SUB( Fout[m2], *Fout, scratch[3] );             tw1 += fstride;             tw2 += fstride*2;             tw3 += fstride*3;             C_ADDTO( *Fout , scratch[3] );                          Fout[m].r = scratch[5].r + scratch[4].i;             Fout[m].i = scratch[5].i - scratch[4].r;             Fout[m3].r = scratch[5].r - scratch[4].i;             Fout[m3].i = scratch[5].i + scratch[4].r;             ++Fout;          }       }    }}
开发者ID:Amini-Philips,项目名称:mediastreamer2,代码行数:81,


示例14: kf_bfly5

static void kf_bfly5(                     kiss_fft_cpx * Fout,                     const size_t fstride,                     const kiss_fft_state *st,                     int m,                     int N,                     int mm                    ){   kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;   int i, u;   kiss_fft_cpx scratch[13];   const kiss_twiddle_cpx *tw;   kiss_twiddle_cpx ya,yb;   kiss_fft_cpx * Fout_beg = Fout;#ifdef FIXED_POINT   ya.r = 10126;   ya.i = -31164;   yb.r = -26510;   yb.i = -19261;#else   ya = st->twiddles[fstride*m];   yb = st->twiddles[fstride*2*m];#endif   tw=st->twiddles;   for (i=0;i<N;i++)   {      Fout = Fout_beg + i*mm;      Fout0=Fout;      Fout1=Fout0+m;      Fout2=Fout0+2*m;      Fout3=Fout0+3*m;      Fout4=Fout0+4*m;      /* For non-custom modes, m is guaranteed to be a multiple of 4. */      for ( u=0; u<m; ++u ) {         scratch[0] = *Fout0;         C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);         C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);         C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);         C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);         C_ADD( scratch[7],scratch[1],scratch[4]);         C_SUB( scratch[10],scratch[1],scratch[4]);         C_ADD( scratch[8],scratch[2],scratch[3]);         C_SUB( scratch[9],scratch[2],scratch[3]);         Fout0->r = ADD32_ovflw(Fout0->r, ADD32_ovflw(scratch[7].r, scratch[8].r));         Fout0->i = ADD32_ovflw(Fout0->i, ADD32_ovflw(scratch[7].i, scratch[8].i));         scratch[5].r = ADD32_ovflw(scratch[0].r, ADD32_ovflw(S_MUL(scratch[7].r,ya.r), S_MUL(scratch[8].r,yb.r)));         scratch[5].i = ADD32_ovflw(scratch[0].i, ADD32_ovflw(S_MUL(scratch[7].i,ya.r), S_MUL(scratch[8].i,yb.r)));         scratch[6].r =  ADD32_ovflw(S_MUL(scratch[10].i,ya.i), S_MUL(scratch[9].i,yb.i));         scratch[6].i = NEG32_ovflw(ADD32_ovflw(S_MUL(scratch[10].r,ya.i), S_MUL(scratch[9].r,yb.i)));         C_SUB(*Fout1,scratch[5],scratch[6]);         C_ADD(*Fout4,scratch[5],scratch[6]);         scratch[11].r = ADD32_ovflw(scratch[0].r, ADD32_ovflw(S_MUL(scratch[7].r,yb.r), S_MUL(scratch[8].r,ya.r)));         scratch[11].i = ADD32_ovflw(scratch[0].i, ADD32_ovflw(S_MUL(scratch[7].i,yb.r), S_MUL(scratch[8].i,ya.r)));         scratch[12].r = SUB32_ovflw(S_MUL(scratch[9].i,ya.i), S_MUL(scratch[10].i,yb.i));         scratch[12].i = SUB32_ovflw(S_MUL(scratch[10].r,yb.i), S_MUL(scratch[9].r,ya.i));         C_ADD(*Fout2,scratch[11],scratch[12]);         C_SUB(*Fout3,scratch[11],scratch[12]);         ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;      }   }}
开发者ID:Appsgeyser,项目名称:Custom-messenger,代码行数:74,



注:本文中的C_MUL函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ C_PARAMS函数代码示例
C++ C_FLAGS函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。