This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

std random


Greetings,

A while back I noted that the std random was different from the tr1 random facility. My original plan was to simply rename the classes in the std implementation. Further investigation into the latest CD for C++-0X revealed that the differences were far more pervasive and deeper that simply renaming (even renaming involved more hacking of TR1 than would make it worth while).

The attached patch splits the random facility. It also goes a long way toward completing the std random facility. The new analytic type distributions were obtained by studying the gmp implementations. The sampling distributions are completely new as are two new engine adaptors: independent_bits and shuffle_order. The generate_canonical and the seed_seq utilities are also new. Even the engines and the distributions that have direct analogs in tr1 have been substantially reworked due to the changes in design in the later drafts.

This patch is a tad more aggressive than one would want at this stage ;-). This would only go in for 4.5 I think. That leaves the question of what we should do for 4.4. I think it may be misleading to keep random in std. I think it may be best to simply delete or disable include/std/random for now. What do all of you you think?

The patch bootstraps and regtests with no new fails on x86_64-unknown-linux-gnu.

The one thing that I must figure out before release is that one of the constructor overloads:
template<typename SeedSeq>
some_engine(SeedSeq& sseq);


eats a lot of calls that it shouldn't such as this:

some_engine(unsigned long seed);

and barfs because unsigned long doesn't have a generate() method.

I need to kind of pseudo-concept for SeedSeq. Any pointers on how this mechanism works in gcc would be helpful. I'm just starting to look at this. I need to request that a type support a generate(Iter,Iter) method before being worthy of the first ctor.

I'll make a list of other issues more specific to random that I and others could help think about in another message.

Thank you,

Ed

Attachment: CL_random
Description: video/flv

Attachment: random.diff.bz2
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]