CFLAGS = -Wall -Ofast -march=native -std=gnu11 CFLAGS += $$(gsl-config --cflags) LDLIBS += $$(gsl-config --libs) CFLAGS += -DNDEBUG -DHAVE_INLINE all: Out.txt Out.times.png Out.txt:main ./$< 4 >$@ main:main.o jacobi.o jacobi2.o UNAME := $(shell uname -m) Out.times.png: out.times.txt Makefile echo '\ set term png ;\ set title "Jacobi diagonalization times as function of matrix size ($(UNAME))" ;\ set xlabel "matrix size n" ;\ set ylabel "diagonalization time, sec" ;\ set key left ;\ set out "$@" ;\ a1=70 ; f1(x)=(x/a1)**3 ;\ a2=70 ; f2(x)=(x/a2)**3 ;\ fit f1(x) "$<" index 0 via a1 ;\ fit f2(x) "$<" index 1 via a2 ;\ plot \ "$<" index 0 with points title "jacobi-1" \ ,"$<" index 1 with points title "jacobi-2" \ , f1(x) with lines title sprintf("(n /%3.0f)^3",a1)\ , f2(x) with lines title sprintf("(n /%3.0f)^3",a2)\ '| gnuplot 2>gnuplot.err.log Ns = $$(seq 35 10 85) out.times.txt: main Makefile >$@ for n in $(Ns);\ do \time --format "$$n %U" --append --output $@ ./$< $$n 1 ;\ done echo "\n" >> $@ for n in $(Ns);\ do \time --format "$$n %U" --append --output $@ ./$< $$n 2 ;\ done clean: find -type f -executable -delete $(RM) *.o [Oo]ut* *log test: echo $(UNAME)