Impure wrapper function for f_sts_cov_core
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | x(:) |
x vector (assumed size array) |
||
real(kind=wp), | intent(in) | :: | y(:) |
y vector (assumed size array) |
||
real(kind=wp), | intent(in), | optional | :: | ddof |
delta degrees of freedom |
covariance
impure function f_sts_cov(x, y, ddof) result(cov) ! ==== Description !! Impure wrapper function for `f_sts_cov_core`. ! ==== Declarations real(wp), intent(in) :: x(:) !! x vector (assumed size array) real(wp), intent(in) :: y(:) !! y vector (assumed size array) real(wp), intent(in), optional :: ddof !! delta degrees of freedom real(wp) :: ddof_w !! final value for ddof real(wp) :: xbar !! mean of x real(wp) :: ybar !! mean of y real(wp) :: cov !! covariance ! ==== Instructions ! ---- handle input ! assume ddof = 0 (population, not sample statistics) ddof_w = 0.0_wp if (present(ddof)) ddof_w = ddof ! check if value is valid if (ddof_w .ne. 1.0_wp .and. ddof_w .ne. 0.0_wp) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(2)) cov = c_sentinel_r return endif ! check if size is valid if (size(x) .le. 1) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(4)) cov = c_sentinel_r return endif ! check if x and y have same size if (size(x) .ne. size(y)) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(4)) cov = c_sentinel_r return endif ! ---- compute covariance ! call pure function cov = f_sts_cov_core(x, y, ddof_w) end function f_sts_cov