示例#1
0
struct xpr
xtan (struct xpr z)
{
  int k, m;

  z = rred (z, 't', &k);
  if ((xsigerr (xprcmp (&z, &xPi2) >= 0, XEDOM, "xtan()")))
    return (!k ? xPinf : xMinf);
  else
    {
      if (xprcmp (&z, &xPi4) == 1)
	{
	  m = 1;
	  z = xadd (xPi2, z, 1);
	}
      else
	m = 0;
      if ((k))
	z = xneg (c_tan (z));
      else
	z = c_tan (z);
      if (m)
	return xdiv (xOne, z);
      else
	return z;
    }
}
示例#2
0
void *
cx_tan(void *data, short int type, int length, int *newlength, short int *newtype, ...)
{
    *newlength = length;
    if (type == VF_REAL) {
        *newtype = VF_REAL;
	return (void *) d_tan((double *) data, length);
    } else {
        *newtype = VF_COMPLEX;
        return (void *) c_tan((complex *) data, length);
    }
}
示例#3
0
struct xpr
xsin (struct xpr z)
{
  int k;

  z = rred (z, 's', &k);
  if (x_exp (&z) >= xK_lin)
    {
      z = c_tan (xpr2 (z, -1));
      z = xdiv (xpr2 (z, 1), xadd (xOne, xmul (z, z), 0));
    }
  if ((k))
    return xneg (z);
  else
    return z;
}
示例#4
0
文件: mie.c 项目: JiapengHuang/SPP
void Dn_up(struct c_complex z,long nstop,struct c_complex*D)

/*:16*/
#line 216 "./mie.w"

{
struct c_complex zinv,k_over_z;
long k;

D[0]= c_inv(c_tan(z));
zinv= c_inv(z);

for(k= 1;k<nstop;k++){
k_over_z= c_smul((double)k,zinv);
D[k]= c_sub(c_inv(c_sub(k_over_z,D[k-1])),k_over_z);
}
}
示例#5
0
struct xpr
xcos (struct xpr z)
{
  int k;

  z = rred (z, 'c', &k);
  if (x_exp (&z) < xK_lin)
    {
      if ((k))
	return xneg (xOne);
      else
	return xOne;
    }
  z = c_tan (xpr2 (z, -1));
  z = xmul (z, z);
  z = xdiv (xadd (xOne, z, 1), xadd (xOne, z, 0));
  if ((k))
    return xneg (z);
  else
    return z;
}