44 #ifndef ROL_LOGISTIC_HPP 45 #define ROL_LOGISTIC_HPP 48 #include "Teuchos_ParameterList.hpp" 59 Logistic(
const Real mean = 0.,
const Real var = 1.)
60 : mean_(mean), var_((var>0.) ? var : 1.) {}
63 mean_ = parlist.sublist(
"SOL").sublist(
"Distribution").sublist(
"Logistic").get(
"Mean",0.);
64 var_ = parlist.sublist(
"SOL").sublist(
"Distribution").sublist(
"Logistic").get(
"Scale",1.);
65 var_ = (var_ > 0.) ? var_ : 1.;
69 Real val = std::exp(-(input-mean_)/var_);
70 return val/(var_*std::pow(1.0+val,2.0));
74 Real val = std::exp(-(input-mean_)/var_);
79 Real val = std::exp(-(input-mean_)/var_);
80 return (input-mean_) + var_*std::log(1.0+val);
84 return mean_ + var_*std::log(input/(1.0-input));
90 case 1: val =
mean_;
break;
91 case 2: val = std::pow(var_*M_PI,2)/3. + std::pow(mean_,2);
break;
93 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::invalid_argument,
94 ">>> ERROR (ROL::Logistic): Logistic moment not implemented for m > 2!");
107 void test(std::ostream &outStream = std::cout )
const {
109 std::vector<Real> X(size,4.*(Real)rand()/(Real)RAND_MAX - 2.);
110 std::vector<int> T(size,0);
Real invertCDF(const Real input) const
Logistic(const Real mean=0., const Real var=1.)
Real lowerBound(void) const
void test(std::ostream &outStream=std::cout) const
Logistic(Teuchos::ParameterList &parlist)
Real evaluateCDF(const Real input) const
Real evaluatePDF(const Real input) const
virtual void test(std::ostream &outStream=std::cout) const
static const double ROL_INF
Real moment(const size_t m) const
Real upperBound(void) const
static const double ROL_NINF
Real integrateCDF(const Real input) const