IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3005


Ignore:
Timestamp:
Jan 14, 2005, 2:45:25 PM (22 years ago)
Author:
evanalst
Message:

Updated psRandomReset and other functions to check for NULL psRandom variable.

Location:
trunk/psLib/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/dataManip/psDataManipErrors.dat

    r2671 r3005  
    3939#
    4040psRandom_UNKNOWN_RANDFOM_NUMBER_GENERATOR_TYPE Unknown Random Number Generator Type
     41psRandom_NULL_RANDOM_VAR               Random variable specified is NULL.
    4142#
    4243psMatrix_COUNT_DIFFERS                 Number of elements inconsistent, %d vs %d.  Number of elements must match.
  • trunk/psLib/src/dataManip/psRandom.c

    r3001 r3005  
    1010*  @author GLG, MHPCC
    1111*
    12 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    13 *  @date $Date: 2005-01-14 23:34:46 $
     12*  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     13*  @date $Date: 2005-01-15 00:45:25 $
    1414*
    1515*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    5050    }
    5151
     52    // Send log message of the system seed value used
     53    psLogMsg(__func__,PS_LOG_INFO,"System random seed value used  seed = %llX hex",seedVal);
     54
    5255    return seedVal;
    5356}
     
    8184                   psU64 seed)
    8285{
    83     gsl_rng_set(rand->gsl, seed);
     86    // Check null psRandom
     87    if(rand==NULL) {
     88        psError(PS_ERR_UNEXPECTED_NULL,
     89                true,
     90                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     91    } else {
     92        // Check seed value to see if system seed should be used
     93        if(seed == 0) {
     94            gsl_rng_set(rand->gsl,p_psRandomGetSystemSeed());
     95        } else {
     96            gsl_rng_set(rand->gsl, seed);
     97        }
     98    }
    8499}
    85100
    86101psF64 psRandomUniform(const psRandom *r)
    87102{
    88     return(gsl_rng_uniform(r->gsl));
     103    // Check null psRandom variable
     104    if(r == NULL) {
     105        psError(PS_ERR_UNEXPECTED_NULL,
     106                true,
     107                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     108        return(0);
     109    } else {
     110        return(gsl_rng_uniform(r->gsl));
     111    }
    89112}
    90113
    91114psF64 psRandomGaussian(const psRandom *r)
    92115{
    93     // XXX: What should sigma be?
    94     return(gsl_ran_gaussian(r->gsl, 1.0));
     116    // Check null psRandom variable
     117    if(r == NULL) {
     118        psError(PS_ERR_UNEXPECTED_NULL,
     119                true,
     120                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     121        return(0);
     122    } else {
     123        // XXX: What should sigma be?
     124        return(gsl_ran_gaussian(r->gsl, 1.0));
     125    }
    95126}
    96127
    97128psF64 psRandomPoisson(const psRandom *r, psF64 mean)
    98129{
    99     return((psF64) gsl_ran_poisson(r->gsl, mean));
     130    // Check null psRandom variable
     131    if(r == NULL) {
     132        psError(PS_ERR_UNEXPECTED_NULL,
     133                true,
     134                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     135        return(0);
     136    } else {
     137        return((psF64) gsl_ran_poisson(r->gsl, mean));
     138    }
    100139}
  • trunk/psLib/src/math/psRandom.c

    r3001 r3005  
    1010*  @author GLG, MHPCC
    1111*
    12 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    13 *  @date $Date: 2005-01-14 23:34:46 $
     12*  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     13*  @date $Date: 2005-01-15 00:45:25 $
    1414*
    1515*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    5050    }
    5151
     52    // Send log message of the system seed value used
     53    psLogMsg(__func__,PS_LOG_INFO,"System random seed value used  seed = %llX hex",seedVal);
     54
    5255    return seedVal;
    5356}
     
    8184                   psU64 seed)
    8285{
    83     gsl_rng_set(rand->gsl, seed);
     86    // Check null psRandom
     87    if(rand==NULL) {
     88        psError(PS_ERR_UNEXPECTED_NULL,
     89                true,
     90                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     91    } else {
     92        // Check seed value to see if system seed should be used
     93        if(seed == 0) {
     94            gsl_rng_set(rand->gsl,p_psRandomGetSystemSeed());
     95        } else {
     96            gsl_rng_set(rand->gsl, seed);
     97        }
     98    }
    8499}
    85100
    86101psF64 psRandomUniform(const psRandom *r)
    87102{
    88     return(gsl_rng_uniform(r->gsl));
     103    // Check null psRandom variable
     104    if(r == NULL) {
     105        psError(PS_ERR_UNEXPECTED_NULL,
     106                true,
     107                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     108        return(0);
     109    } else {
     110        return(gsl_rng_uniform(r->gsl));
     111    }
    89112}
    90113
    91114psF64 psRandomGaussian(const psRandom *r)
    92115{
    93     // XXX: What should sigma be?
    94     return(gsl_ran_gaussian(r->gsl, 1.0));
     116    // Check null psRandom variable
     117    if(r == NULL) {
     118        psError(PS_ERR_UNEXPECTED_NULL,
     119                true,
     120                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     121        return(0);
     122    } else {
     123        // XXX: What should sigma be?
     124        return(gsl_ran_gaussian(r->gsl, 1.0));
     125    }
    95126}
    96127
    97128psF64 psRandomPoisson(const psRandom *r, psF64 mean)
    98129{
    99     return((psF64) gsl_ran_poisson(r->gsl, mean));
     130    // Check null psRandom variable
     131    if(r == NULL) {
     132        psError(PS_ERR_UNEXPECTED_NULL,
     133                true,
     134                PS_ERRORTEXT_psRandom_NULL_RANDOM_VAR);
     135        return(0);
     136    } else {
     137        return((psF64) gsl_ran_poisson(r->gsl, mean));
     138    }
    100139}
Note: See TracChangeset for help on using the changeset viewer.