21 real(kind_real),
parameter ::
eta = 1.0e-9_kind_real
38 integer,
intent(in) :: n
39 integer,
intent(in) :: nn
40 real(kind_real),
intent(in) :: a(nn)
41 real(kind_real),
intent(out) :: u(nn)
44 integer :: i,icol,ii,irow,j,k,kk,l,m
45 real(kind_real) :: w,x
51 if (nn/=(n*(n+1))/2)
then 52 call mpl%abort(
'wrong size in Cholesky decomposition')
76 if (abs(u(l))>0.0)
then 80 if (
inf(abs(x*a(k)),w**2))
call mpl%abort(
'A is not positive semi-definite')
85 if (
infeq(abs(w),abs(
eta*a(k))))
then 88 if (w<0.0)
call mpl%abort(
'A is not positive semi-definite')
106 integer,
intent(in) :: n
107 integer,
intent(in) :: nn
108 real(kind_real),
intent(in) :: a(nn)
109 real(kind_real),
intent(out) :: c(nn)
112 integer :: i,icol,irow,j,jcol,k,l,mdiag,ndiag,nrow
113 real(kind_real) :: w(n),x
117 if (nn/=(n*(n+1))/2)
then 118 call mpl%abort(
'wrong size in Cholesky decomposition')
130 if (abs(c(ndiag))>0.0)
then 152 if (mdiag<l) l = l-k+1
integer, parameter, public kind_real