From d94b00b8d019bb2fda05366a2e86505fff13dbe3 Mon Sep 17 00:00:00 2001 From: Jason Stover Date: Wed, 5 Jul 2006 23:54:36 +0000 Subject: [PATCH] added new initialization function --- src/math/ts/ChangeLog | 4 ++++ src/math/ts/innovations.c | 36 +++++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/math/ts/ChangeLog b/src/math/ts/ChangeLog index 353b94e7..1ebd8d2a 100644 --- a/src/math/ts/ChangeLog +++ b/src/math/ts/ChangeLog @@ -1,3 +1,7 @@ +2006-07-05 Jason Stover + + * innovations.c (innovations_struct_init): New function. + 2006-07-03 Jason Stover * innovations.c (init_theta): Fixed subscripts. diff --git a/src/math/ts/innovations.c b/src/math/ts/innovations.c index 3921ea1c..4fc48c57 100644 --- a/src/math/ts/innovations.c +++ b/src/math/ts/innovations.c @@ -170,7 +170,6 @@ innovations_update_coeff (double **theta, struct innovations_estimate *est, size_t i; size_t j; size_t k; - double v; for (i = 0; i < max_lag; i++) { @@ -195,7 +194,7 @@ get_coef (const gsl_matrix *data, theta = xnmalloc (max_lag, sizeof (*theta)); for (i = 0; i < max_lag; i++) { - theta[i] = xnmalloc (i + 1, sizeof (**(theta + i))); + theta[i] = xnmalloc (max_lag, sizeof (**(theta + i))); } for (n = 0; n < data->size2; n++) @@ -236,30 +235,37 @@ get_coef (const gsl_matrix *data, free (theta); } +static void +innovations_struct_init (struct innovations_estimate *est, size_t lag) +{ + size_t j; + + est->mean = 0.0; + est->variance = 0.0; + est->cov = xnmalloc (lag, sizeof (*est->cov)); + est->scale = xnmalloc (lag, sizeof (*est->scale)); + est->coeff = xnmalloc (lag, sizeof (*est->coeff)); + est->max_lag = (double) lag; + /* COV does not the variance (i.e., the lag 0 covariance). So COV[0] + holds the lag 1 covariance, COV[i] holds the lag i+1 covariance. */ + for (j = 0; j < lag; j++) + { + est->coeff[j] = xmalloc (sizeof (*(est->coeff[j]))); + } +} + struct innovations_estimate ** pspp_innovations (const gsl_matrix *data, size_t lag) { struct innovations_estimate **est; size_t i; - size_t j; est = xnmalloc (data->size2, sizeof *est); for (i = 0; i < data->size2; i++) { est[i] = xmalloc (sizeof *est[i]); /* est[i]->variable = vars[i]; */ - est[i]->mean = 0.0; - est[i]->variance = 0.0; - /* COV does not the variance (i.e., the lag 0 covariance). So COV[0] - holds the lag 1 covariance, COV[i] holds the lag i+1 covariance. */ - est[i]->cov = xnmalloc (lag, sizeof (*est[i]->cov)); - est[i]->scale = xnmalloc (lag, sizeof (*est[i]->scale)); - est[i]->coeff = xnmalloc (lag, sizeof (*est[i]->coeff)); - est[i]->max_lag = (double) lag; - for (j = 0; j < lag; j++) - { - est[i]->coeff[j] = xmalloc (sizeof (*(est[i]->coeff + j))); - } + innovations_struct_init (est[i], lag); } get_mean_variance (data, est); -- 2.30.2