Skip to content

Commit a148cab

Browse files
committed
initialize variables via memset
1 parent 6517c8f commit a148cab

14 files changed

Lines changed: 141 additions & 8 deletions

src/glm_deterministic.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,19 @@ SEXP glm_deterministic(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
5151
SEXP sampleprobs = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
5252
SEXP Q = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
5353
SEXP Rintercept = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
54-
54+
55+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
56+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
57+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
58+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels);
59+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
60+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
61+
memset(REAL(Q), 0.0, sizeof(double) *nModels);
62+
memset(REAL(Rintercept), 0.0, sizeof(double) *nModels);
63+
memset(REAL(deviance), 0.0, sizeof(double) *nModels);
64+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
65+
66+
;
5567
double *probs,shrinkage_m,logmargy;
5668

5769
//get dimsensions of all variables

src/glm_mcmc.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,30 @@ SEXP glm_mcmc(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
6464
SET_VECTOR_ELT(ANS, 1, modelspace);
6565
SET_STRING_ELT(ANS_names, 1, mkChar("which"));
6666

67+
/* initialize variables */
68+
6769
SEXP logmarg = allocVector(REALSXP, nModels);
70+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels);
6871
SET_VECTOR_ELT(ANS, 2, logmarg);
6972
SET_STRING_ELT(ANS_names, 2, mkChar("logmarg"));
7073

7174
SEXP modelprobs = allocVector(REALSXP, nModels);
75+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
7276
SET_VECTOR_ELT(ANS, 3, modelprobs);
7377
SET_STRING_ELT(ANS_names, 3, mkChar("postprobs"));
7478

7579
SEXP priorprobs = allocVector(REALSXP, nModels);
80+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
7681
SET_VECTOR_ELT(ANS, 4, priorprobs);
7782
SET_STRING_ELT(ANS_names, 4, mkChar("priorprobs"));
7883

7984
SEXP sampleprobs = allocVector(REALSXP, nModels);
85+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
8086
SET_VECTOR_ELT(ANS, 5, sampleprobs);
8187
SET_STRING_ELT(ANS_names, 5, mkChar("sampleprobs"));
8288

8389
SEXP deviance = allocVector(REALSXP, nModels);
90+
memset(REAL(deviance), 0.0, sizeof(double) *nModels);
8491
SET_VECTOR_ELT(ANS, 6, deviance);
8592
SET_STRING_ELT(ANS_names, 6, mkChar("deviance"));
8693

