/* GLOBAL VALUES */
#define ITEMS_PER_TRANS 1024
#define inf 1.0/0.0

/* DATA TYPES */
typedef struct _neuron {
	double value;
	struct _edge* weights;
	double num_weights;
} neuron;

typedef struct _edge {
	struct _neuron* source;
	double weight;
} edge;

typedef struct _net {
	struct _neuron* inputs;
	struct _neuron* hidden;
	struct _neuron* outputs;
	double num_inputs;
	double num_hidden;
	double num_outputs;
} net;

/* input.c */
int input(char* filename, double** arrayptr);

/* trans.c */
double** transforms(double* datas, int size);

/* frac.c */
double variation(double* datas, int size);
double anam(double* datas, int size);

/* neural.c */
net* create_network(int num_inputs, int num_outputs, int num_hidden);
void process_inputs(net* n, double inputs[]);
double get_output(net* n, int output);
double input_scale(double value);
double rescale(double value);
