Dear all, I'm a beginner in C++ so I'm sorry if my question might seem silly.

I'm also new to the group so I just say hello to all the people in it.

I've written a function that computes the Normal Distribution, but when comparing the time to create 1000 vectors

each with 1000 points I've the same performance than using the analogous Matlab built-in function.

I'd like to improve my code for speed.

I'm doing this mainly to learn how to write efficient C++ code, so please just don't tell me

that library X and Y do this faster than my code, but help me understanding why and how to improve

my code.

I need both a single value and a vector version of this function,

so this is how I have defined them.

// this is the single point version of the function:

double normdist(const double& px,const double& mu,const double& csigma){

// evaluating the formula taken from

http://en.wikipedia.org/wiki/Normal_distribution
double val = sqrt(2*M_PI)*csigma;

val = 1/val;

val = val*exp(-pow(px-mu,2)/(2*pow(csigma,2)));

return val ;

}

//this is the vector version. It takes as input a vector of double and gives the vector of corresponding values as output:

vector<double> normdist(const vector<double>& vx,const double& mu,const double& csigma){

vector<double> gv(vx.size()) ; //allocates the space for the vector gv.

for (int i=0 ; i<vx.size() ; i++){

gv[i]=normdist(vx[i],mu,csigma);

}

return gv ;

}

As I told I'm a beginner so I guess there is plenty of room for improving the speed and the quality of the code

(just writing to you I have realized that the initialization of gv might not be optimal, since I create values I don't need).

Thank you very much to all of you!

Luca