• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ sf_cmul函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: cbanded_solve

void cbanded_solve (sf_complex *b)
/*< multiply by inverse (in place) >*/
{
    int k, m;
    sf_complex t;

    for (k = 1; k < band; k++) {
	t = b[k];
	for (m = 1; m <= k; m++) {
#ifdef SF_HAS_COMPLEX_H
	    t -= o[m-1][k-m] * b[k-m];
#else
	    t = sf_csub(t,sf_cmul(o[m-1][k-m],b[k-m]));
#endif
	}
	b[k] = t;
    }
    for (k = band; k < n; k++) {
	t = b[k];
	for (m = 1; m <= band; m++) {
#ifdef SF_HAS_COMPLEX_H
	    t -= o[m-1][k-m] * b[k-m];
#else
	    t = sf_csub(t,sf_cmul(o[m-1][k-m],b[k-m]));
#endif
	}
	b[k] = t;
    }
    for (k = n-1; k >= n - band; k--) {
#ifdef SF_HAS_COMPLEX_H
	t = b[k]/d[k];
#else
	t = sf_crmul(b[k],1./d[k]);
#endif
	for (m = 0; m < n - k - 1; m++) {
#ifdef SF_HAS_COMPLEX_H
	    t -= conjf(o[m][k]) * b[k+m+1];
#else
	    t = sf_csub(t,sf_cmul(conjf(o[m][k]),b[k+m+1]));
#endif
	}
	b[k] = t;
    }
    for (k = n - band - 1; k >= 0; k--) {
#ifdef SF_HAS_COMPLEX_H
	t = b[k]/d[k];
#else
	t = sf_crmul(b[k],1./d[k]);
#endif
	for (m = 0; m < band; m++) {
#ifdef SF_HAS_COMPLEX_H
	    t -= conjf(o[m][k]) * b[k+m+1];
#else
	    t = sf_csub(t,sf_cmul(conjf(o[m][k]),b[k+m+1]));
#endif
	}
	b[k] = t;
    }
}
开发者ID:1014511134,项目名称:src,代码行数:59,代码来源:cbanded.c


示例2: ctoeplitz_solve

void ctoeplitz_solve (const sf_complex *r /* top row of the matrix */, 
		      sf_complex *f       /* inverted in place */)
/*< apply the solver >*/
{    
    int i,j;
    sf_complex e,c,w, bot;
    float v;
    
    v=crealf(r[0]);
#ifdef SF_HAS_COMPLEX_H
    f[0] /= v;
#else
    f[0] = sf_crmul(f[0],1./v);
#endif
    
    for (j=1; j < n; j++) {
	e = cdprod(j,a,r);
#ifdef SF_HAS_COMPLEX_H
	c = -e/v;
#else
	c = sf_crmul(e,-1./v);
#endif

	v += crealf(c)*crealf(e) + cimagf(c)*cimagf(e);
       
	for (i=1; i <= j/2; i++) {
#ifdef SF_HAS_COMPLEX_H
	    bot  = a[j-i] + c*conjf(a[i]);
	    a[i] += c*conjf(a[j-i]);
#else
	    bot  = sf_cadd(a[j-i],sf_cmul(c,conjf(a[i])));
	    a[i] = sf_cadd(a[i],sf_cmul(c,conjf(a[j-i])));
#endif
	    a[j-i] = bot;
	}
	a[j] = c;
       
	w = cdprod(j,f,r);
#ifdef SF_HAS_COMPLEX_H
	c = (f[j]-w)/v;
#else
	c = sf_crmul(sf_csub(f[j],w),1./v);
#endif
       
	for (i=0; i < j; i++) {
#ifdef SF_HAS_COMPLEX_H
	    f[i] += c*conjf(a[j-i]);
#else
	    f[i] = sf_cadd(f[i],sf_cmul(c,conjf(a[j-i])));
#endif
	}
	f[j] = c;
    }
}
开发者ID:1014511134,项目名称:src,代码行数:54,代码来源:ctoeplitz.c


示例3: radon_lop

void radon_lop (bool adj, bool add, int nm, int nd, 
		sf_complex *mm, sf_complex *dd)
