| 111 | } |
| 112 | |
| 113 | template<class T, class Policies> inline |
| 114 | interval<T, Policies> asin(const interval<T, Policies>& x) |
| 115 | { |
| 116 | typedef interval<T, Policies> I; |
| 117 | if (interval_lib::detail::test_input(x) |
| 118 | || x.upper() < static_cast<T>(-1) || x.lower() > static_cast<T>(1)) |
| 119 | return I::empty(); |
| 120 | typename Policies::rounding rnd; |
| 121 | T l = (x.lower() <= static_cast<T>(-1)) |
| 122 | ? -interval_lib::constants::pi_half_upper<T>() |
| 123 | : rnd.asin_down(x.lower()); |
| 124 | T u = (x.upper() >= static_cast<T>(1) ) |
| 125 | ? interval_lib::constants::pi_half_upper<T>() |
| 126 | : rnd.asin_up (x.upper()); |
| 127 | return I(l, u, true); |
| 128 | } |
| 129 | |
| 130 | template<class T, class Policies> inline |
| 131 | interval<T, Policies> acos(const interval<T, Policies>& x) |
nothing calls this directly
no test coverage detected