Impure wrapper function for f_dst_exp_cdf_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), | optional | :: | lambda |
lambda parameter, beta(scale) = 1/lambda = mu/mean |
|
real(kind=wp), | intent(in), | optional | :: | loc |
location parameter |
|
character(len=*), | intent(in), | optional | :: | tail |
tail options |
returned probability integral
impure function f_dst_exp_cdf(x, lambda, loc, tail) result(p) ! ==== Description !! Impure wrapper function for `f_dst_exp_cdf_core`. !! Handles optional arguments and invalid values for arguments. ! ==== Declarations real(wp) , intent(in) :: x !! sample position real(wp) , intent(in), optional :: loc !! location parameter real(wp) , intent(in), optional :: lambda !! lambda parameter, beta(scale) = 1/lambda = mu/mean character(len=*), intent(in), optional :: tail !! tail options real(wp) :: loc_w !! final value for loc real(wp) :: lambda_w !! final value for lambda character(len=16) :: tail_w !! final tail option real(wp) :: p !! returned probability integral ! ==== Instructions ! ---- handle input ! assume loc = 0, overwrite if specified loc_w = 0.0_wp if (present(loc)) loc_w = loc ! assume lambda = 1, overwrite if specified lambda_w = 1.0_wp if (present(lambda)) lambda_w = lambda ! assume left-tailed, overwrite if specified tail_w = "left" if (present(tail)) tail_w = tail ! check if lambda value is valid if (lambda_w .le. 0.0_wp) then ! write error message and assign sentinel value if value invalid call s_err_print(fsml_error(1)) p = c_sentinel_r return endif ! check if tail options are valid if (tail_w .ne. "left" .and. tail_w .ne. "right" .and. & &tail_w .ne. "two" .and. tail_w .ne. "confidence") then ! write error message and assign sentinel value if invalid call s_err_print(fsml_error(2)) p = c_sentinel_r return endif ! ---- compute CDF ! call pure function to calculate probability integral p = f_dst_exp_cdf_core(x, lambda_w, loc_w, tail_w) end function f_dst_exp_cdf