f_dst_gamma_pdf Function

public impure function f_dst_gamma_pdf(x, alpha, beta, loc) result(fx)

Impure wrapper function for f_dst_gamma_pdf_core. Handles optional arguments and invalid values for arguments.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: x

sample position

real(kind=wp), intent(in), optional :: alpha

shape parameter

real(kind=wp), intent(in), optional :: beta

scale parameter

real(kind=wp), intent(in), optional :: loc

location parameter

Return Value real(kind=wp)


Calls

proc~~f_dst_gamma_pdf~~CallsGraph proc~f_dst_gamma_pdf f_dst_gamma_pdf proc~f_dst_gamma_pdf_core f_dst_gamma_pdf_core proc~f_dst_gamma_pdf->proc~f_dst_gamma_pdf_core proc~s_err_print s_err_print proc~f_dst_gamma_pdf->proc~s_err_print proc~f_utl_r2c f_utl_r2c proc~s_err_print->proc~f_utl_r2c

Called by

proc~~f_dst_gamma_pdf~~CalledByGraph proc~f_dst_gamma_pdf f_dst_gamma_pdf interface~fsml_gamma_pdf fsml_gamma_pdf interface~fsml_gamma_pdf->proc~f_dst_gamma_pdf

Source Code

impure function f_dst_gamma_pdf(x, alpha, beta, loc) result(fx)

! ==== Description
!! Impure wrapper function for `f_dst_gamma_pdf_core`.
!! Handles optional arguments and invalid values for arguments.

! ==== Declarations
  real(wp), intent(in)           :: x       !! sample position
  real(wp), intent(in), optional :: alpha   !! shape  parameter
  real(wp), intent(in), optional :: beta    !! scale parameter
  real(wp), intent(in), optional :: loc     !! location parameter
  real(wp)                       :: alpha_w !! final value for alpha
  real(wp)                       :: beta_w  !! final value for beta
  real(wp)                       :: loc_w   !! final value for loc
  real(wp)                       :: z       !! shifted and scaled variable
  real(wp)                       :: fx

! ==== Instructions

! ---- handle input

  ! assume alpha = 1, overwrite if specified
  alpha_w = 1.0_wp
  if (present(alpha)) alpha_w = alpha

  ! assume beta = 1, overwrite if specified
  beta_w = 1.0_wp
  if (present(beta)) beta_w = beta

  ! assume loc = 0, overwrite if specified
  loc_w = 0.0_wp
  if (present(loc)) loc_w = loc

  ! check if alpha value is valid
  if (alpha_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 beta value is valid
  if (beta_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

! ---- compute PDF

  ! call pure function to calculate probability/fx
  fx = f_dst_gamma_pdf_core(x, alpha_w, beta_w, loc_w)

end function f_dst_gamma_pdf