UNIPPF Subroutine

public subroutine UNIPPF(P, Ppf)

NAME

unippf(3f) - [M_datapac:PERCENT_POINT] compute the Uniform percent
point function

SYNOPSIS

   SUBROUTINE UNIPPF(P,Ppf)

    REAL(kind=wp),intent(in)  :: P
    REAL(kind=wp),intent(out) :: Ppf

DESCRIPTION

UNIPPF(3f) computes the percent point function value for the uniform
(rectangular) distribution on the unit interval (0,1).

This distribution has mean = 0.5 and standard deviation = sqrt(1/12)
= 0.28867513. This distribution has the probability density function

    f(X) = 1

Note that the percent point function of a distribution is identically
the same as the inverse cumulative distribution function of the
distribution.

INPUT ARGUMENTS

P     The value (between 0.0 and 1.0) at which the percent point
      function is to be evaluated.

OUTPUT ARGUMENTS

PPF   The percent point function value.

EXAMPLES

Sample program:

program demo_unippf
use M_datapac, only : unippf, label
implicit none
   call label('unippf')
! call unippf(x,y)
end program demo_unippf

Results:

AUTHOR

The original DATAPAC library was written by James Filliben of the
Statistical Engineering Division, National Institute of Standards
and Technology.

MAINTAINER

John Urban, 2022.05.31

LICENSE

CC0-1.0

REFERENCES

  • Filliben, Simple and Robust Linear Estimation of the Location Parameter of a Symmetric Distribution (Unpublished PH.D. Dissertation, Princeton University), 1969, pages 21-44, 229-231.
  • Filliben, ‘The Percent Point Function’, (Unpublished Manuscript), 1970, pages 28-31.
  • Johnson and Kotz, Continuous Univariate Distributions–2, 1970, pages 57-74.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: P
real(kind=wp), intent(out) :: Ppf

Source Code

SUBROUTINE UNIPPF(P,Ppf)
REAL(kind=wp),intent(in)  :: P
REAL(kind=wp),intent(out) :: Ppf
   !
   !     CHECK THE INPUT ARGUMENTS FOR ERRORS
   !
   IF ( P<0.0_wp .OR. P>1.0_wp ) THEN
      WRITE (G_IO,99001)
      99001 FORMAT (' ***** FATAL ERROR--The first input argument to UNIPPF(3f) is outside the allowable (0,1) interval *****')
      WRITE (G_IO,99002) P
      99002 FORMAT (' ','***** The value of the argument is ',E15.8,' *****')
      RETURN
   ELSE
      Ppf = P
   ENDIF

END SUBROUTINE UNIPPF