forked from fortran-lang/stdlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
372 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1,114 @@ | ||
module stdlib_experimental_stat | ||
|
||
|
||
use stdlib_experimental_kinds, only: sp, dp, qp | ||
|
||
|
||
use stdlib_experimental_kinds, only: sp, dp, qp, & | ||
int8, int16, int32, int64 | ||
implicit none | ||
private | ||
! Public API | ||
public :: mean | ||
|
||
|
||
interface mean | ||
module function mean_1_sp_sp(mat) result(res) | ||
real(sp), intent(in) :: mat(:) | ||
real(sp) ::res | ||
module function mean_1_sp_sp(x) result(res) | ||
real(sp), intent(in) :: x(:) | ||
real(sp) :: res | ||
end function mean_1_sp_sp | ||
module function mean_1_dp_dp(mat) result(res) | ||
real(dp), intent(in) :: mat(:) | ||
real(dp) ::res | ||
module function mean_1_dp_dp(x) result(res) | ||
real(dp), intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_dp_dp | ||
module function mean_1_qp_qp(mat) result(res) | ||
real(qp), intent(in) :: mat(:) | ||
real(qp) ::res | ||
module function mean_1_qp_qp(x) result(res) | ||
real(qp), intent(in) :: x(:) | ||
real(qp) :: res | ||
end function mean_1_qp_qp | ||
|
||
module function mean_2_all_sp_sp(mat) result(res) | ||
real(sp), intent(in) :: mat(:,:) | ||
real(sp) ::res | ||
module function mean_1_int8_dp(x) result(res) | ||
integer(int8), intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_int8_dp | ||
module function mean_1_int16_dp(x) result(res) | ||
integer(int16), intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_int16_dp | ||
module function mean_1_int32_dp(x) result(res) | ||
integer(int32), intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_int32_dp | ||
module function mean_1_int64_dp(x) result(res) | ||
integer(int64), intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_int64_dp | ||
|
||
module function mean_2_all_sp_sp(x) result(res) | ||
real(sp), intent(in) :: x(:,:) | ||
real(sp) :: res | ||
end function mean_2_all_sp_sp | ||
module function mean_2_all_dp_dp(mat) result(res) | ||
real(dp), intent(in) :: mat(:,:) | ||
real(dp) ::res | ||
module function mean_2_all_dp_dp(x) result(res) | ||
real(dp), intent(in) :: x(:,:) | ||
real(dp) :: res | ||
end function mean_2_all_dp_dp | ||
module function mean_2_all_qp_qp(mat) result(res) | ||
real(qp), intent(in) :: mat(:,:) | ||
real(qp) ::res | ||
module function mean_2_all_qp_qp(x) result(res) | ||
real(qp), intent(in) :: x(:,:) | ||
real(qp) :: res | ||
end function mean_2_all_qp_qp | ||
|
||
module function mean_2_all_int8_dp(x) result(res) | ||
integer(int8), intent(in) :: x(:,:) | ||
real(dp) :: res | ||
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 | ||
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 | ||
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 | ||
end function mean_2_all_int64_dp | ||
|
||
module function mean_2_sp_sp(mat, dim) result(res) | ||
real(sp), intent(in) :: mat(:,:) | ||
module function mean_2_sp_sp(x, dim) result(res) | ||
real(sp), intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
real(sp) :: res(size(mat)/size(mat, dim)) | ||
real(sp) :: res(size(x)/size(x, dim)) | ||
end function mean_2_sp_sp | ||
module function mean_2_dp_dp(mat, dim) result(res) | ||
real(dp), intent(in) :: mat(:,:) | ||
module function mean_2_dp_dp(x, dim) result(res) | ||
real(dp), intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
real(dp) :: res(size(mat)/size(mat, dim)) | ||
real(dp) :: res(size(x)/size(x, dim)) | ||
end function mean_2_dp_dp | ||
module function mean_2_qp_qp(mat, dim) result(res) | ||
real(qp), intent(in) :: mat(:,:) | ||
module function mean_2_qp_qp(x, dim) result(res) | ||
real(qp), intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
real(qp) :: res(size(mat)/size(mat, dim)) | ||
real(qp) :: res(size(x)/size(x, dim)) | ||
end function mean_2_qp_qp | ||
|
||
module function mean_2_int8_dp(x, dim) result(res) | ||
integer(int8), intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
real(dp) :: res(size(x)/size(x, dim)) | ||
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)) | ||
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)) | ||
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)) | ||
end function mean_2_int64_dp | ||
|
||
end interface | ||
|
||
end module |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,67 @@ | ||
module stdlib_experimental_stat | ||
|
||
#:set REALKINDS = ["sp", "dp", "qp"] | ||
#:set KINDS = REALKINDS | ||
#:set TYPES = ["real({})".format(k) for k in REALKINDS] | ||
#:set ikt = list(zip(range(len(KINDS)), KINDS, TYPES)) | ||
#:set INTKINDS = ["int8", "int16", "int32", "int64"] | ||
|
||
use stdlib_experimental_kinds, only: sp, dp, qp | ||
#:set REALTYPES = ["real({})".format(k) for k in REALKINDS] | ||
#:set INTTYPES = ["integer({})".format(k) for k in INTKINDS] | ||
|
||
#:set iktr = list(zip(range(len(REALKINDS)), REALKINDS, REALTYPES)) | ||
#:set ikti = list(zip(range(len(INTKINDS)), INTKINDS, INTTYPES)) | ||
|
||
use stdlib_experimental_kinds, only: sp, dp, qp, & | ||
int8, int16, int32, int64 | ||
implicit none | ||
private | ||
! Public API | ||
public :: mean | ||
|
||
|
||
interface mean | ||
#:for i1, k1, t1 in ikt | ||
#:for i1, k1, t1 in iktr | ||
module function mean_1_${k1}$_${k1}$(x) result(res) | ||
${t1}$, intent(in) :: x(:) | ||
${t1}$ ::res | ||
${t1}$ :: res | ||
end function mean_1_${k1}$_${k1}$ | ||
#:endfor | ||
|
||
#:for i1, k1, t1 in ikt | ||
#:for i1, k1, t1 in ikti | ||
module function mean_1_${k1}$_dp(x) result(res) | ||
${t1}$, intent(in) :: x(:) | ||
real(dp) :: res | ||
end function mean_1_${k1}$_dp | ||
#:endfor | ||
|
||
#:for i1, k1, t1 in iktr | ||
module function mean_2_all_${k1}$_${k1}$(x) result(res) | ||
${t1}$, intent(in) :: x(:,:) | ||
${t1}$ ::res | ||
${t1}$ :: res | ||
end function mean_2_all_${k1}$_${k1}$ | ||
#:endfor | ||
|
||
#:for i1, k1, t1 in ikti | ||
module function mean_2_all_${k1}$_dp(x) result(res) | ||
${t1}$, intent(in) :: x(:,:) | ||
real(dp) :: res | ||
end function mean_2_all_${k1}$_dp | ||
#:endfor | ||
|
||
#:for i1, k1, t1 in ikt | ||
#:for i1, k1, t1 in iktr | ||
module function mean_2_${k1}$_${k1}$(x, dim) result(res) | ||
${t1}$, intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
${t1}$ :: res(size(x)/size(x, dim)) | ||
end function mean_2_${k1}$_${k1}$ | ||
#:endfor | ||
|
||
#:for i1, k1, t1 in ikti | ||
module function mean_2_${k1}$_dp(x, dim) result(res) | ||
${t1}$, intent(in) :: x(:,:) | ||
integer, intent(in) :: dim | ||
real(dp) :: res(size(x)/size(x, dim)) | ||
end function mean_2_${k1}$_dp | ||
#:endfor | ||
|
||
end interface | ||
|
||
end module |
Oops, something went wrong.