diff --git a/build_linux64/libamsculib3.linux64.a b/build_linux64/libamsculib3.linux64.a index 17b0407..198af3b 100644 Binary files a/build_linux64/libamsculib3.linux64.a and b/build_linux64/libamsculib3.linux64.a differ diff --git a/build_linux64/objstore/amscurandom1.o b/build_linux64/objstore/amscurandom1.o index 6f57ad2..ae4665f 100644 Binary files a/build_linux64/objstore/amscurandom1.o and b/build_linux64/objstore/amscurandom1.o differ diff --git a/build_linux64/objstore/amscurandom_tests1.o b/build_linux64/objstore/amscurandom_tests1.o index 1c8bb86..ebb723a 100644 Binary files a/build_linux64/objstore/amscurandom_tests1.o and b/build_linux64/objstore/amscurandom_tests1.o differ diff --git a/build_linux64/test b/build_linux64/test index ff34099..5ecad41 100644 Binary files a/build_linux64/test and b/build_linux64/test differ diff --git a/src/amsculib3/random/amscurandom1.cu b/src/amsculib3/random/amscurandom1.cu index 6ea3f72..27c6fbc 100644 --- a/src/amsculib3/random/amscurandom1.cu +++ b/src/amsculib3/random/amscurandom1.cu @@ -79,7 +79,7 @@ namespace random // CPU-specific code (host path) if(state==NULL) state = &global_rand_cpustate; #endif - ret= ((float)randui32(state))/(2147483648.0f); + ret= ((float)randui32(state))/(4294967296.0f); return ret; } @@ -92,7 +92,7 @@ namespace random // CPU-specific code (host path) if(state==NULL) state = &global_rand_cpustate; #endif - ret= ((double)randui32(state))/(2147483648.0f); + ret= ((double)randui32(state))/(4294967296.0f); return ret; } diff --git a/src/amsculib3/random/amscurandom_tests1.cu b/src/amsculib3/random/amscurandom_tests1.cu index 2db04e2..b663b4c 100644 --- a/src/amsculib3/random/amscurandom_tests1.cu +++ b/src/amsculib3/random/amscurandom_tests1.cu @@ -9,9 +9,70 @@ namespace random { using namespace random; printf("Random number generator basic function test:\n"); - + int I; + // uint32_t q1; + // float q2; + // double q3; + // int q4; rand_seed(0); + printf("from seed 0...\n"); + for(I=0;I<10;I++) + { + printf("randui32[%d] = %u\n",I,randui32()); + } + + rand_seed(0); + printf("from seed 0...\n"); + for(I=0;I<10;I++) + { + printf("randf[%d] = %1.3f\n",I,randf()); + } + + rand_seed(0); + printf("from seed 0...\n"); + for(I=0;I<10;I++) + { + printf("randf[%d] = %1.3f\n",I,rand()); + } + + float q0,qlast,qmindelta,qmaxdelta,qmx,qmn,qmean,qstd,qsum,qsumsq; + int N = 100000; + uint32_t seed= 34533623; + rand_seed(seed); + printf("from seed %u...\n",seed); + q0 = randf(); + qmx = q0; + qmn = q0; + qsum = 0.0f; + qsumsq = 0.0f; + qlast = q0; + q0 = randf(); + qmindelta = ::fabsf(q0-qlast); + qmaxdelta = ::fabsf(q0-qlast); + for(I=0;Iqmx) qmx = q0; + if(q0qmaxdelta) qmaxdelta = ::fabsf(q0-qlast); + } + + qmean = qsum/((float)N); + qstd = ::sqrtf((qsumsq-qsum*qsum/((float)N))/((float)N)); + + printf("Statistics for randf() N=%d\n",N); + printf("\tmin: %1.3g\n",qmn); + printf("\tmax: %1.3g\n",qmx); + printf("\tmean: %1.3g\n",qmean); + printf("\tstdev: %1.3g\n",qstd); + printf("\tmindelta: %1.3g\n",qmindelta); + printf("\tmaxdelta: %1.3g\n",qmaxdelta); return;