?? prim.cpp
字號:
val = (double) longcnt;
printf("\n RandomNumber %08lx Cycle %12lu %12lu",PrimeNumber,cnt,PrimeOffset);
printf("\n DoubleSerialYourVar %08lx DoubleSerialYourVar %08lx",
DoubleSerialYourVar[0],
DoubleSerialYourVar[1]);
printf("\n longcnt %I64u %6.2g",
longcnt,
val);
fprintf(wwp,"\n DoubleSerialYourVar %08lx DoubleSerialYourVar %08lx longcnt %I64u",
DoubleSerialYourVar[0],
DoubleSerialYourVar[1],
longcnt);
fprintf(wwp," %08lx Cycle %12lu %12lu",PrimeNumber,cnt,PrimeOffset);
for (testcount=0;testcount<MAX_TEST;testcount++) {
fprintf(pp,"\n%04d %09u",testcount,TestArray[testcount]);
}
fclose(pp);
Ende=1;
}
PXXGLOBAL void SerialRandomOne(void)
{
/*
* Diese Funktion berechnet in Anlehnung an den Original-Source f黵 alle Compiler die gleiche Pseudo-Random Funktion.
*/
// SerialYourVar = SerialYourVar * PrimeNumber + PrimeOffset;
/* return (unsigned int) ((SerialYourVar / 65536L) % 32768L); */
DoubleSerialYourVar[0] *= PrimeNumber;
DoubleSerialYourVar[0] += DOUBLE_FAST_OFFSET1;
#define FAST_OFFSET 0x4a71
#define FAST_PRIME 0x7FFF00AB
#define FAST_MASK 0x7a84ced0
#define SECOND_PRIME 0x7FFF08D3
#define SECOND_OFFSET 0xa1e1
/*
DoubleSerialYourVar[0] *= FAST_PRIME;
DoubleSerialYourVar[0] += FAST_OFFSET;
DoubleSerialYourVar[1] *= SECOND_PRIME;
DoubleSerialYourVar[1] += SECOND_OFFSET;
SerialYourVar = DoubleSerialYourVar[0] ^ DoubleSerialYourVar[1];
*/
}
PXXGLOBAL void SerialRandomTwo(void)
{
/*
* Diese Funktion berechnet in Anlehnung an den Original-Source f黵 alle Compiler die gleiche Pseudo-Random Funktion.
*/
// SerialYourVar = SerialYourVar * PrimeNumber + PrimeOffset;
/* return (unsigned int) ((SerialYourVar / 65536L) % 32768L); */
DoubleSerialYourVar[1] *= FAST_PRIME; // PrimeNumber;
DoubleSerialYourVar[1] += DOUBLE_FAST_OFFSET2;
SerialYourVar = DoubleSerialYourVar[0] ^ DoubleSerialYourVar[1];
}
#define FirstFastSerialYourVar Fast.WordFastSerialYourVar[0]
#define SecondFastSerialYourVar Fast.WordFastSerialYourVar[1]
#define ScrambleByte(pp) Fast.CharFastSerialYourVar[pp]
PXXGLOBAL void FastRandomTest(FILE *wwp,unsigned long number)
{
long cnt=0;
unsigned First;
unsigned Second;
FirstFastPrimeNumber= (unsigned)number; /* 2147418487UL */
SecondFastPrimeNumber= (unsigned)number+2; /* 2147418487UL */
FirstFastSerialYourVar = 1234;
SecondFastSerialYourVar = 2134;
FirstFastSerialRandom();
SecondFastSerialRandom();
FirstFastSerialRandom();
First = FirstFastSerialYourVar;
SecondFastSerialRandom();
Second=SecondFastSerialYourVar;
printf(" First %5u Second %5u",First,Second);
do {
FirstFastSerialRandom();
SecondFastSerialRandom();
// FirstFastSerialYourVar +=SecondFastSerialYourVar;
cnt++;
} while (!(FirstFastSerialYourVar==First && SecondFastSerialYourVar==Second));
printf("\n FirstFastSerialYourVar 0x%04x Prim 0x%04x Cycle %12lu",FirstFastSerialYourVar,FirstFastPrimeNumber,cnt);
fprintf(wwp," 0x%04x 0x%04x Cycle %12lu",FirstFastPrimeNumber,SecondFastPrimeNumber,cnt);
}
/****************************************************************************
union {
unsigned short WordFastSerialYourVar[2];
unsigned char CharFastSerialYourVar[4];
} Fast;
short unsigned FirstFastPrimeNumber;
short unsigned SecondFastPrimeNumber;
*****************************************************************************/
PXXGLOBAL void FirstFastSerialRandom(void)
{
/*
* Diese Funktion berechnet in Anlehnung an den Original-Source f黵 alle Compiler die gleiche Pseudo-Random Funktion.
*/
#ifdef ALT
FirstFastSerialYourVar = FirstFastSerialYourVar * FastPrimeNumber + 0x4a71;
#else
FirstFastSerialYourVar *= FirstFastPrimeNumber;
FirstFastSerialYourVar += 5494u;
// ScrambleByte(3) ^= ScrambleByte(0);
#ifdef ALT
ScrambleByte(1) ^= ScrambleByte(0);
if (ScrambleByte(1)!=0x23) {
FirstFastSerialYourVar *= SecondFastPrimeNumber;
}
FirstFastSerialYourVar += 14442u;
#endif
#endif
}
PXXGLOBAL void SecondFastSerialRandom(void)
{
SecondFastSerialYourVar *= SecondFastPrimeNumber;
SecondFastSerialYourVar += 1494u;
}
/************************************************************
2147418127 7FFF000F Max 0000c71e 50974 4.63402e+04 7fff000f Cycle 536870912
2147418131 7FFF0013 Max 0000c71e 50974 4.63402e+04 7fff0013 Cycle 2147483648
2147418137 7FFF0019 Max 0000c71e 50974 4.63402e+04 7fff0019 Cycle 0
2147418179 7FFF0043 Max 0000c71e 50974 4.63402e+04 7fff0043 Cycle 2147483648
2147418191 7FFF004F Max 0000c71e 50974 4.63402e+04 7fff004f Cycle 536870912
2147418199 7FFF0057 Max 0000c71e 50974 4.63402e+04 7fff0057 Cycle 1073741824
2147418227 7FFF0073 Max 0000c71e 50974 4.63402e+04 7fff0073 Cycle 2147483648
2147418277 7FFF00A5 Max 0000c71e 50974 4.63402e+04 7fff00a5 Cycle 0
2147418283 7FFF00AB Max 0000c71e 50974 4.63402e+04 7fff00ab Cycle 2147483648
2147418307 7FFF00C3 Max 0000c71e 50974 4.63402e+04 7fff00c3 Cycle 2147483648
2147418313 7FFF00C9 Max 0000c71e 50974 4.63402e+04 7fff00c9 Cycle 0
2147418341 7FFF00E5 Max 0000c71e 50974 4.63402e+04 7fff00e5 Cycle 0
2147418347 7FFF00EB Max 0000c71e 50974 4.63402e+04 7fff00eb Cycle 2147483648
2147418127 7FFF000F Max 0000c71e 50974 4.634024e+004 7fff000f Cycle 536870912
2147418131 7FFF0013 Max 0000c71e 50974 4.634024e+004 7fff0013 Cycle 2147483648
2147418137 7FFF0019 Max 0000c71e 50974 4.634024e+004 7fff0019 Cycle 0
2147418179 7FFF0043 Max 0000c71e 50974 4.634024e+004 7fff0043 Cycle 2147483648
2147418191 7FFF004F Max 0000c71e 50974 4.634024e+004 7fff004f Cycle 536870912
2147418199 7FFF0057 Max 0000c71e 50974 4.634024e+004 7fff0057 Cycle 1073741824
2147418227 7FFF0073 Max 0000c71e 50974 4.634024e+004 7fff0073 Cycle 2147483648
2147418277 7FFF00A5 Max 0000c71e 50974 4.634024e+004 7fff00a5 Cycle 0
2147418283 7FFF00AB Max 0000c71e 50974 4.634024e+004 7fff00ab Cycle 2147483648
64849 0000FD51 Max 000000fe sqrt== 254 2.546547e+002 fd51 Cycle 65536
64853 0000FD55 Max 000000fe sqrt== 254 2.546625e+002 fd55 Cycle 65536
64871 0000FD67 Max 000000fe sqrt== 254 2.546979e+002 fd67 Cycle 16384
64877 0000FD6D Max 000000fe sqrt== 254 2.547096e+002 fd6d Cycle 65536
64879 0000FD6F Max 000000fe sqrt== 254 2.547136e+002 fd6f Cycle 8192
64891 0000FD7B Max 000000fe sqrt== 254 2.547371e+002 fd7b Cycle 32768
64901 0000FD85 Max 000000ff sqrt== 255 2.547567e+002 fd85 Cycle 65536
64919 0000FD97 Max 000000ff sqrt== 255 2.547921e+002 fd97 Cycle 16384
64921 0000FD99 Max 000000ff sqrt== 255 2.547960e+002 fd99 Cycle 65536
64927 0000FD9F Max 000000ff sqrt== 255 2.548078e+002 fd9f Cycle 4096
64937 0000FDA9 Max 000000ff sqrt== 255 2.548274e+002 fda9 Cycle 65536
64951 0000FDB7 Max 000000ff sqrt== 255 2.548549e+002 fdb7 Cycle 16384
64969 0000FDC9 Max 000000ff sqrt== 255 2.548902e+002 fdc9 Cycle 65536
64997 0000FDE5 Max 000000ff sqrt== 255 2.549451e+002 fde5 Cycle 65536
65003 0000FDEB Max 000000ff sqrt== 255 2.549569e+002 fdeb Cycle 32768
65011 0000FDF3 Max 000000ff sqrt== 255 2.549725e+002 fdf3 Cycle 32768
65027 0000FE03 Max 000000ff sqrt== 255 2.550039e+002 fe03 Cycle 32768
65029 0000FE05 Max 000000ff sqrt== 255 2.550078e+002 fe05 Cycle 65536
65033 0000FE09 Max 000000ff sqrt== 255 2.550157e+002 fe09 Cycle 65536
65053 0000FE1D Max 000000ff sqrt== 255 2.550549e+002 fe1d Cycle 65536
65063 0000FE27 Max 000000ff sqrt== 255 2.550745e+002 fe27 Cycle 16384
65071 0000FE2F Max 000000ff sqrt== 255 2.550902e+002 fe2f Cycle 8192
65089 0000FE41 Max 000000ff sqrt== 255 2.551255e+002 fe41 Cycle 65536
65099 0000FE4B Max 000000ff sqrt== 255 2.551451e+002 fe4b Cycle 32768
65101 0000FE4D Max 000000ff sqrt== 255 2.551490e+002 fe4d Cycle 65536
65111 0000FE57 Max 000000ff sqrt== 255 2.551686e+002 fe57 Cycle 16384
65119 0000FE5F Max 000000ff sqrt== 255 2.551842e+002 fe5f Cycle 4096
65123 0000FE63 Max 000000ff sqrt== 255 2.551921e+002 fe63 Cycle 32768
65129 0000FE69 Max 000000ff sqrt== 255 2.552038e+002 fe69 Cycle 65536
65141 0000FE75 Max 000000ff sqrt== 255 2.552273e+002 fe75 Cycle 65536
65147 0000FE7B Max 000000ff sqrt== 255 2.552391e+002 fe7b Cycle 32768
65167 0000FE8F Max 000000ff sqrt== 255 2.552783e+002 fe8f Cycle 8192
65171 0000FE93 Max 000000ff sqrt== 255 2.552861e+002 fe93 Cycle 32768
65173 0000FE95 Max 000000ff sqrt== 255 2.552900e+002 fe95 Cycle 65536
65179 0000FE9B Max 000000ff sqrt== 255 2.553018e+002 fe9b Cycle 32768
65183 0000FE9F Max 000000ff sqrt== 255 2.553096e+002 fe9f Cycle 4096
65203 0000FEB3 Max 000000ff sqrt== 255 2.553488e+002 feb3 Cycle 32768
65213 0000FEBD Max 000000ff sqrt== 255 2.553684e+002 febd Cycle 65536
65239 0000FED7 Max 000000ff sqrt== 255 2.554193e+002 fed7 Cycle 16384
65257 0000FEE9 Max 000000ff sqrt== 255 2.554545e+002 fee9 Cycle 65536
65267 0000FEF3 Max 000000ff sqrt== 255 2.554741e+002 fef3 Cycle 32768
65269 0000FEF5 Max 000000ff sqrt== 255 2.554780e+002 fef5 Cycle 65536
65287 0000FF07 Max 000000ff sqrt== 255 2.555132e+002 ff07 Cycle 16384
65293 0000FF0D Max 000000ff sqrt== 255 2.555249e+002 ff0d Cycle 65536
65309 0000FF1D Max 000000ff sqrt== 255 2.555563e+002 ff1d Cycle 65536
65323 0000FF2B Max 000000ff sqrt== 255 2.555836e+002 ff2b Cycle 32768
65327 0000FF2F Max 000000ff sqrt== 255 2.555915e+002 ff2f Cycle 8192
65353 0000FF49 Max 000000ff sqrt== 255 2.556423e+002 ff49 Cycle 65536
65357 0000FF4D Max 000000ff sqrt== 255 2.556502e+002 ff4d Cycle 65536
65371 0000FF5B Max 000000ff sqrt== 255 2.556775e+002 ff5b Cycle 32768
65381 0000FF65 Max 000000ff sqrt== 255 2.556971e+002 ff65 Cycle 65536
65393 0000FF71 Max 000000ff sqrt== 255 2.557206e+002 ff71 Cycle 65536
65407 0000FF7F Max 00000100 sqrt== 256 2.557479e+002 ff7f Cycle 1024
65413 0000FF85 Max 00000100 sqrt== 256 2.557597e+002 ff85 Cycle 65536
65419 0000FF8B Max 00000100 sqrt== 256 2.557714e+002 ff8b Cycle 32768
65423 0000FF8F Max 00000100 sqrt== 256 2.557792e+002 ff8f Cycle 8192
65437 0000FF9D Max 00000100 sqrt== 256 2.558066e+002 ff9d Cycle 65536
65447 0000FFA7 Max 00000100 sqrt== 256 2.558261e+002 ffa7 Cycle 16384
65449 0000FFA9 Max 00000100 sqrt== 256 2.558300e+002 ffa9 Cycle 65536
65479 0000FFC7 Max 00000100 sqrt== 256 2.558886e+002 ffc7 Cycle 16384
65497 0000FFD9 Max 00000100 sqrt== 256 2.559238e+002 ffd9 Cycle 65536
65519 0000FFEF Max 00000100 sqrt== 256 2.559668e+002 ffef Cycle 8192
65521 0000FFF1 Max 00000100 sqrt== 256 2.559707e+002 fff1 Cycle 65536
***************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -