#include <cstdlib>
#include <iostream>
#include "RngStream.h"
Functions | |
double | MultModM (double a, double s, double c, double m) |
void | MatVecModM (const double A[3][3], const double s[3], double v[3], double m) |
void | MatMatModM (const double A[3][3], const double B[3][3], double C[3][3], double m) |
void | MatTwoPowModM (const double A[3][3], double B[3][3], double m, long e) |
void | MatPowModM (const double A[3][3], double B[3][3], double m, long n) |
int | CheckSeed (const unsigned long seed[6]) |
Variables | |
const double | m1 = 4294967087.0 |
const double | m2 = 4294944443.0 |
const double | norm = 1.0 / (m1 + 1.0) |
const double | a12 = 1403580.0 |
const double | a13n = 810728.0 |
const double | a21 = 527612.0 |
const double | a23n = 1370589.0 |
const double | two17 = 131072.0 |
const double | two53 = 9007199254740992.0 |
const double | fact = 5.9604644775390625e-8 |
const double | InvA1 [3][3] |
const double | InvA2 [3][3] |
const double | A1p0 [3][3] |
const double | A2p0 [3][3] |
const double | A1p76 [3][3] |
const double | A2p76 [3][3] |
const double | A1p127 [3][3] |
const double | A2p127 [3][3] |
int @44::CheckSeed | ( | const unsigned long | seed[6] | ) | [static] |
void @44::MatMatModM | ( | const double | A[3][3], | |
const double | B[3][3], | |||
double | C[3][3], | |||
double | m | |||
) | [static] |
void @44::MatPowModM | ( | const double | A[3][3], | |
double | B[3][3], | |||
double | m, | |||
long | n | |||
) | [static] |
void @44::MatTwoPowModM | ( | const double | A[3][3], | |
double | B[3][3], | |||
double | m, | |||
long | e | |||
) | [static] |
void @44::MatVecModM | ( | const double | A[3][3], | |
const double | s[3], | |||
double | v[3], | |||
double | m | |||
) | [static] |
double @44::MultModM | ( | double | a, | |
double | s, | |||
double | c, | |||
double | m | |||
) | [static] |
const double a12 = 1403580.0 [static] |
const double a13n = 810728.0 [static] |
const double A1p0[3][3] [static] |
Initial value:
{ { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { -810728.0, 1403580.0, 0.0 } }
const double A1p127[3][3] [static] |
Initial value:
{ { 2427906178.0, 3580155704.0, 949770784.0 }, { 226153695.0, 1230515664.0, 3580155704.0 }, { 1988835001.0, 986791581.0, 1230515664.0 } }
const double A1p76[3][3] [static] |
Initial value:
{ { 82758667.0, 1871391091.0, 4127413238.0 }, { 3672831523.0, 69195019.0, 1871391091.0 }, { 3672091415.0, 3528743235.0, 69195019.0 } }
const double a21 = 527612.0 [static] |
const double a23n = 1370589.0 [static] |
const double A2p0[3][3] [static] |
Initial value:
{ { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { -1370589.0, 0.0, 527612.0 } }
const double A2p127[3][3] [static] |
Initial value:
{ { 1464411153.0, 277697599.0, 1610723613.0 }, { 32183930.0, 1464411153.0, 1022607788.0 }, { 2824425944.0, 32183930.0, 2093834863.0 } }
const double A2p76[3][3] [static] |
Initial value:
{ { 1511326704.0, 3759209742.0, 1610795712.0 }, { 4292754251.0, 1511326704.0, 3889917532.0 }, { 3859662829.0, 4292754251.0, 3708466080.0 } }
const double fact = 5.9604644775390625e-8 [static] |
const double InvA1[3][3] [static] |
Initial value:
{ { 184888585.0, 0.0, 1945170933.0 }, { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 } }
const double InvA2[3][3] [static] |
Initial value:
{ { 0.0, 360363334.0, 4225571728.0 }, { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 } }
const double m1 = 4294967087.0 [static] |
const double m2 = 4294944443.0 [static] |
const double two17 = 131072.0 [static] |
const double two53 = 9007199254740992.0 [static] |