# Makefile for backprop
#

COMPILE=g++
#COMPILE=CC
INCLUDE=-Iinclude \
#	-Ilibg++/include
LIBRARY=-Llib \
#	-Llibg++/lib
ARCHIVE=lib/libMatrix.a \
#	libg++/lib/libg++.a
HEADERS=include/double.Matrix.h

      all: backprop evaluate ffnet.Set ffnet.new ffnet.err Matrix.dvi

 backprop: backprop.C $(ARCHIVE) $(HEADERS)
	$(COMPILE) $(INCLUDE) $(LIBRARY) -O -o backprop backprop.C \
	-lMatrix -lg++ -lm

 evaluate: evaluate.C $(ARCHIVE) $(HEADERS)
	$(COMPILE) $(INCLUDE) $(LIBRARY) -O -o evaluate evaluate.C \
	-lMatrix -lg++ -lm

lib/libMatrix.a include/double.Matrix.h:
	(cd src; make)

libg++/lib/libg++.a:
	(cd libg++; make)

  ffnet.Set: spiral
	spiral -v -t 1 -e 256 > ffnet.Set

   spiral:   spiral.C $(ARCHIVE)
	$(COMPILE) $(INCLUDE) $(LIBRARY) -O -o   spiral   spiral.C \
		 -lg++ -lm

ffnet.new: ffnet perturb
	perturb -v -n 0.25 <ffnet >ffnet.new

  perturb: perturb.C $(ARCHIVE) $(HEADERS)
	$(COMPILE) $(INCLUDE) $(LIBRARY) -O -o  perturb  perturb.C \
	-lMatrix -lg++ -lm

ffnet.err:
	echo > ffnet.err

Matrix.dvi: Matrix.tex Matrix.bbl submatrix.tex backprop.tex
	latex  Matrix

Matrix.bbl: Matrix.bib Matrix.aux
	bibtex Matrix
	latex  Matrix

Matrix.aux: Matrix.tex submatrix.tex backprop.tex
	latex  Matrix

submatrix.tex: submatrix.fig
	fig2dev -L epic submatrix.fig submatrix.tex

backprop.tex: backprop.fig
	fig2dev -L epic backprop.fig backprop.tex

      tar:
	(cd ..; tar cvf Matrix.tar Matrix; compress Matrix.tar)

PROGRAMS=backprop evaluate perturb spiral
NETWORKS=ffnet.old ffnet.Set ffnet.new ffnet.err
MATRICES=Matrix.log Matrix.aux Matrix.blg Matrix.bbl Matrix.dvi submatrix.tex
    clean:
	rm -f core $(PROGRAMS) $(NETWORKS) $(MATRICES) backprop.tex

