#include <stdio.h>
#include <math.h>
#define real float
#define P 2
#define M 2
#define D 2
real u[3][3];
real v[3][3];
void printWeight(){
for(int i=1;i<3;i++){
for(int j=0;j<3;j++){
printf("%f %f
",u[j][i],v[j][i]);
}
}
}
int main(){
bool go= true;
//training set
real x[D+2];
real t[3];
t[1] = -1; t[2] = 1;
real z_sum[P+1]; real z[P+1];
real o_sum[M+1]; real o[M+1];
//initialize u, v
u[0][1] = 0.3;
u[1][1] = 0.4;
u[2][1] = 0.2;
u[0][2] = -0.1;
u[1][2] = -0.5;
u[2][2] = 0.1;
v[0][1] = 0.1;
v[1][1] = -0.2;
v[2][1] = 0.4;
v[0][2] = 0.2;
v[1][2] = 0.3;
v[2][2] = -0.1;
//bias
x[0] = 1.0;
z[0] = 1.0;
//printWeight();
x[1] = 0.7; x[2] = 0.2;
//do{
//for(per sample x){
//set x, t
z_sum[0] = 0;z_sum[1] = 0;z_sum[2] = 0;
for(int j=1;j<=P;j++){
for(int i=0;i<=D;i++){
z_sum[j] += x[i]*u[i][j];
}
//z[j] = exp(z_sum[j])/(1 + exp(z_sum[j])); //sigmoid
z[j] = 2/(1 + exp(-z_sum[j]))-1; //sigmoid
}
o_sum[0] = 0;o_sum[1] = 0;o_sum[2] = 0;
for(int k=1;k<=M;k++){
for(int j=0;j<=P;j++){
o_sum[k] += z[j]*v[j][k];
}
o[k] = 2/(1 + exp(-o_sum[k]))-1; //sigmoid
}
printf("FF finished o[1] : %f o[2] : %f
",o[1],o[2]);
//delta v
//delta u
//}
//}while(go);
}