[MN-dev] [mndiff]: r132 - trunk/noe/test.c
michael
subversion at mplayerhq.hu
Sun Feb 1 14:26:10 CET 2009
Author: michael
Date: Sun Feb 1 14:26:10 2009
New Revision: 132
Log:
Replace rand() by marsaglias KISS99 PRNG, should fix portability of
the gfft checksums between OSs.
Modified:
trunk/noe/test.c
Modified: trunk/noe/test.c
==============================================================================
--- trunk/noe/test.c Sun Feb 1 12:44:49 2009 (r131)
+++ trunk/noe/test.c Sun Feb 1 14:26:10 2009 (r132)
@@ -25,35 +25,37 @@
#include "noe_internal.h"
#include "galois_internal.h"
+#include "random_internal.h"
#include "gfft.h"
#include "rs.h"
#include "bytestream.h"
static const unsigned int gfftChecksums[20]={
-0xFCB3E495,
-0x5704AC39,
-0x07F19DC4,
-0xE8E3A16F,
-0xD3FDE16D,
-0xB2F03FC5,
-0xB42E9BB6,
-0x1281C15E,
-0x4F1C1BA2,
-0x0EA4927A,
-0x2E0EBEC7,
-0x2D80F238,
-0x6D40B8AB,
-0x3EF87629,
-0xD1649F79,
-0x24A3D9E4,
-0x4EDC2FE4,
-0xF24C2F4F,
-0x1BFE26C9,
+0xF379D8D9,
+0xCB7A8F92,
+0xE7401691,
+0x12340E66,
+0x8CE989B1,
+0x058D8DF6,
+0xB81094BA,
+0xE7CF85E8,
+0x80A5F7C1,
+0x11FFDAF8,
+0x6972A0A4,
+0x78CE49AC,
+0x95F6132F,
+0xE74A6870,
+0x860EB18B,
+0x7A5A1B63,
+0xFE3A9EAC,
+0xD6DC97A1,
+0x27822BAE,
};
int main(){
int i, j, decimate, codeBits;
GFF4Element bp=1;
+ KISSState rnd;
EXT(init)();
@@ -85,7 +87,7 @@ int main(){
if(a!=b) printf("%X %X %X %X\n", i, reduce(i), i*0xFF01, reduce(i)*0xFF01);
}
#endif
- srand (31415);
+ init_random(&rnd, 31415);
if(!M){
printf("Testing GFFT");
for(i=1; i<20; i++){
@@ -95,7 +97,7 @@ int main(){
int acc=0;
for(j=0; j<n; j++)
- code[j]= rand() % SIZE;
+ code[j]= get_random(&rnd) % SIZE;
EXT(gfft)(syn, code, SHIFT);
@@ -139,7 +141,7 @@ int main(){
data[0]= k-1;
for(j=0; j<k; j++)
- data[j+1]= rand() & MASK;
+ data[j+1]= get_random(&rnd) & MASK;
EXT(getRsGenerator)(gen, 1, i);
EXT(prodPoly)(code, gen, data);
@@ -166,7 +168,7 @@ int main(){
GFF4Element data[k];
GFF4Element code[n];
int pass=5;
- int tLoc= rand() % k;
+ int tLoc= get_random(&rnd) % k;
GFF4Element parityLocator[i+2];
GFF4Element tPoly[i];
@@ -175,7 +177,7 @@ int main(){
for(pass=5; pass; pass--){
for(j=0; j<k; j++)
- data[j]= rand() & MASK;
+ data[j]= get_random(&rnd) & MASK;
data[tLoc] %= k;
memcpy(code, data, k*sizeof(GFF4Element));
@@ -234,7 +236,7 @@ STOP_TIMER}
for(pass=5; pass; pass--){
int erasedCount, errorCount;
for(j=0; j<k; j++)
- data[j]= rand() & MASK;
+ data[j]= get_random(&rnd) & MASK;
memcpy(code, data, n*sizeof(GFF4Element));
erasureLocator[0]= 0;
@@ -242,12 +244,12 @@ STOP_TIMER}
EXT(rsEncode)(code, parityLocator, i, codeBits);
erasedCount=0;
- if(rand()&0x40){
- erasedCount= (rand()%i)+1;
+ if(get_random(&rnd)&0x40){
+ erasedCount= (get_random(&rnd)%i)+1;
for(j=0; j<erasedCount; j++){
int e=-1;
- while(e==-1 || code[e]==MINUS1) e=rand()%n;
+ while(e==-1 || code[e]==MINUS1) e=get_random(&rnd)%n;
erased[j]= e<<decimate;
code[ e ]= MINUS1;
@@ -255,17 +257,17 @@ STOP_TIMER}
for(j=0; j<erasedCount; j++){
int e= erased[j]>>decimate;
- code[ e ]= rand()&MASK;
+ code[ e ]= get_random(&rnd)&MASK;
}
}
errorCount=0;
- if(erasedCount==0 || (rand()&0x40)){
+ if(erasedCount==0 || (get_random(&rnd)&0x40)){
int max= (i - erasedCount)/2;
if(max){
- errorCount= (rand() % max)+1;
+ errorCount= (get_random(&rnd) % max)+1;
for(j=0; j<errorCount; j++){
- int pos= rand()%n;
- code[pos] = rand()&MASK;
+ int pos= get_random(&rnd)%n;
+ code[pos] = get_random(&rnd)&MASK;
// printf("P%6d\n", pos);
}
}
@@ -320,8 +322,8 @@ STOP_TIMER}
initByteStream(&bs, buffer, 20000);
for(i=0; i<2000; i++){
- int len= rand()%32;
- val[i] = rand() % (1<<len);
+ int len= get_random(&rnd)%32;
+ val[i] = get_random(&rnd) % (1<<len);
put_v(&bs, val[i]);
if(i%100 == 0) printf(".");
}
More information about the Mndiff-dev
mailing list