The R Project SVN R

Rev

Rev 77685 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 77685 Rev 90186
Line 24... Line 24...
24
 
24
 
25
#include "nmath.h"
25
#include "nmath.h"
26
 
26
 
27
double rweibull(double shape, double scale)
27
double rweibull(double shape, double scale)
28
{
28
{
29
    if (!R_FINITE(shape) || !R_FINITE(scale) || shape <= 0. || scale <= 0.) {
29
    if (!R_FINITE(shape) || !R_FINITE(scale) || shape < 0. || scale <= 0.) {
30
	if(scale == 0.) return 0.;
30
	if(scale == 0.) return 0.;
31
	/* else */
31
	/* else */
32
	ML_WARN_return_NAN;
32
	ML_WARN_return_NAN;
33
    }
33
    }
34
 
34
 
-
 
35
    if (shape == 0.)
-
 
36
	return -log(unif_rand()) <= 1.0 ? 0. : ML_POSINF;
-
 
37
 
35
    return scale * pow(-log(unif_rand()), 1.0 / shape);
38
    return scale * pow(-log(unif_rand()), 1.0 / shape);
36
}
39
}