Impure wrapper function for f_dst_f_pdf_core
.
Handles optional arguments and invalid values for arguments.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | x |
sample position |
||
real(kind=wp), | intent(in) | :: | d1 |
numerator degrees of freedom |
||
real(kind=wp), | intent(in) | :: | d2 |
denominator degrees of freedom |
||
real(kind=wp), | intent(in), | optional | :: | loc |
location parameter |
|
real(kind=wp), | intent(in), | optional | :: | scale |
scale parameter |
impure function f_dst_f_pdf(x, d1, d2, loc, scale) result(fx) ! ==== Description !! Impure wrapper function for `f_dst_f_pdf_core`. !! Handles optional arguments and invalid values for arguments. ! ==== Declarations real(wp), intent(in) :: x !! sample position real(wp), intent(in) :: d1 !! numerator degrees of freedom real(wp), intent(in) :: d2 !! denominator degrees of freedom real(wp), intent(in), optional :: loc !! location parameter real(wp), intent(in), optional :: scale !! scale parameter real(wp) :: loc_w !! final location real(wp) :: scale_w !! final scale real(wp) :: fx ! ==== Instructions ! ---- handle input ! assume loc = 0, overwrite if specified loc_w = 0.0_wp if (present(loc)) loc_w = loc ! assume scale = 1, overwrite if specified scale_w = 1.0_wp if (present(scale)) scale_w = scale ! check if scale value is valid if (scale_w .le. 0.0_wp) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(1)) fx = c_sentinel_r return endif ! check if numerator degrees of freedom value is valid if (d1 .le. 0.0_wp) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(1)) fx = c_sentinel_r return endif ! check if denominator degrees of freedom value is valid if (d2 .le. 0.0_wp) then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(1)) fx = c_sentinel_r return endif ! ----compute PDF ! call pure function to calculate probability/fx fx = f_dst_f_pdf_core(x, d1, d2, loc_w, scale_w) end function f_dst_f_pdf