Changeset 23259 for trunk/psLib
- Timestamp:
- Mar 10, 2009, 4:53:42 PM (17 years ago)
- Location:
- trunk/psLib
- Files:
-
- 24 edited
-
src/fits/psFitsScale.c (modified) (2 diffs)
-
src/math/psRandom.c (modified) (3 diffs)
-
src/math/psRandom.h (modified) (5 diffs)
-
test/fits/tap_psFitsImage.c (modified) (1 diff)
-
test/imageops/convolutionBench.c (modified) (1 diff)
-
test/imageops/tap_psImageInterpolate2.c (modified) (1 diff)
-
test/math/tap_psMinimizeLMM.c (modified) (2 diffs)
-
test/math/tap_psPolyFit1D.c (modified) (1 diff)
-
test/math/tap_psPolyFit2D.c (modified) (1 diff)
-
test/math/tap_psPolyFit3D.c (modified) (1 diff)
-
test/math/tap_psPolyFit4D.c (modified) (1 diff)
-
test/math/tap_psRandom.c (modified) (11 diffs)
-
test/math/tap_psStats07.c (modified) (1 diff)
-
test/math/tap_psStats09.c (modified) (1 diff)
-
test/math/tap_psStatsTiming.c (modified) (1 diff)
-
test/math/tst_psMinimizeLMM.c (modified) (1 diff)
-
test/math/tst_psPolyFit1D.c (modified) (1 diff)
-
test/math/tst_psPolyFit2D.c (modified) (1 diff)
-
test/math/tst_psPolyFit3D.c (modified) (1 diff)
-
test/math/tst_psPolyFit4D.c (modified) (1 diff)
-
test/math/tst_psRandom.c (modified) (13 diffs)
-
test/math/tst_psStats09.c (modified) (1 diff)
-
test/mathtypes/tap_psVectorSelect.c (modified) (2 diffs)
-
test/types/tap_psTree.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFitsScale.c
r21183 r23259 112 112 // psImageBackground automatically excludes pixels that are non-finite, so we don't need to bother about a 113 113 // mask. 114 psU64 seed = p_psRandomGetSystemSeed(false); 115 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, seed); 114 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); 116 115 psStats *stats = psStatsAlloc(MEAN_STAT | STDEV_STAT); // Statistics object 117 116 if (!psImageBackground(stats, NULL, image, mask, maskVal, rng)) { … … 290 289 if (!psMemIncrRefCounter(rng) && options->fuzz) { 291 290 // Don't blab about which seed we're going to get --- it's not necessary for this purpose 292 psU64 seed = p_psRandomGetSystemSeed(false); 293 rng = psRandomAlloc(PS_RANDOM_TAUS, seed); 291 rng = psRandomAlloc(PS_RANDOM_TAUS); 294 292 } 295 293 -
trunk/psLib/src/math/psRandom.c
r20547 r23259 29 29 #include <inttypes.h> 30 30 31 #include "psAbort.h" 31 32 #include "psMemory.h" 32 33 #include "psRandom.h" … … 38 39 39 40 41 unsigned long seed = 0; // Seed for RNG 42 43 40 44 psU64 p_psRandomGetSystemSeed(bool log) 41 45 { 42 FILE* fd; 43 psU64 seedVal = 0; 44 time_t timeVal; 46 psU64 seedVal = 0; // Seed value to return 45 47 46 fd = fopen("/dev/urandom","r"); 47 if(fd == NULL) { 48 // Read system clock to get seed 49 seedVal = (psU64)time(&timeVal); 50 } else { 51 // Read urandom to get seed 52 if (fread(&seedVal, sizeof(psU64),1,fd)) {;} // ignore return value 53 // Close file 54 fclose(fd); 48 // Since zero is a special value in our context, don't allow the final value chosen to be zero 49 while (seedVal == 0) { 50 FILE *fd = fopen("/dev/urandom", "r"); 51 if (fd) { 52 // Read urandom to get seed 53 if (fread(&seedVal, sizeof(psU64), 1, fd)) {;} // ignore return value 54 // Close file 55 fclose(fd); 56 } else { 57 // Read system clock to get seed 58 time_t timeVal; // Time value 59 seedVal = (psU64)time(&timeVal); 60 } 55 61 } 56 62 … … 63 69 } 64 70 65 psRandom *psRandomAlloc(psRandomType type, 66 unsigned long seed) 71 psU64 psRandomSeed(psU64 value) 67 72 { 68 gsl_rng *r = NULL; 69 psRandom *myRNG = NULL; 73 while (value == 0) { 74 value = p_psRandomGetSystemSeed(true); 75 } 76 seed = value; 77 return seed; 78 } 70 79 80 // Destructor for psRandom 81 static void randomFree(psRandom *rng) 82 { 83 if (rng->gsl) { 84 gsl_rng_free(rng->gsl); 85 } 86 return; 87 } 88 89 // Constructor for psRandom 90 static psRandom *randomAlloc(psRandomType type) 91 { 92 psRandom *rng = psAlloc(sizeof(psRandom)); // Random number generator to return 93 psMemSetDeallocator(rng, (psFreeFunc)randomFree); 94 95 rng->type = type; 96 97 const gsl_rng_type *gslType; // Type of RNG according to GSL 71 98 switch (type) { 72 case PS_RANDOM_TAUS: 73 myRNG = (psRandom*)psAlloc(sizeof(psRandom)); 74 r = gsl_rng_alloc(gsl_rng_taus); 75 myRNG->gsl = r; 76 if(seed == 0) { 77 gsl_rng_set(myRNG->gsl, p_psRandomGetSystemSeed(true)); 78 } else { 79 gsl_rng_set(myRNG->gsl, seed); 80 } 81 myRNG->type = type; 99 case PS_RANDOM_TAUS: 100 gslType = gsl_rng_taus; 82 101 break; 83 84 default: 85 psError(PS_ERR_UNEXPECTED_NULL, true, _("Unknown Random Number Generator Type")); 102 default: 103 psAbort("Unknown Random Number Generator Type: %x", type); 86 104 break; 87 105 } 88 106 89 return(myRNG); 107 rng->gsl = gsl_rng_alloc(gslType); 108 return rng; 90 109 } 91 110 92 void psRandomReset(psRandom *rand, 93 unsigned long seed) 111 psRandom *psRandomAlloc(psRandomType type) 94 112 { 95 // Check null psRandom 96 if(rand==NULL) { 97 psError(PS_ERR_UNEXPECTED_NULL, 98 true, 99 _("Random variable is NULL.")); 100 } else { 101 // Check seed value to see if system seed should be used 102 if(seed == 0) { 103 gsl_rng_set(rand->gsl,p_psRandomGetSystemSeed(true)); 104 } else { 105 gsl_rng_set(rand->gsl, seed); 106 } 113 psRandom *rng = randomAlloc(type); 114 psRandomReset(rng); 115 116 return rng; 117 } 118 119 psRandom *psRandomAllocSpecific(psRandomType type, psU64 specificSeed) 120 { 121 psRandom *rng = randomAlloc(type); 122 if (specificSeed == 0) { 123 specificSeed = p_psRandomGetSystemSeed(true); 107 124 } 125 gsl_rng_set(rng->gsl, specificSeed); 126 return rng; 127 } 128 129 bool psRandomReset(psRandom *rand) 130 { 131 PS_ASSERT_RANDOM_NON_NULL(rand, false); 132 if (seed == 0) { 133 seed = p_psRandomGetSystemSeed(true); 134 } 135 gsl_rng_set(rand->gsl, seed); 136 return true; 108 137 } 109 138 110 139 double psRandomUniform(const psRandom *r) 111 140 { 112 // Check null psRandom variable 113 if(r == NULL) { 114 psError(PS_ERR_UNEXPECTED_NULL, 115 true, 116 _("Random variable is NULL.")); 117 return(0); 118 } else { 119 return(gsl_rng_uniform(r->gsl)); 120 } 141 PS_ASSERT_RANDOM_NON_NULL(r, NAN); 142 return gsl_rng_uniform(r->gsl); 121 143 } 122 144 123 145 double psRandomGaussian(const psRandom *r) 124 146 { 125 // Check null psRandom variable 126 if(r == NULL) { 127 psError(PS_ERR_UNEXPECTED_NULL, 128 true, 129 _("Random variable is NULL.")); 130 return(0); 131 } else { 132 // XXX: What should sigma be? 133 return(gsl_ran_gaussian(r->gsl, 1.0)); 134 } 147 PS_ASSERT_RANDOM_NON_NULL(r, NAN); 148 return gsl_ran_gaussian(r->gsl, 1.0); 135 149 } 136 150 137 151 double p_psRandomGaussian(const psRandom *r, double sigma) 138 152 { 139 // Check null psRandom variable 140 if(r == NULL) { 141 psError(PS_ERR_UNEXPECTED_NULL, 142 true, 143 _("Random variable is NULL.")); 144 return(0); 145 } else { 146 return(gsl_ran_gaussian(r->gsl, sigma)); 147 } 153 PS_ASSERT_RANDOM_NON_NULL(r, NAN); 154 return gsl_ran_gaussian(r->gsl, sigma); 148 155 } 149 156 150 157 double psRandomPoisson(const psRandom *r, double mean) 151 158 { 152 // Check null psRandom variable 153 if(r == NULL) { 154 psError(PS_ERR_UNEXPECTED_NULL, 155 true, 156 _("Random variable is NULL.")); 157 return(0); 158 } else { 159 return((psF64) gsl_ran_poisson(r->gsl, mean)); 160 } 159 PS_ASSERT_RANDOM_NON_NULL(r, NAN); 160 return gsl_ran_poisson(r->gsl, mean); 161 161 } 162 162 -
trunk/psLib/src/math/psRandom.h
r15627 r23259 29 29 #include <gsl/gsl_randist.h> 30 30 31 / ** Enumeration containing a flag for psRandom types. */31 /// Random number generator types 32 32 typedef enum { 33 33 PS_RANDOM_TAUS ///< A maximally equidistributed combined Tausworthe generator. 34 34 } psRandomType; 35 35 36 /** Data structure for psRandom. 37 * Contains information on the psRandom type and GNU Scientific Library random number generator. 38 */ 36 /// Random number generator 39 37 typedef struct { 40 38 psRandomType type; ///< The type of RNG … … 48 46 ); 49 47 50 /** Allocates a psRandom struct. 51 * 52 * @return psRandom*: A new psRandom structure. 53 */ 48 /// Set the seed to use for random number generators. 49 /// 50 /// A seed value of zero indicates that the seed is to be generated from the system. 51 /// The new seed value is returned 52 psU64 psRandomSeed(psU64 seed ///< Seed for RNG 53 ); 54 55 /// Allocate a random number generator 56 /// 57 /// The currently defined seed (via psRandomSeed) is used 54 58 psRandom *psRandomAlloc( 55 psRandomType type, ///< The type of RNG 56 unsigned long seed ///< Known value with which to seed the RNG 59 psRandomType type ///< The type of RNG 57 60 ) PS_ATTR_MALLOC; 58 61 59 /** Resets an existing psRandom struct. 60 * 61 * @return void 62 */ 63 void psRandomReset( 64 psRandom *rand, ///< Existing psRandom struct to reset 65 unsigned long seed ///< Known value with which to seed the RNG 62 /// Allocate a random number generator with a specific seed 63 /// 64 /// A seed value of zero indicates that the seed is to be generated from the system. 65 psRandom *psRandomAllocSpecific(psRandomType type, ///< The type of RNG 66 psU64 specificSeed ///< The specific seed to use 67 ); 68 69 /// Resets an existing random number generator 70 bool psRandomReset( 71 psRandom *rand ///< Random number generator to reset 66 72 ); 67 73 … … 72 78 */ 73 79 double psRandomUniform( 74 const psRandom *r ///< psRandom struct for RNG80 const psRandom *r ///< Random number generator 75 81 ); 76 82 … … 81 87 */ 82 88 double psRandomGaussian( 83 const psRandom *r ///< psRandom struct for RNG89 const psRandom *r ///< Random number generator 84 90 ); 85 91 86 /** Random number generator based on a Gaussian deviate , N(0,1).92 /** Random number generator based on a Gaussian deviate with specified standard deviation. 87 93 * Uses gsl_ran_gaussian. 88 *89 * XXX: I created this since the above psLib spec for p_psRandomGaussian90 * had no argument for sigma. Verify that with IfA.91 94 * 92 95 * @return double: Random number. 93 96 */ 94 97 double p_psRandomGaussian( 95 const psRandom *r, ///< psRandom struct for RNG98 const psRandom *r, ///< Random number generator 96 99 double sigma 97 100 ); … … 103 106 */ 104 107 double psRandomPoisson( 105 const psRandom *r, ///< psRandom struct for RNG108 const psRandom *r, ///< Random number generator 106 109 double mean ///< Mean value 107 110 ); -
trunk/psLib/test/fits/tap_psFitsImage.c
r19382 r23259 12 12 static psImage *generateImage(void) 13 13 { 14 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 12345); // Random number generator14 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 12345); // Random number generator 15 15 psImage *image = psImageAlloc(NUMCOLS, NUMROWS, PS_TYPE_F32); // Generated image 16 16 for (int y = 0; y < NUMROWS; y++) { -
trunk/psLib/test/imageops/convolutionBench.c
r17320 r23259 68 68 int main(int argc, char *argv[]) 69 69 { 70 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 0); // Random number generator70 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 0); // Random number generator 71 71 72 72 printf("#%14s%16s %8s %8s\n", "Image", "Kernel", "Direct", "FFT"); -
trunk/psLib/test/imageops/tap_psImageInterpolate2.c
r21465 r23259 77 77 psImage *variance = NULL; // generateVariance(xSize, ySize, type); 78 78 psImage *mask = NULL; // generateMask(xSize, ySize); 79 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 12345);79 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 12345); 80 80 81 81 psImageInterpolation *interp = psImageInterpolationAlloc(mode, image, variance, mask, 0, NAN, NAN, -
trunk/psLib/test/math/tap_psMinimizeLMM.c
r13124 r23259 95 95 { 96 96 psMemId id = psMemGetId(); 97 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Random number generator; using known seed97 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Random number generator; using known seed 98 98 psMinimization *min = psMinimizationAlloc(NUM_ITERATIONS, ERR_TOL); 99 99 psArray *ordinates = psArrayAlloc(NUM_DATA_POINTS); … … 203 203 { 204 204 psMemId id = psMemGetId(); 205 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Random number generator; using known seed205 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Random number generator; using known seed 206 206 psMinimization *min = psMinimizationAlloc(NUM_ITERATIONS, ERR_TOL); 207 207 psArray *ordinates = psArrayAlloc(NUM_DATA_POINTS); -
trunk/psLib/test/math/tap_psPolyFit1D.c
r13337 r23259 109 109 psVector *xTruth = psVectorAlloc(numData, PS_TYPE_F64); 110 110 psVector *fTruth = psVectorAlloc(numData, PS_TYPE_F64); 111 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using a known seed111 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using a known seed 112 112 for (int i = 0; i < numData; i++) { 113 113 xTruth->data.F64[i] = (flags & TS00_X_NULL) ? i : 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tap_psPolyFit2D.c
r17567 r23259 108 108 yTruth->n = numData; 109 109 fTruth->n = numData; 110 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using an RNG with a known seed110 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using an RNG with a known seed 111 111 for (int i = 0; i < numData; i++) { 112 112 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tap_psPolyFit3D.c
r17567 r23259 108 108 zTruth->n = numData; 109 109 fTruth->n = numData; 110 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using known seed110 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using known seed 111 111 for (int i = 0; i < numData; i++) { 112 112 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tap_psPolyFit4D.c
r17567 r23259 132 132 tTruth->n = numData; 133 133 fTruth->n = numData; 134 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using known seed134 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using known seed 135 135 for (int i = 0; i < numData; i++) { 136 136 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tap_psRandom.c
r13123 r23259 3 3 work properly. 4 4 5 ensure that psRandom structs are properly allocated by psRandomAlloc ().5 ensure that psRandom structs are properly allocated by psRandomAllocSpecific(). 6 6 ensure that psRandomUniform() produces a sequence of numbers with 7 7 proper mean and stdev. … … 47 47 plan_tests(34); 48 48 49 // ensure that psRandom structs are properly allocated by psRandomAlloc ()49 // ensure that psRandom structs are properly allocated by psRandomAllocSpecific() 50 50 { 51 51 psMemId id = psMemGetId(); 52 52 // Valid type allocation 53 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);54 ok(myRNG != NULL, "psRandom struct was allocated properly"); 55 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAlloc () failed");56 ok(myRNG->type == PS_RANDOM_TAUS, "psRandomAlloc () set type properly");53 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 54 ok(myRNG != NULL, "psRandom struct was allocated properly"); 55 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAllocSpecific() failed"); 56 ok(myRNG->type == PS_RANDOM_TAUS, "psRandomAllocSpecific() set type properly"); 57 57 psFree(myRNG); 58 58 skip_end(); … … 63 63 { 64 64 psMemId id = psMemGetId(); 65 psRandom *myRNG = psRandomAlloc (100,SEED);66 ok(myRNG == NULL, "psRandomAlloc () refused to generate psRandom with unallowed type");65 psRandom *myRNG = psRandomAllocSpecific(100,SEED); 66 ok(myRNG == NULL, "psRandomAllocSpecific() refused to generate psRandom with unallowed type"); 67 67 psFree(myRNG); 68 68 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 72 72 { 73 73 psMemId id = psMemGetId(); 74 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS,-5);75 ok(myRNG != NULL, "psRandomAlloc () allows negative seed");74 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS,-5); 75 ok(myRNG != NULL, "psRandomAllocSpecific() allows negative seed"); 76 76 psFree(myRNG); 77 77 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 85 85 rans->n = rans->nalloc; 86 86 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 87 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);88 ok(myRNG != NULL, "psRandom struct was allocated properly"); 89 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAlloc () failed");87 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 88 ok(myRNG != NULL, "psRandom struct was allocated properly"); 89 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAllocSpecific() failed"); 90 90 91 91 // Initialize vector data with random number … … 125 125 rans->n = rans->nalloc; 126 126 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 127 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);128 ok(myRNG != NULL, "psRandom struct was allocated properly"); 129 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAlloc () failed");127 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 128 ok(myRNG != NULL, "psRandom struct was allocated properly"); 129 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAllocSpecific() failed"); 130 130 131 131 // Initialize vector with random data … … 167 167 rans->n = rans->nalloc; 168 168 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 169 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);170 ok(myRNG != NULL, "psRandom struct was allocated properly"); 171 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAlloc () failed");169 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 170 ok(myRNG != NULL, "psRandom struct was allocated properly"); 171 skip_start(myRNG == NULL, 2, "Skipping tests because psRandomAllocSpecific() failed"); 172 172 173 173 // Initialize vector with random data … … 210 210 rans02->n = rans02->nalloc; 211 211 212 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);213 ok(myRNG != NULL, "psRandom struct was allocated properly"); 214 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAlloc () failed");212 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 213 ok(myRNG != NULL, "psRandom struct was allocated properly"); 214 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAllocSpecific() failed"); 215 215 216 216 … … 252 252 if (0) { 253 253 psRandom *myRNG1 = NULL; 254 myRNG1 = psRandomAlloc (PS_RANDOM_TAUS, SEED);254 myRNG1 = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 255 255 // psLogSetDestination("dest:stderr"); 256 256 psLogSetDestination(0); … … 275 275 rans02->n = rans02->nalloc; 276 276 277 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);278 ok(myRNG != NULL, "psRandom struct was allocated properly"); 279 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAlloc () failed");277 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 278 ok(myRNG != NULL, "psRandom struct was allocated properly"); 279 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAllocSpecific() failed"); 280 280 281 281 … … 325 325 rans02->n = rans02->nalloc; 326 326 327 psRandom *myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);328 ok(myRNG != NULL, "psRandom struct was allocated properly"); 329 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAlloc () failed");327 psRandom *myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 328 ok(myRNG != NULL, "psRandom struct was allocated properly"); 329 skip_start(myRNG == NULL, 1, "Skipping tests because psRandomAllocSpecific() failed"); 330 330 331 331 // Initialize vectors with random data -
trunk/psLib/test/math/tap_psStats07.c
r12247 r23259 58 58 PS_ASSERT_INT_NONNEGATIVE(Npts, NULL); 59 59 60 // psRandom *r = psRandomAlloc (PS_RANDOM_TAUS, p_psRandomGetSystemSeed());61 psRandom *r = psRandomAlloc (PS_RANDOM_TAUS, PS_XXX_GAUSSIAN_SEED);60 // psRandom *r = psRandomAllocSpecific(PS_RANDOM_TAUS, p_psRandomGetSystemSeed()); 61 psRandom *r = psRandomAllocSpecific(PS_RANDOM_TAUS, PS_XXX_GAUSSIAN_SEED); 62 62 psVector* gauss = psVectorAlloc(Npts, PS_TYPE_F32); 63 63 for (unsigned int i = 0; i < Npts; i++) { -
trunk/psLib/test/math/tap_psStats09.c
r12783 r23259 52 52 srand(SEED); 53 53 54 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Random number generator; using known seed54 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Random number generator; using known seed 55 55 psVector *truth = psVectorAlloc(numData, PS_TYPE_F64); 56 56 for (long i = 0; i < numData; i++) { -
trunk/psLib/test/math/tap_psStatsTiming.c
r12513 r23259 20 20 21 21 // build a gauss-deviate vector (mean = 0.0, sigma = 1.0) for tests 22 psRandom *seed = psRandomAlloc (PS_RANDOM_TAUS, 0);22 psRandom *seed = psRandomAllocSpecific (PS_RANDOM_TAUS, 0); 23 23 psVector *rnd = psVectorAlloc (1000, PS_TYPE_F32); 24 24 for (int i = 0; i < rnd->n; i++) { -
trunk/psLib/test/math/tst_psMinimizeLMM.c
r11686 r23259 66 66 psBool testStatus = true; 67 67 68 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Random number generator; using known seed68 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Random number generator; using known seed 69 69 psMinimization *min = psMinimizationAlloc(NUM_ITERATIONS, ERR_TOL); 70 70 psArray *ordinates = psArrayAlloc(NUM_DATA_POINTS); -
trunk/psLib/test/math/tst_psPolyFit1D.c
r11686 r23259 101 101 xTruth->n = numData; 102 102 fTruth->n = numData; 103 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using a known seed103 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using a known seed 104 104 for (int i = 0; i < numData; i++) { 105 105 xTruth->data.F64[i] = (flags & TS00_X_NULL) ? i : 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tst_psPolyFit2D.c
r11686 r23259 100 100 yTruth->n = numData; 101 101 fTruth->n = numData; 102 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using an RNG with a known seed102 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using an RNG with a known seed 103 103 for (int i = 0; i < numData; i++) { 104 104 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tst_psPolyFit3D.c
r11686 r23259 103 103 zTruth->n = numData; 104 104 fTruth->n = numData; 105 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using known seed105 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using known seed 106 106 for (int i = 0; i < numData; i++) { 107 107 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tst_psPolyFit4D.c
r11686 r23259 124 124 tTruth->n = numData; 125 125 fTruth->n = numData; 126 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Using known seed126 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Using known seed 127 127 for (int i = 0; i < numData; i++) { 128 128 xTruth->data.F64[i] = 2.0*psRandomUniform(rng) - 1.0; -
trunk/psLib/test/math/tst_psRandom.c
r6484 r23259 3 3 work properly. 4 4 5 t00(): ensure that psRandom structs are properly allocated by psRandomAlloc ().5 t00(): ensure that psRandom structs are properly allocated by psRandomAllocSpecific(). 6 6 t01(): ensure that psRandomUniform() produces a sequence of numbers with 7 7 proper mean and stdev. … … 45 45 46 46 testDescription tests[] = { 47 {testRandomAlloc,000,"psRandomAlloc ",0,false},47 {testRandomAlloc,000,"psRandomAllocSpecific",0,false}, 48 48 {testRandomUniform,000,"psRandomUniform",0,false}, 49 49 {testRandomGaussian,000,"psRandomGaussian",0,false}, … … 70 70 71 71 // Valid type allocation 72 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);72 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 73 73 if (myRNG == NULL) { 74 74 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 85 85 // psLogSetDestination("file:seed_msglog1.txt"); 86 86 psLogSetDestination(fd1); 87 myRNG = psRandomAlloc (PS_RANDOM_TAUS, 0);87 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, 0); 88 88 // psLogSetDestination("dest:stderr"); 89 89 psLogSetDestination(2); … … 100 100 // Invalid type allocation 101 101 psLogMsg(__func__,PS_LOG_INFO,"Invalid type, should generate error message"); 102 myRNG = psRandomAlloc (100,SEED);102 myRNG = psRandomAllocSpecific(100,SEED); 103 103 if (myRNG != NULL) { 104 104 psError(PS_ERR_UNKNOWN,true,"Did not return NULL for invalid type"); … … 107 107 108 108 // Negative seed value 109 myRNG = psRandomAlloc (PS_RANDOM_TAUS,-5);109 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS,-5); 110 110 if(myRNG == NULL) { 111 111 psError(PS_ERR_UNKNOWN,true,"Did not return allocated psRandom"); … … 125 125 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 126 126 127 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);127 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 128 128 if (myRNG == NULL) { 129 129 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 171 171 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 172 172 173 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);173 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 174 174 if (myRNG == NULL) { 175 175 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 219 219 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); 220 220 221 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);221 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 222 222 if (myRNG == NULL) { 223 223 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 268 268 rans02->n = rans02->nalloc; 269 269 270 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);270 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 271 271 if (myRNG == NULL) { 272 272 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 302 302 303 303 psRandom *myRNG1 = NULL; 304 myRNG1 = psRandomAlloc (PS_RANDOM_TAUS, SEED);304 myRNG1 = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 305 305 // psLogSetDestination("dest:stderr"); 306 306 psLogSetDestination(0); … … 326 326 rans02->n = rans02->nalloc; 327 327 328 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);328 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 329 329 if (myRNG == NULL) { 330 330 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); … … 372 372 rans02->n = rans02->nalloc; 373 373 374 myRNG = psRandomAlloc (PS_RANDOM_TAUS, SEED);374 myRNG = psRandomAllocSpecific(PS_RANDOM_TAUS, SEED); 375 375 if (myRNG == NULL) { 376 376 psError(PS_ERR_UNKNOWN,true,"Could not allocate psRandom structure"); -
trunk/psLib/test/math/tst_psStats09.c
r11686 r23259 52 52 printPositiveTestHeader(stdout, "psMathUtils functions", "psVectorStats Clipped Stats Routine"); 53 53 54 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 1); // Random number generator; using known seed54 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 1); // Random number generator; using known seed 55 55 psVector *truth = psVectorAlloc(numData, PS_TYPE_F64); 56 56 truth->n = numData; -
trunk/psLib/test/mathtypes/tap_psVectorSelect.c
r18333 r23259 17 17 psVector *vector = psVectorAlloc(size, PS_TYPE_F32); 18 18 psVectorInit(vector, 0.0); 19 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 12345);19 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 12345); 20 20 for (long i = 0; i < numNonzero; i++) { 21 21 long index = psRandomUniform(rng) * size; … … 52 52 psVector *vector = psVectorAlloc(size, PS_TYPE_F32); 53 53 psVectorInit(vector, 0.0); 54 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 12345);54 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 12345); 55 55 for (long i = 0; i < numNonzero; i++) { 56 56 long index = psRandomUniform(rng) * size; -
trunk/psLib/test/types/tap_psTree.c
r18145 r23259 16 16 psVector *y = psVectorAlloc(NUM, PS_TYPE_F64); 17 17 18 psRandom *rng = psRandomAlloc (PS_RANDOM_TAUS, 0);18 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 0); 19 19 for (int i = 0; i < NUM; i++) { 20 20 x->data.F64[i] = 2.0 * psRandomUniform(rng) - 1.0;
Note:
See TracChangeset
for help on using the changeset viewer.