/*< linear operator >*/
{
    int ix, ip;
    sf_complex c, d;

    if (nm != np || nd != nx) 
	sf_error("%s: mismatched data sizes",__FILE__);

    sf_cadjnull(adj, add, nm, nd, mm, dd);
    
    for (ix=0; ix < nx; ix++) {
	if (adj == true) {
	    c = dc[ix];
#ifdef SF_HAS_COMPLEX_H
	    d = dd[ix]*c0[ix];
#else
	    d = sf_cmul(dd[ix],c0[ix]);
#endif
	    for (ip=0; ip < np-1; ip++) {
#ifdef SF_HAS_COMPLEX_H
		mm[ip] += d;
		d *= c; 
#else
		mm[ip] = sf_cadd(mm[ip],d);
		d = sf_cmul(d,c); 
#endif
	    }
#ifdef SF_HAS_COMPLEX_H
	    mm[np-1] += d;
#else
	    mm[np-1] = sf_cadd(mm[np-1],d);
#endif
	} else {
	    c = conjf(dc[ix]);
	    d = mm[np-1];
	    for (ip=np-2; ip >= 0; ip--) {
#ifdef SF_HAS_COMPLEX_H
		d = d*c + mm[ip];
#else
		d = sf_cadd(sf_cmul(d,c),mm[ip]);
#endif
	    }
#ifdef SF_HAS_COMPLEX_H
	    dd[ix] += d*conjf(c0[ix]);
#else
	    dd[ix] = sf_cadd(dd[ix],sf_cmul(d,conjf(c0[ix])));
#endif
	}
    }
}
开发者ID:1014511134,项目名称:src,代码行数:52,代码来源:radon.c


示例4: BornScatteredField

void BornScatteredField(float xx,float xy,float xz,float *output)
/*< Born scattering field >*/
{
    int iw;
    double omega,scale;

    sf_complex  U,dU;
    sf_complex val,fkern;

    ZeroArray(u,  nt); 
    ZeroArray(du, nt); 
    *output=0.;

    for (iw=0; iw<nw; iw++) {
	omega=ow+dw*iw;

	scale =cos((SF_PI/2)*(((double) iw+1)/((double) nw+1)));
	scale*=scale*omega;

#ifdef SF_HAS_COMPLEX_H
	/* background field */
	U=Green(xx,xy,xz,sx,sy,sz,omega)*scale;
	    
	/* scattered field */
	val=Green(px,py,pz,sx,sy,sz,omega)*scale;
	val *= Green(xx,xy,xz,px,py,pz,omega);
	dU = val*(-omega*omega*dv);

	U += dU;
	fkern=cexpf(sf_cmplx(0.,-omega*0.6));
	val=fkern*U;
#else
	/* background field */
	U=sf_crmul(Green(xx,xy,xz,sx,sy,sz,omega),scale);
	    
	/* scattered field */
	val=sf_crmul(Green(px,py,pz,sx,sy,sz,omega),scale);
	val=sf_cmul(val,Green(xx,xy,xz,px,py,pz,omega));
	dU=sf_crmul(val,-omega*omega*dv);

	U=sf_cadd(U,dU);
	fkern=cexpf(sf_cmplx(0.,-omega*0.6));
	val=sf_cmul(fkern,U);
#endif

	*output+=crealf(val);
    }
    return;
}    
开发者ID:1014511134,项目名称:src,代码行数:49,代码来源:scattering.c


示例5: radon_toep

void radon_toep (sf_complex *qq /* Toeplitz row */, 
		 float eps         /* regularization */)
/*< fill Toeplitz matrix for inversion >*/
{
    int ix, ip;
    sf_complex c, q;
    
    qq[0] = sf_cmplx(eps*eps,0.);
    for (ip=1; ip < np; ip++) {
	qq[ip] = czero;
    }

    for (ix=0; ix < nx; ix++) {
	c = conjf(dc[ix]);
	q = sf_cmplx(1.,0.);
	for (ip=0; ip < np-1; ip++) {
#ifdef SF_HAS_COMPLEX_H
	    qq[ip] += q;
	    q *= c;
#else
	    qq[ip] = sf_cadd(qq[ip],q);
	    q = sf_cmul(q,c);
#endif
	}
#ifdef SF_HAS_COMPLEX_H
	qq[np-1] += q;
#else
	qq[np-1] = sf_cadd(qq[np-1],q);
#endif
    }
}
开发者ID:1014511134,项目名称:src,代码行数:31,代码来源:radon.c


示例6: cam3_ssf

/*------------------------------------------------------------*/
void cam3_ssf(
    sf_complex       w /* frequency */,
    sf_complex   ***wx /* wavefield */,
    cub3d          cub,
    cam3d          cam,
    tap3d          tap,
    slo3d          slo,
    int            imz,
    int         ompith
    )
