#include #include #include #define FROM -10.0 #define TO 10.0 #define STEP 0.01 #define sigmoid_slope -1.0 typedef struct { double output; double thres; double inp_wgt; } neuron; void initialize_neuron(neuron *x) { x->thres = 0.0; x->inp_wgt = 1.0; x->output = 0.0; } double sigmoid(double value) { return 1.0 / ( 1.0 + exp(sigmoid_slope * value) ); } void update_neuron(neuron *x, double input) { x->output = sigmoid(x->inp_wgt * input - x->thres); } int main(int argc, char **argv) { neuron a; double x; initialize_neuron(&a); x = FROM; while ( x <= TO ){ update_neuron(&a, x); printf("%f %f\n", x, a.output); x += STEP; } return EXIT_SUCCESS; }