1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
#!/usr/bin/make
# Execute this script to extract the examples from the MINPACK
# documentation
# (/usr/share/doc/minpack-dev/minpack-documentation.txt.gz) and
# compile and run them. It also extracts the numerical results from
# the documentation and writes them to the file "documented". You may
# compare those results with those printed by this script.
PGM= thybrd1 thybrd thybrj1 thybrj tlmder1 tlmder tlmstr1 tlmstr \
tlmdif1 tlmdif tchkder
CPGM=$(patsubst t%,tc%,$(PGM)) # tchybrd1 ...
SRC=$(addsuffix .f,$(PGM)) # thybrd1.f ...
CSRC=$(addsuffix .c,$(PGM)) # thybrd1.c ...
all: ctest ftest documented
ctest: ${CPGM}
echo "--- C driver programs ---"
for x in ${CPGM}; do echo $$x; ./$$x; done
ftest: ${PGM}
echo "--- FORTRAN driver programs ---"
for x in ${PGM}; do echo $$x; ./$$x; done
${SRC} documented: /usr/share/doc/minpack-dev/minpack-documentation.txt.gz
rm -f documented
zcat $< | awk ' \
/DRIVER FOR [A-Z1]+ EXAMPLE/{ \
pgm=tolower($$4); \
oname="t" pgm ".f"; \
$$0 = substr($$0,3); \
print >oname; \
do { \
getline; $$0 = substr($$0,3); \
if (!/^ +Page$$/) print >>oname; \
} \
while (!/LAST CARD OF SUBROUTINE FCN/); \
getline; $$0 = substr($$0,3); print >>oname; \
getline; $$0 = substr($$0,3); print >>oname; \
} \
/may be slightly different/||/machine dependent/{ \
print pgm >>"documented"; \
while (getline) { \
$$0 = substr($$0,3); \
if (/Documentation/) break; \
if (!/^ +Page$$/ && !/^ *$$/) print >>"documented"; \
} \
}'
tchkder: tchkder.f
gfortran -o $@ $< -lminpack
thybrd: thybrd.f
gfortran -o $@ $< -lminpack
thybrd1: thybrd1.f
gfortran -o $@ $< -lminpack
thybrj: thybrj.f
gfortran -o $@ $< -lminpack
thybrj1: thybrj1.f
gfortran -o $@ $< -lminpack
tlmder: tlmder.f
gfortran -o $@ $< -lminpack
tlmder1: tlmder1.f
gfortran -o $@ $< -lminpack
tlmdif: tlmdif.f
gfortran -o $@ $< -lminpack
tlmdif1: tlmdif1.f
gfortran -o $@ $< -lminpack
tlmstr: tlmstr.f
gfortran -o $@ $< -lminpack
tlmstr1: tlmstr1.f
gfortran -o $@ $< -lminpack
tcchkder: tchkder.c
gfortran -o $@ $< -lminpack -lm
tchybrd: thybrd.c
gfortran -o $@ $< -lminpack -lm
tchybrd1: thybrd1.c
gfortran -o $@ $< -lminpack -lm
tchybrj: thybrj.c
gfortran -o $@ $< -lminpack -lm
tchybrj1: thybrj1.c
gfortran -o $@ $< -lminpack -lm
tclmder: tlmder.c
gfortran -o $@ $< -lminpack -lm
tclmder1: tlmder1.c
gfortran -o $@ $< -lminpack -lm
tclmdif: tlmdif.c
gfortran -o $@ $< -lminpack -lm
tclmdif1: tlmdif1.c
gfortran -o $@ $< -lminpack -lm
tclmstr: tlmstr.c
gfortran -o $@ $< -lminpack -lm
tclmstr1: tlmstr1.c
gfortran -o $@ $< -lminpack -lm
|