static inline A0_n cot_eval(const A0_n z_n, const iA0_n n_n) { const int_type n = n_n; const A0 z = z_n; A0 y = base_tancot_eval(z); return nt2::if_else(nt2::is_equal(n, One<int_type>()),nt2::rec(y),-y); }
static inline A0_n cot_eval(const A0_n z_n,/* const A0&,*/ const iA0_n n_n ) { const int_type n = { n_n }; const A0 z = { z_n }; const A0 y = { base_tancot_eval(z)}; return sel(is_equal(n, One<int_type>()),rec(y),-y); }
static inline A0_n tan_eval(const A0_n z_n,/* const A0&,*/ const iA0_n n_n) { const int_type n = n_n; const A0 z = z_n; A0 y = base_tancot_eval(z); return sel(is_equal(n, One<int_type>()),y,-rec(y)); }
static inline A0_n tan_eval(const A0_n z_n, const A0&, const iA0_n n_n ) { const int_type n = { n_n }; const A0 z = { z_n }; A0 y = {base_tancot_eval(z)}; return sel(is_equal(n, One<int_type>()),y,-rec(y)); }
static inline A0 cot_eval(const A0& z, const A0&, const int_type& n) { A0 y = base_tancot_eval(z); return sel(is_equal(n, One<int_type>()),rec(y),-y); }
static BOOST_FORCEINLINE A0 cot_eval(const A0&z, const iA0& n ) { const A0 y = base_tancot_eval(z); return bs::if_else(bs::is_equal(n, One<iA0>()),rec(y),-y); }