SHELL=/bin/bash

# configure random seed here
SEED=1973
#SEED=random

all: rand rand48 randmersenne

rand: rand.o 
	gcc rand.o -o rand 

rand48: rand48.o mt19937-64/libmt19937-64.a
	gcc rand48.o -o rand48 

randmersenne: randmersenne.o mt19937-64/libmt19937-64.a
	gcc randmersenne.o -L./mt19937-64 -o randmersenne -lmt19937-64

rand.o: rand.c
	gcc -Wall -c -DRANDOMFUNC=rand rand.c 

rand48.o: rand.c
	gcc -Wall -c -DRANDOMFUNC=lrand48 rand.c -o rand48.o

randmersenne.o: rand.c mt19937-64/mt64.h
	gcc -Wall -c -DRANDOMFUNC=genrand64_int64 -DUSE_MERSENNE -I./mt19937-64 rand.c -o randmersenne.o

mt19937-64/libmt19937-64.a: mt19937-64/mt64.h mt19937-64/mt19937-64.c
	cd mt19937-64; make

plots: rand rand48 randmersenne rand.png rand48.png randmersenne.png

rand.png: rand.out 
	gnuplot -e 'PNG_OUTPUT_FILE="rand.png"; DATA_INPUT_FILE="rand.out"; PLOT_TITLE="rand"' gnuplot-script

rand48.png: rand48.out
	gnuplot -e 'PNG_OUTPUT_FILE="rand48.png"; DATA_INPUT_FILE="rand48.out"; PLOT_TITLE="lrand48"' gnuplot-script

randmersenne.png: randmersenne.out
	gnuplot -e 'PNG_OUTPUT_FILE="randmersenne.png"; DATA_INPUT_FILE="randmersenne.out"; PLOT_TITLE="genrand64_int64()"' gnuplot-script

rand.out:
	./rand $(SEED) | tee rand.out

rand48.out:
	./rand48 $(SEED) | tee rand48.out

randmersenne.out:
	./randmersenne $(SEED) | tee randmersenne.out
				
clean:
	rm -f *.o ./mt19937-64/*.{o,a} core *.png *.out rand{,48,mersenne}

