Go to the documentation of this file.
8 #ifndef XGBOOST_COMMON_PROBABILITY_DISTRIBUTION_H_
9 #define XGBOOST_COMMON_PROBABILITY_DISTRIBUTION_H_
26 constexpr
double kPI = 3.14159265358979323846;
28 constexpr
double kEulerMascheroni = 0.57721566490153286060651209008240243104215933593992;
37 return exp(-z * z / 2.0) / sqrt(2.0 *
kPI);
41 return 0.5 * (1 + erf(z / sqrt(2.0)));
49 return (z * z - 1.0) *
PDF(z);
59 const double w = exp(z);
60 const double sqrt_denominator = 1 + w;
61 if (isinf(w) || isinf(w * w)) {
64 return w / (sqrt_denominator * sqrt_denominator);
69 const double w = exp(z);
70 return isinf(w) ? 1.0 : (w / (1 + w));
74 const double w = exp(z);
75 return isinf(w) ? 0.0 : (
PDF(z) * (1 - w) / (1 + w));
79 const double w = exp(z);
80 if (isinf(w) || isinf(w * w)) {
83 return PDF(z) * (w * w - 4 * w + 1) / ((1 + w) * (1 + w));
94 const double w = exp(z);
95 return isinf(w) ? 0.0 : (w * exp(-w));
99 const double w = exp(z);
104 const double w = exp(z);
105 return isinf(w) ? 0.0 : ((1 - w) *
PDF(z));
109 const double w = exp(z);
110 if (isinf(w) || isinf(w * w)) {
113 return (w * w - 3 * w + 1) *
PDF(z);
125 #endif // XGBOOST_COMMON_PROBABILITY_DISTRIBUTION_H_
static XGBOOST_DEVICE double CDF(double z)
Definition: probability_distribution.h:68
static XGBOOST_DEVICE double GradPDF(double z)
Definition: probability_distribution.h:103
ProbabilityDistributionType
Enum encoding possible choices of probability distribution.
Definition: probability_distribution.h:31
static XGBOOST_DEVICE ProbabilityDistributionType Type()
Definition: probability_distribution.h:87
static XGBOOST_DEVICE ProbabilityDistributionType Type()
Definition: probability_distribution.h:52
static XGBOOST_DEVICE double CDF(double z)
Definition: probability_distribution.h:98
static XGBOOST_DEVICE double PDF(double z)
Definition: probability_distribution.h:36
constexpr double kEulerMascheroni
The Euler-Mascheroni_constant.
Definition: probability_distribution.h:28
Definition: probability_distribution.h:92
static XGBOOST_DEVICE double PDF(double z)
Definition: probability_distribution.h:93
static XGBOOST_DEVICE double GradPDF(double z)
Definition: probability_distribution.h:73
static XGBOOST_DEVICE double GradPDF(double z)
Definition: probability_distribution.h:44
static XGBOOST_DEVICE double PDF(double z)
Definition: probability_distribution.h:58
static XGBOOST_DEVICE double HessPDF(double z)
Definition: probability_distribution.h:78
static XGBOOST_DEVICE double HessPDF(double z)
Definition: probability_distribution.h:108
constexpr double kPI
Constant PI.
Definition: probability_distribution.h:26
Definition: probability_distribution.h:57
#define XGBOOST_DEVICE
Tag function as usable by device.
Definition: base.h:84
static XGBOOST_DEVICE double HessPDF(double z)
Definition: probability_distribution.h:48
static XGBOOST_DEVICE double CDF(double z)
Definition: probability_distribution.h:40
static XGBOOST_DEVICE ProbabilityDistributionType Type()
Definition: probability_distribution.h:117
Definition: probability_distribution.h:35
namespace of xgboost
Definition: base.h:110