83interface wrtb;
module procedure wrtb;
end interface
99subroutine avco(na,nb,za,zb,z0,a,b)
103integer(spi),
intent(in ):: na,nb
104real(sp),
intent(in ):: za(na),zb(nb),z0
105real(sp),
intent(out):: a(na),b(nb)
107integer(spi) :: na1,nab,i
108real(sp),
dimension(na+nb,na+nb):: w
109real(sp),
dimension(na) :: za0,pa
110real(sp),
dimension(nb) :: zb0,pb
111real(sp),
dimension(na+nb) :: ab
117w(1,1:na)=
u1; ab(1)=
u1
118do i=2,nab; w(i,1:na)=pa; pa=pa*za0; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
120a=ab(1:na); b=ab(na1:nab)
137integer(spi),
intent(IN ):: na,nb
138real(dp),
intent(IN ):: za(na),zb(nb),z0
139real(dp),
intent(OUT):: a(na),b(nb)
141integer(spi) :: na1,nab,i
142real(dp),
dimension(na+nb,na+nb):: w
143real(dp),
dimension(na) :: za0,pa
144real(dp),
dimension(nb) :: zb0,pb
145real(dp),
dimension(na+nb) :: ab
151w(1,1:na)=
u1; ab(1)=
u1
152do i=2,nab; w(i,1:na)=pa; pa=pa*za0; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
154a=ab(1:na); b=ab(na1:nab)
166real(dp),
dimension(:),
intent(IN ):: xa,xb
167real(dp),
dimension(:),
intent(OUT):: a,b
171na=
size(xa);
if(na /=
size(a))stop
'In tavco; sizes of a and xa different'
172nb=
size(xb);
if(nb /=
size(b))stop
'In tavco; sizes of b and xb different'
189subroutine dfco(na,nb,za,zb,z0,a,b)
190use pietc_s,
only: u0,u1
193integer(spi),
intent(IN ) :: na,nb
194real(sp),
intent(IN ) :: za(na),zb(nb),z0
195real(sp),
intent(OUT) :: a(na),b(nb)
197integer(spi):: na1,nab,i
198real(sp),
dimension(na+nb,na+nb):: w
199real(sp),
dimension(na) :: za0,pa
200real(sp),
dimension(nb) :: zb0,pb
201real(sp),
dimension(na+nb) :: ab
207w(1,1:na)=u1; ab(1)=u1
208do i=3,nab; w(i,1:na) =pa*(i-2); pa=pa*za0;
enddo
209do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
211a=ab(1:na); b=ab(na1:nab)
228integer(spi),
intent(in) :: na,nb
229real(dp),
intent(in) :: za(na),zb(nb),z0
230real(dp),
intent(out):: a(na),b(nb)
232integer(spi) :: na1,nab,i
233real(dp),
dimension(na+nb,na+nb):: w
234real(dp),
dimension(na) :: za0,pa
235real(dp),
dimension(nb) :: zb0,pb
236real(dp),
dimension(na+nb) :: ab
242w(1,1:na)=
u1; ab(1)=
u1
243do i=3,nab; w(i,1:na) =pa*(i-2); pa=pa*za0;
enddo
244do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
246a=ab(1:na); b=ab(na1:nab)
259real(dp),
dimension(:),
intent(IN ):: xa,xb
260real(dp),
dimension(:),
intent(OUT):: a,b
264na=
size(xa);
if(na /=
size(a))stop
'In tdfco; sizes of a and xa different'
265nb=
size(xb);
if(nb /=
size(b))stop
'In tdfco; sizes of b and xb different'
283use pietc_s,
only: u0,u1
286integer(spi),
intent(IN ):: na,nb
287real(sp),
intent(IN ):: za(na),zb(nb),z0
288real(sp),
intent(OUT):: a(na),b(nb)
290integer(spi) :: na1,nab,i
291real(sp),
dimension(na+nb,na+nb):: w
292real(sp),
dimension(na) :: za0,pa
293real(sp),
dimension(nb) :: zb0,pb
294real(sp),
dimension(na+nb) :: ab
300w(1,1:na)=u1; ab(1)=u1
301do i=4,nab; w(i,1:na) =pa*(i-2)*(i-3); pa=pa*za0;
enddo
302do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
304a=ab(1:na); b=ab(na1:nab)
321integer(spi),
intent(IN ) :: na,nb
322real(dp),
intent(IN ) :: za(na),zb(nb),z0
323real(dp),
intent(OUT) :: a(na),b(nb)
325integer(spi) :: na1,nab,i
326real(dp),
dimension(na+nb,na+nb):: w
327real(dp),
dimension(na) :: za0,pa
328real(dp),
dimension(nb) :: zb0,pb
329real(dp),
dimension(na+nb) :: ab
335w(1,1:na)=
u1; ab(1)=
u1
336do i=4,nab; w(i,1:na) =pa*(i-2)*(i-3); pa=pa*za0;
enddo
337do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0;
enddo
339a=ab(1:na); b=ab(na1:nab)
351real(dp),
dimension(:),
intent(IN ):: xa,xb
352real(dp),
dimension(:),
intent(OUT):: a,b
356na=
size(xa);
if(na /=
size(a))stop
'In tdfco2; sizes of a and xa different'
357nb=
size(xb);
if(nb /=
size(b))stop
'In tdfco2; sizes of b and xb different'
369pure subroutine clib(m1,m2,mah1,mah2,a)
372integer(spi),
intent(IN ) :: m1, m2, mah1, mah2
373real(
sp),
intent(INOUT) :: a(m1,-mah1:mah2)
375do j=1,mah1; a(1:min(m1,j),-j)=u0;
enddo
376do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=u0;
enddo
390integer(spi),
intent(IN ) :: m1, m2, mah1, mah2
391real(
dp),
intent(INOUT) :: a(m1,-mah1:mah2)
393do j=1,mah1; a(1:min(m1,j),-j)=
u0;
enddo
394do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=
u0;
enddo
408integer(spi),
intent(IN ) :: m1, m2, mah1, mah2
409complex(dpc),
intent(INOUT) :: a(m1,-mah1:mah2)
411do j=1,mah1; a(1:min(m1,j),-j)=
c0;
enddo
412do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=
c0;
enddo
425subroutine cad1b(m1,mah1,mah2,mirror2,a)
428integer(spi),
intent(IN ):: m1,mah1,mah2,mirror2
429real(sp),
intent(INOUT):: a(0:m1-1,-mah1:mah2)
431integer(spi):: i,i2,jm,jp,jpmax
433if(mirror2+mah1 > mah2)stop
'In CAD1B; mah2 insufficient'
434do i=0,m1-1; i2=i*2; jpmax=mirror2+mah1-i2;
if(jpmax <= -mah1)
exit
435 do jm=-mah1,mah2; jp=mirror2-jm-i2;
if(jp <= jm)
exit
436 a(i,jp)=a(i,jp)+a(i,jm)
450subroutine csb1b(m1,mah1,mah2,mirror2,a)
453integer(spi),
intent(IN ):: m1,mah1,mah2,mirror2
454real(sp),
intent(INOUT):: a(0:m1-1,-mah1:mah2)
456integer(spi):: i,i2,jm,jp,jpmax
458if(mirror2+mah1 > mah2)stop
'In CSB1B; mah2 insufficient'
459do i=0,m1-1; i2=i*2; jpmax=mirror2+mah1-i2;
if(jpmax < -mah1)
exit
460 do jm=-mah1,mah2; jp=mirror2-jm-i2;
if(jp < jm)
exit
461 a(i,jp)=a(i,jp)-a(i,jm)
476subroutine cad2b(m1,m2,mah1,mah2,mirror2,a)
479integer(spi),
intent(IN ):: m1,m2,mah1,mah2,mirror2
480real(sp),
intent(INOUT):: a(1-m1:0,m1-m2-mah1:m1-m2+mah2)
482integer(spi):: i,i2,jm,jp,jmmin,nah1,nah2
484nah1=mah1+m2-m1; nah2=mah2+m1-m2
485if(mirror2-nah1 > -nah2)stop
'In CAD2B; mah1 insufficient'
486do i=0,1-m1,-1; i2=i*2; jmmin=mirror2-nah2-i2;
if(jmmin >= nah2)
exit
487 do jp=nah2,nah1,-1; jm=mirror2-jp-i2;
if(jm >= jp)
exit
488 a(i,jm)=a(i,jm)+a(i,jp)
503subroutine csb2b(m1,m2,mah1,mah2,mirror2,a)
506integer(spi),
intent(IN ):: m1,m2,mah1,mah2,mirror2
507real(sp),
intent(INOUT):: a(1-m1:0,m1-m2-mah1:m1-m2+mah2)
509integer(spi):: i,i2,jm,jp,jmmin,nah1,nah2
511nah1=mah1+m2-m1; nah2=mah2+m1-m2
512if(mirror2-nah1 > -nah2)stop
'In CSB2B; mah1 insufficient'
513do i=0,1-m1,-1; i2=i*2; jmmin=mirror2-nah2-i2;
if(jmmin > nah2)
exit
514 do jp=nah2,nah1,-1; jm=mirror2-jp-i2;
if(jm > jp)
exit
515 a(i,jm)=a(i,jm)-a(i,jp)
532use pietc_s,
only: u0,u1
534integer(spi),
intent(IN ):: m,mah1, mah2
535real(sp),
intent(INOUT):: a(m,-mah1:mah2)
537integer(spi):: j, imost, jmost, jp, i
538real(sp) :: ajj, ajji, aij
546 print
'(" Failure in LDUB:"/" Matrix requires pivoting or is singular")'
554 a(i,jp-i:jmost-i)=a(i,jp-i:jmost-i)-aij*a(j,1:jmost-j)
556 a(j,1:jmost-j)=ajji*a(j,1:jmost-j)
573integer(spi),
intent(IN ):: m,mah1, mah2
574real(dp),
intent(INOUT):: a(m,-mah1:mah2)
576integer(spi):: j, imost, jmost, jp, i
577real(dp) :: ajj, ajji, aij
585 print
'(" Fails in LDUB_d:"/" Matrix requires pivoting or is singular")'
593 a(i,jp-i:jmost-i)=a(i,jp-i:jmost-i)-aij*a(j,1:jmost-j)
595 a(j,1:jmost-j)=ajji*a(j,1:jmost-j)
609use pietc_s,
only: u0,u1
610integer(spi),
intent(IN ):: m,mah1
611real(sp),
intent(INOUT):: a(m,-mah1:0)
613integer(spi):: j, imost, jp, i,k
614real(sp) :: ajj, ajji, aij
621 print
'(" Fails in LDLTB:"/" Matrix requires pivoting or is singular")'
630 a(i,k-i)=a(i,k-i)-aij*a(k,j-k)
646integer(spi),
intent(IN ) :: m,mah1
647real(dp),
intent(INOUT) :: a(m,-mah1:0)
649integer(spi):: j, imost, jp, i,k
650real(dp) :: ajj, ajji, aij
657 print
'(" Fails in LDLTB_d:"/" Matrix requires pivoting or is singular")'
666 a(i,k-i)=a(i,k-i)-aij*a(k,j-k)
684integer(spi),
intent(IN ) :: m,mah1,mah2
685real(sp),
dimension(m,-mah1:mah2),
intent(INOUT) :: a(m,-mah1:mah2)
687real(sp),
dimension(m,-mah2:mah1):: at
689at=a(m:1:-1,mah2:-mah1:-1);
call ldub(m,mah2,mah1,at)
690a=at(m:1:-1,mah1:-mah2:-1)
705integer(spi),
intent(IN ) :: m,mah1,mah2
706real(dp),
dimension(m,-mah1:mah2),
intent(INOUT) :: a(m,-mah1:mah2)
708real(dp),
dimension(m,-mah2:mah1):: at
710at=a(m:1:-1,mah2:-mah1:-1);
call dldub(m,mah2,mah1,at)
711a=at(m:1:-1,mah1:-mah2:-1)
732subroutine l1ubb(m,mah1,mah2,mbh1,mbh2,a,b)
733use pietc_s,
only: u0,u1
735integer(spi),
intent(IN ) :: m,mah1, mah2, mbh1, mbh2
736real(sp),
intent(INOUT) :: a(m,-mah1:mah2), b(m,-mbh1:mbh2)
738integer(spi):: j, imost, jmost, jleast, jp, i
739real(sp) :: ajj, ajji, aij
747 if(ajj == u0)stop
'In L1UBB; zero element found in diagonal factor'
749 a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
752 a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
755 b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
770subroutine dl1ubb(m,mah1,mah2,mbh1,mbh2,a,b)
773integer(spi),
intent(IN ) :: m,mah1, mah2, mbh1, mbh2
774real(dp),
intent(INOUT) :: a(m,-mah1:mah2), b(m,-mbh1:mbh2)
776integer(spi):: j, imost, jmost, jleast, jp, i
777real(dp) :: ajj, ajji, aij
785 if(ajj ==
u0)stop
'In L1UBB_d; zero element found in diagonal factor'
787 a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
790 a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
793 b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
817subroutine l1ueb(m,mah1,mah2,mbh1,mbh2,a,b)
818use pietc_s,
only: u0,u1
820integer(spi),
intent(IN ) :: m,mah1, mah2, mbh1, mbh2
821real(sp),
intent(INOUT) :: a(0:m,-mah1:mah2), b(m,-mbh1:mbh2)
823integer(spi):: j, imost, jmost, jleast, jp, i
824real(sp) :: ajj, ajji, aij
832 if(ajj == u0)stop
'In L1UEB; zero element found in diagonal factor'
834 a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
837 a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
840 b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
854subroutine dl1ueb(m,mah1,mah2,mbh1,mbh2,a,b)
857integer(spi),
intent(IN ):: m,mah1, mah2, mbh1, mbh2
858real(dp),
intent(INOUT):: a(0:,-mah1:), b(:,-mbh1:)
860integer(spi):: j, imost, jmost, jleast, jp, i
861real(dp) :: ajj, ajji, aij
869 if(ajj ==
u0)stop
'In L1UEB_D; zero element found in diagonal factor'
871 a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
874 a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
877 b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
893integer(spi),
intent(IN ):: m, mah1, mah2
894real(sp),
intent(IN ):: a(m,-mah1:mah2)
895real(sp),
intent(INOUT):: v(m)
902 do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
906 do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj;
enddo
922integer(spi),
intent(IN ) :: m, mah1, mah2
923real(dp),
intent(IN ) :: a(m,-mah1:mah2)
924real(dp),
intent(INOUT) :: v(m)
931 do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
935 do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj;
enddo
951integer(spi),
intent(IN ) :: m, mah1
952real(sp),
intent(IN ) :: a(m,-mah1:0)
953real(sp),
intent(INOUT) :: v(m)
960 do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
964 do i=max(1,j-mah1),j-1; v(i)=v(i)-a(j,i-j)*vj;
enddo
981integer(spi),
intent(IN ) :: m, mah1
982real(dp),
intent(IN ) :: a(m,-mah1:0)
983real(dp),
intent(INOUT) :: v(m)
990 do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
994 do i=max(1,j-mah1),j-1; v(i)=v(i)-a(j,i-j)*vj;
enddo
1012integer(spi),
intent(IN ) :: mx, mah1, mah2, my
1013real(sp),
intent(IN ) :: a(mx,-mah1:mah2)
1014real(sp),
intent(INOUT) :: v(mx,my)
1016integer(spi):: jx, ix
1019 do ix=jx+1,min(mx,jx+mah1); v(ix,:) = v(ix,:) - a(ix,jx-ix)*v(jx,:);
enddo
1020 v(jx,:) = a(jx,0) * v(jx,:)
1023 do ix=max(1,jx-mah2),jx-1; v(ix,:) = v(ix,:) - a(ix,jx-ix)*v(jx,:);
enddo
1041integer(spi),
intent(IN ) :: my, mah1, mah2, mx
1042real(sp),
intent(IN ) :: a(my,-mah1:mah2)
1043real(sp),
intent(INOUT) :: v(mx,my)
1045integer(spi):: iy, jy
1048 do iy=jy+1,min(my,jy+mah1); v(:,iy) = v(:,iy)-a(iy,jy-iy)*v(:,jy);
enddo
1049 v(:,jy)=a(jy,0)*v(:,jy)
1052 do iy=max(1,jy-mah2),jy-1; v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy);
enddo
1068integer(spi),
intent(IN ) :: m, mah1, mah2
1069real(sp),
intent(IN ) :: a(m,-mah1:mah2)
1070real(sp),
intent(INOUT) :: v(m)
1077 do j=i+1,min(m,i+mah2); v(j)=v(j)-vi*a(i,j-i);
enddo
1082 do j=max(1,i-mah1),i-1; v(j)=v(j)-vi*a(i,j-i);
enddo
1100integer(spi),
intent(IN ) :: mx, mah1, mah2, my
1101real(sp),
intent(IN ) :: a(mx,-mah1:mah2)
1102real(sp),
intent(INOUT) :: v(mx,my)
1104integer(spi):: ix, jx
1107 do jx=ix+1,min(mx,ix+mah2); v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix);
enddo
1108 v(ix,:)=v(ix,:)*a(ix,0)
1111 do jx=max(1,ix-mah1),ix-1; v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix);
enddo
1129integer(spi),
intent(IN ) :: my, mah1, mah2, mx
1130real(sp),
intent(IN ) :: a(my,-mah1:mah2)
1131real(sp),
intent(INOUT) :: v(mx,my)
1133integer(spi):: iy, jy
1136 do jy=iy+1,min(my,iy+mah2); v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy);
enddo
1137 v(:,iy)=v(:,iy)*a(iy,0)
1140 do jy=max(1,iy-mah1),iy-1; v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy);
enddo
1156integer(spi),
intent(IN ) :: m, mah1, mah2
1157real(sp),
intent(IN ) :: a(m,-mah1:mah2)
1158real(sp),
intent(INOUT) :: v(m)
1165 do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj;
enddo
1169 do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj;
enddo
1187integer(spi),
intent(IN ) :: mx, mah1, mah2, my
1188real(sp),
intent(IN ) :: a(mx,-mah1:mah2)
1189real(sp),
intent(INOUT) :: v(mx,my)
1191integer(spi):: ix, jx
1194 do ix=jx+1,min(mx,jx+mah1); v(ix,:)=v(ix,:)-a(ix,jx-ix)*v(jx,:);
enddo
1197 do ix=max(1,jx-mah2),jx-1; v(ix,:)=v(ix,:)-a(ix,jx-ix)*v(jx,:);
enddo
1215integer(spi),
intent(IN ) :: my, mah1, mah2, mx
1216real(sp),
intent(IN ) :: a(my,-mah1:mah2)
1217real(sp),
intent(INOUT) :: v(mx,my)
1219integer(spi):: iy, jy
1222 do iy=jy+1,min(my,jy+mah1); v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy);
enddo
1225 do iy=max(1,jy-mah2),jy-1; v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy);
enddo
1241integer(spi),
intent(IN ) :: m, mah1, mah2
1242real(sp),
intent(IN ) :: a(m,-mah1:mah2)
1243real(sp),
intent(INOUT) :: v(m)
1250 do j=i+1,min(m,i+mah2); v(j)=v(j)-vi*a(i,j-i);
enddo
1254 do j=max(1,i-mah1),i-1; v(j)=v(j)-vi*a(i,j-i);
enddo
1272integer(spi),
intent(IN ) :: mx, mah1, mah2, my
1273real(sp),
intent(IN ) :: a(mx,-mah1:mah2)
1274real(sp),
intent(INOUT) :: v(mx,my)
1276integer(spi):: ix, jx
1279 do jx=ix+1,min(mx,ix+mah2); v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix);
enddo
1282 do jx=max(1,ix-mah1),ix-1; v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix);
enddo
1300integer(spi),
intent(IN ) :: my, mah1, mah2, mx
1301real(sp),
intent(IN ) :: a(my,-mah1:mah2)
1302real(sp),
intent(INOUT) :: v(mx,my)
1304integer(spi):: iy, jy
1307 do jy=iy+1,min(my,iy+mah2); v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy);
enddo
1310 do jy=max(1,iy-mah1),iy-1; v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy);
enddo
1324integer(spi),
intent(IN ) :: m, mah1, mah2
1325real(sp),
intent(INOUT) :: a(m,-mah1:mah2), v(m)
1327call ldub(m,mah1,mah2,a)
1328call udlbv(m,mah1,mah2,a,v)
1342integer(spi),
intent(IN) :: m1, m2, mah1, mah2
1343real(sp),
intent(IN) :: a(m1,-mah1:mah2)
1345integer(spi):: i1, i2, i, j1, j2, j, nj1
1349 print
'(7x,6(i2,10x))',(j,j=-mah1,mah2)
1354 if(nj1==0)print
'(1x,i3,6(1x,e12.5))', i,(a(i,j),j=j1,j2)
1355 if(nj1==1)print
'(1x,i3,12x,5(1x,e12.5))',i,(a(i,j),j=j1,j2)
1356 if(nj1==2)print
'(1x,i3,24x,4(1x,e12.5))',i,(a(i,j),j=j1,j2)
1357 if(nj1==3)print
'(1x,i3,36x,3(1x,e12.5))',i,(a(i,j),j=j1,j2)
1358 if(nj1==4)print
'(1x,i3,48x,2(1x,e12.5))',i,(a(i,j),j=j1,j2)
1359 if(nj1==5)print
'(1x,i3,60x,1(1x,e12.5))',i,(a(i,j),j=j1,j2)
Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
real(dp), parameter u1
one
complex(dpc), parameter c0
complex zero
real(dp), parameter u0
zero
Standard integer, real, and complex single and double precision kinds.
integer, parameter dp
Double precision real kind.
integer, parameter dpc
Double precision real kind.
integer, parameter sp
Single precision real kind.
integer, parameter spi
Single precision integer kind.
Routines dealing with the operations of banded matrices.
real(dp), parameter zero
Double precision real zero.
subroutine tavco(xa, xb, a, b)
Simplified computation of compact midpoint interpolation coefficients.
subroutine tdfco2(xa, xb, a, b)
Simplified computation of compact 2nd-derivative coefficients.
subroutine dudlbv(m, mah1, mah2, a, v)
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector,...
subroutine tdfco(xa, xb, a, b)
Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c,...
pure subroutine clib(m1, m2, mah1, mah2, a)
Clip (set to zero) the unused values in a banded matrix representation.
subroutine dldltb(m, mah1, a)
[L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky).
subroutine dl1ubb(m, mah1, mah2, mbh1, mbh2, a, b)
Double precision version of L1UBB.
subroutine dldub(m, mah1, mah2, a)
[L]*[D]*[U] factoring of double precision band-matrix.
pure subroutine clib_d(m1, m2, mah1, mah2, a)
Clip (set to zero) the unused values in a banded matrix representation.
subroutine dltdlbv(m, mah1, a, v)
Like udlbv, except assuming a is the ltdl decomposition of a SYMMETRIC banded matrix,...
subroutine ddfco(na, nb, za, zb, z0, a, b)
Double precision version of dfco for compact differentiation coefficients.
subroutine davco(na, nb, za, zb, z0, a, b)
Double precision version of subroutine avco for midpoint interpolation.
subroutine dl1ueb(m, mah1, mah2, mbh1, mbh2, a, b)
Double precision version of L1UEB.
pure subroutine clib_c(m1, m2, mah1, mah2, a)
Clip (set to zero) the unused values in a banded matrix representation.
subroutine ddfco2(na, nb, za, zb, z0, a, b)
Double precision version of DFCO2 to get 2nd-derivative coefficients.
subroutine dudlb(m, mah1, mah2, a)
[U]*[D]*[L] factoring of double precision band matrix A [U] is upper triangular with unit main diagon...