improve the pixel rng
see https://github.com/libvips/libvips/issues/2642
This commit is contained in:
parent
d9c00eb5ca
commit
8c668303f8
@ -3,6 +3,7 @@
|
|||||||
- add support for another quantiser [DarthSim]
|
- add support for another quantiser [DarthSim]
|
||||||
- jpeg2000 load left-justifies bitdepth
|
- jpeg2000 load left-justifies bitdepth
|
||||||
- add "password" option to pdfload
|
- add "password" option to pdfload
|
||||||
|
- improve the pixel rng
|
||||||
|
|
||||||
26/11/21 started 8.12.3
|
26/11/21 started 8.12.3
|
||||||
- better arg checking for hist_find_ndim [travisbell]
|
- better arg checking for hist_find_ndim [travisbell]
|
||||||
|
@ -1918,18 +1918,28 @@ vips_realpath( const char *path )
|
|||||||
/* A very simple random number generator. See:
|
/* A very simple random number generator. See:
|
||||||
* http://isthe.com/chongo/tech/comp/fnv/#FNV-source
|
* http://isthe.com/chongo/tech/comp/fnv/#FNV-source
|
||||||
*/
|
*/
|
||||||
|
guint32
|
||||||
|
vips__random_add( guint32 hash, int value )
|
||||||
|
{
|
||||||
|
#define FNV_ADD( HASH, VALUE8 ) (((HASH) ^ (VALUE8)) * 16777619u)
|
||||||
|
|
||||||
|
hash = FNV_ADD( hash, value & 0xff );
|
||||||
|
hash = FNV_ADD( hash, (value >> 8) & 0xff );
|
||||||
|
hash = FNV_ADD( hash, (value >> 16) & 0xff );
|
||||||
|
hash = FNV_ADD( hash, (value >> 24) & 0xff );
|
||||||
|
|
||||||
|
return( hash );
|
||||||
|
}
|
||||||
|
|
||||||
guint32
|
guint32
|
||||||
vips__random( guint32 seed )
|
vips__random( guint32 seed )
|
||||||
{
|
{
|
||||||
return( 1103515245u * seed + 12345 );
|
guint32 hash;
|
||||||
}
|
|
||||||
|
|
||||||
guint32
|
hash = 2166136261u;
|
||||||
vips__random_add( guint32 seed, int value )
|
hash = vips__random_add( hash, seed );
|
||||||
{
|
|
||||||
seed = ((2166136261u ^ seed) * 16777619u) ^ value;
|
|
||||||
|
|
||||||
return( vips__random( seed ) );
|
return( hash );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
|
Loading…
Reference in New Issue
Block a user