[Rcpp-devel] Mersenne Twister in RcppArmadillo?
Hi Dirk, sorry for my premature judgement. You are right. Doing it the way you suggest below, should indeed give a very fast implementation, using the same memory. In regard to the C++11 standard in R: This is just constricting the possibilities R gives, in my opinion. And the fact, that most people in HPC use either Fortran or C++ - only a few use C - seems to point to the adequacy of C++ in this area of programming, which becomes more and more important today. Furthermore, C++ is an OO language and as R implements OOP as well, it seems to me a little inconsistent, that the language extending it is entirely not OO. Let us see how the things develop in near future. I think with Rcpp and RcppArmadillo R programmers got a powerful and still comfortable tool at hand and code/packages using C++ will accelerate. I myself use RcppArmadillo for a package that performs Bayesian Simulation and relies on S4 classes in R. It maps S4 objects to C++ objects, which also lets developers, who want to extend the package later on, understand the code more easily. Furthermore readability is enhanced in general, when using classes and I do not have to mention here Cs sometimes dangerous pointer arithmetic. Well enough here! First version of my package will rely on C++99 standard to make it possible to get installed on every R framework. Armadillo will give its warnings towards using gcc 4.7.1. I just hope, it runs with gcc 4.4 (my god, this version is really old) Best Simon
On Mar 3, 2013, at 2:02 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
Simon, On 3 March 2013 at 11:52, Simon Zehnder wrote: | Hi Dirk, | | I recognized the function rnorm in Rcpp. But as I work most times with RcppArmadillo and Armadillo objects I wanted to avoid constructing NumericMatrix objects, fill them and convert them to arma::mat objects. Instead I decided to immediately generate arma::mat objects and fill them - which was impossible without a loop when using a controlled random number generation (for instance with the possibility to set the seed). You need just two lines (one to call rnorm, and one use the result to instantiate an arma mat using the constructor using the same memory). No loop. One call to the RNG. | I would like to ask something connected to the new feature: | The C++ standard library (random) uses specific functions for random number generation (for example std::gamma_distribution) , that are only available when using a compiler supporting the C++11 standard. As far as I know R uses C++99. So in a package these functions would be useless when redistribution should be made possible. Do you know about some comments by the R core team regarding the C++11 standard? Does it come soon? R being a C project, there aren't any strong C++ advocates on the R Core team though some (like Duncan Murdoch) use it. The main blocker is CRAN which is not very forthcoming in communications, and it seems to be one (very prominent) CRAN maintainer and R Core member in particular... Dirk -- Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com