By the way, if I write instead by terminal simply "g++ -c random_generator.cpp" I don't receive errors: it seems to be fine. How's possible?
Thanks again, Marco Tului. On Sat, Apr 11, 2009 at 3:52 PM, Marco Tului <[email protected]> wrote: > Hi all, > excuse me, I've compiled and installed the GSL on my Mac, running Mac Os > 10.4.11 (Tiger). Now I'm trying to compile a random number generator class, > for a library of mine. Here the code: > > > :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > #ifndef RANDOM_GENERATOR__HPP > #define RANDOM_GENERATOR__HPP > > > #include <gsl/gsl_rng.h> // here we use the "GNU Scientific Library" (GSL) > to obtain a random number > #include <gsl/gsl_randist.h> // to obtain gsl_ran_gaussian_pdf() > #include <iostream> > using namespace std; > > > enum Distribution_type { > NORMAL = 1, > UNIFORM = 2, > BINARY = 3 > }; > > > class Random_generator { > > private: > const gsl_rng_type *_type_gen; > gsl_rng *_gen; // 'gen' is the (random) generator > > Distribution_type _distr_type; > > > public: > // default CONSTRUCTOR > Random_generator( ) { > _type_gen = gsl_rng_default; > _gen = gsl_rng_alloc(_type_gen); // in this way we allocate, in the > standard way, the generator 'gen' > }; > > // DESTRUCTOR > ~Random_generator( ) { > gsl_rng_free(_gen); // we free the memory associated with the > generator 'r' > }; > > > double Get_rnd_generator( ) { // by default we assume Distribution_type > = NORMAL > return gsl_ran_gaussian(_gen, 1) ; > }; > > > > double Get_rnd_generator(Distribution_type distr_type_init) { > if(distr_type_init == NORMAL) { > return gsl_ran_gaussian(_gen, 1); > } > else if(distr_type_init == UNIFORM) { > // return sample da distribuzione uniforme... > } > else if(distr_type_init == BINARY) { > // return sample da distribuzione binaria > } > }; > > > > // vv implementare delle funzioni di interfaccia, ad esempio per far in > modo ci sia controllo sul corretto valore > // di sigma (che non sia negativo) etc. > > > /* > // CONSTRUCTOR for obtaining a random number from a Gaussian > distribution, > // centered in the desired value and with the requested sigma > Random(double mu, double sigma) { > double x, z; > type_gen = gsl_rng_default; > gen = gsl_rng_alloc(type_gen); // in this way we allocate, in the > standard way, the generator 'r' > > x = gsl_ran_gaussian(gen, sigma); > z = mu + x; > Set_random(z); > }; > */ > > > }; > > > #endif > :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > > By terminal, I write "g++ -c random_generator.cpp -lgsl -lgslcblas -lm" but > I obtain in response the following errors: > > i686-apple-darwin8-g++-4.0.1: -lgsl: linker input file unused because > linking not done > i686-apple-darwin8-g++-4.0.1: -lgslcblas: linker input file unused because > linking not done > i686-apple-darwin8-g++-4.0.1: -lm: linker input file unused because linking > not done > > I don't understand this: could anyone help me? Please, it's important, and > quite urgent. > > > > Thanks in advance, > > Marco Tului. > _______________________________________________ Help-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gsl
