static inline A0 sincosa(const A0& a0, A0& c) { if(not_in_range(a0)){c = Nan<A0>(); return c; } A0 x = scale(a0); A0 z = sqr(x); c = eval_t::cos_eval(z, x, Zero<A0>()); return eval_t::sin_eval(z, x, Zero<A0>()); }
static inline A0 sincosa(const A0& a0, A0& c, const fast&) { if(not_in_range(a0)){c = nt2::Nan<A0>(); return c; } A0 x = scale(a0); A0 z = nt2::sqr(x); c = eval_t::cos_eval(z); return eval_t::sin_eval(z, x); }
static inline A0 cota(const A0& a0, const fast&) { A0 x = scale(a0); if(not_in_range(a0)) return nt2::Nan<A0>(); else return nt2::rec(eval_t::base_tan_eval(x)); }
static inline A0 sina(const A0& a0, const fast&) { A0 x = scale(a0); if(not_in_range(a0)) return nt2::Nan<A0>(); else return eval_t::sin_eval(sqr(x), x); }
static inline A0 cosa(const A0& a0, const fast &) { A0 x = scale(a0); if(not_in_range(a0)) return nt2::Nan<A0>(); else return eval_t::cos_eval(nt2::sqr(x)); }
static inline A0 tana(const A0& a0, const fast&) { A0 x = scale(a0); if(not_in_range(a0)) return Nan<A0>(); else return eval_t::base_tan_eval(x); }
static inline void sincosa(const A0& a0, A0& s, A0& c) { A0 test = not_in_range(a0); A0 x = scale(a0); A0 z = sqr(x); c = b_or(test, eval_t::cos_eval(z, x, Zero<A0>())); s = b_or(test, eval_t::sin_eval(z, x, Zero<A0>())); // c = cosa(a0); // s = sina(a0); }
static inline A0 cosa(const A0& a0) { A0 x = scale(a0); if(not_in_range(a0)) return Nan<A0>(); else return eval_t::cos_eval(sqr(x), x, Zero<A0>()); }
static inline A0 cota(const A0& a0) { A0 x = scale(a0); return b_or(b_or(not_in_range(a0), is_eqz(a0)), rec(eval_t::base_tancot_eval(x))); }
static inline A0 tana(const A0& a0) { A0 x = scale(a0); return b_or(not_in_range(a0), eval_t::base_tancot_eval(x)); }
static inline A0 sina(const A0& a0) { A0 x = scale(a0); return b_or(not_in_range(a0), eval_t::sin_eval(sqr(x), x, Zero<A0>())); }