Skip to content
Snippets Groups Projects
Closed (moved) crypto_rand_double() should produce all possible outputs on platforms with 32-bit int
  • View options
  • crypto_rand_double() should produce all possible outputs on platforms with 32-bit int

    • View options
  • Closed (moved) created by teor

    On 32-bit platforms, crypto_rand_double() only produces 1 in every 2 million possible values between 0 and 1.

    This happens because:

    • crypto_rand_double() divides a random unsigned int by UINT_MAX
    • an unsigned int on 32-bit platforms is 32 bits
    • the mantissa on a double is 53 bits

    So crypto_rand_double() doesn't fill the lower 21 bits with random values.

    This makes the rep_hist_format_hs_stats() noise more predictable on 32-bit platforms.

    This fix shouldn't affect the unit tests, because they pass on 64-bit.

    Attributes

    Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first