diff options
| author | Gertjan van den Burg <burg@ese.eur.nl> | 2014-08-25 14:38:03 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <burg@ese.eur.nl> | 2014-08-25 14:38:03 +0200 |
| commit | 1e340d509f229120eb3aaa98c91028dc3c0d3305 (patch) | |
| tree | dd6b65c428447f179133e967eb0e0d3ce15f68ec /src/msvmmaj_init.c | |
| parent | free some work arrays (diff) | |
| download | gensvm-1e340d509f229120eb3aaa98c91028dc3c0d3305.tar.gz gensvm-1e340d509f229120eb3aaa98c91028dc3c0d3305.zip | |
rename msvmmaj to gensvm
Diffstat (limited to 'src/msvmmaj_init.c')
| -rw-r--r-- | src/msvmmaj_init.c | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/src/msvmmaj_init.c b/src/msvmmaj_init.c deleted file mode 100644 index 0fedfe7..0000000 --- a/src/msvmmaj_init.c +++ /dev/null @@ -1,282 +0,0 @@ -/** - * @file msvmmaj_init.c - * @author Gertjan van den Burg - * @date January 7, 2014 - * @brief Functions for initializing model and data structures - * - * @details - * This file contains functions for initializing a MajModel instance - * and a MajData instance. In addition, default values for these - * structures are defined here (and only here). Functions for allocating - * memory for the model structure and freeing of the model and data structures - * are also included. - * - */ - -#include <math.h> - -#include "msvmmaj.h" -#include "msvmmaj_init.h" - -/** - * @brief Initialize a MajModel structure - * - * @details - * A MajModel structure is initialized and the default value for the - * parameters are set. A pointer to the initialized model is returned. - * - * @returns initialized MajModel - */ -struct MajModel *msvmmaj_init_model() -{ - struct MajModel *model = Malloc(struct MajModel, 1); - - // set default values - model->p = 1.0; - model->lambda = pow(2, -8.0); - model->epsilon = 1e-6; - model->kappa = 0.0; - model->weight_idx = 1; - model->kerneltype = K_LINEAR; - model->kernelparam = NULL; - - model->W = NULL; - model->t = NULL; - model->V = NULL; - model->Vbar = NULL; - model->U = NULL; - model->UU = NULL; - model->Q = NULL; - model->H = NULL; - model->R = NULL; - model->rho = NULL; - model->data_file = NULL; - - return model; -} - -/** - * @brief Initialize a MajData structure - * - * @details - * A MajData structure is initialized and default values are set. - * A pointer to the initialized data is returned. - * - * @returns initialized MajData - * - */ -struct MajData *msvmmaj_init_data() -{ - struct MajData *data = Malloc(struct MajData, 1); - data->J = NULL; - data->y = NULL; - data->Z = NULL; - data->RAW = NULL; - - // set default values - data->kerneltype = K_LINEAR; - data->kernelparam = NULL; - - return data; -} - -/** - * @brief Allocate memory for a MajModel - * - * @details - * This function can be used to allocate the memory needed for a MajModel. All - * arrays in the model are specified and initialized to 0. - * - * @param[in] model MajModel to allocate - * - */ -void msvmmaj_allocate_model(struct MajModel *model) -{ - long n = model->n; - long m = model->m; - long K = model->K; - - model->W = Calloc(double, m*(K-1)); - if (model->W == NULL) { - fprintf(stderr, "Failed to allocate memory for W.\n"); - exit(1); - } - - model->t = Calloc(double, K-1); - if (model->t == NULL) { - fprintf(stderr, "Failed to allocate memory for t.\n"); - exit(1); - } - - model->V = Calloc(double, (m+1)*(K-1)); - if (model->V == NULL) { - fprintf(stderr, "Failed to allocate memory for V.\n"); - exit(1); - } - - model->Vbar = Calloc(double, (m+1)*(K-1)); - if (model->Vbar == NULL) { - fprintf(stderr, "Failed to allocate memory for Vbar.\n"); - exit(1); - } - - model->U = Calloc(double, K*(K-1)); - if (model->U == NULL) { - fprintf(stderr, "Failed to allocate memory for U.\n"); - exit(1); - } - - model->UU = Calloc(double, n*K*(K-1)); - if (model->UU == NULL) { - fprintf(stderr, "Failed to allocate memory for UU.\n"); - exit(1); - } - - model->Q = Calloc(double, n*K); - if (model->Q == NULL) { - fprintf(stderr, "Failed to allocate memory for Q.\n"); - exit(1); - } - - model->H = Calloc(double, n*K); - if (model->H == NULL) { - fprintf(stderr, "Failed to allocate memory for H.\n"); - exit(1); - } - - model->R = Calloc(double, n*K); - if (model->R == NULL) { - fprintf(stderr, "Failed to allocate memory for R.\n"); - exit(1); - } - - model->rho = Calloc(double, n); - if (model->rho == NULL) { - fprintf(stderr, "Failed to allocate memory for rho.\n"); - exit(1); - } -} - -/** - * @brief Reallocate memory for MajModel - * - * @details - * This function can be used to reallocate existing memory for a MajModel, - * upon a change in the model dimensions. This is used in combination with - * kernels. - * - * @param[in] model MajModel to reallocate - * @param[in] n new value of MajModel->n - * @param[in] m new value of MajModel->m - * - */ -void msvmmaj_reallocate_model(struct MajModel *model, long n, long m) -{ - long K = model->K; - - if (model->n == n && model->m == m) - return; - if (model->n != n) { - model->UU = (double *) realloc(model->UU, - n*K*(K-1)*sizeof(double)); - if (model->UU == NULL) { - fprintf(stderr, "Failed to reallocate UU\n"); - exit(1); - } - - model->Q = (double *) realloc(model->Q, n*K*sizeof(double)); - if (model->Q == NULL) { - fprintf(stderr, "Failed to reallocate Q\n"); - exit(1); - } - - model->H = (double *) realloc(model->H, n*K*sizeof(double)); - if (model->H == NULL) { - fprintf(stderr, "Failed to reallocate H\n"); - exit(1); - } - - model->R = (double *) realloc(model->R, n*K*sizeof(double)); - if (model->R == NULL) { - fprintf(stderr, "Failed to reallocate R\n"); - exit(1); - } - - model->rho = (double *) realloc(model->rho, n*sizeof(double)); - if (model->rho == NULL) { - fprintf(stderr, "Failed to reallocte rho\n"); - exit(1); - } - - model->n = n; - } - if (model->m != m) { - model->W = (double *) realloc(model->W, - m*(K-1)*sizeof(double)); - if (model->W == NULL) { - fprintf(stderr, "Failed to reallocate W\n"); - exit(1); - } - - model->V = (double *) realloc(model->V, - (m+1)*(K-1)*sizeof(double)); - if (model->V == NULL) { - fprintf(stderr, "Failed to reallocate V\n"); - exit(1); - } - - model->Vbar = (double *) realloc(model->Vbar, - (m+1)*(K-1)*sizeof(double)); - if (model->Vbar == NULL) { - fprintf(stderr, "Failed to reallocate Vbar\n"); - exit(1); - } - - model->m = m; - } -} - -/** - * @brief Free allocated MajModel struct - * - * @details - * Simply free a previously allocated MajModel by freeing all its component - * arrays. Note that the model struct itself is also freed here. - * - * @param[in] model MajModel to free - * - */ -void msvmmaj_free_model(struct MajModel *model) -{ - free(model->W); - free(model->t); - free(model->V); - free(model->Vbar); - free(model->U); - free(model->UU); - free(model->Q); - free(model->H); - free(model->rho); - free(model->R); - free(model->kernelparam); - - free(model); -} - -/** - * @brief Free allocated MajData struct - * - * @details - * Simply free a previously allocated MajData struct by freeing all its - * components. Note that the data struct itself is also freed here. - * - * @param[in] data MajData struct to free - * - */ -void msvmmaj_free_data(struct MajData *data) -{ - free(data->Z); - free(data->y); - free(data->J); - free(data); -} |
