CAUSF Subroutine

public subroutine CAUSF(P, Sf)

NAME

causf(3f) - [M_datapac:SPARSITY] compute the Cauchy sparsity function

SYNOPSIS

   SUBROUTINE CAUSF(P,Sf)

    REAL(kind=wp) :: P
    REAL(kind=wp) :: Sf

DESCRIPTION

CAUSF(3f) computes the sparsity function value for the cauchy
distribution with median = 0 and 75% point = 1.

This distribution is defined for all X and has the probability density

    function f(X) = (1/pi)*(1/(1+X*X))

Note that the sparsity function of a distribution is the derivative
of the percent point function, and also is the reciprocal of the
probability density function (but in units of p rather than x).

INPUT ARGUMENTS

 P    the value (between 0.0 and 1.0) at which the sparsity
      function is to be evaluated. P should be between 0.0 and 1.0,
      exclusively.

OUTPUT ARGUMENTS

 SF   The sparsity function value.

EXAMPLES

Sample program:

program demo_causf
use M_datapac, only : causf
implicit none
! call causf(x,y)
end program demo_causf

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–1, 1970, pages 154-165.

Arguments

Type IntentOptional Attributes Name
real(kind=wp) :: P
real(kind=wp) :: Sf

Source Code

SUBROUTINE CAUSF(P,Sf)
REAL(kind=wp) :: P
REAL(kind=wp) :: Sf

REAL(kind=wp) :: arg
!
!     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 CAUSF(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
         arg = G_pi*P
         Sf = G_pi/((SIN(arg))**2)
      ENDIF
!
END SUBROUTINE CAUSF