コード例 #1
0
ファイル: callable_array.cpp プロジェクト: xuanya4202/ew_base
int idx_1t::update(const dcomplex& d,intptr_t n1,intptr_t n2)
{
	if(d.imag()!=0.0) return -1;
	return update((int64_t)d.real(),n1,n2);
}
コード例 #2
0
void complex_angle(dcomplex & val, dcomplex & err, 
		   double & angle, double & bias, double & angle_err) { 
  doublevar ratio=val.imag()/val.real();
  doublevar sigma_ratio=err.imag()*err.imag()/(val.real()*val.real())
    +val.imag()*val.imag()*err.real()*err.real()/(pow(val.real(),4));
  
  doublevar atander=1/(1+ratio*ratio); //first derivative of atan func
  doublevar atander2=-2*ratio*atander*atander; //second derivative
  
  bias=.5*atander2*sigma_ratio;
  angle_err=fabs(atander)*sqrt(sigma_ratio);
  
  angle=atan(fabs(ratio));
  if(val.real() <0 && val.imag() >=0)
    angle=pi-angle;
  else if(val.real() >=0 && val.imag() <0)
    angle=2*pi-angle;
  else if(val.real() <0 && val.imag() <0)
    angle+=pi;

}