From a0e00c7b6f77aab92d08772ca1a343d4ee6195b2 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Thu, 31 Jul 2014 21:36:53 +0200 Subject: unroll some matrix functions for safety with macros --- src/crossval.c | 18 ++++++++++-------- src/libMSVMMaj.c | 5 +++-- src/msvmmaj_train.c | 28 +++++++++++----------------- 3 files changed, 24 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/crossval.c b/src/crossval.c index cbbad96..1b5a592 100644 --- a/src/crossval.c +++ b/src/crossval.c @@ -95,6 +95,8 @@ void msvmmaj_get_tt_split(struct MajData *full_data, struct MajData *train_data, long m = full_data->m; long K = full_data->K; + double value; + test_n = 0; for (i=0; iy[k] = full_data->y[i]; - for (j=0; jRAW, m+1, k, j, - matrix_get(full_data->RAW, m+1, - i, j)); + for (j=0; jRAW, m+1, i, j); + matrix_set(test_data->RAW, m+1, k, j, value); + } k++; } else { train_data->y[l] = full_data->y[i]; - for (j=0; jRAW, m+1, l, j, - matrix_get(full_data->RAW, m+1, - i, j)); + for (j=0; jRAW, m+1, i, j); + matrix_set(train_data->RAW, m+1, l, j, value); + } l++; } } diff --git a/src/libMSVMMaj.c b/src/libMSVMMaj.c index 488b76d..df422c0 100644 --- a/src/libMSVMMaj.c +++ b/src/libMSVMMaj.c @@ -265,6 +265,7 @@ void msvmmaj_seed_model_V(struct MajModel *from_model, void msvmmaj_step_doubling(struct MajModel *model) { long i, j; + double value; long m = model->m; long K = model->K; @@ -272,8 +273,8 @@ void msvmmaj_step_doubling(struct MajModel *model) for (i=0; iV, K-1, i, j, 2.0); - matrix_add(model->V, K-1, i, j, - -matrix_get(model->Vbar, K-1, i, j)); + value = - matrix_get(model->Vbar, K-1, i, j); + matrix_add(model->V, K-1, i, j, value); } } } diff --git a/src/msvmmaj_train.c b/src/msvmmaj_train.c index 71a24df..09b00ee 100644 --- a/src/msvmmaj_train.c +++ b/src/msvmmaj_train.c @@ -46,7 +46,7 @@ void msvmmaj_optimize(struct MajModel *model, struct MajData *data) { long i, j, it = 0; - double L, Lbar; + double L, Lbar, value; long n = model->n; long m = model->m; @@ -105,10 +105,12 @@ void msvmmaj_optimize(struct MajModel *model, struct MajData *data) for (i=0; it[i] = matrix_get(model->V, K-1, 0, i); - for (i=1; iW, K-1, i-1, j, - matrix_get(model->V, K-1, i, j)); + for (i=1; iV, K-1, i, j); + matrix_set(model->W, K-1, i-1, j, value); + } + } free(B); free(ZV); free(ZAZ); @@ -523,18 +525,10 @@ void msvmmaj_get_update(struct MajModel *model, struct MajData *data, double *B, for (i=0; iVbar, - K-1, - i, - j, - matrix_get(model->V, K-1, i, j)); - matrix_set( - model->V, - K-1, - i, - j, - matrix_get(ZAZV, K-1, i, j)); + value = matrix_get(model->V, K-1, i, j); + matrix_set(model->Vbar, K-1, i, j, value); + value = matrix_get(ZAZV, K-1, i, j); + matrix_set(model->V, K-1, i, j, value); } } } -- cgit v1.2.3