Bonita Montero
unread,Mar 11, 2023, 3:54:22 PM3/11/23You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
#include <iostream>
#include <bit>
#include <cmath>
#include <random>
#include <algorithm>
using namespace std;
int main()
{
constexpr size_t N = 1'000'000;
mt19937_64 mt;
uniform_int_distribution<uint64_t> uidBinDoubles( 0, 0x7FFFFFFFFFFFFFF );
size_t succ = 0, fail = 0;
for( size_t i = 0; i != N; ++i )
{
auto gen = [&]() -> double { return bit_cast<double>( uidBinDoubles(
mt ) ); };
double ctr = gen(), denom = gen();
double
fmodResult = fmod( ctr, denom ),
divModResult = ctr - trunc( ctr / denom ) * denom;
auto bin = []( double d ) -> uint64_t { return bit_cast<uint64_t>( d ); };
++(bin( fmodResult ) == bin( divModResult ) ? succ : fail);
}
cout << "succ: " << succ << endl;
cout << "fail: " << fail << endl;
}
X-Post to clc because fmod() itself is a C-function.