boost::numeric::functional::multiply_and_promote_to_double
template<typename T, typename U> struct multiply_and_promote_to_double : public multiplies< T, double > { };