1
/*********************************************************
3
--------------------------------------------------------
4
generated at Tue Feb 22 14:20:39 2000
5
by snns2c ( Bernward Kett 1995 )
6
*********************************************************/
10
#define Act_Logistic(sum, bias) ( (sum+bias<10000.0) ? ( 1.0/(1.0 + exp(-sum-bias) ) ) : 0.0 )
11
#define NULL (void *)0
14
float act; /* Activation */
15
float Bias; /* Bias of the Unit */
16
int NoOfSources; /* Number of predecessor units */
17
struct UT **sources; /* predecessor units */
18
float *weights; /* weights from predecessor units */
21
/* Forward Declaration for all unit types */
22
static UnitType Units[13];
23
/* Sources definition section */
24
static pUnit Sources[] = {
25
Units + 1, Units + 2, Units + 3, Units + 4, Units + 5, Units + 6, Units + 7,
26
Units + 1, Units + 2, Units + 3, Units + 4, Units + 5, Units + 6, Units + 7,
27
Units + 1, Units + 2, Units + 3, Units + 4, Units + 5, Units + 6, Units + 7,
28
Units + 1, Units + 2, Units + 3, Units + 4, Units + 5, Units + 6, Units + 7,
29
Units + 8, Units + 9, Units + 10, Units + 11,
33
/* Weigths definition section */
34
static float Weights[] = {
35
3.547170, -3.553980, -1.116620, -0.025180, 1.089420, 0.803130, 0.529420,
36
-0.325320, -0.799210, -0.662850, -0.085720, 0.610610, 0.408650, -0.561280,
37
3.562170, -3.912450, -1.808290, 0.690540, 1.446580, 0.627760, 1.319640,
38
-2.048400, 2.575210, 1.037980, -0.229640, -1.377640, 0.538870, -1.307310,
39
4.001350, 0.610380, 4.446260, -3.682270,
43
/* unit definition section (see also UnitType) */
44
static UnitType Units[13] =
46
{ 0.0, 0.0, 0, NULL , NULL },
47
{ /* unit 1 (Old: 1) */
52
{ /* unit 2 (Old: 2) */
57
{ /* unit 3 (Old: 3) */
62
{ /* unit 4 (Old: 4) */
67
{ /* unit 5 (Old: 5) */
72
{ /* unit 6 (Old: 6) */
77
{ /* unit 7 (Old: 7) */
82
{ /* unit 8 (Old: 8) */
87
{ /* unit 9 (Old: 9) */
92
{ /* unit 10 (Old: 10) */
97
{ /* unit 11 (Old: 11) */
102
{ /* unit 12 (Old: 12) */
112
int nplus(float *in, float *out, int init)
116
enum{OK, Error, Not_Valid};
120
/* layer definition section (names & member units) */
122
static pUnit Input[7] = {Units + 1, Units + 2, Units + 3, Units + 4, Units + 5, Units + 6, Units + 7}; /* members */
124
static pUnit Hidden1[4] = {Units + 8, Units + 9, Units + 10, Units + 11}; /* members */
126
static pUnit Output1[1] = {Units + 12}; /* members */
128
static int Output[1] = {12};
130
for(member = 0; member < 7; member++) {
131
Input[member]->act = in[member];
134
for (member = 0; member < 4; member++) {
135
unit = Hidden1[member];
137
for (source = 0; source < unit->NoOfSources; source++) {
138
sum += unit->sources[source]->act
139
* unit->weights[source];
141
unit->act = Act_Logistic(sum, unit->Bias);
144
for (member = 0; member < 1; member++) {
145
unit = Output1[member];
147
for (source = 0; source < unit->NoOfSources; source++) {
148
sum += unit->sources[source]->act
149
* unit->weights[source];
151
unit->act = Act_Logistic(sum, unit->Bias);
154
for(member = 0; member < 1; member++) {
155
out[member] = Units[Output[member]].act;