epinowcast
Loading...
Searching...
No Matches
expgrowth.stan
Go to the documentation of this file.
1
10real expgrowth_pdf(real x, real min, real max, real r) {
11 if (x < min || x > max) {
12 return 0;
13 }
14 if (abs(r) < 1e-10) {
15 return 1 / (max - min);
16 }
17 return r * exp(r * (x - min)) / (exp(r * max) - exp(r * min));
18}
19
29real expgrowth_lpdf(real x, real min, real max, real r) {
30 if (x < min || x > max) {
31 return negative_infinity();
32 }
33 if (abs(r) < 1e-10) {
34 return -log(max - min);
35 }
36 return log(r) + r * (x - min) - log(exp(r * max) - exp(r * min));
37}
38
48real expgrowth_cdf(real x, real min, real max, real r) {
49 if (x < min) {
50 return 0;
51 }
52 if (x > max) {
53 return 1;
54 }
55 if (abs(r) < 1e-10) {
56 return (x - min) / (max - min);
57 }
58 return (exp(r * (x - min)) - exp(r * min)) / (exp(r * max) - exp(r * min));
59}
60
70real expgrowth_lcdf(real x, real min, real max, real r) {
71 if (x < min) {
72 return negative_infinity();
73 }
74 if (x > max) {
75 return 0;
76 }
77 return log(expgrowth_cdf(x | min, max, r));
78}
79
88real expgrowth_rng(real min, real max, real r) {
89 real u = uniform_rng(0, 1);
90 if (abs(r) < 1e-10) {
91 return min + u * (max - min);
92 }
93 return min + log(u * (exp(r * max) - exp(r * min)) + exp(r * min)) / r;
94}
real expgrowth_lpdf(real x, real min, real max, real r)
real expgrowth_pdf(real x, real min, real max, real r)
real expgrowth_cdf(real x, real min, real max, real r)
real expgrowth_lcdf(real x, real min, real max, real r)
real expgrowth_rng(real min, real max, real r)