typedef RealType value_type;
typedef Policy policy_type;
- inverse_gaussian_distribution(RealType mean = 1, RealType scale = 1)
- : m_mean(mean), m_scale(scale)
+ inverse_gaussian_distribution(RealType l_mean = 1, RealType l_scale = 1)
+ : m_mean(l_mean), m_scale(l_scale)
{ // Default is a 1,1 inverse_gaussian distribution.
static const char* function = "boost::math::inverse_gaussian_distribution<%1%>::inverse_gaussian_distribution";
RealType result;
- detail::check_scale(function, scale, &result, Policy());
- detail::check_location(function, mean, &result, Policy());
+ detail::check_scale(function, l_scale, &result, Policy());
+ detail::check_location(function, l_mean, &result, Policy());
}
RealType mean()const
return result;
} // cdf
-template <class RealType>
+template <class RealType, class Policy>
struct inverse_gaussian_quantile_functor
{
- inverse_gaussian_quantile_functor(const boost::math::inverse_gaussian_distribution<RealType> dist, RealType const& p)
+ inverse_gaussian_quantile_functor(const boost::math::inverse_gaussian_distribution<RealType, Policy> dist, RealType const& p)
: distribution(dist), prob(p)
{
}
return boost::math::make_tuple(fx, dx);
}
private:
- const boost::math::inverse_gaussian_distribution<RealType> distribution;
+ const boost::math::inverse_gaussian_distribution<RealType, Policy> distribution;
RealType prob;
};
-template <class RealType>
+template <class RealType, class Policy>
struct inverse_gaussian_quantile_complement_functor
{
- inverse_gaussian_quantile_complement_functor(const boost::math::inverse_gaussian_distribution<RealType> dist, RealType const& p)
+ inverse_gaussian_quantile_complement_functor(const boost::math::inverse_gaussian_distribution<RealType, Policy> dist, RealType const& p)
: distribution(dist), prob(p)
{
}
return boost::math::make_tuple(fx, dx);
}
private:
- const boost::math::inverse_gaussian_distribution<RealType> distribution;
+ const boost::math::inverse_gaussian_distribution<RealType, Policy> distribution;
RealType prob;
};
// Define the distribution, using gamma_nooverflow:
typedef gamma_distribution<RealType, no_overthrow_policy> gamma_nooverflow;
- gamma_distribution<RealType, no_overthrow_policy> g(static_cast<RealType>(0.5), static_cast<RealType>(1.));
+ gamma_nooverflow g(static_cast<RealType>(0.5), static_cast<RealType>(1.));
// gamma_nooverflow g(static_cast<RealType>(0.5), static_cast<RealType>(1.));
// R qgamma(0.2, 0.5, 1) 0.0320923
boost::uintmax_t m = policies::get_max_root_iterations<Policy>(); // and max iterations.
using boost::math::tools::newton_raphson_iterate;
result =
- newton_raphson_iterate(inverse_gaussian_quantile_functor<RealType>(dist, p), guess, min, max, get_digits, m);
+ newton_raphson_iterate(inverse_gaussian_quantile_functor<RealType, Policy>(dist, p), guess, min, max, get_digits, m);
return result;
} // quantile
return result;
if(false == detail::check_location(function, mean, &result, Policy()))
return result;
- if(false == detail::check_x(function, x, &result, Policy()))
+ if(false == detail::check_positive_x(function, x, &result, Policy()))
return result;
normal_distribution<RealType> n01;
boost::uintmax_t m = policies::get_max_root_iterations<Policy>();
using boost::math::tools::newton_raphson_iterate;
result =
- newton_raphson_iterate(inverse_gaussian_quantile_complement_functor<RealType>(c.dist, q), guess, min, max, get_digits, m);
+ newton_raphson_iterate(inverse_gaussian_quantile_complement_functor<RealType, Policy>(c.dist, q), guess, min, max, get_digits, m);
return result;
} // quantile