#include "my.init" /** personal definitions **/
#include "lib.init" /** library definitions and functions **/
#include "gra.init"
#include "draw.init"
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
/************neurons***********/
/************one link**********/
typedef struct _link {
int from_unit;
float weight;
float firstweight;
float *signal;
int delay;
struct _link *next;
enum LINK_TYPES type;
enum BOOLEAN reverse;
float reversal;
int channel;
enum BOOLEAN hebb;
float learning_rate;
float max_weight;
float delta_weight;
float old_signal, old_help;
float tau1;
float tau2;
float gmax;
int nspikes;
int *spikes;
float *amps;
float mod;
enum COMPS from_comp;
enum COMPS too_comp;
} LINK;
typedef struct
{
float nernst;
float tau1, tau2;
enum BOOLEAN hebb, reverse;
float max_weight;
float nuu;
float gmax;
} CHANNEL;
/************update function****/
typedef float (*FUNCTION) ();
/*********one neuron*************/
typedef struct {
enum TYPES type;
char name[10];
FUNCTION input_function;
FUNCTION state_function;
FUNCTION output_function;
float inpar1, inpar2;
float stpar1, outpar1, outpar2;
float *state, *output;
float old_state;
float *calcium;
LINK *links_to_unit;
int x_coor, y_coor;
int couche;
enum BOOLEAN selected;
enum BOOLEAN flag;
int layer;
int ncomps;
float comps[5];
} NEURON;
/**********variables**********/
int N_STEPS; /*number of steps*/
float ww;
int N_UNITS; /*number of neurons*/
NEURON *units; /*neuron vector*/
int ialea; /*random numbers*/
double alea;
char TEX[10];
CHANNEL channels[4];
int points;
float DELTA;
int COUNT1;
float aplus, aminus, tauplus, tauminus, threshold;
float *AVSM, *AVSG, *AVSP;
float *MAV, *GAV, *PAV, *EAV, *RAV;
float *POTSM, *POTSG, *POTSP;
/*************functions**********/
extern double RANF ();
extern enum BOOLEAN EQU ();
extern float GAUSSIENNE ();
extern float DEXP ();
extern float COUNTSPIKES ();
extern float VUM ();
extern float *INTERSPIKE ();
extern float SYNC_COUNT ();
extern float *ALDS2 ();