11 if (l == NULL)
return NULL;
15 { free(l);
return NULL; }
16 l->
links = malloc(
sizeof(
struct PCFNN_LAYER_link*) * l->
nblinks);
18 { free(l->
neurons); free(l);
return NULL; }
28 if (l == NULL)
return;
29 for(
size_t i = 0; i < l->
size; ++i)
38 for(
size_t i = 0; i < l->
size; ++i)
40 for(
size_t i = 0; i < l->
nblinks; ++i)
42 if (l->
links[i] != NULL)
68 if (l->
neurons == NULL)
return -1;
72 if (l->
neurons[i] == NULL)
return -1;
81 if (l == NULL)
return NULL;
90 size_t size_from,
size_t size_to,
91 size_t offset_from,
size_t offset_to,
92 double(*f_init_to)(),
double(*f_act_to)(
double),
double(*f_act_de_to)(
double))
94 if (from == NULL || to == NULL)
return 1;
100 if (link == NULL)
return -1;
104 if (
from->
links == NULL) { free(link);
return -1; }
106 if (
to->
links == NULL) { free(link);
return -1; }
132 size_t nblinks[2]; nblinks[0] = nblinks[1] = 0;
133 if (l == NULL)
return 1;
134 for(
size_t k = 0; k < l->
nblinks; ++k)
137 if (link == NULL)
continue;
141 if (link->
to == l && !link->
isInit) {
150 link->
isInit = 1; ++(nblinks[1]);
155 for(
size_t i = 0; i < l->
size; ++i)
160 for(
size_t k = 0; k < l->
nblinks; ++k)
163 if (link != NULL && link->
to == l && link->
isInit)
171 else if (nblinks[1] == 0)
181 if (l == NULL)
return 0;
184 for (
size_t i = 0; i < l->
size; ++i)
193 if (l == NULL || size + offset > l->
size)
return;
194 for (
size_t i = offset; i < offset + size; ++i)
201 if (l == NULL || param == NULL)
return;
202 for (
size_t i = 0; i < l->
size; ++i)
int PCFNN_LAYER_addn(struct PCFNN_LAYER *l, size_t size, size_t inputs, double(*f_init)(), double(*f_act)(double), double(*f_act_de)(double))
Add neurons in the PCFNN_LAYER l.
void PCFNN_NEURON_free(struct PCFNN_NEURON *n)
Free all memory allocation of an PCFNN_NEURON.
void PCFNN_NEURON_clear(struct PCFNN_NEURON *n)
Clear a PCFNN_NEURON.
void PCFNN_LAYER_clear(struct PCFNN_LAYER *l)
Clear all neurons in the layer l (It will call PCFNN_NEURON_clear)
double(* f_act_de)(double)
Structure to represent a link between to PCFNN_LAYER.
struct PCFNN_LAYER_LINK ** links
size_t PCFNN_LAYER_get_ram_usage(struct PCFNN_LAYER *l)
Give the number of bytes used by the PCFNN_LAYER l and all PCFNN_NEURON it contains.
int PCFNN_LAYER_build(struct PCFNN_LAYER *l)
Initialize all internal data of the layer l and build of PCFNN_NEURON it contains.
double(* f_act_to)(double)
struct PCFNN_NEURON ** inputs
struct PCFNN_NEURON * PCFNN_NEURON_new(size_t size, double(*f_init)(), double(*f_act)(double), double(*f_act_de)(double))
Initialize a PCFNN_NEURON.
int PCFNN_LAYER_connect(struct PCFNN_LAYER *from, struct PCFNN_LAYER *to, size_t size_from, size_t size_to, size_t offset_from, size_t offset_to, double(*f_init_to)(), double(*f_act_to)(double), double(*f_act_de_to)(double))
Connect two PCFNN_LAYER. It will create a link between from and to.
void PCFNN_LAYER_summary(struct PCFNN_LAYER *l, size_t param[2])
Write on param the number of unlocked parameters and locked parameters.
void PCFNN_NEURON_build(struct PCFNN_NEURON *n)
Initialize all internal data of a PCFNN_NEURON.
void PCFNN_NEURON_summary(struct PCFNN_NEURON *n, size_t param[2])
Write on param the number of unlocked parameters and locked parameters.
void PCFNN_NEURON_addinputs(struct PCFNN_NEURON *n, size_t inputs)
Increase the input size of the PCFNN_NEURON.
void PCFNN_NEURON_set_state_lock(struct PCFNN_NEURON *n, enum PCFNN_NEURON_LOCK_STATE state)
Set lock state of the neuron n.
size_t PCFNN_NEURON_get_ram_usage(struct PCFNN_NEURON *n)
Give the number of bytes used by the PCFNN_NEURON n.
struct PCFNN_NEURON ** neurons
struct PCFNN_LAYER * PCFNN_LAYER_new_input(size_t size, double(*f_act)(double), double(*f_act_de)(double))
Initialize a PCFNN_LAYER as an input layer.
enum PCFNN_LAYER_TYPE type
void PCFNN_LAYER_set_lock_state(struct PCFNN_LAYER *l, enum PCFNN_NEURON_LOCK_STATE state, size_t size, size_t offset)
Set lock state of size neurons of l starting by offset neuron of l.
void PCFNN_LAYER_free(struct PCFNN_LAYER *l)
Free all memory allocation of an PCFNN_LAYER (It will call PCFNN_NEURON_free)
struct PCFNN_LAYER * PCFNN_LAYER_new(double(*f_init)(), double(*f_act)(double), double(*f_act_de)(double))
struct PCFNN_LAYER * from
PCFNN_NEURON_LOCK_STATE
Lock state of a neuron.
double(* f_act_de_to)(double)