From 922e523622b7eef768d784544ed6dbc5f7225db9 Mon Sep 17 00:00:00 2001 From: "Vandenplas, Jeremie" Date: Tue, 21 Jan 2020 09:13:10 +0100 Subject: [PATCH 1/3] stat_dev_1: update test_mean --- src/tests/stat/test_mean.f90 | 75 +++++++++++++++--------------------- 1 file changed, 31 insertions(+), 44 deletions(-) diff --git a/src/tests/stat/test_mean.f90 b/src/tests/stat/test_mean.f90 index 93ba7d0b0..75db06d2f 100644 --- a/src/tests/stat/test_mean.f90 +++ b/src/tests/stat/test_mean.f90 @@ -11,37 +11,37 @@ program test_mean real(dp), allocatable :: d3(:, :, :) real(dp), allocatable :: d4(:, :, :, :) + !sp -call loadtxt("array1.dat", s) +call loadtxt("array3.dat", s) -call assert( mean(s) - 4.5_sp == 0.0_sp) -call assert(sum( mean(s, dim = 1) - [4.0_sp, 5.0_sp] ) == 0.0_sp) -call assert(sum( mean(s, dim = 2) - [1.5_sp, 3.5_sp, 5.5_sp, 7.5_sp] ) == 0.0_sp) +call assert( mean(s) - sum(s)/real(size(s), sp) == 0.0_sp) +call assert( sum( abs( mean(s,1) - sum(s,1)/real(size(s,1), sp) )) == 0.0_sp) +call assert( sum( abs( mean(s,2) - sum(s,2)/real(size(s,2), sp) )) == 0.0_sp) -call assert( size(mean(s, dim = 1))- size(sum(s, dim = 1)) == 0) -call assert( size(mean(s, dim = 2))- size(sum(s, dim = 2)) == 0) !dp -call loadtxt("array1.dat", d) +call loadtxt("array3.dat", d) + +call assert( mean(d) - sum(d)/real(size(d), dp) == 0.0_dp) +call assert( sum( abs( mean(d,1) - sum(d,1)/real(size(d,1), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d,2) - sum(d,2)/real(size(d,2), dp) )) == 0.0_dp) -call assert(mean(d) - 4.5_dp == 0.0_dp) -call assert(sum( mean(d, dim = 1) - [4.0_dp, 5.0_dp] ) == 0.0_dp) -call assert(sum( mean(d, dim = 2) - [1.5_dp, 3.5_dp, 5.5_dp, 7.5_dp] ) == 0.0_dp) !int32 -call loadtxt("array1.dat", s) +call loadtxt("array3.dat", d) -call assert( mean(int(s, int32)) - 4.5_dp == 0.0_dp) -call assert(sum( mean(int(s, int32), dim = 1) - [4.0_dp, 5.0_dp] ) == 0.0_dp) -call assert(sum( mean(int(s, int32), dim = 2) - [1.5_dp, 3.5_dp, 5.5_dp, 7.5_dp] ) == 0.0_dp) +call assert( mean(int(d, int32)) - sum(real(int(d, int32),dp))/real(size(d), dp) == 0.0_dp) +call assert( sum(abs( mean(int(d, int32),1) - sum(real(int(d, int32),dp),1)/real(size(d,1), dp) )) == 0.0_dp) +call assert( sum(abs( mean(int(d, int32),2) - sum(real(int(d, int32),dp),2)/real(size(d,2), dp) )) == 0.0_dp) -!int64 -call loadtxt("array1.dat", s) -call assert( mean(int(s, int64)) - 4.5_dp == 0.0_dp) -call assert(sum( mean(int(s, int64), dim = 1) - [4.0_dp, 5.0_dp] ) == 0.0_dp) -call assert(sum( mean(int(s, int64), dim = 2) - [1.5_dp, 3.5_dp, 5.5_dp, 7.5_dp] ) == 0.0_dp) +!int64 +call loadtxt("array3.dat", d) +call assert( mean(int(d, int64)) - sum(real(int(d, int64),dp))/real(size(d), dp) == 0.0_dp) +call assert( sum(abs( mean(int(d, int64),1) - sum(real(int(d, int64),dp),1)/real(size(d,1), dp) )) == 0.0_dp) +call assert( sum(abs( mean(int(d, int64),2) - sum(real(int(d, int64),dp),2)/real(size(d,2), dp) )) == 0.0_dp) !dp rank 3 @@ -50,38 +50,25 @@ program test_mean d3(:,:,2)=d*1.5_dp; d3(:,:,3)=d*4._dp; -call assert( sum( shape(mean(d3,1))-shape(sum(d3,1)) ) == 0) -call assert( sum( shape(mean(d3,2))-shape(sum(d3,2)) ) == 0) -call assert( sum( shape(mean(d3,3))-shape(sum(d3,3)) ) == 0) - -call assert( mean(d3) - sum(d3)/size(d3) == 0.0_dp) -call assert( sum(abs( mean(d3,1) - & - reshape([4.0_dp, 5.0_dp, 6.0_dp, 7.5_dp, 16.0_dp, 20.0_dp], shape(sum(d3,1))) ) ) & - == 0.0_dp) -call assert( sum(abs( mean(d3,2) - & - reshape([ 1.5_dp, 3.5_dp, 5.5_dp, 7.5_dp, & - 2.25_dp, 5.25_dp, 8.25_dp, 11.25_dp, & - 6._dp, 14._dp, 22._dp, 30._dp & - ], shape(sum(d3,2))) ) ) & - == 0.0_dp) -call assert( sum(abs( mean(d3,3) - & - reshape([2.1666666666666665_dp, 6.5_dp, 10.833333333333334_dp,& - 15.166666666666666_dp, 4.333333333333333_dp, & - 8.6666666666666661_dp, 13.0_dp, 17.333333333333332_dp & - ], shape(sum(d3,3))) ) ) & - == 0.0_dp) +call assert( mean(d3) - sum(d3)/real(size(d3), dp) == 0.0_dp) +call assert( sum( abs( mean(d3,1) - sum(d3,1)/real(size(d3,1), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d3,2) - sum(d3,2)/real(size(d3,2), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d3,3) - sum(d3,3)/real(size(d3,3), dp) )) == 0.0_dp) + + !dp rank 4 allocate(d4(size(d,1),size(d,2),3,9)) d4 = 1. d4(:,:,1,1)=d; d4(:,:,2,1)=d*1.5_dp; d4(:,:,3,1)=d*4._dp; +d4(:,:,3,9)=d*4._dp; -call assert( sum( shape(mean(d4,1))-shape(sum(d4,1)) ) == 0) -call assert( sum( shape(mean(d4,2))-shape(sum(d4,2)) ) == 0) -call assert( sum( shape(mean(d4,3))-shape(sum(d4,3)) ) == 0) -call assert( sum( shape(mean(d4,4))-shape(sum(d4,4)) ) == 0) - +call assert( mean(d4) - sum(d4)/real(size(d4), dp) == 0.0_dp) +call assert( sum( abs( mean(d4,1) - sum(d4,1)/real(size(d4,1), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d4,2) - sum(d4,2)/real(size(d4,2), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d4,3) - sum(d4,3)/real(size(d4,3), dp) )) == 0.0_dp) +call assert( sum( abs( mean(d4,4) - sum(d4,4)/real(size(d4,4), dp) )) == 0.0_dp) contains From 8d4c11f985ae93ab3147827bdb03e4061247f053 Mon Sep 17 00:00:00 2001 From: "Vandenplas, Jeremie" Date: Tue, 21 Jan 2020 10:31:26 +0100 Subject: [PATCH 2/3] stat_dev_1:moved all calls to mean functions to loops --- src/stdlib_experimental_stat_mean.f90 | 20704 +------------------ src/stdlib_experimental_stat_mean.fypp.f90 | 74 +- 2 files changed, 534 insertions(+), 20244 deletions(-) diff --git a/src/stdlib_experimental_stat_mean.f90 b/src/stdlib_experimental_stat_mean.f90 index 13dc60601..01bb62c09 100644 --- a/src/stdlib_experimental_stat_mean.f90 +++ b/src/stdlib_experimental_stat_mean.f90 @@ -10,21 +10,39 @@ module function mean_1_sp_sp(x) result(res) real(sp), intent(in) :: x(:) real(sp) :: res - res = sum(x) / real(size(x), sp) + integer :: i + + res = 0.0_sp + do i = 1, size(x) + res = res + x(i) + enddo + res = res / real(size(x), sp) end function mean_1_sp_sp module function mean_1_dp_dp(x) result(res) real(dp), intent(in) :: x(:) real(dp) :: res - res = sum(x) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + x(i) + enddo + res = res / real(size(x), dp) end function mean_1_dp_dp module function mean_1_qp_qp(x) result(res) real(qp), intent(in) :: x(:) real(qp) :: res - res = sum(x) / real(size(x), qp) + integer :: i + + res = 0.0_qp + do i = 1, size(x) + res = res + x(i) + enddo + res = res / real(size(x), qp) end function mean_1_qp_qp @@ -32,28 +50,52 @@ module function mean_1_int8_dp(x) result(res) integer(int8), intent(in) :: x(:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + real(x(i), dp) + enddo + res = res / real(size(x), dp) end function mean_1_int8_dp module function mean_1_int16_dp(x) result(res) integer(int16), intent(in) :: x(:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + real(x(i), dp) + enddo + res = res / real(size(x), dp) end function mean_1_int16_dp module function mean_1_int32_dp(x) result(res) integer(int32), intent(in) :: x(:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + real(x(i), dp) + enddo + res = res / real(size(x), dp) end function mean_1_int32_dp module function mean_1_int64_dp(x) result(res) integer(int64), intent(in) :: x(:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + real(x(i), dp) + enddo + res = res / real(size(x), dp) end function mean_1_int64_dp @@ -62,21 +104,45 @@ module function mean_2_all_sp_sp(x) result(res) real(sp), intent(in) :: x(:,:) real(sp) :: res - res = sum(x) / real(size(x), sp) + integer :: i, i_ + + res = 0.0_sp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_) + enddo + enddo + res = res / real(size(x), sp) end function mean_2_all_sp_sp module function mean_2_all_dp_dp(x) result(res) real(dp), intent(in) :: x(:,:) real(dp) :: res - res = sum(x) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_dp_dp module function mean_2_all_qp_qp(x) result(res) real(qp), intent(in) :: x(:,:) real(qp) :: res - res = sum(x) / real(size(x), qp) + integer :: i, i_ + + res = 0.0_qp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_) + enddo + enddo + res = res / real(size(x), qp) end function mean_2_all_qp_qp @@ -84,28 +150,60 @@ module function mean_2_all_int8_dp(x) result(res) integer(int8), intent(in) :: x(:,:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_), dp) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_int8_dp module function mean_2_all_int16_dp(x) result(res) integer(int16), intent(in) :: x(:,:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_), dp) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_int16_dp module function mean_2_all_int32_dp(x) result(res) integer(int32), intent(in) :: x(:,:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_), dp) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_int32_dp module function mean_2_all_int64_dp(x) result(res) integer(int64), intent(in) :: x(:,:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_), dp) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_int64_dp @@ -114,63 +212,87 @@ module function mean_2_sp_sp(x, dim) result(res) integer, intent(in) :: dim real(sp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_sp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_sp_sp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + x(j, i) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_sp_sp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + x(i, j) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), sp) + end function mean_2_sp_sp module function mean_2_dp_dp(x, dim) result(res) real(dp), intent(in) :: x(:,:) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_dp_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + x(j, i) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_dp_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + x(i, j) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_dp_dp module function mean_2_qp_qp(x, dim) result(res) real(qp), intent(in) :: x(:,:) integer, intent(in) :: dim real(qp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_qp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_qp_qp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + x(j, i) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_qp_qp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + x(i, j) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), qp) + end function mean_2_qp_qp module function mean_2_int8_dp(x, dim) result(res) @@ -178,84 +300,116 @@ module function mean_2_int8_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int8_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + real(x(j, i), dp) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int8_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + real(x(i, j), dp) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_int8_dp module function mean_2_int16_dp(x, dim) result(res) integer(int16), intent(in) :: x(:,:) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int16_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + real(x(j, i), dp) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int16_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + real(x(i, j), dp) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_int16_dp module function mean_2_int32_dp(x, dim) result(res) integer(int32), intent(in) :: x(:,:) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int32_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + real(x(j, i), dp) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int32_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + real(x(i, j), dp) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_int32_dp module function mean_2_int64_dp(x, dim) result(res) integer(int64), intent(in) :: x(:,:) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int64_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + real(x(j, i), dp) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_int64_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + real(x(i, j), dp) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_int64_dp @@ -278,83 +432,6 @@ module function mean_4_all_sp_sp(x) result(res) res = sum(x) / real(size(x), sp) end function mean_4_all_sp_sp -module function mean_5_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_5_all_sp_sp -module function mean_6_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_6_all_sp_sp -module function mean_7_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_7_all_sp_sp -module function mean_8_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_8_all_sp_sp -module function mean_9_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_9_all_sp_sp -module function mean_10_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_10_all_sp_sp -module function mean_11_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_11_all_sp_sp -module function mean_12_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_12_all_sp_sp -module function mean_13_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_13_all_sp_sp -module function mean_14_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_14_all_sp_sp -module function mean_15_all_sp_sp(x) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(sp) :: res - - res = sum(x) / real(size(x), sp) - -end function mean_15_all_sp_sp module function mean_3_all_dp_dp(x) result(res) real(dp), intent(in) :: x(:,:,:) real(dp) :: res @@ -369,83 +446,6 @@ module function mean_4_all_dp_dp(x) result(res) res = sum(x) / real(size(x), dp) end function mean_4_all_dp_dp -module function mean_5_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_5_all_dp_dp -module function mean_6_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_6_all_dp_dp -module function mean_7_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_7_all_dp_dp -module function mean_8_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_8_all_dp_dp -module function mean_9_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_9_all_dp_dp -module function mean_10_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_10_all_dp_dp -module function mean_11_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_11_all_dp_dp -module function mean_12_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_12_all_dp_dp -module function mean_13_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_13_all_dp_dp -module function mean_14_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_14_all_dp_dp -module function mean_15_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(x) / real(size(x), dp) - -end function mean_15_all_dp_dp module function mean_3_all_qp_qp(x) result(res) real(qp), intent(in) :: x(:,:,:) real(qp) :: res @@ -460,83 +460,6 @@ module function mean_4_all_qp_qp(x) result(res) res = sum(x) / real(size(x), qp) end function mean_4_all_qp_qp -module function mean_5_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_5_all_qp_qp -module function mean_6_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_6_all_qp_qp -module function mean_7_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_7_all_qp_qp -module function mean_8_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_8_all_qp_qp -module function mean_9_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_9_all_qp_qp -module function mean_10_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_10_all_qp_qp -module function mean_11_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_11_all_qp_qp -module function mean_12_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_12_all_qp_qp -module function mean_13_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_13_all_qp_qp -module function mean_14_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_14_all_qp_qp -module function mean_15_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(qp) :: res - - res = sum(x) / real(size(x), qp) - -end function mean_15_all_qp_qp module function mean_3_all_int8_dp(x) result(res) integer(int8), intent(in) :: x(:,:,:) @@ -552,17438 +475,122 @@ module function mean_4_all_int8_dp(x) result(res) res = sum(real(x, dp)) / real(size(x), dp) end function mean_4_all_int8_dp -module function mean_5_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:) +module function mean_3_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_5_all_int8_dp -module function mean_6_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:) +end function mean_3_all_int16_dp +module function mean_4_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_6_all_int8_dp -module function mean_7_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:) +end function mean_4_all_int16_dp +module function mean_3_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_7_all_int8_dp -module function mean_8_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:) +end function mean_3_all_int32_dp +module function mean_4_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_8_all_int8_dp -module function mean_9_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:) +end function mean_4_all_int32_dp +module function mean_3_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_9_all_int8_dp -module function mean_10_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) +end function mean_3_all_int64_dp +module function mean_4_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:) real(dp) :: res res = sum(real(x, dp)) / real(size(x), dp) -end function mean_10_all_int8_dp -module function mean_11_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) +end function mean_4_all_int64_dp -end function mean_11_all_int8_dp -module function mean_12_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res +module function mean_3_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i,i_ -end function mean_12_all_int8_dp -module function mean_13_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res + select case(dim) + case(1) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_sp_sp(x(:,i,i_)) + end do + end do + case(2) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_sp_sp(x(i,:,i_)) + end do + end do + case(3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_sp_sp(x(i,i_,:)) + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_13_all_int8_dp -module function mean_14_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_14_all_int8_dp -module function mean_15_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_15_all_int8_dp -module function mean_3_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_3_all_int16_dp -module function mean_4_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_4_all_int16_dp -module function mean_5_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_5_all_int16_dp -module function mean_6_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_6_all_int16_dp -module function mean_7_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_7_all_int16_dp -module function mean_8_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_8_all_int16_dp -module function mean_9_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_9_all_int16_dp -module function mean_10_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_10_all_int16_dp -module function mean_11_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_11_all_int16_dp -module function mean_12_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_12_all_int16_dp -module function mean_13_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_13_all_int16_dp -module function mean_14_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_14_all_int16_dp -module function mean_15_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_15_all_int16_dp -module function mean_3_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_3_all_int32_dp -module function mean_4_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_4_all_int32_dp -module function mean_5_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_5_all_int32_dp -module function mean_6_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_6_all_int32_dp -module function mean_7_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_7_all_int32_dp -module function mean_8_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_8_all_int32_dp -module function mean_9_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_9_all_int32_dp -module function mean_10_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_10_all_int32_dp -module function mean_11_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_11_all_int32_dp -module function mean_12_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_12_all_int32_dp -module function mean_13_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_13_all_int32_dp -module function mean_14_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_14_all_int32_dp -module function mean_15_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_15_all_int32_dp -module function mean_3_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_3_all_int64_dp -module function mean_4_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_4_all_int64_dp -module function mean_5_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_5_all_int64_dp -module function mean_6_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_6_all_int64_dp -module function mean_7_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_7_all_int64_dp -module function mean_8_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_8_all_int64_dp -module function mean_9_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_9_all_int64_dp -module function mean_10_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_10_all_int64_dp -module function mean_11_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_11_all_int64_dp -module function mean_12_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_12_all_int64_dp -module function mean_13_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_13_all_int64_dp -module function mean_14_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_14_all_int64_dp -module function mean_15_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - real(dp) :: res - - res = sum(real(x, dp)) / real(size(x), dp) - -end function mean_15_all_int64_dp - -module function mean_3_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_sp_sp -module function mean_4_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_sp_sp -module function mean_5_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_sp_sp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_sp_sp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_sp_sp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_sp_sp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_sp_sp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_sp_sp -module function mean_6_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_sp_sp -module function mean_7_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_sp_sp -module function mean_8_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_sp_sp -module function mean_9_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_sp_sp -module function mean_10_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& - &_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_sp_sp -module function mean_11_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,& - &:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_sp_sp -module function mean_12_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_sp_sp -module function mean_13_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_sp_sp -module function mean_14_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& - &__,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_sp_sp -module function mean_15_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_sp_sp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_15_sp_sp -module function mean_3_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_dp_dp -module function mean_4_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_dp_dp -module function mean_5_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_dp_dp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_dp_dp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_dp_dp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_dp_dp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_dp_dp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_dp_dp -module function mean_6_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_dp_dp -module function mean_7_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_dp_dp -module function mean_8_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_dp_dp -module function mean_9_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_dp_dp -module function mean_10_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& - &_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_dp_dp -module function mean_11_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,& - &:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_dp_dp -module function mean_12_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_dp_dp -module function mean_13_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_dp_dp -module function mean_14_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& - &__,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_dp_dp -module function mean_15_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_dp_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_15_dp_dp -module function mean_3_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_qp_qp -module function mean_4_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_qp_qp -module function mean_5_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_qp_qp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_qp_qp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_qp_qp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_qp_qp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_qp_qp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_qp_qp -module function mean_6_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_qp_qp -module function mean_7_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_qp_qp -module function mean_8_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_qp_qp -module function mean_9_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_qp_qp -module function mean_10_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,& - &i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& - &_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_qp_qp -module function mean_11_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i_____& - &_,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,& - &:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,& - &i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_qp_qp -module function mean_12_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_qp_qp -module function mean_13_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_qp_qp -module function mean_14_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i________& - &____)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& - &__,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_qp_qp -module function mean_15_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(qp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_qp_qp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_15_qp_qp - -module function mean_3_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_int8_dp -module function mean_4_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_int8_dp -module function mean_5_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int8_dp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int8_dp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int8_dp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int8_dp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int8_dp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_int8_dp -module function mean_6_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_int8_dp -module function mean_7_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_int8_dp -module function mean_8_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_int8_dp -module function mean_9_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_int8_dp -module function mean_10_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i______& - &_,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,& - &:,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,& - &i________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_int8_dp -module function mean_11_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i___& - &___,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i_____& - &_,:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i_____& - &_,i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_int8_dp -module function mean_12_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_int8_dp -module function mean_13_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_int8_dp -module function mean_14_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i______& - &______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& - &____,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_int8_dp -module function mean_15_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i___& - &_________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int8_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_15_int8_dp -module function mean_3_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_int16_dp -module function mean_4_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_int16_dp -module function mean_5_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int16_dp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int16_dp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int16_dp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int16_dp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int16_dp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_int16_dp -module function mean_6_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_int16_dp -module function mean_7_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_int16_dp -module function mean_8_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_int16_dp -module function mean_9_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_int16_dp -module function mean_10_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,:,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,i________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_int16_dp -module function mean_11_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_int16_dp -module function mean_12_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_int16_dp -module function mean_13_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_int16_dp -module function mean_14_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_int16_dp -module function mean_15_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int16_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_15_int16_dp -module function mean_3_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(i,:,i_)) - end do - end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(i,i_,:)) - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_3_int32_dp -module function mean_4_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) - - integer :: i,i_,i__ - - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(:,i,i_,i__)) - end do - end do - end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,:,i_,i__)) - end do - end do - end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,i_,:,i__)) - end do - end do - end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,i_,i__,:)) - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_int32_dp -module function mean_5_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) - - integer :: i,i_,i__,i___ - - select case(dim) - case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int32_dp(x(:,i,i_,i__,i___)) - end do - end do - end do - end do - case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int32_dp(x(i,:,i_,i__,i___)) - end do - end do - end do - end do - case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int32_dp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int32_dp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int32_dp(x(i,i_,i__,i___,:)) - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_5_int32_dp -module function mean_6_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) - - integer :: i,i_,i__,i___,i____ - - select case(dim) - case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____)) - end do - end do - end do - end do - end do - case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____)) - end do - end do - end do - end do - end do - case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:)) - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_6_int32_dp -module function mean_7_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_7_int32_dp -module function mean_8_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______ - - select case(dim) - case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_8_int32_dp -module function mean_9_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ - - select case(dim) - case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_9_int32_dp -module function mean_10_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - - select case(dim) - case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,:,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,i________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_10_int32_dp -module function mean_11_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - - select case(dim) - case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_11_int32_dp -module function mean_12_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ - - select case(dim) - case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_12_int32_dp -module function mean_13_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ - - select case(dim) - case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_13_int32_dp -module function mean_14_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ - - select case(dim) - case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_14_int32_dp -module function mean_15_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ - - select case(dim) - case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do +end function mean_3_sp_sp +module function mean_4_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__ + + select case(dim) + case(1) + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_sp_sp(x(:,i,i_,i__)) end do end do end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + case(2) + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_sp_sp(x(i,:,i_,i__)) end do end do end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + case(3) + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_sp_sp(x(i,i_,:,i__)) end do end do end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int32_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + case(4) + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_sp_sp(x(i,i_,i__,:)) end do end do end do @@ -17991,9 +598,9 @@ module function mean_15_int32_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_15_int32_dp -module function mean_3_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:) +end function mean_4_sp_sp +module function mean_3_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & @@ -18005,28 +612,28 @@ module function mean_3_int64_dp(x, dim) result(res) case(1) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(:,i,i_)) + res(i,i_) = mean_1_dp_dp(x(:,i,i_)) end do end do case(2) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(i,:,i_)) + res(i,i_) = mean_1_dp_dp(x(i,:,i_)) end do end do case(3) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(i,i_,:)) + res(i,i_) = mean_1_dp_dp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_int64_dp -module function mean_4_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:) +end function mean_3_dp_dp +module function mean_4_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & @@ -18040,7 +647,7 @@ module function mean_4_int64_dp(x, dim) result(res) do i__ = 1, size(res, 3) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(:,i,i_,i__)) + res(i,i_,i__) = mean_1_dp_dp(x(:,i,i_,i__)) end do end do end do @@ -18048,7 +655,7 @@ module function mean_4_int64_dp(x, dim) result(res) do i__ = 1, size(res, 3) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,:,i_,i__)) + res(i,i_,i__) = mean_1_dp_dp(x(i,:,i_,i__)) end do end do end do @@ -18056,7 +663,7 @@ module function mean_4_int64_dp(x, dim) result(res) do i__ = 1, size(res, 3) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,i_,:,i__)) + res(i,i_,i__) = mean_1_dp_dp(x(i,i_,:,i__)) end do end do end do @@ -18064,7 +671,7 @@ module function mean_4_int64_dp(x, dim) result(res) do i__ = 1, size(res, 3) do i_ = 1, size(res, 2) do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,i_,i__,:)) + res(i,i_,i__) = mean_1_dp_dp(x(i,i_,i__,:)) end do end do end do @@ -18072,156 +679,80 @@ module function mean_4_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_4_int64_dp -module function mean_5_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:) +end function mean_4_dp_dp +module function mean_3_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:) integer, intent(in) :: dim - real(dp) :: res( & + real(qp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_,i__,i___ + integer :: i,i_ select case(dim) case(1) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int64_dp(x(:,i,i_,i__,i___)) - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_qp_qp(x(:,i,i_)) end do end do case(2) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int64_dp(x(i,:,i_,i__,i___)) - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_qp_qp(x(i,:,i_)) end do end do case(3) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int64_dp(x(i,i_,:,i__,i___)) - end do - end do - end do - end do - case(4) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int64_dp(x(i,i_,i__,:,i___)) - end do - end do - end do - end do - case(5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___) = mean_1_int64_dp(x(i,i_,i__,i___,:)) - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_qp_qp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_5_int64_dp -module function mean_6_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:) +end function mean_3_qp_qp +module function mean_4_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim - real(dp) :: res( & + real(qp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__,i___,i____ + integer :: i,i_,i__ select case(dim) case(1) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____)) - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_qp_qp(x(:,i,i_,i__)) end do end do end do case(2) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____)) - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_qp_qp(x(i,:,i_,i__)) end do end do end do case(3) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____)) - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_qp_qp(x(i,i_,:,i__)) end do end do end do case(4) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____)) - end do - end do - end do - end do - end do - case(5) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____)) - end do - end do - end do - end do - end do - case(6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:)) - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_qp_qp(x(i,i_,i__,:)) end do end do end do @@ -18229,447 +760,81 @@ module function mean_6_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_6_int64_dp -module function mean_7_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ) ) - - integer :: i,i_,i__,i___,i____,i_____ - - select case(dim) - case(1) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(2) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(3) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(4) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(5) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____)) - end do - end do - end do - end do - end do - end do - case(6) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____)) - end do - end do - end do - end do - end do - end do - case(7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:)) - end do - end do - end do - end do - end do - end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select +end function mean_4_qp_qp -end function mean_7_int64_dp -module function mean_8_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:) +module function mean_3_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______ + integer :: i,i_ select case(dim) case(1) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int8_dp(x(:,i,i_)) end do end do case(2) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int8_dp(x(i,:,i_)) end do end do case(3) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(4) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(5) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(6) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______)) - end do - end do - end do - end do - end do - end do - end do - case(7) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______)) - end do - end do - end do - end do - end do - end do - end do - case(8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:)) - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int8_dp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_8_int64_dp -module function mean_9_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:) +end function mean_3_int8_dp +module function mean_4_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + integer :: i,i_,i__ select case(dim) case(1) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int8_dp(x(:,i,i_,i__)) end do end do end do case(2) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int8_dp(x(i,:,i_,i__)) end do end do end do case(3) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int8_dp(x(i,i_,:,i__)) end do end do end do case(4) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______)) - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:)) - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int8_dp(x(i,i_,i__,:)) end do end do end do @@ -18677,507 +842,80 @@ module function mean_9_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_9_int64_dp -module function mean_10_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) +end function mean_4_int8_dp +module function mean_3_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + integer :: i,i_ select case(dim) case(1) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(2) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(3) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_____& - &__,i________)) - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int16_dp(x(:,i,i_)) end do end do - case(9) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,:,i________)) - end do - end do - end do - end do - end do - end do - end do + case(2) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int16_dp(x(i,:,i_)) end do end do - case(10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______& - &,i________,:)) - end do - end do - end do - end do - end do - end do - end do + case(3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int16_dp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_10_int64_dp -module function mean_11_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) +end function mean_3_int16_dp +module function mean_4_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + integer :: i,i_,i__ select case(dim) case(1) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int16_dp(x(:,i,i_,i__)) end do end do end do case(2) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int16_dp(x(i,:,i_,i__)) end do end do end do case(3) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int16_dp(x(i,i_,:,i__)) end do end do end do case(4) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i__& - &____,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,:,i_______,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,:,i________,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,:,i_________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i____& - &__,i_______,i________,i_________,:)) - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int16_dp(x(i,i_,i__,:)) end do end do end do @@ -19185,699 +923,80 @@ module function mean_11_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_11_int64_dp -module function mean_12_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) +end function mean_4_int16_dp +module function mean_3_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + integer :: i,i_ select case(dim) case(1) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int32_dp(x(:,i,i_)) end do end do case(2) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int32_dp(x(i,:,i_)) end do end do case(3) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int32_dp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_12_int64_dp -module function mean_13_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) +end function mean_3_int32_dp +module function mean_4_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + integer :: i,i_,i__ select case(dim) case(1) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int32_dp(x(:,i,i_,i__)) end do end do end do case(2) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int32_dp(x(i,:,i_,i__)) end do end do end do case(3) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int32_dp(x(i,i_,:,i__)) end do end do end do case(4) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int32_dp(x(i,i_,i__,:)) end do end do end do @@ -19885,953 +1004,80 @@ module function mean_13_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_13_int64_dp -module function mean_14_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) +end function mean_4_int32_dp +module function mean_3_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + integer :: i,i_ select case(dim) case(1) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int64_dp(x(:,i,i_)) end do end do case(2) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int64_dp(x(i,:,i_)) end do end do case(3) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(4) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i_____& - &_______)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& - & mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& - &_____,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_) = mean_1_int64_dp(x(i,i_,:)) end do end do case default call error_stop("ERROR (mean): wrong dimension") end select -end function mean_14_int64_dp -module function mean_15_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) +end function mean_3_int64_dp +module function mean_4_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ), & - merge(size(x,4),size(x,5),mask = 4 < dim ), & - merge(size(x,5),size(x,6),mask = 5 < dim ), & - merge(size(x,6),size(x,7),mask = 6 < dim ), & - merge(size(x,7),size(x,8),mask = 7 < dim ), & - merge(size(x,8),size(x,9),mask = 8 < dim ), & - merge(size(x,9),size(x,10),mask = 9 < dim ), & - merge(size(x,10),size(x,11),mask = 10 < dim ), & - merge(size(x,11),size(x,12),mask = 11 < dim ), & - merge(size(x,12),size(x,13),mask = 12 < dim ), & - merge(size(x,13),size(x,14),mask = 13 < dim ), & - merge(size(x,14),size(x,15),mask = 14 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& - &__ + integer :: i,i_,i__ select case(dim) case(1) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(:,i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int64_dp(x(:,i,i_,i__)) end do end do end do case(2) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,:,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int64_dp(x(i,:,i_,i__)) end do end do end do case(3) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,:,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int64_dp(x(i,i_,:,i__)) end do end do end do case(4) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,:,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(5) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,:,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(6) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,:,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(7) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,:,i______,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(8) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,:,i_______,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(9) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,:,i________,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(10) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,:,i_________,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(11) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,:,i__________,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(12) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,:,i___________,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(13) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,:,i__& - &__________,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(14) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,:,i_____________)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - case(15) - do i_____________ = 1, size(res, 14) - do i____________ = 1, size(res, 13) - do i___________ = 1, size(res, 12) - do i__________ = 1, size(res, 11) - do i_________ = 1, size(res, 10) - do i________ = 1, size(res, 9) - do i_______ = 1, size(res, 8) - do i______ = 1, size(res, 7) - do i_____ = 1, size(res, 6) - do i____ = 1, size(res, 5) - do i___ = 1, size(res, 4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____________& - &) = mean_1_int64_dp(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& - &________,i_____________,:)) - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do - end do + do i__ = 1, size(res, 3) + do i_ = 1, size(res, 2) + do i = 1, size(res, 1) + res(i,i_,i__) = mean_1_int64_dp(x(i,i_,i__,:)) end do end do end do @@ -20839,6 +1085,6 @@ module function mean_15_int64_dp(x, dim) result(res) call error_stop("ERROR (mean): wrong dimension") end select -end function mean_15_int64_dp +end function mean_4_int64_dp end submodule diff --git a/src/stdlib_experimental_stat_mean.fypp.f90 b/src/stdlib_experimental_stat_mean.fypp.f90 index 5c82fece5..03448422e 100644 --- a/src/stdlib_experimental_stat_mean.fypp.f90 +++ b/src/stdlib_experimental_stat_mean.fypp.f90 @@ -17,7 +17,13 @@ module function mean_1_${k1}$_${k1}$(x) result(res) ${t1}$, intent(in) :: x(:) ${t1}$ :: res - res = sum(x) / real(size(x), ${k1}$) + integer :: i + + res = 0.0_${k1}$ + do i = 1, size(x) + res = res + x(i) + enddo + res = res / real(size(x), ${k1}$) end function mean_1_${k1}$_${k1}$ #:endfor @@ -27,7 +33,13 @@ module function mean_1_${k1}$_dp(x) result(res) ${t1}$, intent(in) :: x(:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i + + res = 0.0_dp + do i = 1, size(x) + res = res + real(x(i), dp) + enddo + res = res / real(size(x), dp) end function mean_1_${k1}$_dp #:endfor @@ -38,7 +50,15 @@ module function mean_2_all_${k1}$_${k1}$(x) result(res) ${t1}$, intent(in) :: x(:,:) ${t1}$ :: res - res = sum(x) / real(size(x), ${k1}$) + integer :: i, i_ + + res = 0.0_${k1}$ + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_) + enddo + enddo + res = res / real(size(x), ${k1}$) end function mean_2_all_${k1}$_${k1}$ #:endfor @@ -48,7 +68,15 @@ module function mean_2_all_${k1}$_dp(x) result(res) ${t1}$, intent(in) :: x(:,:) real(dp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i, i_ + + res = 0.0_dp + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_), dp) + enddo + enddo + res = res / real(size(x), dp) end function mean_2_all_${k1}$_dp #:endfor @@ -59,21 +87,29 @@ module function mean_2_${k1}$_${k1}$(x, dim) result(res) integer, intent(in) :: dim ${t1}$ :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_${k1}$ select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_${k1}$_${k1}$(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + x(j, i) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_${k1}$_${k1}$(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + x(i, j) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), ${k1}$) + end function mean_2_${k1}$_${k1}$ #:endfor @@ -83,21 +119,29 @@ module function mean_2_${k1}$_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i + integer :: i, j + + res = 0.0_dp select case(dim) case(1) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_${k1}$_dp(x(:,i)) + do i = 1, size(x, 2) + do j = 1, size(x, 1) + res(i) = res(i) + real(x(j, i), dp) + end do end do case(2) - do i=1, size(x)/size(x, dim) - res(i) = mean_1_${k1}$_dp(x(i,:)) + do j = 1, size(x, 2) + do i = 1, size(x, 1) + res(i) = res(i) + real(x(i, j), dp) + end do end do case default call error_stop("ERROR (mean): wrong dimension") end select + res = res / real(size(x, dim), dp) + end function mean_2_${k1}$_dp #:endfor @@ -119,7 +163,7 @@ end function mean_2_${k1}$_dp #:enddef -#:set ranks = range(3,16) +#:set ranks = range(3,5) #:for i1, k1, t1 in iktr #:for rank in ranks From bab50e33637e0e20c23c562339ff540c51cf44fc Mon Sep 17 00:00:00 2001 From: "Vandenplas, Jeremie" Date: Tue, 21 Jan 2020 13:13:00 +0100 Subject: [PATCH 3/3] stat_dev_1: changed all to iterations --- src/stdlib_experimental_stat_mean.f90 | 25670 ++++++++++++++++++- src/stdlib_experimental_stat_mean.fypp.f90 | 90 +- 2 files changed, 25299 insertions(+), 461 deletions(-) diff --git a/src/stdlib_experimental_stat_mean.f90 b/src/stdlib_experimental_stat_mean.f90 index 01bb62c09..8fa0ac6cd 100644 --- a/src/stdlib_experimental_stat_mean.f90 +++ b/src/stdlib_experimental_stat_mean.f90 @@ -212,21 +212,21 @@ module function mean_2_sp_sp(x, dim) result(res) integer, intent(in) :: dim real(sp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_sp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + x(j, i) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + x(i, i_) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + x(i, j) + res(i) = res(i) + x(i, i_) end do end do case default @@ -241,21 +241,21 @@ module function mean_2_dp_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + x(j, i) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + x(i, i_) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + x(i, j) + res(i) = res(i) + x(i, i_) end do end do case default @@ -270,21 +270,21 @@ module function mean_2_qp_qp(x, dim) result(res) integer, intent(in) :: dim real(qp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_qp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + x(j, i) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + x(i, i_) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + x(i, j) + res(i) = res(i) + x(i, i_) end do end do case default @@ -300,21 +300,21 @@ module function mean_2_int8_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + real(x(j, i), dp) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + real(x(i, i_), dp) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + real(x(i, j), dp) + res(i) = res(i) + real(x(i, i_), dp) end do end do case default @@ -329,21 +329,21 @@ module function mean_2_int16_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + real(x(j, i), dp) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + real(x(i, i_), dp) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + real(x(i, j), dp) + res(i) = res(i) + real(x(i, i_), dp) end do end do case default @@ -358,21 +358,21 @@ module function mean_2_int32_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + real(x(j, i), dp) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + real(x(i, i_), dp) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + real(x(i, j), dp) + res(i) = res(i) + real(x(i, i_), dp) end do end do case default @@ -387,21 +387,21 @@ module function mean_2_int64_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + real(x(j, i), dp) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + real(x(i, i_), dp) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + real(x(i, j), dp) + res(i) = res(i) + real(x(i, i_), dp) end do end do case default @@ -422,669 +422,25475 @@ module function mean_3_all_sp_sp(x) result(res) real(sp), intent(in) :: x(:,:,:) real(sp) :: res - res = sum(x) / real(size(x), sp) + integer :: i,i_,i__ + + res = 0.0_sp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__) + end do + end do + end do + + res = res / real(size(x), sp) end function mean_3_all_sp_sp module function mean_4_all_sp_sp(x) result(res) real(sp), intent(in) :: x(:,:,:,:) real(sp) :: res - res = sum(x) / real(size(x), sp) + integer :: i,i_,i__,i___ + + res = 0.0_sp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___) + end do + end do + end do + end do + + res = res / real(size(x), sp) end function mean_4_all_sp_sp -module function mean_3_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:) - real(dp) :: res +module function mean_5_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:) + real(sp) :: res - res = sum(x) / real(size(x), dp) + integer :: i,i_,i__,i___,i____ -end function mean_3_all_dp_dp -module function mean_4_all_dp_dp(x) result(res) - real(dp), intent(in) :: x(:,:,:,:) - real(dp) :: res + res = 0.0_sp - res = sum(x) / real(size(x), dp) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do -end function mean_4_all_dp_dp -module function mean_3_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:) - real(qp) :: res + res = res / real(size(x), sp) - res = sum(x) / real(size(x), qp) +end function mean_5_all_sp_sp +module function mean_6_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:) + real(sp) :: res -end function mean_3_all_qp_qp -module function mean_4_all_qp_qp(x) result(res) - real(qp), intent(in) :: x(:,:,:,:) - real(qp) :: res + integer :: i,i_,i__,i___,i____,i_____ - res = sum(x) / real(size(x), qp) + res = 0.0_sp -end function mean_4_all_qp_qp + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do -module function mean_3_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:) - real(dp) :: res + res = res / real(size(x), sp) - res = sum(real(x, dp)) / real(size(x), dp) +end function mean_6_all_sp_sp +module function mean_7_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:) + real(sp) :: res -end function mean_3_all_int8_dp -module function mean_4_all_int8_dp(x) result(res) - integer(int8), intent(in) :: x(:,:,:,:) - real(dp) :: res + integer :: i,i_,i__,i___,i____,i_____,i______ - res = sum(real(x, dp)) / real(size(x), dp) + res = 0.0_sp -end function mean_4_all_int8_dp -module function mean_3_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:) - real(dp) :: res + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do - res = sum(real(x, dp)) / real(size(x), dp) + res = res / real(size(x), sp) -end function mean_3_all_int16_dp -module function mean_4_all_int16_dp(x) result(res) - integer(int16), intent(in) :: x(:,:,:,:) - real(dp) :: res +end function mean_7_all_sp_sp +module function mean_8_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:) + real(sp) :: res - res = sum(real(x, dp)) / real(size(x), dp) + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ -end function mean_4_all_int16_dp -module function mean_3_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:) - real(dp) :: res + res = 0.0_sp - res = sum(real(x, dp)) / real(size(x), dp) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do -end function mean_3_all_int32_dp -module function mean_4_all_int32_dp(x) result(res) - integer(int32), intent(in) :: x(:,:,:,:) - real(dp) :: res + res = res / real(size(x), sp) - res = sum(real(x, dp)) / real(size(x), dp) +end function mean_8_all_sp_sp +module function mean_9_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(sp) :: res -end function mean_4_all_int32_dp -module function mean_3_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:) - real(dp) :: res + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ - res = sum(real(x, dp)) / real(size(x), dp) + res = 0.0_sp -end function mean_3_all_int64_dp -module function mean_4_all_int64_dp(x) result(res) - integer(int64), intent(in) :: x(:,:,:,:) - real(dp) :: res + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do - res = sum(real(x, dp)) / real(size(x), dp) + res = res / real(size(x), sp) -end function mean_4_all_int64_dp +end function mean_9_all_sp_sp +module function mean_10_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(sp) :: res -module function mean_3_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - integer :: i,i_ + res = 0.0_sp - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(i,:,i_)) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do end do end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_sp_sp(x(i,i_,:)) + end do + end do + end do + + res = res / real(size(x), sp) + +end function mean_10_all_sp_sp +module function mean_11_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(sp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_sp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do end do end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select + end do + end do + end do -end function mean_3_sp_sp -module function mean_4_sp_sp(x, dim) result(res) - real(sp), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(sp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + res = res / real(size(x), sp) - integer :: i,i_,i__ +end function mean_11_all_sp_sp +module function mean_12_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(sp) :: res - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(:,i,i_,i__)) + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_sp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do end do end do end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,:,i_,i__)) + end do + end do + end do + + res = res / real(size(x), sp) + +end function mean_12_all_sp_sp +module function mean_13_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(sp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_sp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do end do end do end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,i_,:,i__)) + end do + end do + end do + + res = res / real(size(x), sp) + +end function mean_13_all_sp_sp +module function mean_14_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(sp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_sp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_sp_sp(x(i,i_,i__,:)) + end do + end do + end do + + res = res / real(size(x), sp) + +end function mean_14_all_sp_sp +module function mean_15_all_sp_sp(x) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(sp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_sp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select + end do + end do + end do -end function mean_4_sp_sp -module function mean_3_dp_dp(x, dim) result(res) + res = res / real(size(x), sp) + +end function mean_15_all_sp_sp +module function mean_3_all_dp_dp(x) result(res) real(dp), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) + real(dp) :: res - integer :: i,i_ + integer :: i,i_,i__ - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(:,i,i_)) - end do - end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(i,:,i_)) - end do + res = 0.0_dp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_3_all_dp_dp +module function mean_4_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___) end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_dp_dp(x(i,i_,:)) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_4_all_dp_dp +module function mean_5_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____) end do end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select + end do + end do + end do -end function mean_3_dp_dp -module function mean_4_dp_dp(x, dim) result(res) - real(dp), intent(in) :: x(:,:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + res = res / real(size(x), dp) - integer :: i,i_,i__ +end function mean_5_all_dp_dp +module function mean_6_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:) + real(dp) :: res - select case(dim) - case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(:,i,i_,i__)) + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____) end do end do end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,:,i_,i__)) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_6_all_dp_dp +module function mean_7_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______) + end do end do end do end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,i_,:,i__)) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_7_all_dp_dp +module function mean_8_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do end do end do end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_dp_dp(x(i,i_,i__,:)) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_8_all_dp_dp +module function mean_9_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_9_all_dp_dp +module function mean_10_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_10_all_dp_dp +module function mean_11_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_11_all_dp_dp +module function mean_12_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_12_all_dp_dp +module function mean_13_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_13_all_dp_dp +module function mean_14_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_14_all_dp_dp +module function mean_15_all_dp_dp(x) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_15_all_dp_dp +module function mean_3_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:) + real(qp) :: res + + integer :: i,i_,i__ + + res = 0.0_qp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__) + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_3_all_qp_qp +module function mean_4_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_qp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___) + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_4_all_qp_qp +module function mean_5_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_qp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_5_all_qp_qp +module function mean_6_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_qp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_6_all_qp_qp +module function mean_7_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_qp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_7_all_qp_qp +module function mean_8_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_qp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_8_all_qp_qp +module function mean_9_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_qp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_9_all_qp_qp +module function mean_10_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_qp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_10_all_qp_qp +module function mean_11_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_qp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_11_all_qp_qp +module function mean_12_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_qp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_12_all_qp_qp +module function mean_13_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_qp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_13_all_qp_qp +module function mean_14_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_qp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_14_all_qp_qp +module function mean_15_all_qp_qp(x) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(qp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_qp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), qp) + +end function mean_15_all_qp_qp + +module function mean_3_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:) + real(dp) :: res + + integer :: i,i_,i__ + + res = 0.0_dp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__), dp) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_3_all_int8_dp +module function mean_4_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_4_all_int8_dp +module function mean_5_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_5_all_int8_dp +module function mean_6_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_6_all_int8_dp +module function mean_7_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_7_all_int8_dp +module function mean_8_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_8_all_int8_dp +module function mean_9_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_9_all_int8_dp +module function mean_10_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_10_all_int8_dp +module function mean_11_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_11_all_int8_dp +module function mean_12_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_12_all_int8_dp +module function mean_13_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_13_all_int8_dp +module function mean_14_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_14_all_int8_dp +module function mean_15_all_int8_dp(x) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_15_all_int8_dp +module function mean_3_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:) + real(dp) :: res + + integer :: i,i_,i__ + + res = 0.0_dp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__), dp) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_3_all_int16_dp +module function mean_4_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_4_all_int16_dp +module function mean_5_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_5_all_int16_dp +module function mean_6_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_6_all_int16_dp +module function mean_7_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_7_all_int16_dp +module function mean_8_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_8_all_int16_dp +module function mean_9_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_9_all_int16_dp +module function mean_10_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_10_all_int16_dp +module function mean_11_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_11_all_int16_dp +module function mean_12_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_12_all_int16_dp +module function mean_13_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_13_all_int16_dp +module function mean_14_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_14_all_int16_dp +module function mean_15_all_int16_dp(x) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_15_all_int16_dp +module function mean_3_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:) + real(dp) :: res + + integer :: i,i_,i__ + + res = 0.0_dp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__), dp) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_3_all_int32_dp +module function mean_4_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_4_all_int32_dp +module function mean_5_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_5_all_int32_dp +module function mean_6_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_6_all_int32_dp +module function mean_7_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_7_all_int32_dp +module function mean_8_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_8_all_int32_dp +module function mean_9_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_9_all_int32_dp +module function mean_10_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_10_all_int32_dp +module function mean_11_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_11_all_int32_dp +module function mean_12_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_12_all_int32_dp +module function mean_13_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_13_all_int32_dp +module function mean_14_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_14_all_int32_dp +module function mean_15_all_int32_dp(x) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_15_all_int32_dp +module function mean_3_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:) + real(dp) :: res + + integer :: i,i_,i__ + + res = 0.0_dp + + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__), dp) + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_3_all_int64_dp +module function mean_4_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_4_all_int64_dp +module function mean_5_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_5_all_int64_dp +module function mean_6_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_6_all_int64_dp +module function mean_7_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_7_all_int64_dp +module function mean_8_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_8_all_int64_dp +module function mean_9_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_9_all_int64_dp +module function mean_10_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_10_all_int64_dp +module function mean_11_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_11_all_int64_dp +module function mean_12_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_12_all_int64_dp +module function mean_13_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_13_all_int64_dp +module function mean_14_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_14_all_int64_dp +module function mean_15_all_int64_dp(x) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + real(dp) :: res + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res = res + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + + res = res / real(size(x), dp) + +end function mean_15_all_int64_dp + +module function mean_3_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_sp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + x(i,i_,i__) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + x(i,i_,i__) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + x(i,i_,i__) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_3_sp_sp +module function mean_4_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_sp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + x(i,i_,i__,i___) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_4_sp_sp +module function mean_5_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_sp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_5_sp_sp +module function mean_6_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_sp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_6_sp_sp +module function mean_7_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_sp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_7_sp_sp +module function mean_8_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_sp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_8_sp_sp +module function mean_9_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_sp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_9_sp_sp +module function mean_10_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_sp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_10_sp_sp +module function mean_11_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_sp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_11_sp_sp +module function mean_12_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_sp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_12_sp_sp +module function mean_13_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_sp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_13_sp_sp +module function mean_14_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_sp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i____& + &______,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i______& + &____,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i________& + &__,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________& + &,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i& + &___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &_________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i______& + &_____,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i________& + &___,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,& + &i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_& + &___________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_14_sp_sp +module function mean_15_sp_sp(x, dim) result(res) + real(sp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(sp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_sp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,& + &i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_& + &______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i___& + &____,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_____& + &__,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______& + &,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i& + &________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i__& + &______,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i______& + &__,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________& + &,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i& + &_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__& + &_______,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i____& + &_____,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i______& + &___,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i________& + &_,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), sp) + +end function mean_15_sp_sp +module function mean_3_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_dp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + x(i,i_,i__) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + x(i,i_,i__) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + x(i,i_,i__) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_3_dp_dp +module function mean_4_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + x(i,i_,i__,i___) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_4_dp_dp +module function mean_5_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_5_dp_dp +module function mean_6_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_6_dp_dp +module function mean_7_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_7_dp_dp +module function mean_8_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_8_dp_dp +module function mean_9_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_9_dp_dp +module function mean_10_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_10_dp_dp +module function mean_11_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_11_dp_dp +module function mean_12_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_12_dp_dp +module function mean_13_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_13_dp_dp +module function mean_14_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i____& + &______,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i______& + &____,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i________& + &__,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________& + &,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i& + &___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &_________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i______& + &_____,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i________& + &___,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,& + &i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_& + &___________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_14_dp_dp +module function mean_15_dp_dp(x, dim) result(res) + real(dp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,& + &i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_& + &______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i___& + &____,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_____& + &__,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______& + &,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i& + &________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i__& + &______,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i______& + &__,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________& + &,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i& + &_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__& + &_______,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i____& + &_____,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i______& + &___,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i________& + &_,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_15_dp_dp +module function mean_3_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_qp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + x(i,i_,i__) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + x(i,i_,i__) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + x(i,i_,i__) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_3_qp_qp +module function mean_4_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_qp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + x(i,i_,i__,i___) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + x(i,i_,i__,i___) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_4_qp_qp +module function mean_5_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_qp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + x(i,i_,i__,i___,i____) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_5_qp_qp +module function mean_6_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_qp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + x(i,i_,i__,i___,i____,i_____) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_6_qp_qp +module function mean_7_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_qp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + x(i,i_,i__,i___,i____,i_____,i______) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_7_qp_qp +module function mean_8_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_qp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_8_qp_qp +module function mean_9_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_qp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_9_qp_qp +module function mean_10_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_qp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_10_qp_qp +module function mean_11_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_qp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_11_qp_qp +module function mean_12_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_qp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_12_qp_qp +module function mean_13_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_qp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_________& + &___) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__________& + &__) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_13_qp_qp +module function mean_14_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_qp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i____& + &______,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i______& + &____,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i________& + &__,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________& + &,i___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i& + &___________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &_________,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i______& + &_____,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i________& + &___,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,& + &i____________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_& + &___________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i___& + &_________,i_____________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_14_qp_qp +module function mean_15_qp_qp(x, dim) result(res) + real(qp), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(qp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_qp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,& + &i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_& + &______,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i___& + &____,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_____& + &__,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______& + &,i________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i& + &________,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i__& + &______,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i______& + &__,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________& + &,i_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i& + &_________,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__& + &_______,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i____& + &_____,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i______& + &___,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i________& + &_,i__________,i___________,i____________,i_____________,i______________) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), qp) + +end function mean_15_qp_qp + +module function mean_3_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_dp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + real(x(i,i_,i__), dp) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_3_int8_dp +module function mean_4_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_4_int8_dp +module function mean_5_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_5_int8_dp +module function mean_6_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_6_int8_dp +module function mean_7_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______),& + & dp) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_7_int8_dp +module function mean_8_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_8_int8_dp +module function mean_9_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_9_int8_dp +module function mean_10_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_10_int8_dp +module function mean_11_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_11_int8_dp +module function mean_12_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_12_int8_dp +module function mean_13_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_13_int8_dp +module function mean_14_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,& + &i__________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_& + &_________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___& + &_______,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_______& + &____,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_________& + &__,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_14_int8_dp +module function mean_15_int8_dp(x, dim) result(res) + integer(int8), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i__& + &____,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________& + &), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i____& + &__,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______& + &,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i& + &_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i__& + &_____,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i____& + &___,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& + &_______,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &_____,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_____& + &___,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_______& + &_,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,& + &i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_& + &________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i___& + &______,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_15_int8_dp +module function mean_3_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_dp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + real(x(i,i_,i__), dp) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_3_int16_dp +module function mean_4_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_4_int16_dp +module function mean_5_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_5_int16_dp +module function mean_6_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_6_int16_dp +module function mean_7_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______),& + & dp) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_7_int16_dp +module function mean_8_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_8_int16_dp +module function mean_9_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_9_int16_dp +module function mean_10_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_10_int16_dp +module function mean_11_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_11_int16_dp +module function mean_12_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_12_int16_dp +module function mean_13_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_13_int16_dp +module function mean_14_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,& + &i__________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_& + &_________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___& + &_______,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_______& + &____,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_________& + &__,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_14_int16_dp +module function mean_15_int16_dp(x, dim) result(res) + integer(int16), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i__& + &____,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________& + &), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i____& + &__,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______& + &,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i& + &_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i__& + &_____,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i____& + &___,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& + &_______,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &_____,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_____& + &___,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_______& + &_,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,& + &i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_& + &________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i___& + &______,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_15_int16_dp +module function mean_3_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ) ) + + integer :: i,i_,i__ + + res = 0.0_dp + + select case(dim) + case(1) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(2) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + real(x(i,i_,i__), dp) + end do + end do + end do + case(3) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + real(x(i,i_,i__), dp) + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_3_int32_dp +module function mean_4_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ) ) + + integer :: i,i_,i__,i___ + + res = 0.0_dp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_4_int32_dp +module function mean_5_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_5_int32_dp +module function mean_6_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_6_int32_dp +module function mean_7_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______),& + & dp) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_7_int32_dp +module function mean_8_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_8_int32_dp +module function mean_9_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp + + select case(dim) + case(1) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_9_int32_dp +module function mean_10_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ + + res = 0.0_dp + + select case(dim) + case(1) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_10_int32_dp +module function mean_11_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp + + select case(dim) + case(1) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_11_int32_dp +module function mean_12_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp + + select case(dim) + case(1) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_12_int32_dp +module function mean_13_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp + + select case(dim) + case(1) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_13_int32_dp +module function mean_14_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,& + &i__________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_& + &_________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___& + &_______,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_______& + &____,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_________& + &__,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_14_int32_dp +module function mean_15_int32_dp(x, dim) result(res) + integer(int32), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp + + select case(dim) + case(1) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i__& + &____,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________& + &), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i____& + &__,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______& + &,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i& + &_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i__& + &_____,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i____& + &___,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& + &_______,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &_____,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_____& + &___,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_______& + &_,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,& + &i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_& + &________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i___& + &______,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_4_dp_dp -module function mean_3_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_15_int32_dp +module function mean_3_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:) integer, intent(in) :: dim - real(qp) :: res( & + real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ) ) - integer :: i,i_ + integer :: i,i_,i__ + + res = 0.0_dp select case(dim) case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(:,i,i_)) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__) = res(i_,i__) + real(x(i,i_,i__), dp) + end do end do end do case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(i,:,i_)) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__) = res(i,i__) + real(x(i,i_,i__), dp) + end do end do end do case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_qp_qp(x(i,i_,:)) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_) = res(i,i_) + real(x(i,i_,i__), dp) + end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_qp_qp -module function mean_4_qp_qp(x, dim) result(res) - real(qp), intent(in) :: x(:,:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_3_int64_dp +module function mean_4_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:) integer, intent(in) :: dim - real(qp) :: res( & + real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & merge(size(x,3),size(x,4),mask = 3 < dim ) ) - integer :: i,i_,i__ + integer :: i,i_,i__,i___ + + res = 0.0_dp + + select case(dim) + case(1) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___) = res(i_,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(2) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___) = res(i,i__,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(3) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___) = res(i,i_,i___) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case(4) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__) = res(i,i_,i__) + real(x(i,i_,i__,i___), dp) + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_4_int64_dp +module function mean_5_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ) ) + + integer :: i,i_,i__,i___,i____ + + res = 0.0_dp + + select case(dim) + case(1) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____) = res(i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(2) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____) = res(i,i__,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(3) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____) = res(i,i_,i___,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(4) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____) = res(i,i_,i__,i____) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case(5) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___) = res(i,i_,i__,i___) + real(x(i,i_,i__,i___,i____), dp) + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_5_int64_dp +module function mean_6_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____ + + res = 0.0_dp + + select case(dim) + case(1) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____) = res(i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(2) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____) = res(i,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(3) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____) = res(i,i_,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(4) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____) = res(i,i_,i__,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(5) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____) = res(i,i_,i__,i___,i_____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case(6) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____) = res(i,i_,i__,i___,i____) + real(x(i,i_,i__,i___,i____,i_____), dp) + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_6_int64_dp +module function mean_7_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______ + + res = 0.0_dp + + select case(dim) + case(1) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______) = res(i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(2) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______) = res(i,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(3) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______) = res(i,i_,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(4) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______) = res(i,i_,i__,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______) = res(i,i_,i__,i___,i_____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______),& + & dp) + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______) = res(i,i_,i__,i___,i____,i______) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____) = res(i,i_,i__,i___,i____,i_____) + real(x(i,i_,i__,i___,i____,i_____,i______), dp) + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_7_int64_dp +module function mean_8_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______ + + res = 0.0_dp + + select case(dim) + case(1) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______) = res(i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______) = res(i,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______) = res(i,i_,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______) = res(i,i_,i__,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______) = res(i,i_,i__,i___,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______) = res(i,i_,i__,i___,i____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______) = res(i,i_,i__,i___,i____,i_____,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______) = res(i,i_,i__,i___,i____,i_____,i______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + case default + call error_stop("ERROR (mean): wrong dimension") + end select + + res = res / real(size(x, dim), dp) + +end function mean_8_int64_dp +module function mean_9_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:) + integer, intent(in) :: dim + real(dp) :: res( & + merge(size(x,1),size(x,2),mask = 1 < dim ), & + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________ + + res = 0.0_dp select case(dim) case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(:,i,i_,i__)) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(2) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i__,i___,i____,i_____,i______,i_______,i________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(3) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i___,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i____,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i_____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i______,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do end do end do end do - case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,:,i_,i__)) + case(7) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i_______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do end do end do end do - case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,i_,:,i__)) + case(8) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do end do end do end do - case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_qp_qp(x(i,i_,i__,:)) + case(9) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______) = res(i,i_,i__,i___,i____,i_____,i______,i_______) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________), dp) + end do + end do + end do + end do + end do + end do end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_4_qp_qp + res = res / real(size(x, dim), dp) -module function mean_3_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:) +end function mean_9_int64_dp +module function mean_10_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ) ) + + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________ - integer :: i,i_ + res = 0.0_dp select case(dim) case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(:,i,i_)) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(i,:,i_)) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int8_dp(x(i,i_,:)) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i___,i____,i_____,i______,i_______,i_& + &_______,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i____,i_____,i______,i_______,i___& + &_____,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i_____,i______,i_______,i_____& + &___,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i______,i_______,i_______& + &_,i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,& + &i_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_& + &________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i____& + &____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_int8_dp -module function mean_4_int8_dp(x, dim) result(res) - integer(int8), intent(in) :: x(:,:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_10_int64_dp +module function mean_11_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ) ) - integer :: i,i_,i__ + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________ + + res = 0.0_dp select case(dim) case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(:,i,i_,i__)) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,:,i_,i__)) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,i_,:,i__)) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int8_dp(x(i,i_,i__,:)) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_int8_dp -module function mean_3_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(:,i,i_)) + case(5) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(i,:,i_)) + case(6) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int16_dp(x(i,i_,:)) + case(7) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_int16_dp -module function mean_4_int16_dp(x, dim) result(res) - integer(int16), intent(in) :: x(:,:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_11_int64_dp +module function mean_12_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ) ) - integer :: i,i_,i__ + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________ + + res = 0.0_dp select case(dim) case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(:,i,i_,i__)) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,:,i_,i__)) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,i_,:,i__)) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int16_dp(x(i,i_,i__,:)) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do - case default - call error_stop("ERROR (mean): wrong dimension") - end select - -end function mean_4_int16_dp -module function mean_3_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:) - integer, intent(in) :: dim - real(dp) :: res( & - merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) - - integer :: i,i_ - - select case(dim) - case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(:,i,i_)) + case(5) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do - case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(i,:,i_)) + case(6) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do - case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int32_dp(x(i,i_,:)) + case(7) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_int32_dp -module function mean_4_int32_dp(x, dim) result(res) - integer(int32), intent(in) :: x(:,:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_12_int64_dp +module function mean_13_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ) ) - integer :: i,i_,i__ + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________ + + res = 0.0_dp select case(dim) case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(:,i,i_,i__)) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________& + &) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,:,i_,i__)) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,i_,:,i__)) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int32_dp(x(i,i_,i__,:)) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____& + &_______), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) =& + & res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________) +& + & real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_4_int32_dp -module function mean_3_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_13_int64_dp +module function mean_14_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & - merge(size(x,2),size(x,3),mask = 2 < dim ) ) + merge(size(x,2),size(x,3),mask = 2 < dim ), & + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ) ) - integer :: i,i_ + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__ + + res = 0.0_dp select case(dim) case(1) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(:,i,i_)) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,& + &i__________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do case(2) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(i,:,i_)) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i& + &____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_& + &_________,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do case(3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_) = mean_1_int64_dp(x(i,i_,:)) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i__& + &__________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___& + &_______,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(4) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____& + &________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i______& + &______,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i________& + &____,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i_________& + &____) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i__________& + &__,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i__________& + &___) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________& + &,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i___________& + &__) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i& + &_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i____________& + &_) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i__& + &___________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i_____________& + &) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____& + &_________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_______& + &____,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i______& + &_______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_________& + &__,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &______) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__________& + &_,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________)& + & = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_______& + &_____) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________& + &,i____________,i_____________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_3_int64_dp -module function mean_4_int64_dp(x, dim) result(res) - integer(int64), intent(in) :: x(:,:,:,:) + res = res / real(size(x, dim), dp) + +end function mean_14_int64_dp +module function mean_15_int64_dp(x, dim) result(res) + integer(int64), intent(in) :: x(:,:,:,:,:,:,:,:,:,:,:,:,:,:,:) integer, intent(in) :: dim real(dp) :: res( & merge(size(x,1),size(x,2),mask = 1 < dim ), & merge(size(x,2),size(x,3),mask = 2 < dim ), & - merge(size(x,3),size(x,4),mask = 3 < dim ) ) + merge(size(x,3),size(x,4),mask = 3 < dim ), & + merge(size(x,4),size(x,5),mask = 4 < dim ), & + merge(size(x,5),size(x,6),mask = 5 < dim ), & + merge(size(x,6),size(x,7),mask = 6 < dim ), & + merge(size(x,7),size(x,8),mask = 7 < dim ), & + merge(size(x,8),size(x,9),mask = 8 < dim ), & + merge(size(x,9),size(x,10),mask = 9 < dim ), & + merge(size(x,10),size(x,11),mask = 10 < dim ), & + merge(size(x,11),size(x,12),mask = 11 < dim ), & + merge(size(x,12),size(x,13),mask = 12 < dim ), & + merge(size(x,13),size(x,14),mask = 13 < dim ), & + merge(size(x,14),size(x,15),mask = 14 < dim ) ) - integer :: i,i_,i__ + integer :: i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___________& + &__,i______________ + + res = 0.0_dp select case(dim) case(1) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(:,i,i_,i__)) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i__& + &___________,i______________) = res(i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_____& + &_____,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i__& + &____,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________& + &), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(2) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,:,i_,i__)) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i___& + &__________,i______________) = res(i,i__,i___,i____,i_____,i______,i_______,i________,i_________,i_______& + &___,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i____& + &__,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(3) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,i_,:,i__)) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i____& + &_________,i______________) = res(i,i_,i___,i____,i_____,i______,i_______,i________,i_________,i_________& + &_,i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______& + &,i_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________),& + & dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case(4) - do i__ = 1, size(res, 3) - do i_ = 1, size(res, 2) - do i = 1, size(res, 1) - res(i,i_,i__) = mean_1_int64_dp(x(i,i_,i__,:)) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_____& + &________,i______________) = res(i,i_,i__,i____,i_____,i______,i_______,i________,i_________,i__________,& + &i___________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i& + &_______,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(5) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i______& + &_______,i______________) = res(i,i_,i__,i___,i_____,i______,i_______,i________,i_________,i__________,i_& + &__________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i__& + &_____,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(6) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___________,i____________,i_______& + &______,i______________) = res(i,i_,i__,i___,i____,i______,i_______,i________,i_________,i__________,i___& + &________,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i____& + &___,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(7) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i___________,i____________,i________& + &_____,i______________) = res(i,i_,i__,i___,i____,i_____,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i______& + &_,i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(8) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i___________,i____________,i_________& + &____,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i________,i_________,i__________,i_______& + &____,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,& + &i________,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(9) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i___________,i____________,i__________& + &___,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i_________,i__________,i_________& + &__,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_& + &_______,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(10) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________,i____________,i___________& + &__,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i__________,i___________& + &,i____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i___& + &_____,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(11) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i____________,i____________& + &_,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i___________,i& + &____________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_____& + &___,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(12) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____________,i_____________& + &,i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i__& + &__________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i_______& + &_,i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(13) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i_____________,& + &i______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___& + &________,i_____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,& + &i_________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(14) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &______________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i____& + &_______,i____________,i______________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_& + &________,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + case(15) + do i______________ = 1, size(x, 15) + do i_____________ = 1, size(x, 14) + do i____________ = 1, size(x, 13) + do i___________ = 1, size(x, 12) + do i__________ = 1, size(x, 11) + do i_________ = 1, size(x, 10) + do i________ = 1, size(x, 9) + do i_______ = 1, size(x, 8) + do i______ = 1, size(x, 7) + do i_____ = 1, size(x, 6) + do i____ = 1, size(x, 5) + do i___ = 1, size(x, 4) + do i__ = 1, size(x, 3) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i___________,i____________,i& + &_____________) = res(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i_________,i__________,i_____& + &______,i____________,i_____________) + real(x(i,i_,i__,i___,i____,i_____,i______,i_______,i________,i___& + &______,i__________,i___________,i____________,i_____________,i______________), dp) + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do + end do end do end do end do case default - call error_stop("ERROR (mean): wrong dimension") + call error_stop("ERROR (mean): wrong dimension") end select -end function mean_4_int64_dp + res = res / real(size(x, dim), dp) + +end function mean_15_int64_dp end submodule diff --git a/src/stdlib_experimental_stat_mean.fypp.f90 b/src/stdlib_experimental_stat_mean.fypp.f90 index 03448422e..3258ff6dc 100644 --- a/src/stdlib_experimental_stat_mean.fypp.f90 +++ b/src/stdlib_experimental_stat_mean.fypp.f90 @@ -87,21 +87,21 @@ module function mean_2_${k1}$_${k1}$(x, dim) result(res) integer, intent(in) :: dim ${t1}$ :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_${k1}$ select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + x(j, i) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + x(i, i_) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + x(i, j) + res(i) = res(i) + x(i, i_) end do end do case default @@ -119,21 +119,21 @@ module function mean_2_${k1}$_dp(x, dim) result(res) integer, intent(in) :: dim real(dp) :: res(size(x)/size(x, dim)) - integer :: i, j + integer :: i, i_ res = 0.0_dp select case(dim) case(1) - do i = 1, size(x, 2) - do j = 1, size(x, 1) - res(i) = res(i) + real(x(j, i), dp) + do i_ = 1, size(x, 2) + do i = 1, size(x, 1) + res(i_) = res(i_) + real(x(i, i_), dp) end do end do case(2) - do j = 1, size(x, 2) + do i_ = 1, size(x, 2) do i = 1, size(x, 1) - res(i) = res(i) + real(x(i, j), dp) + res(i) = res(i) + real(x(i, i_), dp) end do end do case default @@ -156,14 +156,14 @@ end function mean_2_${k1}$_dp #:endif #:enddef -#:def xsuffix(rank,dim) +#:def ressuffix(rank,dim) #:if rank > 0 -#{for i in range(1,dim)}#${"i"+"_" * (i-1)+","}$#{endfor}#:#{for i in range(dim,rank)}#${",i"+"_" * (i-1)}$#{endfor}# +#{for i in range(1,dim-1)}#${"i" + "_" * (i-1)+","}$#{endfor}##{if dim-1 >0}#i${"_"*(dim-2) }$#{endif}##{if dim -1 >0 and dim