@@ -93,14 +100,17 @@ SEXP glm_mcmc(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
93100
SET_STRING_ELT(ANS_names, 8, mkChar("mle.se"));
94101

95102
SEXP shrinkage = allocVector(REALSXP, nModels);
103+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
96104
SET_VECTOR_ELT(ANS, 9, shrinkage);
97105
SET_STRING_ELT(ANS_names, 9, mkChar("shrinkage"));
98106

99107
SEXP modeldim = allocVector(INTSXP, nModels);
108+
memset(INTEGER(modeldim), 0, nModels * sizeof(int));
100109
SET_VECTOR_ELT(ANS, 10, modeldim);
101110
SET_STRING_ELT(ANS_names, 10, mkChar("size"));
102111

103112
SEXP R2 = allocVector(REALSXP, nModels);
113+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
104114
SET_VECTOR_ELT(ANS, 11, R2);
105115
SET_STRING_ELT(ANS_names, 11, mkChar("R2"));
106116

src/glm_mcmc_grow.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,27 @@ SEXP glm_mcmc_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
3838
SET_STRING_ELT(ANS_names, 1, mkChar("which"));
3939

4040
SEXP logmarg = allocVector(REALSXP, nModels);
41+
memset(REAL(logmarg), 0, nModels * sizeof(double));
4142
SET_VECTOR_ELT(ANS, 2, logmarg);
4243
SET_STRING_ELT(ANS_names, 2, mkChar("logmarg"));
4344

4445
SEXP modelprobs = allocVector(REALSXP, nModels);
46+
memset(REAL(modelprobs), 0, nModels * sizeof(double));
4547
SET_VECTOR_ELT(ANS, 3, modelprobs);
4648
SET_STRING_ELT(ANS_names, 3, mkChar("postprobs"));
4749

4850
SEXP priorprobs = allocVector(REALSXP, nModels);
51+
memset(REAL(priorprobs), 0, nModels * sizeof(double));
4952
SET_VECTOR_ELT(ANS, 4, priorprobs);
5053
SET_STRING_ELT(ANS_names, 4, mkChar("priorprobs"));
5154

5255
SEXP sampleprobs = allocVector(REALSXP, nModels);
56+
memset(REAL(sampleprobs), 0, nModels * sizeof(double));
5357
SET_VECTOR_ELT(ANS, 5, sampleprobs);
5458
SET_STRING_ELT(ANS_names, 5, mkChar("sampleprobs"));
5559

5660
SEXP deviance = allocVector(REALSXP, nModels);
61+
memset(REAL(deviance), 0, nModels * sizeof(double));
5762
SET_VECTOR_ELT(ANS, 6, deviance);
5863
SET_STRING_ELT(ANS_names, 6, mkChar("deviance"));
5964

@@ -66,6 +71,7 @@ SEXP glm_mcmc_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
6671
SET_STRING_ELT(ANS_names, 8, mkChar("mle.se"));
6772

6873
SEXP shrinkage = allocVector(REALSXP, nModels);
74+
memset(REAL(shrinkage), 0, nModels * sizeof(double));
6975
SET_VECTOR_ELT(ANS, 9, shrinkage);
7076
SET_STRING_ELT(ANS_names, 9, mkChar("shrinkage"));
7177

@@ -75,6 +81,7 @@ SEXP glm_mcmc_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
7581
SET_STRING_ELT(ANS_names, 10, mkChar("size"));
7682

7783
SEXP R2 = allocVector(REALSXP, nModels);
84+
memset(REAL(R2), 0, nModels * sizeof(double));
7885
SET_VECTOR_ELT(ANS, 11, R2);
7986
SET_STRING_ELT(ANS_names, 11, mkChar("R2"));
8087

@@ -85,6 +92,7 @@ SEXP glm_mcmc_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
8592
SET_STRING_ELT(ANS_names, 12, mkChar("freq"));
8693

8794
SEXP MCMCprobs= duplicate(Rprobinit);
95+
memset(REAL(MCMCprobs), 0, nModels * sizeof(double));
8896
SET_VECTOR_ELT(ANS, 13, MCMCprobs);
8997
SET_STRING_ELT(ANS_names, 13, mkChar("probne0.MCMC"));
9098

@@ -93,10 +101,12 @@ SEXP glm_mcmc_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
93101
SET_STRING_ELT(ANS_names, 14, mkChar("n.Unique"));
94102

95103
SEXP Q = allocVector(REALSXP, nModels);
104+
memset(REAL(Q), 0, nModels * sizeof(double));
96105
SET_VECTOR_ELT(ANS, 15, Q);
97106
SET_STRING_ELT(ANS_names, 15, mkChar("Q"));
98107

99108
SEXP Rintercept = allocVector(REALSXP, nModels);
109+
memset(REAL(Rintercept), 0, nModels * sizeof(double));
100110
SET_VECTOR_ELT(ANS, 16, Rintercept);
101111
SET_STRING_ELT(ANS_names, 16, mkChar("intercept"));
102112

src/glm_mcmcbas.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ SEXP glm_mcmcbas(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
4141

4242
SEXP NumUnique = PROTECT(allocVector(INTSXP, 1)); ++nProtected;
4343

44+
/* initialize variables */
45+
46+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
47+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
48+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
49+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels);
50+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
51+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
4452

4553

4654
double *probs, MH=0.0, prior_m=1.0,shrinkage_m, logmargy, postold, postnew;

src/glm_sampleworep.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@ SEXP glm_sampleworep(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
8686

8787
setAttrib(ANS, R_NamesSymbol, ANS_names);
8888

89+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
90+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
91+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
92+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels);
93+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
94+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
95+
memset(REAL(Q), 0.0, sizeof(double) *nModels);
96+
memset(REAL(Rintercept), 0.0, sizeof(double) *nModels);
97+
memset(REAL(deviance), 0.0, sizeof(double) *nModels);
98+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
99+
100+
89101
/*
90102
SEXP ANS = PROTECT(allocVector(VECSXP, 14)); ++nProtected;
91103
SEXP ANS_names = PROTECT(allocVector(STRSXP, 14)); ++nProtected;

src/glm_sampleworep_grow.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ SEXP glm_sampleworep_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
6464
SET_STRING_ELT(ANS_names, 9, mkChar("shrinkage"));
6565

6666
SEXP modeldim = allocVector(INTSXP, nModels0);
67-
memset(INTEGER(modeldim), 0, nModels0 * sizeof(int));
6867
SET_VECTOR_ELT(ANS, 10, modeldim);
6968
SET_STRING_ELT(ANS_names, 10, mkChar("size"));
7069

@@ -86,6 +85,18 @@ SEXP glm_sampleworep_grow(SEXP Y, SEXP X, SEXP Roffset, SEXP Rweights,
8685

8786
setAttrib(ANS, R_NamesSymbol, ANS_names);
8887

88+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels0);
89+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels0);
90+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels0);
91+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels0);
92+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels0);
93+
memset(REAL(R2), 0.0, sizeof(double) *nModels0);
94+
memset(REAL(Q), 0.0, sizeof(double) *nModels0);
95+
memset(REAL(Rintercept), 0.0, sizeof(double) *nModels0);
96+
memset(REAL(deviance), 0.0, sizeof(double) *nModels0);
97+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels0);
98+
99+
89100
// Rprintf("Start Computing\n");
90101
double *probs,logmargy, shrinkage_m;
91102
int i;

src/lm_amcmc.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ SEXP amcmc(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP Rmodeldim,
8080

8181
SEXP Rcounts = allocVector(INTSXP, nModels);
8282
counts = INTEGER(Rcounts);
83-
memset(counts, 0, nModels * sizeof(int));
8483
SET_VECTOR_ELT(ANS, 13, Rcounts);
8584
SET_STRING_ELT(ANS_names, 13, mkChar("freq"));
8685

@@ -94,6 +93,18 @@ SEXP amcmc(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP Rmodeldim,
9493

9594
setAttrib(ANS, R_NamesSymbol, ANS_names);
9695

96+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
97+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
98+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
99+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
100+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
101+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
102+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
103+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
104+
memset(counts, 0, sizeof(int) *nModels);
105+
memset(REAL(mse), 0.0, sizeof(double) *nModels);
106+
memset(INTEGER(rank), 0, sizeof(int) *nModels);
107+
97108

98109
/*
99110
SEXP ANS = PROTECT(allocVector(VECSXP, 16)); ++nProtected;

src/lm_amcmc_growable.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ SEXP amcmc_grow(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP RnModels,
8282

8383
SEXP Rcounts = allocVector(INTSXP, nModels);
8484
counts = INTEGER(Rcounts);
85-
memset(counts, 0, nModels * sizeof(int));
8685
SET_VECTOR_ELT(ANS, 13, Rcounts);
8786
SET_STRING_ELT(ANS_names, 13, mkChar("freq"));
8887

@@ -94,6 +93,19 @@ SEXP amcmc_grow(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP RnModels,
9493
SET_VECTOR_ELT(ANS, 15, NumUnique);
9594
SET_STRING_ELT(ANS_names, 15, mkChar("n.Unique"));
9695

96+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
97+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
98+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
99+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
100+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
101+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
102+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
103+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
104+
memset(counts, 0, sizeof(int) *nModels);
105+
memset(REAL(mse), 0.0, sizeof(double) *nModels);
106+
memset(INTEGER(rank), 0, sizeof(int) *nModels);
107+
108+
97109
setAttrib(ANS, R_NamesSymbol, ANS_names);
98110

99111
// Rprintf("Done Allocating Space for %d Models AMCMC\n", nModels) ;

src/lm_deterministic.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ SEXP deterministic(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit,
3131
SEXP priorprobs = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
3232
SEXP logmarg = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
3333
SEXP sampleprobs = PROTECT(allocVector(REALSXP, nModels)); ++nProtected;
34+
35+
memset(REAL(logmarg), 0.0, sizeof(double) *nModels);
36+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
37+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
38+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
39+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
40+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
41+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
42+
memset(REAL(mse), 0.0, sizeof(double) *nModels);
43+
memset(INTEGER(rank), 0, sizeof(int) *nModels);
3444

3545
SEXP Rse_m, Rcoef_m, Rmodel_m;
3646
double *Xwork, *Ywork, *wts, *coefficients,*probs,

src/lm_mcmc.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ SEXP mcmc(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP Rmodeldim,
9898

9999
SEXP Rcounts = allocVector(INTSXP, nModels);
100100
counts = INTEGER(Rcounts);
101-
memset(counts, 0, nModels * sizeof(int));
102101
SET_VECTOR_ELT(ANS, 13, Rcounts);
103102
SET_STRING_ELT(ANS_names, 13, mkChar("freq"));
104103

@@ -112,7 +111,18 @@ SEXP mcmc(SEXP Y, SEXP X, SEXP Rweights, SEXP Rprobinit, SEXP Rmodeldim,
112111

113112
setAttrib(ANS, R_NamesSymbol, ANS_names);
114113

115-
114+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
115+
memset(REAL(modelprobs), 0.0, sizeof(double) *nModels);
116+
memset(REAL(priorprobs), 0.0, sizeof(double) *nModels);
117+
memset(REAL(shrinkage), 0.0, sizeof(double) *nModels);
118+
memset(REAL(R2), 0.0, sizeof(double) *nModels);
119+
memset(REAL(Rlogmarg), 0.0, sizeof(double) *nModels);
120+
memset(REAL(sampleprobs), 0.0, sizeof(double) *nModels);
121+
memset(INTEGER(modeldim), 0, sizeof(int) *nModels);
122+
memset(counts, 0, sizeof(int) *nModels);
123+
memset(REAL(mse), 0.0, sizeof(double) *nModels);
124+
memset(INTEGER(rank), 0, sizeof(int) *nModels);
125+
116126
double *Xwork, *Ywork,*wts, *probs, shrinkage_m,
117127
mse_m, MH=0.0, prior_m=1.0,
118128
R2_m, RSquareFull, logmarg_m, postold, postnew;

0 commit comments

Comments
 (0)