Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r67214 - trunk/boost/math/distributions
From: pbristow_at_[hidden]
Date: 2010-12-13 11:37:34


Author: pbristow
Date: 2010-12-13 11:37:33 EST (Mon, 13 Dec 2010)
New Revision: 67214
URL: http://svn.boost.org/trac/boost/changeset/67214

Log:
Removed inverse_uniform.hpp
Removed:
   trunk/boost/math/distributions/inverse_uniform.hpp

Deleted: trunk/boost/math/distributions/inverse_uniform.hpp
==============================================================================
--- trunk/boost/math/distributions/inverse_uniform.hpp 2010-12-13 11:37:33 EST (Mon, 13 Dec 2010)
+++ (empty file)
@@ -1,400 +0,0 @@
-// Copyright John Maddock 2010.
-// Copyright Paul A. Bristow 2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_STATS_INVERSE_UNIFORM_HPP
-#define BOOST_STATS_INVERSE_UNIFORM_HPP
-
-// http://www.itl.nist.gov/div898/handbook/eda/section3/eda3668.htm
-// http://mathworld.wolfram.com/UniformDistribution.html
-// http://documents.wolfram.com/calculationcenter/v2/Functions/ListsMatrices/Statistics/UniformDistribution.html
-// http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29
-
-#include <boost/math/distributions/fwd.hpp>
-#include <boost/math/distributions/detail/common_error_handling.hpp>
-#include <boost/math/distributions/complement.hpp>
-
-#include <utility>
-
-namespace boost{ namespace math
-{
- namespace detail
- {
- template <class RealType, class Policy>
- inline bool check_inverse_uniform_lower(
- const char* function,
- RealType lower,
- RealType* result, const Policy& pol)
- {
- if((boost::math::isfinite)(lower))
- { // any finite value is OK.
- return true;
- }
- else
- { // Not finite.
- *result = policies::raise_domain_error<RealType>(
- function,
- "Lower parameter is %1%, but must be >= 0!", lower, pol);
- return false;
- }
- } // bool check_inverse_uniform_lower(
-
- template <class RealType, class Policy>
- inline bool check_inverse_uniform_upper(
- const char* function,
- RealType upper,
- RealType* result, const Policy& pol)
- {
- if((boost::math::isfinite)(upper))
- { // Any finite value is OK.
- return true;
- }
- else
- { // Not finite.
- *result = policies::raise_domain_error<RealType>(
- function,
- "Upper parameter is %1%, but must be finite!", upper, pol);
- return false;
- }
- } // bool check_inverse_uniform_upper(
-
- template <class RealType, class Policy>
- inline bool check_inverse_uniform_x(
- const char* function,
- RealType const& x,
- RealType* result, const Policy& pol)
- {
- if((boost::math::isfinite)(x))
- { // Any finite value - if < lower or >upper will return NaN
- return true;
- }
- else
- { // Not finite..
- *result = policies::raise_domain_error<RealType>(
- function,
- "y parameter is %1%, but must be finite!", x, pol);
- return false;
- }
- } // bool check_inverse_uniform_x
-
- template <class RealType, class Policy>
- inline bool check_inverse_uniform(
- const char* function,
- RealType lower,
- RealType upper,
- RealType* result, const Policy& pol)
- {
- if((check_inverse_uniform_lower(function, lower, result, pol) == false)
- || (check_inverse_uniform_upper(function, upper, result, pol) == false))
- {
- return false;
- }
- else if (lower >= upper) // If lower == upper then 1 / (upper-lower) = 1/0 = +infinity!
- { // upper and lower have been checked before, so must be lower >= upper.
- *result = policies::raise_domain_error<RealType>(
- function,
- "lower parameter is %1%, but must be less than upper!", lower, pol);
- return false;
- }
- else
- { // All OK,
- return true;
- }
- } // bool check_inverse_uniform(
-
- } // namespace detail
-
- template <class RealType = double, class Policy = policies::policy<> >
- class inverse_uniform_distribution
- {
- public:
- typedef RealType value_type;
- typedef Policy policy_type;
-
- inverse_uniform_distribution(RealType lower = 0, RealType upper = 1) // Constructor.
- : m_lower(lower), m_upper(upper) // Default is standard uniform distribution.
- {
- RealType result;
- detail::check_inverse_uniform(
- "boost::math::inverse_uniform_distribution<%1%>::inverse_uniform_distribution",
- lower, upper, &result, Policy());
- }
- // Accessor functions.
- RealType lower()const
- {
- return m_lower;
- }
-
- RealType upper()const
- {
- return m_upper;
- }
- private:
- // Data members:
- RealType m_lower; // distribution lower aka a.
- RealType m_upper; // distribution upper aka b.
- }; // class inverse_uniform_distribution
-
- typedef inverse_uniform_distribution<double> inverse_uniform;
-
- template <class RealType, class Policy>
- inline const std::pair<RealType, RealType> range(const inverse_uniform_distribution<RealType, Policy>& dist)
- { // Range of permissible values for random variable x.
- using boost::math::tools::max_value;
- return std::pair<RealType, RealType>(dist.lower(), dist.upper()); // 0 to 1.
- // Note RealType infinity is NOT permitted, only max_value.
- }
-
- template <class RealType, class Policy>
- inline const std::pair<RealType, RealType> support(const inverse_uniform_distribution<RealType, Policy>& dist)
- { // Range of supported values for random variable x.
- // This is range where cdf rises from 0 to 1, and outside it, the pdf is zero.
- using boost::math::tools::max_value;
- return std::pair<RealType, RealType>(dist.lower(), dist.upper());
- }
-
- template <class RealType, class Policy>
- inline RealType pdf(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& x)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform(
- "boost::math::pdf(const inverse_uniform_distribution<%1%>&, %1%)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- if(false == detail::check_inverse_uniform_x(
- "boost::math::pdf(const inverse_uniform_distribution<%1%>&, %1%)", x, &result, Policy()))
- {
- return result;
- }
- // Undefined (singularity) outside lower to upper.
- if((x < lower) || (x > upper) )
- {
- return std::numeric_limits<RealType>::quiet_NaN();
- }
- else
- {
- return 1 / (upper - lower);
- }
- } // RealType pdf(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& x)
-
- template <class RealType, class Policy>
- inline RealType cdf(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& x)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform(
- "boost::math::cdf(const inverse_uniform_distribution<%1%>&, %1%)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- if(false == detail::check_inverse_uniform_x(
- "boost::math::cdf(const inverse_uniform_distribution<%1%>&, %1%)",
- x, &result, Policy()))
- {
- return result;
- }
- // Undefined (singularity) outside 0 to 1.
- if (x < 0)
- {
- return std::numeric_limits<RealType>::quiet_NaN();
- }
- if (x > 1)
- {
- return std::numeric_limits<RealType>::quiet_NaN();
- }
- return x * (upper - lower) + lower; // lower <= x <= upper
- } // RealType cdf(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& x)
-
- template <class RealType, class Policy>
- inline RealType quantile(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& p)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks
- if(false == detail::check_inverse_uniform(
- "boost::math::quantile(const inverse_uniform_distribution<%1%>&, %1%)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- if(false == detail::check_probability(
- "boost::math::quantile(const inverse_uniform_distribution<%1%>&, %1%)",
- p, &result, Policy()))
- {
- return result;
- }
- if(p == 0)
- {
- return lower;
- }
- if(p == 1)
- {
- return upper;
- }
- return p * (upper - lower) + lower;
- } // RealType quantile(const inverse_uniform_distribution<RealType, Policy>& dist, const RealType& p)
-
- template <class RealType, class Policy>
- inline RealType cdf(const complemented2_type<inverse_uniform_distribution<RealType, Policy>, RealType>& c)
- {
- RealType lower = c.dist.lower();
- RealType upper = c.dist.upper();
- RealType x = c.param;
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform(
- "boost::math::cdf(const inverse_uniform_distribution<%1%>&, %1%)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- if(false == detail::check_inverse_uniform_x(
- "boost::math::cdf(const inverse_uniform_distribution<%1%>&, %1%)",
- x, &result, Policy()))
- {
- return result;
- }
- if (x < lower)
- {
- return 0;
- }
- if (x > upper)
- {
- return 1;
- }
- return (upper - x) / (upper - lower);
- } // RealType cdf(const complemented2_type<inverse_uniform_distribution<RealType, Policy>, RealType>& c)
-
- template <class RealType, class Policy>
- inline RealType quantile(const complemented2_type<inverse_uniform_distribution<RealType, Policy>, RealType>& c)
- {
- RealType lower = c.dist.lower();
- RealType upper = c.dist.upper();
- RealType q = c.param;
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform(
- "boost::math::quantile(const inverse_uniform_distribution<%1%>&, %1%)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- if(false == detail::check_probability(
- "boost::math::quantile(const inverse_uniform_distribution<%1%>&, %1%)",
- q, &result, Policy()))
- if(q == 0)
- {
- return lower;
- }
- if(q == 1)
- {
- return upper;
- }
- return -q * (upper - lower) + upper;
- } // RealType quantile(const complemented2_type<inverse_uniform_distribution<RealType, Policy>, RealType>& c)
-
- template <class RealType, class Policy>
- inline RealType mean(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform(
- "boost::math::mean(const inverse_uniform_distribution<%1%>&)",
- lower, upper, &result, Policy()))
- {
- return result;
- }
- return (lower + upper ) / 2;
- } // RealType mean(const inverse_uniform_distribution<RealType, Policy>& dist)
-
- template <class RealType, class Policy>
- inline RealType variance(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform("boost::math::variance(const inverse_uniform_distribution<%1%>&)", lower, upper, &result, Policy()))
- {
- return result;
- }
- return (upper - lower) * ( upper - lower) / 12;
- // for standard inverse_uniform = 0.833333333333333333333333333333333333333333;
- } // RealType variance(const inverse_uniform_distribution<RealType, Policy>& dist)
-
- template <class RealType, class Policy>
- inline RealType mode(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform("boost::math::mode(const inverse_uniform_distribution<%1%>&)", lower, upper, &result, Policy()))
- {
- return result;
- }
- result = lower; // Any value [lower, upper] but arbitrarily choose lower.
- return result;
- }
-
- template <class RealType, class Policy>
- inline RealType median(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform("boost::math::median(const inverse_uniform_distribution<%1%>&)", lower, upper, &result, Policy()))
- {
- return result;
- }
- return (lower + upper) / 2; //
- }
- template <class RealType, class Policy>
- inline RealType skewness(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform("boost::math::skewness(const inverse_uniform_distribution<%1%>&)",lower, upper, &result, Policy()))
- {
- return result;
- }
- return 0;
- } // RealType skewness(const inverse_uniform_distribution<RealType, Policy>& dist)
-
- template <class RealType, class Policy>
- inline RealType kurtosis_excess(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- RealType lower = dist.lower();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_inverse_uniform("boost::math::kurtosis_execess(const inverse_uniform_distribution<%1%>&)", lower, upper, &result, Policy()))
- {
- return result;
- }
- return static_cast<RealType>(-6)/5; // -6/5 = -1.2;
- } // RealType kurtosis_excess(const inverse_uniform_distribution<RealType, Policy>& dist)
-
- template <class RealType, class Policy>
- inline RealType kurtosis(const inverse_uniform_distribution<RealType, Policy>& dist)
- {
- return kurtosis_excess(dist) + 3;
- }
-
-} // namespace math
-} // namespace boost
-
-// This include must be at the end, *after* the accessors
-// for this distribution have been defined, in order to
-// keep compilers that support two-phase lookup happy.
-#include <boost/math/distributions/detail/derived_accessors.hpp>
-
-#endif // BOOST_STATS_INVERSE_UNIFORM_HPP
-
-
-


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk