On Sat, Dec 01, 2012 at 10:17:31PM +0100, Michael Stahl wrote:
> On 01/12/12 12:22, tino wrote:
> >> the header is sal/inc/rtl/random.h (which is apparently a C interface).
> > 
> > Exactly, the C++ interface is missing.
> 
> but that isn't really a problem, is it? using it is as simple as:
> 
>        static rtlRandomPool aPool = rtl_random_createPool();
> 
>        sal_Int32 nRandom;
>        rtl_random_getBytes(aPool, &nRandom, sizeof(nRandom));
> 
> of course it doesn't have fancy features like ranges or non-uniform
> distribution...
> 
> > Also, the source doesn't have
> > any comments to say what algorithm is implemented etc. Do you know?
> 
> actually i don't know much about random numbers, except that C standard
> library implementations thereof may be of arbitrarily bad quality, so
> one shouldn't use them in portable code.  i bet whatever rtlRandomPool
> uses is better than a worst case rand() implementation, otherwise it
> wouldn't exist.  but likely whatever fancy thing boost implements is
> better still, though it is unclear whether it is better in a way that
> makes a difference in practice (while apparently actual users do
> complain about rand()).
> 
> ... looking at random.cxx it appears to use a MD5 hash to generate the
> random bytes; initialization is via seconds/nanoseconds of current time
> and thread-id.  since the cryptographic hash implementations in sal/rtl
> don't look heavily optimized this is likely not be the fastest way to
> generate random numbers, if that is a concern...
> 
>       #define RTL_RANDOM_DIGEST      rtl_Digest_AlgorithmMD5
> 
> >> but why do we need a wrapper around boost in sal?  i mean i haven't
> >> looked at the boost random stuff but unless its interface is horrible
> >> (always a possibility with boost i guess) _and_ there are multiple
> >> places where we'd want to call it, then why not use it directly from
> >> Calc's formula implementation?
> > 
> > I guess that's for someone more experienced to comment on. My simple
> > reason was rtl::math seems a good collection of maths functions this
> > may fit in, and there's no decision yet if RANDNORMAL() etc should be
> > implemented in sc or scaddins (or at all?).
> > 
> > The boost code would look something like this:

Personally I prefer to implement useful functions inside ScInterpreter
and not in scaddins. Eike might have better comments for one or the
other way.

> 
> well that looks reasonably simple; my concern is more that rtl/math.hxx
> is part of the stable URE interface so once something is added there it
> can't be removed, so better get the interface right if you want to add
> it there (also, you have to edit sal/util/sal.map file to get it
> exported which is annoying).
> 
> does anybody have an opinion whether we want this functionality in
> rtl/math.hxx or not?
> 

We should not implement them in rtl/math.hxx until there are more users
than calc's interpreter that need it. Lets not overcomplicate this stuff
as long as it is not necessary.
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to