From a286b0083333cd716cc6e749bdf397c4a720195a Mon Sep 17 00:00:00 2001 From: "Paul A. Bristow" Date: Sun, 26 Aug 2012 09:43:43 +0000 Subject: [PATCH] delta == 0 treated as special case for mean, variance, skewness and kurtosis == central Student's t [SVN r80233] --- .../boost/math/distributions/non_central_t.hpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/include/boost/math/distributions/non_central_t.hpp b/include/boost/math/distributions/non_central_t.hpp index 964225d16..558e55127 100644 --- a/include/boost/math/distributions/non_central_t.hpp +++ b/include/boost/math/distributions/non_central_t.hpp @@ -522,8 +522,9 @@ namespace boost BOOST_MATH_STD_USING if (v > 1 / boost::math::tools::epsilon() ) { - normal_distribution n(delta, 1); - return boost::math::mean(n); + //normal_distribution n(delta, 1); + //return boost::math::mean(n); + return delta; } else { @@ -539,7 +540,10 @@ namespace boost { return 1; } - + if (delta == 0) + { // == Student's t + return v / (v - 2); + } T result = ((delta * delta + 1) * v) / (v - 2); T m = mean(v, delta, pol); result -= m * m; @@ -554,6 +558,10 @@ namespace boost { return 0; } + if(delta == 0) + { // == Student's t + return 0; + } T mean = boost::math::detail::mean(v, delta, pol); T l2 = delta * delta; T var = ((l2 + 1) * v) / (v - 2) - mean * mean; @@ -572,6 +580,10 @@ namespace boost { return 3; } + if (delta == 0) + { // == Student's t + return 3; + } T mean = boost::math::detail::mean(v, delta, pol); T l2 = delta * delta; T var = ((l2 + 1) * v) / (v - 2) - mean * mean;