#ifndef _PORK_MAT_UTIL1361346616 #define _PORK_MAT_UTIL1361346616 #define INTERNAL_VARIABLE 0 #define IMAGE 1 #define INTERNAL_INT 2 #define GREY_SCALE 1 #define RGB24 3 #define GREY_PGM 5 #define RGB_PPM 6 #define GREY_PDM 7 #define RGB_PDM 8 #define GREY_PLM 9 #define RGB_PLM 10 #define TRUE 1 #define FALSE 0 #include #include #include /* - - Macro for (x,y) array indexing - - */ #define XYofA(x, y, A, row_length) A[y*row_length + x ] /* - - Not a Number definitions - - */ #define NaNData 512000.0 #define NaNImage 512000.0 #define NaNChar 255 /* - - Types - - */ typedef double Data; typedef double Image; /* - - structures - - */ struct variable { const char * name; Data * data; /* signed floating point values */ Image * image; /* also signed floating point values */ int magic_number; int plm_field_1; float plm_field_2; int max_value; int channels; int var_type; int M, N; }; typedef struct variable Var; /* - - prototypes for mat_util.c - - */ void transpose_matrix(const Var *, Var *); void matrix_multiply(const Var *, const Var *, Var *); void sub_matrix(const Var *, const Var *, Var *); void add_matrix(const Var *, const Var *, Var *); int sub_rows(const Var *, Var *); int sub_cols(const Var *, Var *); int div_mat_by_constant(const Var * A, Data constant, Var *ANS); double meansquared( const Var * A ); void gaussian_elimination(Var *, Var *, Var *); void data_to_image(Var *); void data_to_image(Var *); void print_var(Var *, int, int); void print(Var *, int, int, int, int); void init_var(Var *, const char * name, int, int, int, int); void Var_Destructor( void * ); void copy_image(Var *, Var *); void copy_data(Var *, Var *); void clear_data(Var *); int sum2nan(Var *); int chval(Var *, double, double); double min(Var *); double max(Var *); void absval(Var *); #endif