Patterns in static

Apophenia

types.h

Go to the documentation of this file.
00001 
00002 /* Copyright (c) 2005--2007 by Ben Klemens.  Licensed under the modified GNU GPL v2; see COPYING and COPYING2. */
00003 #ifndef __apop_estimate__
00004 #define __apop_estimate__
00005 
00006 #include <assert.h>
00007 #include <string.h>
00008 #include <gsl/gsl_rng.h>
00009 #include <gsl/gsl_matrix.h>
00010 #include "variadic.h"
00011 
00012 #ifdef    __cplusplus
00013 extern "C" {
00014 #endif
00015 
00019 typedef struct{
00020      char * vector;
00021      char ** column;
00022      char ** row;
00023      char ** text;
00024      int colct, rowct, textct;
00025     char title[101];
00026 } apop_name;
00027 
00031 typedef struct {
00032     gsl_vector  *vector;
00033     gsl_matrix  *matrix;
00034     apop_name   *names;
00035     char        ***text;
00036     int         textsize[2];
00037     gsl_vector  *weights;
00038     //cs          grid;
00039 } apop_data;
00040 
00043 typedef struct _apop_model apop_model;
00044 
00045 typedef struct {
00046     char name[101];
00047     void *setting_group;
00048     void *copy;
00049     void *free;
00050 } apop_settings_type;
00051 
00053 struct _apop_model{
00054     char        name[101]; 
00055     int         vbase, m1base, m2base; 
00059     apop_settings_type *settings;
00060     apop_data   *parameters; 
00061     apop_data  *expected; 
00062     apop_data  *covariance; 
00063     double      llikelihood;
00064     int         status; 
00065     int         prepared;
00066     apop_data   *data;
00067     apop_model * (*estimate)(apop_data * data, apop_model *params);
00068     double  (*p)(apop_data *d, apop_model *params);
00069     double  (*log_likelihood)(apop_data *d, apop_model *params);
00070     void    (*score)(apop_data *d, gsl_vector *gradient, apop_model *params);
00071     double  (*constraint)(apop_data *data, apop_model *params);
00072     apop_data*  (*expected_value)(apop_data *d, apop_model *params);
00073     void (*draw)(double *out, gsl_rng* r, apop_model *params);
00074     void (*prep)(apop_data *data, apop_model *params);
00075     void (*print)(apop_model *params);
00076     void    *more;
00077     size_t  more_size;
00078 } ;
00079 
00082 typedef struct{
00083     int verbose; 
00084     char output_type;
00090     FILE *output_pipe; 
00091     char output_delimiter[100]; 
00093     int output_append; 
00094     char input_delimiters[100]; 
00095     char db_name_column[300]; 
00096     char db_nan[100]; 
00097     char db_engine; 
00098     char db_user[101]; 
00099     char db_pass[101]; 
00100     int  thread_count; 
00101     int  rng_seed;
00102     float version;
00103 } apop_opts_type;
00104 
00105 extern apop_opts_type apop_opts;
00106 
00107 apop_name * apop_name_alloc(void);
00108 int apop_name_add(apop_name * n, char *add_me, char type);
00109 void  apop_name_free(apop_name * free_me);
00110 void  apop_name_print(apop_name * n);
00111 #ifdef APOP_NO_VARIADIC
00112  void  apop_name_stack(apop_name * n1, apop_name *nadd, char type1, char typeadd);
00113 #else
00114  void  apop_name_stack_base(apop_name * n1, apop_name *nadd, char type1, char typeadd);
00115  apop_varad_declare(void , apop_name_stack, apop_name * n1; apop_name *nadd; char type1; char typeadd);
00116 #define apop_name_stack(...) apop_varad_link(apop_name_stack, __VA_ARGS__)
00117 #endif
00118 void  apop_name_cross_stack(apop_name * n1, apop_name *n2, char type1, char type2);
00119 apop_name * apop_name_copy(apop_name *in);
00120 int  apop_name_find(apop_name *n, char *findme, char type);
00121 
00122 void        apop_data_free(apop_data *freeme);
00123 apop_data * apop_matrix_to_data(gsl_matrix *m);
00124 apop_data * apop_vector_to_data(gsl_vector *v);
00125 apop_data * apop_data_alloc(const size_t, const size_t, const int);
00126 apop_data * apop_data_calloc(const size_t, const size_t, const int);
00127 #ifdef APOP_NO_VARIADIC
00128  apop_data * apop_data_stack(apop_data *m1, apop_data * m2, char posn, char inplace);
00129 #else
00130  apop_data * apop_data_stack_base(apop_data *m1, apop_data * m2, char posn, char inplace);
00131  apop_varad_declare(apop_data *, apop_data_stack, apop_data *m1; apop_data * m2; char posn; char inplace);
00132 #define apop_data_stack(...) apop_varad_link(apop_data_stack, __VA_ARGS__)
00133 #endif
00134 apop_data ** apop_data_split(apop_data *in, int splitpoint, char r_or_c);
00135 apop_data * apop_data_copy(const apop_data *in);
00136 void        apop_data_rm_columns(apop_data *d, int *drop);
00137 void apop_data_memcpy(apop_data *out, const apop_data *in);
00138 double * apop_data_ptr(const apop_data *data, const int i, const int j);
00139 double * apop_data_ptr_it(const apop_data *in, size_t row, char* col);
00140 double * apop_data_ptr_ti(const apop_data *in, char* row, int col);
00141 double * apop_data_ptr_tt(const apop_data *in, char *row, char* col);
00142 double apop_data_get(const apop_data *in, size_t row, int  col);
00143 double apop_data_get_it(const apop_data *in, size_t row, char* col);
00144 double apop_data_get_ti(const apop_data *in, char* row, int col);
00145 double apop_data_get_tt(const apop_data *in, char *row, char* col);
00146 void apop_data_set(apop_data *in, size_t row, int col, double data);
00147 void apop_data_set_ti(apop_data *in, char* row, int col, double data);
00148 void apop_data_set_it(apop_data *in, size_t row, char* col, double data);
00149 void apop_data_set_tt(apop_data *in, char *row, char* col, double data);
00150 void apop_data_add_named_elmt(apop_data *d, char *name, double val);
00151 void apop_text_add(apop_data *in, const size_t row, const size_t col, const char *fmt, ...);
00152 apop_data * apop_text_alloc(apop_data *in, const size_t row, const size_t col);
00153 void apop_text_free(char ***freeme, int rows, int cols);
00154 apop_data *apop_data_transpose(apop_data *in);
00155 gsl_matrix * apop_matrix_realloc(gsl_matrix *m, size_t newheight, size_t newwidth);
00156 gsl_vector * apop_vector_realloc(gsl_vector *v, size_t newheight);
00157 
00158 #ifdef    __cplusplus
00159 }
00160 #endif
00161 #endif

SourceForge.net Logo

Autogenerated by doxygen on 28 Sep 2009.