aboutsummaryrefslogtreecommitdiff
path: root/src/gensvm_base.c
diff options
context:
space:
mode:
authorGertjan van den Burg <burg@ese.eur.nl>2016-11-07 14:34:23 +0100
committerGertjan van den Burg <burg@ese.eur.nl>2016-11-07 14:34:23 +0100
commit67acac80d920767585b5581a1d0a09572787a351 (patch)
tree74e22f192def7fba4092643009e3a348097220d5 /src/gensvm_base.c
parentprepare for gridsearch unit testing (diff)
downloadgensvm-67acac80d920767585b5581a1d0a09572787a351.tar.gz
gensvm-67acac80d920767585b5581a1d0a09572787a351.zip
compute ZAZ in blocks to increase numerical precision
Diffstat (limited to 'src/gensvm_base.c')
-rw-r--r--src/gensvm_base.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gensvm_base.c b/src/gensvm_base.c
index 3c62eb0..c9f2c0e 100644
--- a/src/gensvm_base.c
+++ b/src/gensvm_base.c
@@ -250,6 +250,7 @@ struct GenWork *gensvm_init_work(struct GenModel *model)
work->ZB = Calloc(double, (m+1)*(K-1)),
work->ZBc = Calloc(double, (m+1)*(K-1)),
work->ZAZ = Calloc(double, (m+1)*(m+1)),
+ work->tmpZAZ = Calloc(double, (m+1)*(m+1)),
work->ZV = Calloc(double, n*(K-1));
work->beta = Calloc(double, K-1);
@@ -272,6 +273,7 @@ void gensvm_free_work(struct GenWork *work)
free(work->ZB);
free(work->ZBc);
free(work->ZAZ);
+ free(work->tmpZAZ);
free(work->ZV);
free(work->beta);
free(work);
@@ -300,6 +302,7 @@ void gensvm_reset_work(struct GenWork *work)
Memset(work->ZB, double, (m+1)*(K-1)),
Memset(work->ZBc, double, (m+1)*(K-1)),
Memset(work->ZAZ, double, (m+1)*(m+1)),
+ Memset(work->tmpZAZ, double, (m+1)*(m+1)),
Memset(work->ZV, double, n*(K-1));
Memset(work->beta, double, K-1);
}