c ##################################################################
c THIS FILE IS AUTOMATICALLY GENERATED WITH:
c
c ffnet-0.6.1, feed-forward neural network for python
c http://ffnet.sourceforge.net
c
c Copyright (C) 2006 by Marek Wojciechowski
c <mwojc@p.lodz.pl>
c
c Distributed under the terms of the GNU General Public License:
c http://www.gnu.org/copyleft/gpl.html
c ##################################################################
c
c NETWORK SPECIFICATION
c Feed-forward neural network:
c inputs: 2
c hiddens: 2
c outputs: 1
c connections and biases: 9
c
c INPUT LIMITS
c 1 --> [ 0. 1.]
c 2 --> [ 0. 1.]
c
c OUTPUT LIMITS
c 1 --> [ 0. 1.]
c
c NOTE: You need 'ffnet.f' file distributed with ffnet-0.6.1
c sources to get the below routines to work.
c
c ------------------------------------------------------------------
SUBROUTINE ffnet(input, output)
c ------------------------------------------------------------------
c Returns network answer to input sequence
c Arguments:
c input - 1-d array of length 2
c output - 1-d array of length 1
c ------------------------------------------------------------------
INTEGER conec(9, 2)
INTEGER inno(2)
INTEGER outno(1)
DOUBLE PRECISION weights(9)
DOUBLE PRECISION eni(2, 2)
DOUBLE PRECISION deo(1, 2)
DOUBLE PRECISION units(5)
DOUBLE PRECISION input(2)
DOUBLE PRECISION output(1)
c
cf2py intent(in) input
cf2py intent(out) output
c
conec(1, 1) = 0
conec(2, 1) = 1
conec(3, 1) = 2
conec(4, 1) = 0
conec(5, 1) = 1
conec(6, 1) = 2
conec(7, 1) = 0
conec(8, 1) = 3
conec(9, 1) = 4
conec(1, 2) = 3
conec(2, 2) = 3
conec(3, 2) = 3
conec(4, 2) = 4
conec(5, 2) = 4
conec(6, 2) = 4
conec(7, 2) = 5
conec(8, 2) = 5
conec(9, 2) = 5
c
inno(1) = 2
inno(2) = 1
c
outno(1) = 5
c
weights(1) = -24.3709368771
weights(2) = 24.5133960545
weights(3) = 24.512817558
weights(4) = 7.52646475779
weights(5) = -23.9516576214
weights(6) = -15.6858551034
weights(7) = -5.73459626263
weights(8) = 7.46919375104
weights(9) = 9.00639364609
c
eni(1, 1) = 0.7
eni(2, 1) = 0.7
eni(1, 2) = 0.15
eni(2, 2) = 0.15
c
deo(1, 1) = 1.42857142857
deo(1, 2) = -0.214285714286
c
CALL normcall( weights, conec, 9, units, 5,
& inno, 2, outno, 1, eni, deo, input, output )
c
END
c
c ------------------------------------------------------------------
SUBROUTINE dffnet(input, deriv)
c ------------------------------------------------------------------
c Returns partial derivatives of the network's
c output vs its input at given input point
c in the following array:
c | o1/i1, o1/i2, ..., o1/in |
c | o2/i1, o2/i2, ..., o2/in |
c | ... |
c | om/i1, om/i2, ..., om/in |
c Arguments:
c input - 1-d array of length 2
c deriv - 2-d array of the shape (1, 2)
c ------------------------------------------------------------------
INTEGER conec(9, 2)
INTEGER dconecno(8)
INTEGER dconecmk(3)
INTEGER inno(2)
INTEGER outno(1)
DOUBLE PRECISION weights(9)
DOUBLE PRECISION eni(2, 2)
DOUBLE PRECISION ded(1, 2)
DOUBLE PRECISION units(5)
DOUBLE PRECISION input(2)
DOUBLE PRECISION deriv(1, 2)
c
cf2py intent(in) input
cf2py intent(out) deriv
c
conec(1, 1) = 0
conec(2, 1) = 1
conec(3, 1) = 2
conec(4, 1) = 0
conec(5, 1) = 1
conec(6, 1) = 2
conec(7, 1) = 0
conec(8, 1) = 3
conec(9, 1) = 4
conec(1, 2) = 3
conec(2, 2) = 3
conec(3, 2) = 3
conec(4, 2) = 4
conec(5, 2) = 4
conec(6, 2) = 4
conec(7, 2) = 5
conec(8, 2) = 5
conec(9, 2) = 5
c
dconecno(1) = 3
dconecno(2) = 6
dconecno(3) = 8
dconecno(4) = 9
dconecno(5) = 2
dconecno(6) = 5
dconecno(7) = 8
dconecno(8) = 9
c
dconecmk(1) = 0
dconecmk(2) = 4
dconecmk(3) = 8
c
inno(1) = 2
inno(2) = 1
c
outno(1) = 5
c
weights(1) = -24.3709368771
weights(2) = 24.5133960545
weights(3) = 24.512817558
weights(4) = 7.52646475779
weights(5) = -23.9516576214
weights(6) = -15.6858551034
weights(7) = -5.73459626263
weights(8) = 7.46919375104
weights(9) = 9.00639364609
c
eni(1, 1) = 0.7
eni(2, 1) = 0.7
eni(1, 2) = 0.15
eni(2, 2) = 0.15
c
ded(1, 1) = 1.0
ded(1, 2) = 1.0
c
CALL normdiff( weights, conec, 9, dconecno, 8,
& dconecmk, units, 5, inno, 2, outno, 1,
& eni, ded, input, deriv)
c
END