From 7e9efcd2e4446f6c51f457640d1a34f52d4b1ab3 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Wed, 24 Jul 2019 13:45:58 +0200 Subject: correct polynomial order for gauss --- measure_times.sh | 4 +-- res/1image_results | 90 ++++++++++++++++++++++++++--------------------------- res/5images_results | 90 ++++++++++++++++++++++++++--------------------------- run.sh | 7 ++--- src/quadratures.f90 | 6 ++-- 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) -- cgit v1.2.3