/*! \file types.h
\brief Common types definitions
*/
#ifndef MORHEPUS_TYPES_H
#define MORHEPUS_TYPES_H
#include "simple_blas.h"
#include "regularization.h"
/*! \defgroup types types
\brief Common types definitions
\{
*/
/*! \brief Learing Data structure */
typedef struct {
const double *x; /*!< (num_examples x num_features) matrix */
const double *y; /*!< (num_examples) vector */
int num_features; /*!< number of features including bias dimension */
int num_examples; /*!< number of examples */
morpheus_layout_e layout; /*!< layout of matrix x */
} morpheus_data_t;
/*! Type definition of pointer to cost function. */
typedef double (*morpheus_cost_f)(const morpheus_reg_t *reg,
const morpheus_data_t *data,
const double *theta,
double *tmp_buffer);
/*! Type definition of pointer to gradient function. */
typedef void (*morpheus_gradient_f)(const morpheus_reg_t *reg,
const morpheus_data_t *data,
const double *theta,
double *grad,
double *tmp_buffer);
typedef double (*morpheus_f)(const double *x, void *params);
typedef void (*morpheus_df)(const double *x, void *params, double *grad);
typedef struct {
morpheus_data_t data;
morpheus_reg_t reg;
double *memory_buffer;
} morpheus_params_t;
/*! \} */
#endif /* MORHEPUS_TYPES_H */