29 vector[M] indices = linspaced_vector(M, 1, M);
30 real factor = alpha * sqrt(sqrt(2 * pi()) * rho);
31 real exponent = -0.25 * (rho * pi() / 2 / L)^2;
32 return factor * exp(exponent * square(indices));
39 vector[M] indices = linspaced_vector(M, 1, M);
40 return square(pi() / (2 * L) * indices);
48 return alpha * sqrt(2 ./ denom);
55 real factor = 2 * alpha * (sqrt(3) / rho)^1.5;
57 return factor ./ denom;
64 real factor = 16 * pow(sqrt(5) / rho, 5);
65 vector[M] denom = 3 * pow(5 / square(rho) +
matern_indices(M, L), 3);
66 return alpha * sqrt(factor ./ denom);
73 real a = inv_square(rho);
74 vector[M] indices = linspaced_vector(M, 1, M);
77 (log(2) - a + to_vector(log_modified_bessel_first_kind(indices, a)))
79 return append_row(q, q);
95vector
update_gp(matrix PHI,
int M, real L, real alpha,
96 real rho, vector eta,
int type, real nu) {
97 vector[type == 1 ? 2 * M : M] diagSPD;
100 }
else if (type == 1) {
102 }
else if (type == 2) {
105 }
else if (nu == 1.5) {
107 }
else if (nu == 2.5) {
110 reject(
"nu must be one of 0.5, 1.5, or 2.5; found nu=", nu);
113 return PHI * (diagSPD .* eta);
162 int M, real L,
int type, real nu,
int d,
163 matrix PHI, matrix eta,
164 array[] real rho, array[] real alpha,
165 array[]
int flat_idx) {
166 if (!present)
return base;
171 PHI, M, L, alpha[1], rho[1], eta[, g], type, nu
179 vector[T] col = rep_vector(0.0, T);
182 col = cumulative_sum(col);
187 return base + to_vector(gp_eps)[flat_idx];
vector diagSPD_EQ(real alpha, real rho, real L, int M)
vector apply_gp_term(vector base, int present, int T, int G, int M, real L, int type, real nu, int d, matrix PHI, matrix eta, array[] real rho, array[] real alpha, array[] int flat_idx)
vector diagSPD_Periodic(real alpha, real rho, int M)
vector diagSPD_Matern12(real alpha, real rho, real L, int M)
vector update_gp(matrix PHI, int M, real L, real alpha, real rho, vector eta, int type, real nu)
vector diagSPD_Matern52(real alpha, real rho, real L, int M)
vector diagSPD_Matern32(real alpha, real rho, real L, int M)
vector matern_indices(int M, real L)