! Some useful snippets
!-----------------------------------------------------------------------
! Create double precision parameter 'pi' that is hardware and
! compiler independent [and two alternative formulations, but use first]
DOUBLE PRECISION, PARAMETER :: pi = 4.d0 * ATAN(1.d0)
DOUBLE PRECISION, PARAMETER :: pi1 = ACOS(-1.d0)
DOUBLE PRECISION, PARAMETER :: pi2 = 2.d0 * ASIN(1.d0)
!-----------------------------------------------------------------------
! Cube root function [vs. x**(1.d0/3.d0)]
DOUBLE PRECISION FUNCTION CubeRt (x)
IMPLICIT none
DOUBLE PRECISION x
INTEGER i
IF (x .EQ. 0.d0) THEN ; CubeRt = 0.d0 ; RETURN ; END IF
CubeRt = SIGN(1.d0, x) * EXP(LOG(ABS(x))/3.d0)
DO i = 1, 2
CubeRt = CubeRt - (CubeRt**3 - x) / (3.d0 * CubeRt**2)
END DO
END