42 #ifndef O2SCL_MCARLO_PLAIN_H
43 #define O2SCL_MCARLO_PLAIN_H
50 #include <boost/numeric/ublas/vector.hpp>
52 #include <o2scl/multi_funct.h>
53 #include <o2scl/mcarlo.h>
54 #include <o2scl/rng_gsl.h>
56 #ifndef DOXYGEN_NO_O2NS
64 class rng_t=int,
class rng_dist_t=rng_gsl>
74 virtual int minteg_err(func_t &func,
size_t ndim,
const vec_t &a,
75 const vec_t &b,
double &res,
double &err) {
81 double vol=1.0, m=0.0, q=0.0;
82 for(
size_t i=0;i<ndim;i++) vol*=b[i]-a[i];
84 for(
size_t n=0;n<this->
n_points;n++) {
85 for(
size_t i=0;i<ndim;i++) {
89 cc[i]=a[i]+r*(b[i]-a[i]);
100 if (this->n_points<2) {
103 err=vol*sqrt(q/(this->n_points*(this->n_points-1.0)));
113 virtual double minteg(func_t &func,
size_t ndim,
const vec_t &a,
121 virtual const char *
type() {
return "mcarlo_plain"; }
125 #ifndef DOXYGEN_NO_O2NS
rng_dist_t rng_dist
The random number distribution.
unsigned long n_points
Number of integration points (default 1000)
virtual int minteg_err(func_t &func, size_t ndim, const vec_t &a, const vec_t &b, double &res, double &err)
Integrate function func from x=a to x=b.
rng_t rng
The random number generator.
virtual double minteg(func_t &func, size_t ndim, const vec_t &a, const vec_t &b)
Integrate function func over the hypercube from to for ndim-1.
virtual const char * type()
Return string denoting type ("mcarlo_plain")
Monte-Carlo integration [abstract base].
Multidimensional integration using plain Monte Carlo (GSL)
double interror
The uncertainty for the last integration computation.
std::function< double(size_t, const boost::numeric::ublas::vector< double > &)> multi_funct11
Multi-dimensional function typedef.