@@ -111,15 +111,15 @@ typedef std::chrono::high_resolution_clock::time_point TimeVar;
111
111
TEST(ProbDistributionsNegBinomial2LogGLM, glm_matches_neg_binomial_2_log_speed)
112
112
{ for (size_t exponent = 7; exponent < 10; exponent++) { const int R = 10000;
113
113
const int C = std::pow(3, exponent);
114
-
114
+
115
115
Matrix<int,Dynamic,1> n(R, 1);
116
116
for (size_t i = 0; i < R; i++) {
117
117
n[i] = rand()%2;
118
118
}
119
-
119
+
120
120
int T1 = 0;
121
121
int T2 = 0;
122
-
122
+
123
123
for (size_t testnumber = 0; testnumber < 30; testnumber++){
124
124
Matrix<double, Dynamic, Dynamic> xreal = Matrix<double, Dynamic,
125
125
Dynamic>::Random(R, C); Matrix<double, Dynamic, 1> betareal = Matrix<double,
@@ -128,12 +128,12 @@ Dynamic, Dynamic>::Random(C, 1); Matrix<double, 1, 1> alphareal = Matrix<double,
128
128
1>::Ones() * alphareal; Matrix<double, Dynamic, 1> phireal = Matrix<double,
129
129
Dynamic, Dynamic>::Random(R, 1) + Matrix<double, Dynamic, 1>::Ones(R, 1); // We
130
130
want phireal to be positive.
131
-
131
+
132
132
Matrix<var, Dynamic, 1> beta = betareal;
133
133
Matrix<var, Dynamic, 1> phi = phireal;
134
134
Matrix<var, Dynamic, 1> theta(R, 1);
135
135
136
-
136
+
137
137
TimeVar t1 = timeNow();
138
138
theta = (xreal * beta) + alpharealvec;
139
139
var lp = stan::math::neg_binomial_2_log_lpmf(n, theta, phi);
@@ -145,7 +145,7 @@ want phireal to be positive.
145
145
146
146
Matrix<var, Dynamic, 1> beta2 = betareal;
147
147
Matrix<var, Dynamic, 1> phi2 = phireal;
148
-
148
+
149
149
TimeVar t3 = timeNow();
150
150
var lp2 = stan::math::neg_binomial_2_log_glm_lpmf(n, xreal, beta2,
151
151
alphareal[0], phi2); lp2.grad(); TimeVar t4 = timeNow();
@@ -154,7 +154,7 @@ alphareal[0], phi2); lp2.grad(); TimeVar t4 = timeNow();
154
154
T2 += duration(t4 - t3);
155
155
156
156
}
157
-
157
+
158
158
std::cout << "Existing Primitives:" << std::endl << T1 << std::endl << "New
159
159
Primitives:" << std::endl << T2 << std::endl;
160
160
}
0 commit comments