/*< Wavefield extrapolation by SSF >*/
{
    sf_complex co,cs,cr,w2,khy,kss,krr;
    float s, kmy, d,dsc,drc;
    int imy,imx,ihx,jmy, js,jr;

    co = sf_cmplx(0,0);
#ifdef SF_HAS_COMPLEX_H
    w2 = w*w;
#else
    w2 = sf_cmul(w,w);
#endif
    
#ifdef SF_HAS_COMPLEX_H
    LOOP( s = slo->so[ompith][ cam->jy[imy] ][ cam->is[ihx][imx] ] 
	  +   slo->so[ompith][ cam->jy[imy] ][ cam->ir[ihx][imx] ];
	  wx[ihx][imy][imx] *= cexpf(-w*s* cub->amz.d/2); );
开发者ID:1014511134,项目名称:src,代码行数:28,代码来源:cam3.c


示例7: sft2

/*------------------------------------------------------------*/
void sft2(sf_complex **pp)
/*< apply shift >*/
{
    int i1,i2;

    for    (i2=0; i2<n2; i2++) {
	for(i1=0; i1<n1; i1++) {
#ifdef SF_HAS_COMPLEX_H
	    pp[i2][i1] *= shf1[i1]*shf2[i2];
#else
	    pp[i2][i1] = sf_cmul(pp[i2][i1],
				 sf_cmul(shf1[i1],shf2[i2])
		);
#endif
	}
    }    
}
开发者ID:1014511134,项目名称:src,代码行数:18,代码来源:fft2.c


示例8: ompsft2

/*------------------------------------------------------------*/
void ompsft2(sf_complex **pp,
	     fft2d fft)
/*< apply shift >*/
{
    int i1,i2;

    for     (i2=0; i2<fft->n2; i2++) {
	for (i1=0; i1<fft->n1; i1++) {
#ifdef SF_HAS_COMPLEX_H
	    pp[i2][i1] *= fft->shf1[i1]*fft->shf2[i2];
#else
	    pp[i2][i1] = sf_cmul(pp[i2][i1],
				 sf_cmul(fft->shf1[i1],fft->shf2[i2]));
#endif
	}
    }    
}
开发者ID:1014511134,项目名称:src,代码行数:18,代码来源:ompfft.c


示例9: fft1_2D_fwd

void fft1_2D_fwd (float *input, float *output, int n2)
/*< Fast Fourier Transform along the first axis forward>*/
{
    /*bool inv, sym, opt;*/
    int n1, i1, i2;
    float  *p,  wt, shift;
    kiss_fft_cpx *pp, ce;
    char *label;
    sf_file out=NULL;
    kiss_fftr_cfg cfg;
	bool verb;

	verb=1;

    
    
  wt = sym? 1./sqrtf((float) ntopt): 1.0/ntopt;

  p = sf_floatalloc(ntopt);
  pp = (kiss_fft_cpx*) sf_complexalloc(nw);

  cfg = kiss_fftr_alloc(ntopt,0,NULL,NULL);
    

	for (i2=0; i2 < n2; i2++) {

    /*sf_floatread (p,n1,in);*/
    memcpy(p,&input[i2*nt],nt*sizeof(float));
    if (sym) {
      for (i1=0; i1 < nt; i1++) {
    	  p[i1] *= wt;
      }
    }
    for (i1=nt; i1 < ntopt; i1++) {
      p[i1]=0.0; // padding
    }
    
      kiss_fftr (cfg,p,pp);
    
    if (0. != ot) {
      for (i1=0; i1 < nw; i1++) {
          shift = -2.0*SF_PI*i1*dw*ot;
          ce.r = cosf(shift);
          ce.i = sinf(shift);
          pp[i1]=sf_cmul(pp[i1],ce);
      }
    }
    
    memcpy(&output[i2*2*nw],pp,2*nw*sizeof(float));
  }
    free(p);
    free(pp);

	/*exit (0);*/
}
开发者ID:ediaz,项目名称:toto-stuff,代码行数:55,代码来源:fft1.c


示例10: rweone_phs

void rweone_phs(
    sf_complex *v,
    float w,
    float a0,
    float b0
    )
/*< Fourier-domain phase shift >*/
{
    int ig,ikg;
    float kg;

    float a2,b2,k2;
    sf_complex iw,ikt,w2;

    a2 = a0*a0;
    b2 = b0*b0;

    iw = sf_cmplx(2e-3,-w);
#ifdef SF_HAS_COMPLEX_H
    w2 = iw*iw;
#else
    w2 = sf_cmul(iw,iw);
#endif

    rweone_fft(false,(kiss_fft_cpx*) v);

    for(ig=0;ig<ag.n;ig++) {
	ikg = KMAP(ig,ag.n);
	kg = okg + ikg * dkg;
	k2 = kg*kg;
	
#ifdef SF_HAS_COMPLEX_H
	ikt = csqrtf( w2*a2 + k2*b2 );
	v[ig] *= cexpf(-ikt*at.d);
#else
	ikt = csqrtf(sf_cadd(sf_crmul(w2,a2),sf_cmplx(k2*b2,0.)));
	v[ig] = sf_cmul(v[ig],cexpf(sf_crmul(ikt,-at.d)));
#endif
    }
    
    rweone_fft( true,(kiss_fft_cpx*) v);
}
开发者ID:1014511134,项目名称:src,代码行数:42,代码来源:rweone.c


示例11: cmatmul

void cmatmul(kiss_fft_cpx *a,kiss_fft_cpx *b,int m,int n,int k,kiss_fft_cpx *c) 
/*< complex matrix multiplication: a->m*n, b->n*k >*/
{
    int i,j,l,u;
    for (i=0; i<=m-1; i++)
	for (j=0; j<=k-1; j++)	
	{ 
	    u=i*k+j; c[u].r=0.0; c[u].i=0.0;
	    for (l=0; l<=n-1; l++)
		c[u]=sf_cadd(c[u],sf_cmul(a[i*n+l],b[l*k+j]));
	}
}
开发者ID:1014511134,项目名称:src,代码行数:12,代码来源:matrix.c


示例12: cicai1_lop

void cicai1_lop (bool adj, bool add, int nx, int ny, sf_complex* xx, sf_complex* yy) 
/*< linear operator >*/
{
    int b, x, y;

    if(ny != nx) sf_error("%s: size problem: %d != %d",__FILE__,ny,nx);
    sf_cadjnull (adj, add, nx, ny, xx, yy);
    
    for( b=0; b < nb; b++) {
	for( y = nb - lg; y <= ny - lg; y++) {
	    x = y - b + lg - 1;
#ifdef SF_HAS_COMPLEX_H
	    if( adj) xx[x] += yy[y] * conjf(bb[b]);
	    else     yy[y] += xx[x] * bb[b];
#else
	    if( adj) xx[x] = sf_cadd(xx[x],sf_cmul(yy[y],conjf(bb[b])));
	    else     yy[y] = sf_cadd(yy[y],sf_cmul(xx[x],bb[b]));
#endif
	}
    }
}
开发者ID:1014511134,项目名称:src,代码行数:21,代码来源:cicai1.c


示例13: rweone_thr

void rweone_thr(
    sf_complex *a,
    sf_complex *b,
    sf_complex *c,
    sf_complex *v,
    int n)
/*< tridiagonal solver >*/
{
    int i;

#ifdef SF_HAS_COMPLEX_H
    b[0]/=a[0];
    v[0]/=a[0];
#else
    b[0] = sf_cdiv(b[0],a[0]);
    v[0] = sf_cdiv(v[0],a[0]);
#endif
    for(i=1;i<n;i++) {
#ifdef SF_HAS_COMPLEX_H
	a[i] -= c[i-1]*b[i-1];
	if(i<n-1) b[i]/=a[i];
	v[i]=( v[i]-c[i-1]*v[i-1] ) / a[i];
#else
	a[i] = sf_csub(a[i],sf_cmul(c[i-1],b[i-1]));
	if(i<n-1) b[i] = sf_cdiv(b[i],a[i]);
	v[i]=sf_cdiv(sf_csub(v[i],sf_cmul(c[i-1],v[i-1])),a[i]);
#endif
    }

    for(i=n-2;i>=0;i--) {
#ifdef SF_HAS_COMPLEX_H
	v[i] -= b[i]*v[i+1];
#else
	v[i] = sf_csub(v[i],sf_cmul(b[i],v[i+1]));
#endif
    }
}
开发者ID:1014511134,项目名称:src,代码行数:37,代码来源:rweone.c


示例14: cdprod

static sf_complex cdprod (int j, 
			  const sf_complex* a, const sf_complex* b) 
/* complex dot product */
{
    int i;
    sf_complex c;
    c = sf_cmplx(0.,0.);
    for (i=1; i <= j; i++) {
#ifdef SF_HAS_COMPLEX_H
	c += a[j-i]*conjf(b[i]);
#else
	c = sf_cadd(c,sf_cmul(a[j-i],conjf(b[i])));
#endif
    }
    return c;
}
开发者ID:1014511134,项目名称:src,代码行数:16,代码来源:ctoeplitz.c


示例15: plyr_val

sf_complex plyr_val(int n, float *r, sf_complex x)
/*< polynomial value >*/
{
    int i;
    sf_complex val;

    val = sf_cmplx(r[n],0.0);
    for(i=0; i<n; i++)
    {
#ifdef SF_HAS_COMPLEX_H
        val = val*(x-r[i]);
#else
        val = sf_cmul(val,sf_cadd(x,sf_cmplx(-r[i],0.0)));
#endif
    }
    return val;
}
开发者ID:krushev36,项目名称:src,代码行数:17,代码来源:poly.c


示例16: poly_val

sf_complex poly_val(int n, float *c, sf_complex x )
/*< polynomial value >*/
{
    int i;
    sf_complex val;

    val = sf_cmplx(0.0,0.0);
    for(i=n; i>=0; i--)
    {
#ifdef SF_HAS_COMPLEX_H
        val = val*x + c[i];
#else
        val = sf_cadd(sf_cmul(val,x),sf_cmplx(c[i],0.0));
#endif
    }
    return val;
}
开发者ID:krushev36,项目名称:src,代码行数:17,代码来源:poly.c


示例17: rweone_ssh

void rweone_ssh(
    sf_complex *v,
    float w,
    float *aa)
/*< space-domain phase shift >*/
{
    int ig;
    sf_complex ikz;

    for(ig=0;ig<ag.n;ig++) {
	ikz = sf_cmplx(0.,w * aa[ig]);
#ifdef SF_HAS_COMPLEX_H
	v[ig] *= cexpf( ikz * at.d );
#else
	v[ig] = sf_cmul(v[ig],cexpf(sf_crmul( ikz, at.d )));
#endif
    }
}
开发者ID:1014511134,项目名称:src,代码行数:18,代码来源:rweone.c


示例18: rweone_spi

void rweone_spi(
    sf_complex *swf,
    sf_complex *rwf,
    float         *iii)
/*< shot-record imaging condition >*/
{
    int ig;

    rweone_tap(swf);
    rweone_tap(rwf);
    for(ig=0;ig<ag.n;ig++) {
#ifdef SF_HAS_COMPLEX_H
	iii[ig] += crealf(        conjf(swf[ig]) * rwf[ig]  );
#else
	iii[ig] += crealf(sf_cmul(conjf(swf[ig]),  rwf[ig]) );
#endif
    }
}
开发者ID:1014511134,项目名称:src,代码行数:18,代码来源:rweone.c


示例19: sf_sft3a1

/*------------------------------------------------------------*/
void sf_sft3a1(sf_complex ***pp,
	       sft3d sft,
	       sf_fft3d fft)
/*< apply shift on axis 1 >*/
{
    int i1,i2,i3;
    
    for        (i3=0; i3<fft->n3; i3++) {
	for    (i2=0; i2<fft->n2; i2++) {
	    for(i1=0; i1<fft->n1; i1++) {
#ifdef SF_HAS_COMPLEX_H
		pp[i3][i2][i1] *= sft->www[i1];
#else
		pp[i3][i2][i1] = sf_cmul(pp[i3][i2][i1],sft->www[i1]);
#endif
	    }
	}    
    }
}
开发者ID:1014511134,项目名称:src,代码行数:20,代码来源:ftutil.c


示例20: RytovSensitivity

void RytovSensitivity(float xx,float xy,float xz,float *output)
/*< Rytov sensitivity >*/
{
    int iw;
    double omega,scale;
    sf_complex U,dU;
    sf_complex val;

    *output=0.;

    for (iw=0; iw<nw; iw++) {
	omega=ow+dw*iw;

	scale =cos((SF_PI/2)*(((double) iw+1)/((double) nw+1)));
	scale*=scale;

#ifdef SF_HAS_COMPLEX_H
	/* background field */
	U=Green(rx,ry,rz,sx,sy,sz,omega)*scale;
	    
	/* scattered field */
	val=Green(xx,xy,xz,sx,sy,sz,omega)*scale;
	val*=Green(rx,ry,rz,xx,xy,xz,omega);
	dU=val*(-omega*omega*dv);

	val=U*omega;
	*output -= scale*cimagf(dU/U);
#else
	/* background field */
	U=sf_crmul(Green(rx,ry,rz,sx,sy,sz,omega),scale);
	    
	/* scattered field */
	val=sf_crmul(Green(xx,xy,xz,sx,sy,sz,omega),scale);
	val=sf_cmul(val,Green(rx,ry,rz,xx,xy,xz,omega));
	dU=sf_crmul(val,-omega*omega*dv);

	val=sf_crmul(U,omega);
	*output -= scale*cimagf(sf_cdiv(dU,U));
#endif
    }
  
    return;
}
开发者ID:1014511134,项目名称:src,代码行数:43,代码来源:scattering.c



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ sf_command函数代码示例发布时间:2022-05-30
下一篇:
C++ sf_clear_rtw_identifier函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap