FUNCTION random_Cauchy() RESULT(fn_val)
! Generate a random deviate from the standard Cauchy distribution
REAL :: fn_val
! Local variables
REAL :: v(2)
DO
CALL RANDOM_NUMBER(v)
v = two*(v - half)
IF (ABS(v(2)) < vsmall) CYCLE ! Test for zero
IF (v(1)**2 + v(2)**2 < one) EXIT
END DO
fn_val = v(1) / v(2)
RETURN
END FUNCTION random_Cauchy