|
|
@ -2,12 +2,12 @@
|
|
|
|
subroutine prbnormtndpc(rho,a,b,NDF,N,abseps,IERC,HNC,PRB,BOUND,
|
|
|
|
subroutine prbnormtndpc(rho,a,b,NDF,N,abseps,IERC,HNC,PRB,BOUND,
|
|
|
|
* IFAULT)
|
|
|
|
* IFAULT)
|
|
|
|
double precision A(N),B(N),rho(N),D(N)
|
|
|
|
double precision A(N),B(N),rho(N),D(N)
|
|
|
|
integer INFIN(N)
|
|
|
|
integer INFIN(N)
|
|
|
|
integer NDF,N,IERC
|
|
|
|
integer NDF,N,IERC
|
|
|
|
integer IFAULT
|
|
|
|
integer IFAULT
|
|
|
|
double precision HNC,EPS
|
|
|
|
double precision HNC,EPS
|
|
|
|
double precision PRB, BOUND
|
|
|
|
double precision PRB, BOUND
|
|
|
|
double precision, parameter :: infinity = 37.0d0
|
|
|
|
double precision, parameter :: infinity = 37.0d0
|
|
|
|
Cf2py integer, intent(hide), depend(rho) :: N = len(rho)
|
|
|
|
Cf2py integer, intent(hide), depend(rho) :: N = len(rho)
|
|
|
|
Cf2py depend(N) a
|
|
|
|
Cf2py depend(N) a
|
|
|
|
Cf2py depend(N) b
|
|
|
|
Cf2py depend(N) b
|
|
|
@ -32,10 +32,10 @@ CCf2py intent(in) A,B,rho
|
|
|
|
* if INFIN(I) = 1, Ith limits are (-infinity, UPPER(I)];
|
|
|
|
* if INFIN(I) = 1, Ith limits are (-infinity, UPPER(I)];
|
|
|
|
* if INFIN(I) = 2, Ith limits are [LOWER(I), UPPER(I)].
|
|
|
|
* if INFIN(I) = 2, Ith limits are [LOWER(I), UPPER(I)].
|
|
|
|
Ndim = 0
|
|
|
|
Ndim = 0
|
|
|
|
DO K = 1,N
|
|
|
|
DO K = 1,N
|
|
|
|
Ndim = Ndim + 1
|
|
|
|
Ndim = Ndim + 1
|
|
|
|
INFIN(Ndim) = 2
|
|
|
|
INFIN(Ndim) = 2
|
|
|
|
D(k) = 0.0
|
|
|
|
D(k) = 0.0
|
|
|
|
if (A(K)-D(K).LE.-INFINITY) THEN
|
|
|
|
if (A(K)-D(K).LE.-INFINITY) THEN
|
|
|
|
if (B(K)-D(K) .GE. INFINITY) THEN
|
|
|
|
if (B(K)-D(K) .GE. INFINITY) THEN
|
|
|
|
Ndim = Ndim - 1
|
|
|
|
Ndim = Ndim - 1
|
|
|
@ -52,8 +52,8 @@ CCf2py intent(in) A,B,rho
|
|
|
|
B(Ndim) = B(K)
|
|
|
|
B(Ndim) = B(K)
|
|
|
|
C D(Ndim) = D(K)
|
|
|
|
C D(Ndim) = D(K)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
ENDDO
|
|
|
|
ENDDO
|
|
|
|
CALL MVSTUD(NDF,B,A,RHO,ABSEPS,Ndim,INFIN,D,IERC,HNC,
|
|
|
|
CALL MVSTUD(NDF,B,A,RHO,ABSEPS,Ndim,INFIN,D,IERC,HNC,
|
|
|
|
& PRB,BOUND,IFAULT)
|
|
|
|
& PRB,BOUND,IFAULT)
|
|
|
|
|
|
|
|
|
|
|
|
C CALL MVNPRD(A, B, BPD, EPS, N, INF, IERC, HINC, PROB, BOUND,
|
|
|
|
C CALL MVNPRD(A, B, BPD, EPS, N, INF, IERC, HINC, PROB, BOUND,
|
|
|
@ -61,15 +61,15 @@ C * IFAULT)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end subroutine prbnormtndpc
|
|
|
|
end subroutine prbnormtndpc
|
|
|
|
|
|
|
|
|
|
|
|
subroutine prbnormndpc(prb,abserr,IFT,rho,a,b,N,abseps,releps,
|
|
|
|
subroutine prbnormndpc(prb,abserr,IFT,rho,a,b,N,abseps,releps,
|
|
|
|
& useBreakPoints, useSimpson)
|
|
|
|
& useBreakPoints, useSimpson)
|
|
|
|
use mvnProdCorrPrbMod, ONLY : mvnprodcorrprb
|
|
|
|
use mvnProdCorrPrbMod, ONLY : mvnprodcorrprb
|
|
|
|
integer :: N
|
|
|
|
integer :: N
|
|
|
|
double precision,dimension(N),intent(in) :: rho,a,b
|
|
|
|
double precision,dimension(N),intent(in) :: rho,a,b
|
|
|
|
double precision,intent(in) :: abseps
|
|
|
|
double precision,intent(in) :: abseps
|
|
|
|
double precision,intent(in) :: releps
|
|
|
|
double precision,intent(in) :: releps
|
|
|
|
logical, intent(in) :: useBreakPoints
|
|
|
|
logical, intent(in) :: useBreakPoints
|
|
|
|
logical, intent(in) :: useSimpson
|
|
|
|
logical, intent(in) :: useSimpson
|
|
|
|
double precision,intent(out) :: abserr,prb
|
|
|
|
double precision,intent(out) :: abserr,prb
|
|
|
|
integer, intent(out) :: IFT
|
|
|
|
integer, intent(out) :: IFT
|
|
|
|
|
|
|
|
|
|
|
|