/* ------------------------------------------------------ */ gsl_complex gsl_complex_arctan2 (gsl_complex a, gsl_complex b) { gsl_complex z, p; if(GSL_REAL(b) != 0.0) { z = gsl_complex_arctan(gsl_complex_div(a, b)); if(GSL_REAL(b) < 0.0){ GSL_SET_COMPLEX (&p, M_PI, 0); if(GSL_REAL(a) >= 0.0) z = gsl_complex_add(z, p); else z = gsl_complex_sub(z, p); } } else { if(GSL_REAL(a) >= 0.0) { GSL_SET_COMPLEX (&z, M_PI/2.0, 0.0); } else { GSL_SET_COMPLEX (&z, -M_PI/2.0, 0.0); } } return z; }
void gsl_complex_arccot (complex_t const *a, complex_t *res) { /* z = arccot(a) */ if (GSL_REAL (a) == 0.0 && GSL_IMAG (a) == 0.0) { complex_init (res, M_PI_2gnum, 0); } else { gsl_complex_inverse (a, res); gsl_complex_arctan (res, res); } }
gsl_complex gsl_complex_arctanh(gsl_complex a) { /* z = arctanh(a) */ if (GSL_IMAG(a) == 0.0) { return gsl_complex_arctanh_real(GSL_REAL(a)); } else { gsl_complex z = gsl_complex_mul_imag(a, 1.0); z = gsl_complex_arctan(z); z = gsl_complex_mul_imag(z, -1.0); return z; } }
void gsl_complex_arctanh (complex_t const *a, complex_t *res) { /* z = arctanh(a) */ if (GSL_IMAG (a) == 0.0) { gsl_complex_arctanh_real (GSL_REAL (a), res); } else { gsl_complex_mul_imag (a, 1.0, res); gsl_complex_arctan (res, res); gsl_complex_mul_imag (res, -1.0, res); } }
gsl_complex gsl_complex_arccot(gsl_complex a) { /* z = arccot(a) */ gsl_complex z; if (GSL_REAL(a) == 0.0 && GSL_IMAG(a) == 0.0) { GSL_SET_COMPLEX(&z, M_PI_2, 0); } else { z = gsl_complex_inverse(a); z = gsl_complex_arctan(z); } return z; }
/** Inverse tangent \ingroup complex \param[in] z Complex number \return \f$ \arctan z \f$*/ complex arctan(const complex& z) { return complex(gsl_complex_arctan(z.as_gsl_type())); }