29 #ifndef PIRANHA_DETAIL_CF_MULT_IMPL_HPP 30 #define PIRANHA_DETAIL_CF_MULT_IMPL_HPP 32 #include <type_traits> 35 #include <piranha/is_cf.hpp> 36 #include <piranha/math.hpp> 37 #include <piranha/mp_rational.hpp> 47 template <typename Cf, enable_if_t<is_mp_rational<Cf>::value,
int> = 0>
48 inline void cf_mult_impl(Cf &out_cf,
const Cf &cf1,
const Cf &cf2)
50 math::mul3(out_cf._num(), cf1.num(), cf2.num());
54 template <typename Cf, enable_if_t<!is_mp_rational<Cf>::value,
int> = 0>
55 inline void cf_mult_impl(Cf &out_cf,
const Cf &cf1,
const Cf &cf2)
auto mul3(T &a, const T &b, const T &c) -> decltype(mul3_impl< T >()(a, b, c))
Ternary multiplication.