aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2019-07-24 13:45:58 +0200
committerWojtek Kosior <kwojtus@protonmail.com>2019-07-24 13:45:58 +0200
commit7e9efcd2e4446f6c51f457640d1a34f52d4b1ab3 (patch)
treefcef69ad6c4919943a2aa121f4309155fe0fef46
parentab59aec0a456d25bedac524be740937fbbe8d5cd (diff)
downloadfortran-assignment3-7e9efcd2e4446f6c51f457640d1a34f52d4b1ab3.tar.gz
fortran-assignment3-7e9efcd2e4446f6c51f457640d1a34f52d4b1ab3.zip
correct polynomial order for gauss
-rwxr-xr-xmeasure_times.sh4
-rw-r--r--res/1image_results90
-rw-r--r--res/5images_results90
-rwxr-xr-xrun.sh7
-rw-r--r--src/quadratures.f906
5 files changed, 97 insertions, 100 deletions
diff --git a/measure_times.sh b/measure_times.sh
index f3a028f..9c85a21 100755
--- a/measure_times.sh
+++ b/measure_times.sh
@@ -42,11 +42,11 @@ for NSU in $NSUBINTERVALS; do
# bash is weird... don't ask me...
TIME=`bash -c "time cafrun -np $NIM ./integrator \
- gauss exp -1 1 2 $NSU" 2>&1 > /dev/null`
+ gauss exp -1 1 1 $NSU" 2>&1 > /dev/null`
if [ $NIM = 1 ]; then
TIME=$TIME\(`bash -c "time ./integrator_single \
- gauss exp -1 1 2 $NSU" 2>&1 > /dev/null`\)
+ gauss exp -1 1 1 $NSU" 2>&1 > /dev/null`\)
fi
printf "%14s\n" $TIME
diff --git a/res/1image_results b/res/1image_results
index af57cc6..681edbd 100644
--- a/res/1image_results
+++ b/res/1image_results
@@ -18,21 +18,21 @@
exp newton-cotes 0 128 2.11173908525770E+00 1.20834887136212E-05
exp newton-cotes 1 128 2.11177533576533E+00 2.41670189140564E-05
exp newton-cotes 2 128 2.11175123169533E+00 6.29489180781206E-08
- exp gauss 1 1 1.92603812503161E+00 1.85713043714799E-01
- exp gauss 2 1 2.10944323004618E+00 2.30793870023227E-03
- exp gauss 3 1 2.11174017498829E+00 1.09937581247443E-05
- exp gauss 1 4 2.09942819014194E+00 1.23229786044705E-02
- exp gauss 2 4 2.11174154446915E+00 9.62427726047821E-06
- exp gauss 3 4 2.11175122970046E+00 6.09540506957273E-08
- exp gauss 1 16 2.11097802057075E+00 7.73148175662541E-04
- exp gauss 2 16 2.11175113096814E+00 3.77782729543696E-08
- exp gauss 3 16 2.11175123173832E+00 6.29919068018125E-08
- exp gauss 1 64 2.11170283537234E+00 4.83333740683989E-05
- exp gauss 2 64 2.11175116859717E+00 1.49236623059323E-10
- exp gauss 3 64 2.11175123168510E+00 6.29386853745473E-08
- exp gauss 1 128 2.11173908525770E+00 1.20834887136212E-05
- exp gauss 2 128 2.11175116873676E+00 9.65227897609111E-12
- exp gauss 3 128 2.11175123168240E+00 6.29359884207759E-08
+ exp gauss 0 1 1.92603812503161E+00 1.85713043714799E-01
+ exp gauss 1 1 2.10944323004618E+00 2.30793870023227E-03
+ exp gauss 2 1 2.11174017498829E+00 1.09937581247443E-05
+ exp gauss 0 4 2.09942819014194E+00 1.23229786044705E-02
+ exp gauss 1 4 2.11174154446915E+00 9.62427726047821E-06
+ exp gauss 2 4 2.11175122970046E+00 6.09540506957273E-08
+ exp gauss 0 16 2.11097802057075E+00 7.73148175662541E-04
+ exp gauss 1 16 2.11175113096814E+00 3.77782729543696E-08
+ exp gauss 2 16 2.11175123173832E+00 6.29919068018125E-08
+ exp gauss 0 64 2.11170283537234E+00 4.83333740683989E-05
+ exp gauss 1 64 2.11175116859717E+00 1.49236623059323E-10
+ exp gauss 2 64 2.11175123168510E+00 6.29386853745473E-08
+ exp gauss 0 128 2.11173908525770E+00 1.20834887136212E-05
+ exp gauss 1 128 2.11175116873676E+00 9.65227897609111E-12
+ exp gauss 2 128 2.11175123168240E+00 6.29359884207759E-08
# function sin; exact integral: 0.33728025602223299
sin newton-cotes 0 1 3.71105938881784E-01 3.38256828595514E-02
sin newton-cotes 1 1 2.71534084652770E-01 6.57461713694629E-02
@@ -49,21 +49,21 @@
sin newton-cotes 0 128 3.37282185963069E-01 1.92994083580977E-06
sin newton-cotes 1 128 3.37276396147187E-01 3.85987504569751E-06
sin newton-cotes 2 128 3.37280266076177E-01 1.00539435665681E-08
- sin gauss 1 1 3.71105938881784E-01 3.38256828595514E-02
- sin gauss 2 1 3.36854984312796E-01 4.25271709437014E-04
- sin gauss 3 1 3.37282324636480E-01 2.06861424700833E-06
- sin gauss 1 4 3.39264643397494E-01 1.98438737526069E-03
- sin gauss 2 4 3.37278705228509E-01 1.55079372354816E-06
- sin gauss 3 4 3.37280266394011E-01 1.03717775479240E-08
- sin gauss 1 16 3.37403803411294E-01 1.23547389060619E-04
- sin gauss 2 16 3.37280249993944E-01 6.02828925666543E-09
- sin gauss 3 16 3.37280266064890E-01 1.00426572058332E-08
- sin gauss 1 64 3.37287975878341E-01 7.71985610759085E-06
- sin gauss 2 64 3.37280255998951E-01 2.32820429602043E-11
- sin gauss 3 64 3.37280266073394E-01 1.00511605705123E-08
- sin gauss 1 128 3.37282185963069E-01 1.92994083580977E-06
- sin gauss 2 128 3.37280256020830E-01 1.40315536967250E-12
- sin gauss 3 128 3.37280266073824E-01 1.00515913370458E-08
+ sin gauss 0 1 3.71105938881784E-01 3.38256828595514E-02
+ sin gauss 1 1 3.36854984312796E-01 4.25271709437014E-04
+ sin gauss 2 1 3.37282324636480E-01 2.06861424700833E-06
+ sin gauss 0 4 3.39264643397494E-01 1.98438737526069E-03
+ sin gauss 1 4 3.37278705228509E-01 1.55079372354816E-06
+ sin gauss 2 4 3.37280266394011E-01 1.03717775479240E-08
+ sin gauss 0 16 3.37403803411294E-01 1.23547389060619E-04
+ sin gauss 1 16 3.37280249993944E-01 6.02828925666543E-09
+ sin gauss 2 16 3.37280266064890E-01 1.00426572058332E-08
+ sin gauss 0 64 3.37287975878341E-01 7.71985610759085E-06
+ sin gauss 1 64 3.37280255998951E-01 2.32820429602043E-11
+ sin gauss 2 64 3.37280266073394E-01 1.00511605705123E-08
+ sin gauss 0 128 3.37282185963069E-01 1.92994083580977E-06
+ sin gauss 1 128 3.37280256020830E-01 1.40315536967250E-12
+ sin gauss 2 128 3.37280266073824E-01 1.00515913370458E-08
# function poly; exact integral: -6.4224397408682314
poly newton-cotes 0 1 -1.04998702415752E+01 4.07743050070696E+00
poly newton-cotes 1 1 -1.97724531433778E+00 4.44519442653045E+00
@@ -80,18 +80,18 @@
poly newton-cotes 0 128 -6.42228814404890E+00 1.51596819327970E-04
poly newton-cotes 1 128 -6.42274298427672E+00 3.03243408486864E-04
poly newton-cotes 2 128 -6.42243994886180E+00 2.07993563705600E-07
- poly gauss 1 1 -1.04998702415752E+01 4.07743050070696E+00
- poly gauss 2 1 -5.84748222218842E+00 5.74957518679808E-01
- poly gauss 3 1 -6.18128177279518E+00 2.41157968073056E-01
- poly gauss 1 4 -6.36528927667174E+00 5.71504641964946E-02
- poly gauss 2 4 -6.40404341324466E+00 1.83963276235755E-02
- poly gauss 3 4 -6.42231899648526E+00 1.20744382967608E-04
- poly gauss 1 16 -6.41314392114169E+00 9.29581972654514E-03
- poly gauss 2 16 -6.42236131242383E+00 7.84284444055316E-05
- poly gauss 3 16 -6.42243989131854E+00 1.50450309988059E-07
- poly gauss 1 64 -6.42183460280302E+00 6.05138065211008E-04
- poly gauss 2 64 -6.42243942065755E+00 3.20210681969968E-07
- poly gauss 3 64 -6.42243992002596E+00 1.79157725099799E-07
- poly gauss 1 128 -6.42228814404890E+00 1.51596819327970E-04
- poly gauss 2 128 -6.42243970932995E+00 3.15382813198539E-08
- poly gauss 3 128 -6.42243991999923E+00 1.79130998922972E-07
+ poly gauss 0 1 -1.04998702415752E+01 4.07743050070696E+00
+ poly gauss 1 1 -5.84748222218842E+00 5.74957518679808E-01
+ poly gauss 2 1 -6.18128177279518E+00 2.41157968073056E-01
+ poly gauss 0 4 -6.36528927667174E+00 5.71504641964946E-02
+ poly gauss 1 4 -6.40404341324466E+00 1.83963276235755E-02
+ poly gauss 2 4 -6.42231899648526E+00 1.20744382967608E-04
+ poly gauss 0 16 -6.41314392114169E+00 9.29581972654514E-03
+ poly gauss 1 16 -6.42236131242383E+00 7.84284444055316E-05
+ poly gauss 2 16 -6.42243989131854E+00 1.50450309988059E-07
+ poly gauss 0 64 -6.42183460280302E+00 6.05138065211008E-04
+ poly gauss 1 64 -6.42243942065755E+00 3.20210681969968E-07
+ poly gauss 2 64 -6.42243992002596E+00 1.79157725099799E-07
+ poly gauss 0 128 -6.42228814404890E+00 1.51596819327970E-04
+ poly gauss 1 128 -6.42243970932995E+00 3.15382813198539E-08
+ poly gauss 2 128 -6.42243991999923E+00 1.79130998922972E-07
diff --git a/res/5images_results b/res/5images_results
index b130ade..f159b80 100644
--- a/res/5images_results
+++ b/res/5images_results
@@ -18,21 +18,21 @@
exp newton-cotes 0 128 2.11173908525770E+00 1.20834887136212E-05
exp newton-cotes 1 128 2.11177533576533E+00 2.41670189140564E-05
exp newton-cotes 2 128 2.11175123169533E+00 6.29489180781206E-08
- exp gauss 1 1 1.92603812503161E+00 1.85713043714799E-01
- exp gauss 2 1 2.10944323004618E+00 2.30793870023227E-03
- exp gauss 3 1 2.11174017498829E+00 1.09937581247443E-05
- exp gauss 1 4 2.09942819014194E+00 1.23229786044705E-02
- exp gauss 2 4 2.11174154446915E+00 9.62427726047821E-06
- exp gauss 3 4 2.11175122970046E+00 6.09540506957273E-08
- exp gauss 1 16 2.11097802057075E+00 7.73148175662541E-04
- exp gauss 2 16 2.11175113096814E+00 3.77782729543696E-08
- exp gauss 3 16 2.11175123173832E+00 6.29919063577233E-08
- exp gauss 1 64 2.11170283537234E+00 4.83333740683989E-05
- exp gauss 2 64 2.11175116859718E+00 1.49236178970114E-10
- exp gauss 3 64 2.11175123168510E+00 6.29386858186365E-08
- exp gauss 1 128 2.11173908525770E+00 1.20834887136212E-05
- exp gauss 2 128 2.11175116873676E+00 9.65227897609111E-12
- exp gauss 3 128 2.11175123168240E+00 6.29359884207759E-08
+ exp gauss 0 1 1.92603812503161E+00 1.85713043714799E-01
+ exp gauss 1 1 2.10944323004618E+00 2.30793870023227E-03
+ exp gauss 2 1 2.11174017498829E+00 1.09937581247443E-05
+ exp gauss 0 4 2.09942819014194E+00 1.23229786044705E-02
+ exp gauss 1 4 2.11174154446915E+00 9.62427726047821E-06
+ exp gauss 2 4 2.11175122970046E+00 6.09540506957273E-08
+ exp gauss 0 16 2.11097802057075E+00 7.73148175662541E-04
+ exp gauss 1 16 2.11175113096814E+00 3.77782729543696E-08
+ exp gauss 2 16 2.11175123173832E+00 6.29919063577233E-08
+ exp gauss 0 64 2.11170283537234E+00 4.83333740683989E-05
+ exp gauss 1 64 2.11175116859718E+00 1.49236178970114E-10
+ exp gauss 2 64 2.11175123168510E+00 6.29386858186365E-08
+ exp gauss 0 128 2.11173908525770E+00 1.20834887136212E-05
+ exp gauss 1 128 2.11175116873676E+00 9.65227897609111E-12
+ exp gauss 2 128 2.11175123168240E+00 6.29359884207759E-08
# function sin; exact integral: 0.33728025602223299
sin newton-cotes 0 1 3.71105938881784E-01 3.38256828595514E-02
sin newton-cotes 1 1 2.71534084652770E-01 6.57461713694629E-02
@@ -49,21 +49,21 @@
sin newton-cotes 0 128 3.37282185963069E-01 1.92994083586528E-06
sin newton-cotes 1 128 3.37276396147187E-01 3.85987504569751E-06
sin newton-cotes 2 128 3.37280266076177E-01 1.00539435665681E-08
- sin gauss 1 1 3.71105938881784E-01 3.38256828595514E-02
- sin gauss 2 1 3.36854984312796E-01 4.25271709437014E-04
- sin gauss 3 1 3.37282324636480E-01 2.06861424700833E-06
- sin gauss 1 4 3.39264643397494E-01 1.98438737526074E-03
- sin gauss 2 4 3.37278705228509E-01 1.55079372360367E-06
- sin gauss 3 4 3.37280266394011E-01 1.03717775479240E-08
- sin gauss 1 16 3.37403803411294E-01 1.23547389060674E-04
- sin gauss 2 16 3.37280249993944E-01 6.02828925666543E-09
- sin gauss 3 16 3.37280266064890E-01 1.00426572058332E-08
- sin gauss 1 64 3.37287975878341E-01 7.71985610764636E-06
- sin gauss 2 64 3.37280255998951E-01 2.32820429602043E-11
- sin gauss 3 64 3.37280266073394E-01 1.00511605705123E-08
- sin gauss 1 128 3.37282185963069E-01 1.92994083586528E-06
- sin gauss 2 128 3.37280256020830E-01 1.40309985852127E-12
- sin gauss 3 128 3.37280266073824E-01 1.00515913370458E-08
+ sin gauss 0 1 3.71105938881784E-01 3.38256828595514E-02
+ sin gauss 1 1 3.36854984312796E-01 4.25271709437014E-04
+ sin gauss 2 1 3.37282324636480E-01 2.06861424700833E-06
+ sin gauss 0 4 3.39264643397494E-01 1.98438737526074E-03
+ sin gauss 1 4 3.37278705228509E-01 1.55079372360367E-06
+ sin gauss 2 4 3.37280266394011E-01 1.03717775479240E-08
+ sin gauss 0 16 3.37403803411294E-01 1.23547389060674E-04
+ sin gauss 1 16 3.37280249993944E-01 6.02828925666543E-09
+ sin gauss 2 16 3.37280266064890E-01 1.00426572058332E-08
+ sin gauss 0 64 3.37287975878341E-01 7.71985610764636E-06
+ sin gauss 1 64 3.37280255998951E-01 2.32820429602043E-11
+ sin gauss 2 64 3.37280266073394E-01 1.00511605705123E-08
+ sin gauss 0 128 3.37282185963069E-01 1.92994083586528E-06
+ sin gauss 1 128 3.37280256020830E-01 1.40309985852127E-12
+ sin gauss 2 128 3.37280266073824E-01 1.00515913370458E-08
# function poly; exact integral: -6.4224397408682314
poly newton-cotes 0 1 -1.04998702415752E+01 4.07743050070696E+00
poly newton-cotes 1 1 -1.97724531433778E+00 4.44519442653045E+00
@@ -80,18 +80,18 @@
poly newton-cotes 0 128 -6.42228814404890E+00 1.51596819328859E-04
poly newton-cotes 1 128 -6.42274298427672E+00 3.03243408486864E-04
poly newton-cotes 2 128 -6.42243994886180E+00 2.07993564593778E-07
- poly gauss 1 1 -1.04998702415752E+01 4.07743050070696E+00
- poly gauss 2 1 -5.84748222218842E+00 5.74957518679808E-01
- poly gauss 3 1 -6.18128177279518E+00 2.41157968073056E-01
- poly gauss 1 4 -6.36528927667174E+00 5.71504641964937E-02
- poly gauss 2 4 -6.40404341324466E+00 1.83963276235755E-02
- poly gauss 3 4 -6.42231899648526E+00 1.20744382966720E-04
- poly gauss 1 16 -6.41314392114169E+00 9.29581972654425E-03
- poly gauss 2 16 -6.42236131242383E+00 7.84284444055316E-05
- poly gauss 3 16 -6.42243989131854E+00 1.50450309988059E-07
- poly gauss 1 64 -6.42183460280302E+00 6.05138065209232E-04
- poly gauss 2 64 -6.42243942065755E+00 3.20210682858146E-07
- poly gauss 3 64 -6.42243992002596E+00 1.79157725099799E-07
- poly gauss 1 128 -6.42228814404890E+00 1.51596819328859E-04
- poly gauss 2 128 -6.42243970932995E+00 3.15382804316755E-08
- poly gauss 3 128 -6.42243991999923E+00 1.79130998922972E-07
+ poly gauss 0 1 -1.04998702415752E+01 4.07743050070696E+00
+ poly gauss 1 1 -5.84748222218842E+00 5.74957518679808E-01
+ poly gauss 2 1 -6.18128177279518E+00 2.41157968073056E-01
+ poly gauss 0 4 -6.36528927667174E+00 5.71504641964937E-02
+ poly gauss 1 4 -6.40404341324466E+00 1.83963276235755E-02
+ poly gauss 2 4 -6.42231899648526E+00 1.20744382966720E-04
+ poly gauss 0 16 -6.41314392114169E+00 9.29581972654425E-03
+ poly gauss 1 16 -6.42236131242383E+00 7.84284444055316E-05
+ poly gauss 2 16 -6.42243989131854E+00 1.50450309988059E-07
+ poly gauss 0 64 -6.42183460280302E+00 6.05138065209232E-04
+ poly gauss 1 64 -6.42243942065755E+00 3.20210682858146E-07
+ poly gauss 2 64 -6.42243992002596E+00 1.79157725099799E-07
+ poly gauss 0 128 -6.42228814404890E+00 1.51596819328859E-04
+ poly gauss 1 128 -6.42243970932995E+00 3.15382804316755E-08
+ poly gauss 2 128 -6.42243991999923E+00 1.79130998922972E-07
diff --git a/run.sh b/run.sh
index ca72d9c..848ea90 100755
--- a/run.sh
+++ b/run.sh
@@ -41,10 +41,7 @@ IEND="1"
SUBINTERVALS="1 4 16 64 128"
-valid_poly_orders() {
- if [ "$1" = newton-cotes ]; then seq 0 2; fi
- if [ "$1" = gauss ]; then seq 1 3; fi
-}
+VALID_POLY_ORDERS="0 1 2"
echo "\
# results of numerical integration of three different functions
@@ -59,7 +56,7 @@ for FUNC in $FUNCTIONS; do
for TYPE in $QUADRATURE_TYPES; do
for N in $SUBINTERVALS; do
- for P in `valid_poly_orders $TYPE`; do
+ for P in $VALID_POLY_ORDERS; do
printf "%5s %12s %10s %12s " $FUNC $TYPE $P $N
$COMMAND $TYPE $FUNC $IBEG $IEND $P $N
done
diff --git a/src/quadratures.f90 b/src/quadratures.f90
index 6fbb5cb..0fcaa2c 100644
--- a/src/quadratures.f90
+++ b/src/quadratures.f90
@@ -198,11 +198,11 @@ CONTAINS
procedure(quadrature), pointer :: quad
SELECT CASE (p)
- CASE (1)
+ CASE (0)
quad => gauss_n1
- CASE (2)
+ CASE (1)
quad => gauss_n2
- CASE (3)
+ CASE (2)
quad => gauss_n3
CASE default
val = ieee_value(val, ieee_quiet_nan)