Index: utils/Xyz2Scan.f
===================================================================
--- utils/Xyz2Scan.f	(revision 0)
+++ utils/Xyz2Scan.f	(revision 1)
@@ -0,0 +1,563 @@
+          program Xyz2irc
+! This programs reads a XYZ file and converts it into distances,
+! valence angle and dihedral angles.
+! It prints them as a function of the irc distance...
+!-----------------------------------------------
+! Input: name of the ROOT file of PAW
+! it also needs a file call list which has the following structure:
+! the first line gives the time when you want to start your analysis
+! one line contains the type of the value you want to follow, it can be
+! b  for a Bond distance
+! a for an angle
+! d for a dihedral
+! this descriptor is followed by the number of the atoms involved !
+! a typical file can be:
+! 3.
+! b  1  2
+! b 2  3
+! a 1 2 3
+!----------------------------------------------
+! Ouput: A files call Scan.dat
+! wich contains in the first lines the input file (as a reminder)
+! and then for each step the wanted values
+!------------------------------------------------
+! Second version also reads the energy (as to be written after E= on
+! the comment line)
+!------------------------------------------------
+! Third version contains a new command: c for Center of Mass
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v 3.1 the c command now creates the center of mass... and allows
+! people to do whatever they want with it...
+! Syntax: c NbAt ListAt
+!!
+! v 3.2
+! Added the p command that gives the oriented angle between two planes
+! Syntax: p At1 At2 At3 At4 At5 At6
+! At1, At2, At3 define the first plane
+! At4, At5, At6 define the second plane
+! How it works: gives the angles between the normal of the two planes, defined by
+! the cross produc At2-At1 x At2-At3 etc.
+!!!!
+
+
+          IMPLICIT NONE
+          INTEGER*4 maxnat,MaxList
+          Parameter (MaxNat=10000,MaxList=100)
+          character*120 f1
+          REAL*8   geos(3,maxnat)
+          character*33 fmt
+          character*3 atoms(maxnat)
+          character*5 Type
+          Character*120 line
+          INTEGER*4 NbPrint
+          REAL*8   AU2PS,Pi
+! Mass is not used for now.
+!          REAL*8  Mass(MaxNat)
+          REAL*8 Ener, Conv
+          INTEGER*4 At1,At2,At3,At4,At5,At6,IOOUT
+          INTEGER*4  IArg, I, NNN, Ng, J
+
+          INTEGER*4 Nat,NbDist, NbAngle, NbDie,NbP,NbCOM
+          INTEGER*4 At1B(MaxList),At2B(MaxList)
+          INTEGER*4 At1A(MaxList),At2A(MaxList),At3A(MaxList)
+          INTEGER*4 At1D(MaxList),At2D(MaxList),At3D(MaxList),
+     $              At4D(MaxList)
+          INTEGER*4 At1p(MaxList),At2p(MaxList),At3p(MaxList),
+     $              At4p(MaxList),At5p(MaxList),At6p(MaxList) 
+          INTEGER*4 AtCom(0:MaxList,MaxList)
+          REAL*8    VB(MaxList),VA(MaxList),VD(MaxList),VCOM(MaxList)
+          REAL*8    Vp(MaxList)
+          LOGICAL FExist
+
+c          INTEGER*4 iargc
+c          external iargc
+
+          COMMON /Indices/Nat,NbDist,NbAngle,NbDie,NbP,NbCom, At1B,At2B,
+     &         At1A,At2A,At3A,At1D,At2D,At3D,At4D,AtCom,
+     &         At1p,At2p,At3p,At4p,At5p,At6p
+          COMMON /Values/VB,VA,VD,Vp,VCom
+          COMMON /Const/AU2ps,Pi
+
+          AU2PS=1./41341.37
+          NbPrint=100
+          Pi=dacos(-1.d0)
+          IOOUT=13
+          Conv=1.
+          iarg=iargc()
+          if (iarg.lt.1) then
+             WRITE(*,*) "=============================================="
+             WRITE(*,*) "==                                          =="
+             WRITE(*,*) "==   Xyz2Scan: Xyz file to scan file        =="
+             WRITE(*,*) "==                                          =="
+             WRITE(*,*) "=============================================="
+             WRITE(*,*) "Usage: xyz2scan XYZ_file "
+             WRITE(*,*) "The XYZ file should follow the 'usual' format:"
+             WRITE(*,*) "Number of atoms on the first line "
+             WRITE(*,*) "Comment on the second line"
+             WRITE(*,*) "The geometry is given in cartesian coordinates"
+             WRITE(*,*) "with atom symbol and three coordinates:"
+             WRITE(*,*) " C   0. 1. 0."
+             WRITE(*,*) ""
+             WRITE(*,*) " xyz2scan also needs a file called 'list' "
+             WRITE(*,*) "which has the following structure:"
+             WRITE(*,*) "Each line contains the type of the value you"
+             WRITE(*,*) "want to follow, it can be:"
+             WRITE(*,*) " - b  for a Bond distance"
+             WRITE(*,*) " - a for an angle"
+             WRITE(*,*) " - d for a dihedral"
+             WRITE(*,*) " - p for the oriented angle between two planes"
+             WRITE(*,*) "This descriptor is followed by the number of"
+             WRITE(*,*) "the atoms involved"
+             WRITE(*,*) "One can also create 'barycenter' atoms that"
+             WRITE(*,*) "can then be used as normal atoms."
+             WRITE(*,*) "the descriptor is 'c' followed by the number"
+             WRITE(*,*) "of atoms and the list of atoms:"
+             WRITE(*,*) " c 2  1 5"
+             WRITE(*,*) "A typical file can be:"
+             WRITE(*,*) " b  1  2"
+             WRITE(*,*) " b 2  3"
+             WRITE(*,*) " a 1 2 3"
+             WRITE(*,*) "     "
+             WRITE(*,*) "=============================================="
+             write(*,*) 'XYZ filename:'
+              read(*,'(a)') f1
+            else
+              call getarg(1,f1)
+          endif
+
+          open(13,file='Scan.dat')
+
+          INQUIRE(File='list',Exist=FExist)
+          if (.NOT.FExist) THEN
+             WRITE(*,*) "File *list* is missing"
+             STOP
+          END IF
+
+          open(11,file=f1)
+          READ(11,*) nnn
+          close(11)
+
+          if (nnn.GT.MaxNat) THEN
+             WRITE(*,*) "Sorry but your system has too many atoms"
+             WRITE(*,*) "Change the value of MaxNat in the source file"
+             WRITE(*,*) "and then recompile."
+             WRITE(*,*) "For information, now MaxNat=",MaxNat
+             WRITE(*,*) "and you have ",nnn," atoms."
+             STOP
+          END IF
+
+         open(14,file='list')
+         Type="d"
+         DO WHILE (Type.ne."E")
+          CALL READLINE(14,Type,Line)
+!          WRITE(*,*) Line,Type
+          if (Type.eq."b") THEN
+             NbDist=NbDist+1
+             READ(Line,*) At1,At2
+             At1B(NbDist)=At1
+             At2B(NbDist)=At2
+          END IF
+          if (Type.eq."a") THEN
+             NbAngle=NbAngle+1
+             READ(Line,*) At1,At2,At3
+             At1A(NbAngle)=At1
+             At2A(NbAngle)=At2
+             At3A(NbAngle)=At3
+          END IF
+          if (Type.eq."d") THEN
+             NbDie=NbDie+1
+             READ(Line,*) At1,At2,At3,At4
+             At1D(NbDie)=At1
+             At2D(NbDie)=At2
+             At3D(NbDie)=At3
+             At4D(NbDie)=At4
+!            WRITE(13,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,  
+!     &          Atoms(At3),At3,Atoms(At4),At4
+!            WRITE(*,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,   
+!     &          Atoms(At3),At3,Atoms(At4),At4
+
+          END IF
+          if (Type.eq."p") THEN
+             NbP=NbP+1
+             READ(Line,*) At1,At2,At3,At4,At5,At6
+             At1p(NbP)=At1
+             At2p(NbP)=At2
+             At3p(NbP)=At3
+             At4p(NbP)=At4
+             At5p(NbP)=At5
+             At6p(NbP)=At6
+          END IF
+
+          if (Type.eq."c") THEN
+            NbCOM=NbCOM+1
+            READ(Line,*) At1,(AtCom(j,NbCOM),j=1,At1)
+            AtCom(0,NbCOM)=At1
+            Atoms(nat+NbCom)="G"
+          END IF
+
+         END DO
+
+         CLOSE(14)
+
+! We read one geoetry to get the atoms name
+         open(11,file=f1)
+          call rtraitem(11,nnn,ener,geos,atoms)
+         close(11)
+
+
+! We write things
+! First NbCom
+         if (NbCom.GE.1) THEN
+            WRITE(*,*) "# Added center of mass"
+            WRITE(IOOUT,*) "# Added center of mass"
+            DO J=1,NbCom
+            WRITE(IOOUT,'("# c ",I4,20(A3,I3))') AtCom(0,J),                  
+     &          (Atoms(AtCom(i,J)),AtCom(i,J),i=1,At1)
+            WRITE(*,'("# c ",I4,20(A3,I3))') AtCom(0,J),                   
+     &          (Atoms(AtCom(i,J)),AtCom(i,J),i=1,At1)
+            END DO
+         END IF
+
+! Distances
+         if (NbDist.GE.1) THEN
+            WRITE(*,*) "# Bonds"
+            WRITE(IOOUT,*) "# Bonds"
+            DO J=1,NbDist
+               At1= At1B(J)
+               At2=At2B(J)
+             WRITE(IOOUT,'("# b ",2(A3,I3))') Atoms(At1),At1,
+     $              Atoms(At2),At2
+             WRITE(*,'("# b ",2(A3,I3))') Atoms(At1),At1,Atoms(At2),At2
+            END DO
+         END IF
+
+! Angles
+         if (NbAngle.GE.1) THEN
+            WRITE(*,*) "# Angles"
+            WRITE(IOOUT,*) "# Angles"
+            DO J=1,NbAngle
+            At1= At1A(J)
+            At2= At2A(J)
+            At3= At3A(J)
+            WRITE(IOOUT,'("# a ",3(A3,I3))') Atoms(At1),At1,Atoms(At2),
+     &            At2, Atoms(At3),At3
+            WRITE(*,'("# a ",3(A3,I3))') Atoms(At1),At1,Atoms(At2),
+     &           At2, Atoms(At3),At3
+
+            END DO
+         END IF
+
+
+! Dihedrals 
+         if (NbDie.GE.1) THEN
+            WRITE(*,*) "# Dihedrals"
+            WRITE(IOOUT,*) "# Dihedrals"
+            DO J=1,NbDie
+            At1= At1D(J)
+            At2= At2D(J)
+            At3= At3D(J)
+            At4= At4D(J)
+            WRITE(IOOUT,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2)
+     &          ,At2,Atoms(At3),At3,Atoms(At4),At4
+            WRITE(*,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,   
+     &          Atoms(At3),At3,Atoms(At4),At4
+            END DO
+         END IF
+
+! Planar angles
+         if (NbP.GE.1) THEN
+            WRITE(*,*) "# Planes angles"
+            WRITE(IOOUT,*) "# Planes angles"
+            DO J=1,NbP
+            At1= At1p(J)
+            At2= At2p(J)
+            At3= At3p(J)
+            At4= At4p(J)
+            At5= At5p(J)
+            At6= At6p(J)
+            WRITE(IOOUT,'("# p ",8(A3,I3))') Atoms(At1),At1,Atoms(At2)
+     &          ,At2,Atoms(At3),At3,Atoms(At4),At4
+     &          ,Atoms(At5),At5,Atoms(At6),At6
+            WRITE(*,'("# p ",8(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,   
+     &          Atoms(At3),At3,Atoms(At4),At4
+     &          ,Atoms(At5),At5,Atoms(At6),At6
+            END DO
+         END IF
+
+
+          fmt='(   (1X,F12.5),1X,F15.6)'
+          write(fmt(2:4),'(i3)') NbDist+NbAngle+NbDie+NbP
+!           write(*,*) nat3
+!          write(*,*) 'fmt:',fmt
+
+          ng=1
+
+          open(11,file=f1)
+
+10           call rtraitem(11,nnn,ener,geos,atoms)
+!           WRITE(*,*) nnn
+
+           if (nnn.gt.0) then
+! We convert coordinates in a0 into Angstroem
+!              write(*,*) "Analyse !"
+            Call Analyse(geos)
+
+             write(IOOUT,fmt) (VB(j)/Conv,j=1,NbDist),
+     &            (VA(j),j=1,NbAngle),
+     &            (VD(j),j=1,NbDie),(Vp(j),j=1,NbP),ener
+             write(*,fmt) (VB(j)/Conv,j=1,NbDist),
+     &            (VA(j),j=1,NbAngle),
+     &            (VD(j),j=1,NbDie),(Vp(j),j=1,NbP),ener
+
+           ng=ng+1
+            goto 10
+           endif
+           WRITE(*,*) 'Found ',ng-1,' geometries'
+           close(11)
+         end
+
+!--------------------------------------------------------------
+          subroutine rtraitem(ifil,nnn,E,tab,atoms)
+!           implicit real*8 (a-h,o-z)
+            IMPLICIT NONE
+           character*120 line
+           character*3 Atoms(*)
+           integer*4 nnn, IFil, Idx, I, J
+           REAL*8  Tab(3,*), E
+
+
+           read(ifil,*,err=99,end=99) nnn
+           read(ifil,'(A)') line
+           idx=index(line,'E')
+!           WRITE(*,*) 'idx,line',idx,line
+           if (idx/=0) THEN
+             line=line(idx+2:)
+              idx=index(line,"=")
+              if (idx/=0) line=line(idx+1:)
+              idx=index(line,":")
+              if (idx/=0) line=line(idx+1:)
+              read(line,*) E
+           ELSE
+             E=0.
+           END IF
+           
+!           write(*,*) 'coucou',line
+           do i=1,nnn
+              read(ifil,'(A)',err=99,end=99) Line
+              do while (line(1:1)==' ')
+                 line=line(2:)
+              end do
+              atoms(i)=line(1:3)
+!            write(*,*) 'coucou atoms',atoms(i)
+              do while (line(1:1).ne.' ')
+                 line=line(2:)
+              end do
+!              WRITE(*,*) 'coucou2:',i,line
+              read(line,*) (tab(j,i),j=1,3)
+           end do
+!           WRITE(*,*) 'coucou:',nnn,tab(1,1)
+           return
+99           nnn=0
+!             WRITE(*,*) 'Erreur lecture',ifil,nnn
+             return
+          end
+
+!--------------------------------------------------------------
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! READLINE
+! This subroutine reads a line for a file, and converts
+! the first field into a character variable, and the rest into 4 integers
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      SUBROUTINE READLINE(IOIN,Type,Line)
+        
+       IMPLICIT NONE
+      CHARACTER Type*5,LINE*120
+      INTEGER i,IOIN
+      READ(IOIN,'(A120)',ERR=999,END=999) LINE
+!      WRITE(*,*) Line
+      DO WHILE (LINE(1:1).eq.' ')
+         LINE=LINE(2:)
+      END DO
+
+      i=1
+      DO WHILE (LINE(i:i).ne.' ')
+         i=i+1
+      END DO
+      
+      if (i.ge.6) THEN
+         WRITE(*,*) 'Pb with READLINE:',LINE
+         GOTO 999
+      END IF
+      Type=LINE(1:i-1)
+      LINE=LINE(i:120) // " 0 0 0 0"
+
+      RETURN
+ 999  Type="E"
+      END
+
+
+
+      SUBROUTINE Analyse(geos)
+
+      IMPLICIT NONE
+      INTEGER*4 MaxNat,MaxList
+      parameter (maxnat=10000,MaxList=100)
+      REAL*8 geos(3,maxnat)
+      REAL*8 AU2PS,Pi
+      INTEGER*4 i,j,k
+      REAL*8 V1x,V1y,V1z,V2x,V2y,V2z,V3x,V3y,V3z
+      REAL*8 d1,d2,ca,sa
+      REAL*8 V4x,v4y,v4z,v5x,v5y,v5z
+      REAL*8 COG(3)
+
+          INTEGER*4 Nat,NbDist, NbAngle, NbDie,NbP,NbCOM
+          INTEGER*4 At1B(MaxList),At2B(MaxList)
+          INTEGER*4 At1A(MaxList),At2A(MaxList),At3A(MaxList)
+          INTEGER*4 At1D(MaxList),At2D(MaxList),At3D(MaxList),
+     $              At4D(MaxList)
+          INTEGER*4 At1p(MaxList),At2p(MaxList),At3p(MaxList),
+     $              At4p(MaxList),At5p(MaxList),At6p(MaxList)
+          INTEGER*4 AtCom(0:MaxList,MaxList)
+          REAL*8    VB(MaxList),VA(MaxList),VD(MaxList),VCOM(MaxList)
+          REAL*8    Vp(MaxList)
+
+          COMMON /Indices/Nat,NbDist,NbAngle,NbDie,NbP,NbCom, At1B,At2B,
+     &         At1A,At2A,At3A,At1D,At2D,At3D,At4D,AtCom,
+     &         At1p,At2p,At3p,At4p,At5p,At6p
+          COMMON /Values/VB,VA,VD,Vp,VCom
+          COMMON /Const/AU2ps,Pi
+
+          DO I=1,Nat
+             WRITE(*,'(1X,I3,3(1X,F15.6))') i,(geos(j,i),j=1,3)
+          END DO
+
+! First, we create the Centre of Mass atoms
+            DO i=1,NbCOM
+              COG(1)=0.
+              COG(2)=0.
+              COG(3)=0.
+              DO j=1,AtCOm(0,i)
+                 DO k=1,3
+                    COG(k)=COG(k)+geos(k,AtCom(j,i))
+                 END DO
+              END DO
+              DO k=1,3
+                 COG(k)=COG(k)/AtCOM(0,i)
+                 geos(k,Nat+i)=COG(k)
+              END DO
+            END DO
+
+
+            DO i=1,NbDist
+               VB(i)=sqrt((geos(1,At1B(i))-geos(1,At2B(i)))**2+  
+     &      (geos(2,At1B(i))-geos(2,At2B(i)))**2+                     
+     &      (geos(3,At1B(i))-geos(3,At2B(i)))**2)
+            END DO
+            DO i=1,NbAngle
+               v1x=geos(1,At1A(i))-geos(1,At2A(i))
+               v1y=geos(2,At1A(i))-geos(2,At2A(i))
+               v1z=geos(3,At1A(i))-geos(3,At2A(i))
+               d1=sqrt(v1x**2+v1y**2+v1z**2)
+               v2x=geos(1,At3A(i))-geos(1,At2A(i))
+               v2y=geos(2,At3A(i))-geos(2,At2A(i))
+               v2z=geos(3,At3A(i))-geos(3,At2A(i))
+               d2=sqrt(v2x**2+v2y**2+v2z**2)
+               VA(i)=acos((v1x*v2x+v1y*v2y+v1z*v2z)/(d1*d2))*180./Pi
+            END DO
+            DO i=1,NbDie
+!               WRITE(*,*) At1D(i),At2D(i),At3D(i),At4D(i)
+!              WRITE(*,*) geos(1,At1D(i)),geos(2,At1D(i)),geos(3,At1D(i))
+!              WRITE(*,*) geos(1,At2D(i)),geos(2,At2D(i)),geos(3,At2D(i))
+               v1x=geos(1,At1D(i))-geos(1,At2D(i))
+               v1y=geos(2,At1D(i))-geos(2,At2D(i))
+               v1z=geos(3,At1D(i))-geos(3,At2D(i))
+               v2x=geos(1,At3D(i))-geos(1,At2D(i))
+               v2y=geos(2,At3D(i))-geos(2,At2D(i))
+               v2z=geos(3,At3D(i))-geos(3,At2D(i))
+               v3x=geos(1,At4D(i))-geos(1,At3D(i))
+               v3y=geos(2,At4D(i))-geos(2,At3D(i))
+               v3z=geos(3,At4D(i))-geos(3,At3D(i))
+          
+               v4x=v1y*v2z-v1z*v2y
+               v4y=v1z*v2x-v1x*v2z
+               v4z=v1x*v2y-v1y*v2x
+               d1=sqrt(v4x**2+v4y**2+v4z**2)
+               v5x=-v2y*v3z+v2z*v3y
+               v5y=-v2z*v3x+v2x*v3z
+               v5z=-v2x*v3y+v2y*v3x
+               d2=sqrt(v5x**2+v5y**2+v5z**2)
+               if (d1<=1e-12) THEN
+                  WRITE(*,*) "WARNING: Dihedral, d1=0"
+                  ca=-1.
+                  sa=0.
+               END IF
+               if (d2<=1e-12) THEN
+                  WRITE(*,*) "WARNING: Dihedral, d2=0"
+                  ca=-1.
+                  sa=0.
+               END IF
+               ca=(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2)
+               sa=v1x*v5x+v1y*v5y+v1z*v5z
+               if (abs(ca)>1.) ca=sign(1.d0,ca)
+               VD(i)=acos(ca)*180./Pi
+               if (sa<0.) VD(i)=-VD(i)
+!               WRITE(*,*) "Dihe",v5x,v5y,v5z,v4x,v4y,v4z,d1,d2,
+!     &(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2),pi
+!                WRITE(*,*) "Dihe ca,sa,d1,d2",ca,sa,d1,d2,acos(ca)
+
+               
+!!!!!!!!! Another solution, more elegant ?
+!               norm2=sqrt(v2x**2+v2y**2+v2z**2)
+!               sa=(v4x*(v5y*v2z-v5z*v2y) 
+!     *            -v4y*(v5x*v2z-v5z*v2x) 
+!     *            +v4z*(v5x*v2y-v5y*v2x))
+!     *       /(d1*norm2*d2)
+!               angle_d=datan2(sa,ca)*180./Pi
+!               WRITE(*,*) sa,ca,angle_d,d1,d2,norm2
+!               WRITE(*,*) VD(i),angle_d
+            END DO
+
+            DO i=1,NbP
+! v1= At2-At1
+               v1x=geos(1,At1p(i))-geos(1,At2p(i))
+               v1y=geos(2,At1p(i))-geos(2,At2p(i))
+               v1z=geos(3,At1p(i))-geos(3,At2p(i))
+! v2=At2-At3
+               v2x=geos(1,At3p(i))-geos(1,At2p(i))
+               v2y=geos(2,At3p(i))-geos(2,At2p(i))
+               v2z=geos(3,At3p(i))-geos(3,At2p(i))
+! v4 = v1 x v2
+               v4x=v1y*v2z-v1z*v2y
+               v4y=v1z*v2x-v1x*v2z
+               v4z=v1x*v2y-v1y*v2x
+               d1=sqrt(v4x**2+v4y**2+v4z**2)
+
+! v3= At5-At4
+               v3x=geos(1,At4p(i))-geos(1,At5p(i))
+               v3y=geos(2,At4p(i))-geos(2,At5p(i))
+               v3z=geos(3,At4p(i))-geos(3,At5p(i))
+! v2=At5-At6
+               v2x=geos(1,At6p(i))-geos(1,At5p(i))
+               v2y=geos(2,At6p(i))-geos(2,At5p(i))
+               v2z=geos(3,At6p(i))-geos(3,At5p(i))
+
+! v5 = v3 x v2
+               v5x=v3y*v2z-v3z*v2y
+               v5y=v3z*v2x-v3x*v2z
+               v5z=v3x*v2y-v3y*v2x
+               d2=sqrt(v5x**2+v5y**2+v5z**2)
+
+               ca=(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2)
+               sa=v1x*v5x+v1y*v5y+v1z*v5z
+               Vp(i)=acos(ca)*180./Pi
+               if (sa<0.) Vp(i)=-Vp(i)
+!               WRITE(*,*) "Dihe",v5x,v5y,v5z,v4x,v4y,v4z,d1,d2,
+!     &(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2),pi
+!!!!!!!!! Another solution, more elegant ?
+! See Dihedral routine
+            END DO
+
+
+        END

Property changes on: utils/Xyz2Scan.f
___________________________________________________________________
Added: svn:executable
   + 

Index: utils/Xyz2Path.param
===================================================================
--- utils/Xyz2Path.param	(revision 0)
+++ utils/Xyz2Path.param	(revision 1)
@@ -0,0 +1,2 @@
+       INTEGER*4 MaxNAt
+       PARAMETER (MaxNat=500)
Index: utils/AnaPath
===================================================================
--- utils/AnaPath	(revision 0)
+++ utils/AnaPath	(revision 1)
@@ -0,0 +1,97 @@
+#!/bin/bash
+if [ $# -lt 4 ]; then
+ echo "Use: $0 File.out MaxCyc PathName NGeomF [x column]"
+ exit
+fi
+
+Fout=$1
+ItMax=$2
+Nom=$3
+NGeomF=$4
+
+xcol=1
+if [ $# -eq 5 ]; then
+xcol=$5
+fi
+
+export LANG=C
+
+echo "#ItMax=$ItMax"
+echo "#Nom=$Nom"
+echo "#NGeomF"=$NGeomF
+
+if [ -s ${Nom}_cart.0 ]; then
+ Ext=_cart
+elif [ -s ${Nom}.0 ]; then
+ Ext=""
+else
+ echo "Cannot find ${Nom}.0 nor ${Nom}_cart.0 -- ERROR"
+ exit
+fi
+ echo "Using files ${Nom}${Ext}.XX"
+
+if [ -s $Nom.datl ]; then
+ it=1
+ while [ -s $Nom.datl_${it} ]
+  do
+ let it=it+1
+ done
+ echo "Moving $Nom.datl into $Nom.datl_${it}"
+ mv $Nom.datl $Nom.datl_${it}
+fi
+echo "Creating $Nom.datl"
+
+for i in `seq 0 $ItMax`
+ do
+  xyz2path  ${Nom}${Ext}.$i 
+ cat Scan.dat >> $Nom.datl
+ echo " " >> $Nom.datl
+ echo " " >> $Nom.datl
+done 
+
+icol=`tail -1 Scan.dat | wc -w`
+
+cat << EOF > ${Nom}_l.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ xcol=$xcol
+EOF
+
+
+for i in `seq 1 $ItMax`
+do
+ echo "plot \"$Nom.datl\" i 0 u xcol:$icol w lp " >> ${Nom}_l.gplot
+ echo "replot \"$Nom.datl\" i $i u xcol:$icol w lp " >> ${Nom}_l.gplot
+ echo "pause -1" >> ${Nom}_l.gplot
+done
+ echo "pause -1" >> ${Nom}_l.gplot
+
+
+chmod u+x  ${Nom}_l.gplot
+
+cat << EOF > ${Nom}_l2.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ xcol=$xcol
+EOF
+
+echo "plot \"$Nom.datl\" i 0 u xcol:$icol w lp " >>  ${Nom}_l2.gplot
+for i in `seq 1 $ItMax`
+do
+ echo "replot \"$Nom.datl\" i $i u xcol:$icol w lp " >>  ${Nom}_l2.gplot
+done
+
+chmod u+x  ${Nom}_l2.gplot
+
+cat << EOF > ${Nom}_l3.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+EOF
+
+ echo "plot \"$Nom.datl\" i 0 u 0:$icol w lp " >>  ${Nom}_l3.gplot
+for i in `seq 1 $ItMax`
+do
+ echo "replot \"$Nom.datl\" i $i u 0:$icol w lp " >>  ${Nom}_l3.gplot
+done
+
+chmod u+x  ${Nom}_l3.gplot

Property changes on: utils/AnaPath
___________________________________________________________________
Added: svn:executable
   + 

Index: utils/Makefile
===================================================================
--- utils/Makefile	(revision 0)
+++ utils/Makefile	(revision 1)
@@ -0,0 +1 @@
+link ../src/Makefile
\ No newline at end of file

Property changes on: utils/Makefile
___________________________________________________________________
Added: svn:special
   + *

Index: utils/Xyz2Path.f
===================================================================
--- utils/Xyz2Path.f	(revision 0)
+++ utils/Xyz2Path.f	(revision 1)
@@ -0,0 +1,867 @@
+          program Xyz2Path
+! This programs reads a XYZ file and converts it into distances,
+! valence angle and dihedral angles.
+! It prints them as a function of the irc distance...
+!-----------------------------------------------
+! Input: name of the XYZ File
+! it also needs a file call list which has the following structure:
+! one line contains the type of the value you want to follow, it can be
+! b  for a Bond distance
+! a for an angle
+! d for a dihedral
+! this descriptor is followed by the number of the atoms involved !
+! a typical file can be:
+! b  1  2
+! b 2  3
+! a 1 2 3
+!----------------------------------------------
+! Ouput: A files call Scan.dat
+! wich contains in the first lines the input file (as a reminder)
+! and then for each step the wanted values
+!------------------------------------------------
+! Second version also reads the energy (as to be written after E= on
+! the comment line)
+!------------------------------------------------
+! Third version contains a new command: c for Center of Mass
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v 3.1 the c command now creates the center of mass... and allows
+! people to do whatever they want with it...
+! Syntax: c NbAt ListAt
+
+
+          IMPLICIT NONE
+
+          INCLUDE "Xyz2Path.param"
+
+          character*40 f1
+          REAL*8   geos(3,maxnat), geos1(3,maxnat)
+          character*33 fmt
+          character*3 atoms(maxnat)
+          character*5 Type
+          Character*120 line
+          INTEGER*4 NbPrint
+          REAL*8   AU2PS,Pi
+          REAL*8  Mass(MaxNat), Ener, Conv, Ds, s
+          REAL*8  MassAt(0:86)
+          INTEGER*4 At1,At2,At3,At4,IOOUT,Iat
+          INTEGER*4  IArg, I, NNN, Ng, J
+
+          INTEGER*4 Nat,NbDist, NbAngle, NbDie,NbCOM
+          INTEGER*4 At1B(MaxNat),At2B(MaxNat)
+          INTEGER*4 At1A(MaxNat),At2A(MaxNat),At3A(MaxNat)
+          INTEGER*4 At1D(MaxNat),At2D(MaxNat),At3D(MaxNat),At4D(MaxNat)
+          INTEGER*4 AtCom(0:MaxNat,MaxNat)
+          REAL*8    VB(MaxNat),VA(MaxNat),VD(MaxNat),VCOM(MaxNat)
+
+          REAL*8 MRot(3,3), Rmsd
+          LOGICAL FExist,FRot,FAlign,Debug
+
+          INTEGER*4 ConvertNumAt
+          external ConvertNumAt
+
+          COMMON /Indices/Nat,NbDist,NbAngle,NbDie,NbCom, At1B,At2B,
+     &         At1A,At2A,At3A,At1D,At2D,At3D,At4D,AtCom
+          COMMON /Values/VB,VA,VD,VCom
+          COMMON /Const/AU2ps,Pi
+ 
+          DATA MassAt/0.0D0,                                             
+     $           1.0078D0,                      4.0026D0,                
+     $            7.0160D0, 9.0122D0,11.0093D0,                          
+     $           12.0000D0,14.0031D0,15.9949D0,18.9984D0,19.9924D0,      
+     $           22.9898D0,23.9850D0,26.9815D0,                          
+     $           27.9769D0,30.9738D0,31.9721D0,34.9688D0,39.9624D0,      
+     $           39.0983D0,40.08D0,                                      
+     $             44.9559D0, 47.88D0, 50.9415D0, 51.996D0, 54.9380D0,   
+     $             55.847D0, 58.9332D0, 58.69D0, 63.546D0, 65.39D0,      
+     $           69.72D0,72.59D0,74.9216D0,78.96D0,79.904D0,83.80D0,     
+     $           85.4678D0,87.62D0,88.9059D0,91.224D0,92.9064D0,         
+     $   95.94D0,98D0,101.07D0,102.906D0,106.42D0,107.868D0,112.41D0,    
+     $   114.82D0,118.71D0,121.75D0,127.60D0,126.905D0,131.29D0,          
+!     6           'CS','BA',
+     $           132.905,137.34,                                          
+!     6       'LA',
+!               'CE','PR','ND','PM','SM','EU','GD',
+!               'TB','DY','HO', 'ER','TM','YB','LU',
+     $      138.91,                                                       
+     $       140.12, 130.91, 144.24,147.,150.35, 151.96,157.25,           
+     $       158.924, 162.50, 164.93, 167.26,168.93,173.04,174.97,        
+!     6                'HF','TA',' W','RE','OS','IR','PT',
+!                      'AU','HG',
+!     6                                 'TL','PB','BI','PO','AT','RN'/
+     $       178.49, 180.95, 183.85, 186.2, 190.2, 192.2, 195.09,         
+     $       196.97, 200.59,                                              
+     $       204.37, 207.19,208.98,210.,210.,222. /
+
+
+          AU2PS=1./41341.37
+          NbPrint=100
+          Pi=dacos(-1.d0)
+          IOOUT=13
+          Conv=1.
+          FRot=.TRUE.
+          FAlign=.TRUE.
+          Debug=.FALSE.
+          NbDist=0
+          NbAngle=0
+          NbDie=0
+
+          iarg=command_argument_count()
+          if (iarg.lt.1) then
+                 write(*,*) 'XYZ filename:'
+              read(*,'(a)') f1
+            else
+              call getarg(1,f1)
+          endif
+
+          open(13,file='Scan.dat')
+
+          INQUIRE(File='list',Exist=FExist)
+          if (.NOT.FExist) THEN
+             WRITE(*,*) "No file 'list', just printing Energy"
+          END IF
+
+          open(11,file=f1)
+          call rtraitem(11,nnn,ener,geos1,atoms)
+          close(11)
+
+         DO I=1,nnn
+            Iat=ConvertNumAt(atoms(I))
+            Mass(I)=MassAt(Iat)
+!           write(*,*) I,Atoms(I),Mass(I),geos1(:,I)
+         END DO
+
+         if (FExist) THEN
+         open(14,file='list')
+         Type="d"
+         DO WHILE (Type.ne."E")
+          CALL READLINE(14,Type,Line)
+!          WRITE(*,*) Line,Type
+          if (Type.eq."b") THEN
+             NbDist=NbDist+1
+             READ(Line,*) At1,At2
+             At1B(NbDist)=At1
+             At2B(NbDist)=At2
+             WRITE(13,'("# b ",2(A3,I3))') Atoms(At1),At1,Atoms(At2),At2
+             WRITE(*,'("# b ",2(A3,I3))') Atoms(At1),At1,Atoms(At2),At2
+          END IF
+          if (Type.eq."a") THEN
+             NbAngle=NbAngle+1
+             READ(Line,*) At1,At2,At3
+             At1A(NbAngle)=At1
+             At2A(NbAngle)=At2
+             At3A(NbAngle)=At3
+            WRITE(13,'("# a ",3(A3,I3))') Atoms(At1),At1,Atoms(At2),
+     &            At2, Atoms(At3),At3
+            WRITE(*,'("# a ",3(A3,I3))') Atoms(At1),At1,Atoms(At2),
+     &           At2, Atoms(At3),At3
+          END IF
+          if (Type.eq."d") THEN
+             NbDie=NbDie+1
+             READ(Line,*) At1,At2,At3,At4
+             At1D(NbDie)=At1
+             At2D(NbDie)=At2
+             At3D(NbDie)=At3
+             At4D(NbDie)=At4
+            WRITE(13,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,  
+     &          Atoms(At3),At3,Atoms(At4),At4
+            WRITE(*,'("# d ",4(A3,I3))') Atoms(At1),At1,Atoms(At2),At2,   
+     &          Atoms(At3),At3,Atoms(At4),At4
+
+          END IF
+          if (Type.eq."c") THEN
+            NbCOM=NbCOM+1
+            READ(Line,*) At1,(AtCom(j,NbCOM),j=1,At1)
+            AtCom(0,NbCOM)=At1
+            Atoms(nat+NbCom)="G"
+            WRITE(13,'("# c ",I4,20(A3,I3))') At1,                  
+     &          (Atoms(AtCom(i,NbCoM)),AtCom(i,NbCOM),i=1,At1)
+            WRITE(*,'("# c ",I4,20(A3,I3))') At1,                   
+     &          (Atoms(AtCom(i,NbCoM)),AtCom(i,NbCOM),i=1,At1)
+          END IF
+
+         END DO
+         END IF
+
+
+
+          fmt='(   (1X,F12.5),1X,F15.6)'
+          write(fmt(2:4),'(i3)') NbDist+NbAngle+NbDie+1
+!           write(*,*) nat3
+!          write(*,*) 'fmt:',fmt
+
+          ng=1
+
+         s=0.
+
+          open(11,file=f1)
+
+10           call rtraitem(11,nnn,ener,geos,atoms)
+!           WRITE(*,*) nnn
+           if (nnn.gt.0) then
+
+          call CalcRmsd(nnn, geos1, geos,MRot,rmsd,FRot,FAlign,debug)
+         ds=0.
+           DO I=1,nnn
+             DO J=1,3
+             ds=ds+mass(I)*(geos(J,I)-geos1(J,I))**2
+!            write(*,*) I,J,geos(J,I),Geos1(J,I),ds
+             geos1(J,I)=Geos(J,I)
+              END DO
+            END DO
+           s=s+sqrt(ds)
+
+! We convert coordinates in a0 into Angstroem
+!              write(*,*) "Analyse !"
+            if (FExist) THEN
+            Call Analyse(geos)
+
+             write(IOOUT,fmt) s,(VB(j)/Conv,j=1,NbDist),
+     &            (VA(j),j=1,NbAngle),
+     &            (VD(j),j=1,NbDie),ener
+             write(*,fmt) s,(VB(j)/Conv,j=1,NbDist),
+     &            (VA(j),j=1,NbAngle),
+     &            (VD(j),j=1,NbDie),ener
+             ELSE
+                        write(IOOUT,fmt) s,ener
+             write(*,fmt) s,ener
+            END IF 
+           ng=ng+1
+            goto 10
+           endif
+           WRITE(*,*) 'Found ',ng-1,' geometries'
+           close(11)
+         end
+
+!--------------------------------------------------------------
+          subroutine rtraitem(ifil,nnn,E,tab,atoms)
+!           implicit real*8 (a-h,o-z)
+            IMPLICIT NONE
+           character*120 line
+           character*3 Atoms(*)
+           integer*4 nnn, IFil, Idx, I, J
+           REAL*8  Tab(3,*), E
+
+
+           read(ifil,*,err=99,end=99) nnn
+           read(ifil,'(A)') line
+           idx=index(line,'E')
+!           WRITE(*,*) 'idx,line',idx,line
+           if (idx/=0) THEN
+             line=line(idx+2:)
+              idx=index(line,"=")
+              if (idx/=0) line=line(idx+1:)
+              idx=index(line,":")
+              if (idx/=0) line=line(idx+1:)
+              read(line,*) E
+           ELSE
+             E=0.
+           END IF
+           
+!           write(*,*) 'coucou',line
+           do i=1,nnn
+              read(ifil,'(A)',err=99,end=99) Line
+              do while (line(1:1)==' ')
+                 line=line(2:)
+              end do
+              atoms(i)=line(1:3)
+!            write(*,*) 'coucou atoms',atoms(i)
+              do while (line(1:1).ne.' ')
+                 line=line(2:)
+              end do
+!              WRITE(*,*) 'coucou2:',i,line
+              read(line,*) (tab(j,i),j=1,3)
+           end do
+!           WRITE(*,*) 'coucou:',nnn,tab(1,1)
+           return
+99           nnn=0
+!             WRITE(*,*) 'Erreur lecture',ifil,nnn
+             return
+          end
+
+!--------------------------------------------------------------
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! READLINE
+! This subroutine reads a line for a file, and converts
+! the first field into a character variable, and the rest into 4 integers
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      SUBROUTINE READLINE(IOIN,Type,Line)
+        
+       IMPLICIT NONE
+      CHARACTER Type*5,LINE*120
+      INTEGER i,IOIN
+      READ(IOIN,'(A120)',ERR=999,END=999) LINE
+!      WRITE(*,*) Line
+      DO WHILE (LINE(1:1).eq.' ')
+         LINE=LINE(2:)
+      END DO
+
+      i=1
+      DO WHILE (LINE(i:i).ne.' ')
+         i=i+1
+      END DO
+      
+      if (i.ge.6) THEN
+         WRITE(*,*) 'Pb with READLINE:',LINE
+         GOTO 999
+      END IF
+      Type=LINE(1:i-1)
+      LINE=LINE(i:120) // " 0 0 0 0"
+
+      RETURN
+ 999  Type="E"
+      END
+
+
+
+      SUBROUTINE Analyse(geos)
+
+      IMPLICIT NONE
+          INCLUDE "Xyz2Path.param"
+
+      REAL*8 geos(3,maxnat)
+      REAL*8 AU2PS,Pi
+      INTEGER*4 i,j,k
+      REAL*8 V1x,V1y,V1z,V2x,V2y,V2z,V3x,V3y,V3z
+      REAL*8 d1,d2,ca,sa
+      REAL*8 V4x,v4y,v4z,v5x,v5y,v5z
+      REAL*8 COG(3)
+
+      INTEGER*4 Nat,NbDist, NbAngle, NbDie,NbCOM
+      INTEGER*4 At1B(MaxNat),At2B(MaxNat)
+      INTEGER*4 At1A(MaxNat),At2A(MaxNat),At3A(MaxNat)
+      INTEGER*4 At1D(MaxNat),At2D(MaxNat),At3D(MaxNat),At4D(MaxNat)
+      INTEGER*4 AtCom(0:MaxNat,MaxNat)
+      REAL*8    VB(MaxNat),VA(MaxNat),VD(MaxNat),VCOM(MaxNat)
+
+      COMMON /Indices/Nat,NbDist,NbAngle,NbDie,NbCom,   
+     &      At1B,At2B,At1A,At2A,At3A,At1D,At2D,At3D,At4D,AtCom
+      COMMON /Values/VB,VA,VD,VCom
+      COMMON /Const/AU2ps,Pi
+
+          DO I=1,Nat
+             WRITE(*,'(1X,I3,3(1X,F15.6))') i,(geos(j,i),j=1,3)
+          END DO
+
+! First, we create the Centre of Mass atoms
+            DO i=1,NbCOM
+              COG(1)=0.
+              COG(2)=0.
+              COG(3)=0.
+              DO j=1,AtCOm(0,i)
+                 DO k=1,3
+                    COG(k)=COG(k)+geos(k,AtCom(j,i))
+                 END DO
+              END DO
+              DO k=1,3
+                 COG(k)=COG(k)/AtCOM(0,i)
+                 geos(k,Nat+i)=COG(k)
+              END DO
+            END DO
+
+
+            DO i=1,NbDist
+               VB(i)=sqrt((geos(1,At1B(i))-geos(1,At2B(i)))**2+  
+     &      (geos(2,At1B(i))-geos(2,At2B(i)))**2+                     
+     &      (geos(3,At1B(i))-geos(3,At2B(i)))**2)
+            END DO
+            DO i=1,NbAngle
+               v1x=geos(1,At1A(i))-geos(1,At2A(i))
+               v1y=geos(2,At1A(i))-geos(2,At2A(i))
+               v1z=geos(3,At1A(i))-geos(3,At2A(i))
+               d1=sqrt(v1x**2+v1y**2+v1z**2)
+               v2x=geos(1,At3A(i))-geos(1,At2A(i))
+               v2y=geos(2,At3A(i))-geos(2,At2A(i))
+               v2z=geos(3,At3A(i))-geos(3,At2A(i))
+               d2=sqrt(v2x**2+v2y**2+v2z**2)
+               VA(i)=acos((v1x*v2x+v1y*v2y+v1z*v2z)/(d1*d2))*180./Pi
+            END DO
+            DO i=1,NbDie
+!               WRITE(*,*) At1D(i),At2D(i),At3D(i),At4D(i)
+!              WRITE(*,*) geos(1,At1D(i)),geos(2,At1D(i)),geos(3,At1D(i))
+!              WRITE(*,*) geos(1,At2D(i)),geos(2,At2D(i)),geos(3,At2D(i))
+               v1x=geos(1,At1D(i))-geos(1,At2D(i))
+               v1y=geos(2,At1D(i))-geos(2,At2D(i))
+               v1z=geos(3,At1D(i))-geos(3,At2D(i))
+               v2x=geos(1,At3D(i))-geos(1,At2D(i))
+               v2y=geos(2,At3D(i))-geos(2,At2D(i))
+               v2z=geos(3,At3D(i))-geos(3,At2D(i))
+               v3x=geos(1,At4D(i))-geos(1,At3D(i))
+               v3y=geos(2,At4D(i))-geos(2,At3D(i))
+               v3z=geos(3,At4D(i))-geos(3,At3D(i))
+          
+               v4x=v1y*v2z-v1z*v2y
+               v4y=v1z*v2x-v1x*v2z
+               v4z=v1x*v2y-v1y*v2x
+               d1=sqrt(v4x**2+v4y**2+v4z**2)
+               v5x=-v2y*v3z+v2z*v3y
+               v5y=-v2z*v3x+v2x*v3z
+               v5z=-v2x*v3y+v2y*v3x
+               d2=sqrt(v5x**2+v5y**2+v5z**2)
+               ca=(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2)
+               sa=v1x*v5x+v1y*v5y+v1z*v5z
+               VD(i)=acos(ca)*180./Pi
+               if (sa<0.) VD(i)=-VD(i)
+!               WRITE(*,*) "Dihe",v5x,v5y,v5z,v4x,v4y,v4z,d1,d2,
+!     &(v4x*v5x+v4y*v5y+v4z*v5z)/(d1*d2),pi
+!!!!!!!!! Another solution, more elegant ?
+!               norm2=sqrt(v2x**2+v2y**2+v2z**2)
+!               sa=(v4x*(v5y*v2z-v5z*v2y) 
+!     *            -v4y*(v5x*v2z-v5z*v2x) 
+!     *            +v4z*(v5x*v2y-v5y*v2x))
+!     *       /(d1*norm2*d2)
+!               angle_d=datan2(sa,ca)*180./Pi
+!               WRITE(*,*) sa,ca,angle_d,d1,d2,norm2
+!               WRITE(*,*) VD(i),angle_d
+            END DO
+
+        END
+
+C================================================================
+C    Convertit un nom d'atome (2 lettres) en nombre de masse (entier)
+C cette fonction a ete modifiee pour pouvoir convertir un nom
+C d'atome avec un numero a la fin...
+C================================================================
+
+        FUNCTION ConvertNumAt(ATOM)
+
+
+        IMPLICIT NONE 
+
+        INTEGER*4 I,Long,ConvertNumAt,IC
+        character*2 ATOM*2,ATOME*3,L_Atom*2
+        INTEGER*4  Max_Z
+        PARAMETER (Max_Z=86)
+        CHARACTER*2  Nom(0:Max_Z)
+
+       DATA NOM/ ' X',' H',                                    'HE',
+     $          'LI','BE',            ' B',' C',' N',' O',' F','NE',
+     $          'NA','MG',            'AL','SI',' P',' S','CL','AR',
+     $          ' K','CA',
+     $      'SC','TI',' V','CR','MN','FE','CO','NI','CU','ZN',
+     $                                'GA','GE','AS','SE','BR','KR',
+     $          'RB','SR',
+     $      ' Y','ZR','NB','MO','TC','RU','RH','PD','AG','CD',
+     $                                'IN','SN','SB','TE',' I','XE',
+     $          'CS','BA',
+     $      'LA',
+     $        'CE','PR','ND','PM','SM','EU','GD','TB','DY','HO',
+     $        'ER','TM','YB','LU',
+     $               'HF','TA',' W','RE','OS','IR','PT','AU','HG',
+     $                                'TL','PB','BI','PO','AT','RN'/
+
+
+C Verifie qu'il n'y a que des lettres et des espaces dans ATOM
+!        WRITE(*,*) 'DBG CNVNUMAT, ATOM:',ATOM
+
+        L_atom=Atom
+        IF (ATOM(1:1).LT.'A') L_ATOM(1:1)=' '
+        IC=Ichar(ATOM(1:1))
+        IF ((ic.le.123).AND.(ic.ge.97)) L_ATOM(1:1)=CHAr(IC-32)
+        IF (ATOM(2:2).LT.'A') L_ATOM(2:2)=' '
+        IC=Ichar(ATOM(2:2))
+        IF ((ic.le.123).AND.(ic.ge.97)) L_ATOM(2:2)=CHAr(IC-32)
+C Justifie le nom sur la droite (et non sur la gauche comme souvent...)
+         Long=INDEX(L_ATOM,' ')-1
+         ATOME=' ' // L_ATOM
+        IF (Long.EQ.1) L_ATOM=ATOME(1:2)
+!        WRITE(*,*) 'DBG CNVNUMAT, L_ATOM:',L_ATOM
+        I=max_Z
+        DO WHILE ((nom(I).NE.L_ATOM) .AND. (I.GT.0))
+         I=I-1
+        END DO
+        ConvertNumAT=I
+        END
+! This subroutine calculates RMSD using quaternions.
+! It is based on the F90 routine bu E. Coutsias
+! http://www.math.unm.edu/~vageli/homepage.html
+! I (PFL) have just translated it, and I have changed the diagonalization
+! subroutine.
+! I also made some changes to make it suitable for Cart package.
+!----------------------------------------------------------------------
+!----------------------------------------------------------------------
+! Copyright (C) 2004, 2005 Chaok Seok, Evangelos Coutsias and Ken Dill
+!      UCSF, Univeristy of New Mexico, Seoul National University
+! Witten by Chaok Seok and Evangelos Coutsias 2004.
+                                                                                
+! This library is free software; you can redistribute it and/or
+! modify it under the terms of the GNU Lesser General Public
+! License as published by the Free Software Foundation; either
+! version 2.1 of the License, or (at your option) any later version.
+!
+                                                                                
+! This library is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+! Lesser General Public License for more details.
+!
+                                                                                
+! You should have received a copy of the GNU Lesser General Public
+! License along with this library; if not, write to the Free Software
+! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+!----------------------------------------------------------------------------
+
+      subroutine CalcRmsd(na, geom,geom2,U,rmsd,FRot,FAlign,debug)
+!-----------------------------------------------------------------------
+!  This subroutine calculates the least square rmsd of two coordinate
+!  sets coord1(3,n) and coord2(3,n) using a method based on quaternion.
+!  It then calculate the  rotation matrix U and the centers of coord, and uses
+! them to align the two molecules.
+!-----------------------------------------------------------------------
+
+
+      IMPLICIT NONE
+
+      INCLUDE "Xyz2Path.param"
+
+      INTEGER*4 IOIN, IOOUT, IOSCRN, IOPRNT, IOTAMP
+      COMMON/IODEFS/IOIN,IOOUT,IOSCRN,IOPRNT,IOTAMP
+
+      integer*4 na
+      real*8  geom(3,MaxNAt), Geom2(3,MaxNAt)
+      real*8  U(3,3), rmsd
+      LOGICAL  FRot,FAlign,Debug
+
+      REAL*8 Coord1(3,MaxNAt), Coord2(3,MaxNAt)
+      real*8  xc1,yc1,zc1, xc2,yc2,zc2
+      
+
+      integer*4 i, j,  ia
+      real*8 x_norm, y_norm, lambda
+      real*8 Rmatrix(3,3)
+      real*8 S(4,4)
+      real*8 EigVec(4,4), EigVal(4)
+
+
+
+  ! calculate the barycenters, centroidal coordinates, and the norms
+      x_norm = 0.0d0
+      y_norm = 0.0d0
+      xc1=0.
+      yc1=0.
+      zc1=0.
+      xc2=0.
+      yc2=0.
+      zc2=0.
+      do ia=1,na
+         xc1=xc1+geom(1,ia)
+         xc2=xc2+geom2(1,ia)
+         yc1=yc1+geom(2,ia)
+         yc2=yc2+geom2(2,ia)
+         zc1=zc1+geom(3,ia)
+         zc2=zc2+geom2(3,ia)
+!         if (debug) WRITE(*,'(A,I5,4(1X,F10.4))') 'ia...',ia,x(ia),
+!     &                        x2(ia),xc1,xc2
+      END DO
+      xc1=xc1/dble(na)
+      yc1=yc1/dble(na)
+      zc1=zc1/dble(na)
+      xc2=xc2/dble(na)
+      yc2=yc2/dble(na)
+      zc2=zc2/dble(na)
+
+      IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center1',xc1,yc1,zc1
+      IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center2',xc2,yc2,zc2
+      do i=1,na
+         Coord1(1,i)=geom(1,i)-xc1
+         Coord1(2,i)=geom(2,i)-yc1
+         Coord1(3,i)=geom(3,i)-zc1
+         Coord2(1,i)=geom2(1,i)-xc2
+         Coord2(2,i)=geom2(2,i)-yc2
+         Coord2(3,i)=geom2(3,i)-zc2
+         x_norm=x_norm+Coord1(1,i)**2+Coord1(2,i)**2+Coord1(3,i)**2
+         y_norm=y_norm+Coord2(1,i)**2+Coord2(2,i)**2+Coord2(3,i)**2
+      end do
+
+      IF (debug) THEN
+         WRITE(*,*) "R matrix"
+         DO I=1,3
+            WRITE(*,*) (RMatrix(I,j),j=1,3)
+         END DO
+      END IF
+
+  ! calculate the R matrix
+      do i = 1, 3
+         do j = 1, 3
+            Rmatrix(i,j)=0.
+            do ia=1,na
+               Rmatrix(i,j) = Rmatrix(i,j)+Coord1(i,ia)*Coord2(j,ia)
+            END DO
+         end do
+      end do
+
+      IF (debug) THEN
+         WRITE(*,*) "R matrix"
+         DO I=1,3
+            WRITE(*,*) (RMatrix(I,j),j=1,3)
+         END DO
+      END IF
+
+
+  ! S matrix
+      S(1, 1) = Rmatrix(1, 1) + Rmatrix(2, 2) + Rmatrix(3, 3)
+      S(2, 1) = Rmatrix(2, 3) - Rmatrix(3, 2)
+      S(3, 1) = Rmatrix(3, 1) - Rmatrix(1, 3)
+      S(4, 1) = Rmatrix(1, 2) - Rmatrix(2, 1)
+
+      S(1, 2) = S(2, 1)
+      S(2, 2) = Rmatrix(1, 1) - Rmatrix(2, 2) - Rmatrix(3, 3)
+      S(3, 2) = Rmatrix(1, 2) + Rmatrix(2, 1)
+      S(4, 2) = Rmatrix(1, 3) + Rmatrix(3, 1)
+
+      S(1, 3) = S(3, 1)
+      S(2, 3) = S(3, 2)
+      S(3, 3) =-Rmatrix(1, 1) + Rmatrix(2, 2) - Rmatrix(3, 3)
+      S(4, 3) = Rmatrix(2, 3) + Rmatrix(3, 2)
+
+      S(1, 4) = S(4, 1)
+      S(2, 4) = S(4, 2)
+      S(3, 4) = S(4, 3)
+      S(4, 4) =-Rmatrix(1, 1) - Rmatrix(2, 2) + Rmatrix(3, 3) 
+
+
+! PFL : I use my usual Jacobi diagonalisation
+  ! Calculate eigenvalues and eigenvectors, and 
+  ! take the maximum eigenvalue lambda and the corresponding eigenvector q.
+
+      IF (debug) THEN
+         WRITE(*,*) "S matrix"
+         DO I=1,4
+            WRITE(*,*) (S(I,j),j=1,4)
+         END DO
+      END IF
+
+      Call Jacobi(S,4,EigVal,EigVec,4)
+
+      Call Trie(4,EigVal,EigVec,4)
+
+      Lambda=EigVal(4)
+
+! RMS Deviation
+       rmsd=sqrt(max(0.0d0,((x_norm+y_norm)-2.0d0*lambda))/dble(na))
+
+      if (FRot.OR.FAlign) Call rotation_matrix(EigVec(1,4),U)
+      IF (FAlign) THEN
+         DO I=1,na
+            geom2(1,i)=Coord2(1,i)*U(1,1)+Coord2(2,i)*U(2,1)
+     &           +Coord2(3,i)*U(3,1) +xc1
+            geom2(2,i)=Coord2(1,i)*U(1,2)+Coord2(2,i)*U(2,2)
+     &           +Coord2(3,i)*U(3,2) +yc1
+            geom2(3,i)=Coord2(1,i)*U(1,3)+Coord2(2,i)*U(2,3)
+     &           +Coord2(3,i)*U(3,3) +zc1
+         END DO
+      END IF
+
+      END
+
+
+!-----------------------------------------------------------------------
+      subroutine rotation_matrix(q, U)
+!-----------------------------------------------------------------------
+! This subroutine constructs rotation matrix U from quaternion q.
+!-----------------------------------------------------------------------
+! This subroutine calculates RMSD using quaternions.
+! It is based on the F90 routine bu E. Coutsias
+! http://www.math.unm.edu/~vageli/homepage.html
+! I (PFL) have just translated it, and I have changed the diagonalization
+! subroutine.
+! I also made some changes to make it suitable for Cart package.
+!----------------------------------------------------------------------
+!----------------------------------------------------------------------
+! Copyright (C) 2004, 2005 Chaok Seok, Evangelos Coutsias and Ken Dill
+!      UCSF, Univeristy of New Mexico, Seoul National University
+! Witten by Chaok Seok and Evangelos Coutsias 2004.
+                                                                                
+! This library is free software; you can redistribute it and/or
+! modify it under the terms of the GNU Lesser General Public
+! License as published by the Free Software Foundation; either
+! version 2.1 of the License, or (at your option) any later version.
+!
+                                                                                
+! This library is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+! Lesser General Public License for more details.
+!
+                                                                                
+! You should have received a copy of the GNU Lesser General Public
+! License along with this library; if not, write to the Free Software
+! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+!----------------------------------------------------------------------------
+
+      real*8 q(4)
+      real*8 U(3,3)
+      real*8 q0,q1,q2,q3,b0,b1,b2,b3,q00,q01,q02,q03
+      REAL*8 q11,q12,q13,q22,q23,q33
+
+      q0 = q(1)
+      q1 = q(2)
+      q2 = q(3)
+      q3 = q(4)
+
+      b0 = 2.0d0*q0
+      b1 = 2.0d0*q1
+      b2 = 2.0d0*q2
+      b3 = 2.0d0*q3
+
+      q00 = b0*q0-1.0d0
+      q01 = b0*q1
+      q02 = b0*q2
+      q03 = b0*q3
+
+      q11 = b1*q1
+      q12 = b1*q2
+      q13 = b1*q3  
+      
+      q22 = b2*q2
+      q23 = b2*q3
+      
+      q33 = b3*q3 
+      
+      U(1,1) = q00+q11
+      U(1,2) = q12-q03
+      U(1,3) = q13+q02
+      
+      U(2,1) = q12+q03
+      U(2,2) = q00+q22
+      U(2,3) = q23-q01
+      
+      U(3,1) = q13-q02
+      U(3,2) = q23+q01
+      U(3,3) = q00+q33
+      
+      end 
+      
+c============================================================
+c
+c ++  diagonalisation par jacobi
+c     vecteur propre i : V(i,i)
+c     valeur propre i : D(i)
+c
+c============================================================
+c 
+      SUBROUTINE JACOBI(A,N,D,V,max_N)
+      IMPLICIT REAL*8 (A-H,O-Z)
+      parameter (max_it=500)
+      DIMENSION A(max_N,max_N),B(max_N),Z(max_N)
+      DIMENSION V(max_N,max_N),D(max_N)
+
+
+      DO 12 IP=1,N
+        DO 11 IQ=1,N
+          V(IP,IQ)=0.
+11      CONTINUE
+        V(IP,IP)=1.
+12    CONTINUE
+      DO 13 IP=1,N
+        B(IP)=A(IP,IP)
+        D(IP)=B(IP)
+        Z(IP)=0.
+13    CONTINUE
+      NROT=0
+      DO 24 I=1,max_it
+        SM=0.
+        DO 15 IP=1,N-1
+          DO 14 IQ=IP+1,N
+            SM=SM+ABS(A(IP,IQ))
+14        CONTINUE
+15      CONTINUE
+        IF(SM.EQ.0.)RETURN
+        IF(I.LT.4)THEN
+          TRESH=0.2*SM/N**2
+        ELSE
+          TRESH=0.
+        ENDIF
+        DO 22 IP=1,N-1
+          DO 21 IQ=IP+1,N
+            G=100.*ABS(A(IP,IQ))
+            IF((I.GT.4).AND.(ABS(D(IP))+G.EQ.ABS(D(IP)))
+     *         .AND.(ABS(D(IQ))+G.EQ.ABS(D(IQ))))THEN
+              A(IP,IQ)=0.
+            ELSE IF(ABS(A(IP,IQ)).GT.TRESH)THEN
+              H=D(IQ)-D(IP)
+              IF(ABS(H)+G.EQ.ABS(H))THEN
+                T=A(IP,IQ)/H
+              ELSE
+                THETA=0.5*H/A(IP,IQ)
+                T=1./(ABS(THETA)+SQRT(1.+THETA**2))
+                IF(THETA.LT.0.)T=-T
+              ENDIF
+              C=1./SQRT(1+T**2)
+              S=T*C
+              TAU=S/(1.+C)
+              H=T*A(IP,IQ)
+              Z(IP)=Z(IP)-H
+              Z(IQ)=Z(IQ)+H
+              D(IP)=D(IP)-H
+              D(IQ)=D(IQ)+H
+              A(IP,IQ)=0.
+              DO 16 J=1,IP-1
+                G=A(J,IP)
+                H=A(J,IQ)
+                A(J,IP)=G-S*(H+G*TAU)
+                A(J,IQ)=H+S*(G-H*TAU)
+16            CONTINUE
+              DO 17 J=IP+1,IQ-1
+                G=A(IP,J)
+                H=A(J,IQ)
+                A(IP,J)=G-S*(H+G*TAU)
+                A(J,IQ)=H+S*(G-H*TAU)
+17            CONTINUE
+              DO 18 J=IQ+1,N
+                G=A(IP,J)
+                H=A(IQ,J)
+                A(IP,J)=G-S*(H+G*TAU)
+                A(IQ,J)=H+S*(G-H*TAU)
+18            CONTINUE
+              DO 19 J=1,N
+                G=V(J,IP)
+                H=V(J,IQ)
+                V(J,IP)=G-S*(H+G*TAU)
+                V(J,IQ)=H+S*(G-H*TAU)
+19            CONTINUE
+              NROT=NROT+1
+            ENDIF
+21        CONTINUE
+22      CONTINUE
+        DO 23 IP=1,N
+          B(IP)=B(IP)+Z(IP)
+          D(IP)=B(IP)
+          Z(IP)=0.
+23      CONTINUE
+24    CONTINUE
+      write(6,*) max_it,' iterations should never happen'
+      STOP
+      RETURN
+      END
+c
+c============================================================
+c
+c ++  trie des vecteur dans l'ordre croissant
+c
+c============================================================
+c
+        SUBROUTINE trie(nb_niv,ene,psi,max_niv)
+        integer i,j,k,nb_niv,max_niv
+        real*8 ene(max_niv),psi(max_niv,max_niv)
+        real*8 a
+
+        DO i=1,nb_niv
+          DO j=i+1,nb_niv
+            IF (ene(i) .GT. ene(j)) THEN
+c              permutation
+              a=ene(i)
+              ene(i)=ene(j)
+              ene(j)=a
+              DO k=1,nb_niv
+                 a=psi(k,i)
+                 psi(k,i)=psi(k,j)
+                 psi(k,j)=a
+              END DO
+            END IF
+          END DO
+        END DO
+
+        END
+
Index: utils/AnaPathrel
===================================================================
--- utils/AnaPathrel	(revision 0)
+++ utils/AnaPathrel	(revision 1)
@@ -0,0 +1,90 @@
+#!/bin/bash
+if [ $# -lt 4 ]; then
+ echo "Use: $0 File.out MaxCyc PathName NGeomF"
+ exit
+fi
+
+Fout=$1
+ItMax=$2
+Nom=$3
+NGeomF=$4
+
+export LANG=C
+
+echo "#ItMax=$ItMax"
+echo "#Nom=$Nom"
+echo "#NGeomF"=$NGeomF
+
+if [ -s ${Nom}_cart.0 ]; then
+ Ext=_cart
+elif [ -s ${Nom}.0 ]; then
+ Ext=""
+else
+ echo "Cannot find ${Nom}.0 nor ${Nom}_cart.0: ERROR"
+ exit
+fi
+ echo "Using files ${Nom}${Ext}.XX"
+
+if [ -s $Nom.datl ]; then
+ it=1
+ while [ -s $Nom.datl_${it} ]
+  do
+ let it=it+1
+ done
+ echo "Moving $Nom.datl into $Nom.datl_${it}"
+ mv $Nom.datl $Nom.datl_${it}
+fi
+echo "Creating $Nom.datl"
+
+for i in `seq 0 $ItMax`
+ do
+  xyz2path  ${Nom}${Ext}.$i 
+ cat Scan.dat >> $Nom.datl
+ echo " " >> $Nom.datl
+ echo " " >> $Nom.datl
+done 
+
+E0=`head -1 Scan.dat | awk '{print $NF}' `
+
+cat << EOF > ${Nom}_l.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ Eref=$E0
+ Conv=627.51
+EOF
+
+for i in `seq 1 $ItMax`
+do
+ echo "plot \"$Nom.datl\" i 0 u 1:(\$2-Eref)*Conv w lp " >> ${Nom}_l.gplot
+ echo "replot \"$Nom.datl\" i $i u 1:(\$2-Eref)*Conv w lp " >> ${Nom}_l.gplot
+ echo "pause -1" >> ${Nom}_l.gplot
+done
+ echo "pause -1" >> ${Nom}_l.gplot
+
+cat << EOF > ${Nom}_l2.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ Eref=$E0
+ Conv=627.51
+EOF
+
+ echo "plot \"$Nom.datl\" i 0 u 1:(\$2-Eref)*Conv w lp " >>  ${Nom}_l2.gplot
+for i in `seq 1 $ItMax`
+do
+ echo "replot \"$Nom.datl\" i $i u 1:(\$2-Eref)*Conv w lp " >>  ${Nom}_l2.gplot
+done
+
+cat << EOF > ${Nom}_l3.gplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ Eref=$E0
+ Conv=627.51
+EOF
+
+ echo "plot \"$Nom.datl\" i 0 u 0:(\$2-Eref)*Conv w lp " >>  ${Nom}_l3.gplot
+for i in `seq 1 $ItMax`
+do
+ echo "replot \"$Nom.datl\" i $i u 0:(\$2-Eref)*Conv w lp " >>  ${Nom}_l3.gplot
+done
+
+chmod u+x ${Nom}_l.gplot ${Nom}_l2.gplot ${Nom}_l3.gplot

Property changes on: utils/AnaPathrel
___________________________________________________________________
Added: svn:executable
   + 

Index: doc/Mini_help.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: doc/Mini_help.pdf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream
Added: svn:executable
   + 

Index: doc/Mini_help.tex
===================================================================
--- doc/Mini_help.tex	(revision 0)
+++ doc/Mini_help.tex	(revision 1)
@@ -0,0 +1,344 @@
+\documentclass[a4paper,11pt]{article}
+\usepackage{a4wide}
+%\usepackage{times}
+\usepackage{graphicx}
+\usepackage[body={16cm,24.5cm}]{geometry}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{ae,aecompl} 
+%\input{m-pictex.tex}
+%\usepackage{m-ch-en}
+\usepackage{amsmath,amssymb}
+%\usepackage{slashbox}
+%\usepackage{psfrag}
+%\usepackage{multirow}
+%\usepackage{amscd}
+%\usepackage{empheq}
+%\usepackage{yhmath}
+%\usepackage{array}
+\usepackage{fancyhdr}
+%\usepackage{braket}
+\usepackage{marvosym}
+%\usepackage{xr}
+
+
+\DeclareGraphicsExtensions{.eps,.ps}
+\graphicspath{{.}{../}}
+
+\renewcommand{\arraystretch}{1.2}
+\setcounter{tocdepth}{2}
+\makeatletter
+\@addtoreset{section}{part}
+\makeatother
+
+\lhead[]{}
+\rhead[]{}
+\cfoot{}
+\title{OpenPath mini-help}
+\author{P. Fleurat-Lessard, P. Dayal \\
+Laboratoire de Chimie de l'ENS Lyon, 46 all�e d'Italie, F-69364 Lyon
+Cedex 7}
+\date{Feb. 2011}
+
+\def\Path{\texttt{OpenPath}}
+\begin{document}
+\maketitle
+
+\section{introduction}
+\Path{} is a program that can optimize a reaction path between two
+  structures. The algorithm to optimize the path is close to the string
+  method. The originality of this program lies in the coordinate set it
+ can use to generate and optimize the path.
+
+This program is an independant program that calls standard electronic
+  structure codes to get the energies and forces it needs to optimize
+  the reaction path. For now, it is coupled to Gaussian, MOPAC2009,
+  Vasp and Turbomole.
+
+\section{Installation}
+We suppose here that you will install \Path{} into a directory called
+\texttt{OpenPath}. First, create the directory: 
+\begin{verbatim}
+ mkdir OpenPath
+ cd OpenPath
+ mv ../OpenPath.tgz .
+\end{verbatim}
+Uncompress the archive:
+\begin{verbatim}
+ gunzip OpenPath.tgz
+ tar -xvf OpenPath.tar
+\end{verbatim}
+You should now have this \texttt{Mini\_help.pdf} file and 4 directories (doc, src, utils, examples).
+
+\section{Compilation}
+Go to the directory  in which you have uncompressed the files.
+Change to the \texttt{src} directory. 
+Edit the \texttt{Makefile} to change the \texttt{Machine} description
+according to the compiler you want to use. Main choices are:
+gfortran, g95, ifort, pgf, xlf and pathscale for now. You might also
+have to check that the locations of 
+the libraries are ok.
+Type \texttt{make}. You should now have a file called
+\texttt{Path.exe} in this directory, as well as two utilities called
+\texttt{xyz2scan} and \texttt{xyz2path} located in the \texttt{utils}
+directories. You should copy all these executables to your
+\texttt{~/bin} directory (or any place from which they can be executed).
+
+\section{Use}
+\subsection{Path calculation}
+ To call \Path{}, you can type:
+\verb=Path.exe Input_file Output_file=
+The input file \texttt{Input\_file} is based on a namelist and looks like:
+\begin{verbatim}
+ &path
+ nat=3, ! Number of atoms
+ ngeomi=3, ! Number of initial geometries 
+ ngeomf=12, !Number of geometries along the path
+ OptReac=.T., ! Do you want to optimize the reactants ?
+ OptProd=.T., ! Optimize the products
+ coord='zmat', ! We use Z-matrix coordinates
+ maxcyc=31, ! Max number of iterations 
+ IReparam=2,! re-distribution of points along the path every 2 iterations
+ ISpline=50, ! Start using spline interpolation at iteration 50
+ Hinv=.T. , ! Use inverse of the Hessian internally (default: T)
+ MW=T, ! Works in Mass Weighted coordiante (default T)
+ PathName='Path_HCN_zmat_test', ! Name of the file used for path outputs
+ prog='gaussian',! we use G03 to get energy and gradients
+ SMax=0.1 ! Displacement cannot exceed 0.1 atomic units (or mass weighted at. unit)
+ /
+  3
+ Energy :      0.04937364
+ H     0.0000     0.0000     0.0340
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+  3
+ Energy :      0.04937364
+ H     0.0000     1.1000     1.1030
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+3
+ CNH
+H 0.000000    0.000000    3.3
+C 0.000000    0.000000    1.1
+N 0.000000    0.000000    2.26
+%chk=Test
+#P  AM1 FORCE
+
+ HCN est bien 
+
+0,1
+H 0.000000    0.000000    0.000000
+C 0.000000    0.000000    1.000
+N 0.000000    0.000000    3.00
+
+\end{verbatim}
+
+   Compulsory variables are: 
+\begin{description}
+\item          NGeomi: Number of geometries defining the Initial path 
+\item          NGeomf: Number of geometries defining the Final path 
+\item         Nat   : Number of atoms 
+\end{description}
+           
+          Other options 
+\begin{description}
+\item  Input: string that indicates the type of the input geometries.
+          Accepted values are: Cart (or Xmol or Xyz) or Vasp 
+\item    Prog: string that indicates the program that will be used for energy and gradient calculations. 
+               Accepted values are: Gaussian, Vasp or Ext. \\
+                In case of a Gaussian calculations, input must be set to Cart. 
+                One example of a gaussian input should be added at the end of the 
+                input file.See example file \texttt{Test\_HCN\_zmat\_g03.path}. \\
+                In the case of a VASP calculation, if input is set to Cart, then 
+              the preamble of a VASP calculation should be added at the end of 
+              the input file. See example file \texttt{Test\_VASP\_cart.path}. 
+              In the case of a VASP calculation, one should also give value of the  
+              \texttt{RunMode} variable .
+
+\item RunMode: This indicates wether \Path{} should use VASP
+              routine to calculate the energy and gradient of the whole path
+              or not. User has two options. One is to calculate the energy and
+              gradient of each point sequentially. This is usefull when
+              running on one (or two) processors. In this case,
+              \texttt{RunMode} should be put to \texttt{SERIAL}.When running
+              in parallel with 8 or more processors, one can use VASP to
+              calculate simultaneously the energies and gradients for all
+              points, as in a normal NEB calculation. In this case,
+              \texttt{RunMode} must be set to \texttt{PARA}.
+\item ProgExe: Name (with full path) of the executable to be used to get
+  energies and gradients. For example, if VASP is used in parallel, one might
+  have something like: \\ 
+\verb!ProgExe='/usr/local/mpich/bin/mpirun -machinefile machine -np 8 ~/bin/VASP_46'!.
+Another option that I use, is to put \verb!ProgExe='./run_vasp'! and I put every option needed to run VASP
+into the \texttt{run\_vasp} file. 
+\item   PathName: Prefix used to save the path. Default is Path 
+\item   Poscar: string that will be used as the prefix for the different  
+           POSCAR files in a VASP calculations. Usefull only if PathOnly=.TRUE., 
+           not used for internal calculations. 
+\item   IGeomRef: Index of the geometry used to construct the internal coordinates. 
+         Valid only for Coord=Zmat, Hybrid or Mixed 
+\item   Fact: REAL used to define if two atoms are linked. 
+         If $d(A,B) \leq fact*(rcov(A)+rcov(B))$, then A and B are considered Linked. 
+\item   debugFile: Name of the file that indicates which subroutine should print debug info. 
+\item   Coord: System of coordinates to use. Possible choices are: 
+          - CART (or Xyz): works in cartesian 
+          - Zmat: works in internal coordinates (Zmat) 
+          - Mixed: frozen atoms, as well as atoms defined by the  
+          'cart' array(see below) are describe in CARTESIAN, whereas the 
+          others are described in Zmat  
+          - Baker: use of Baker coordinates, also called delocalized internal coordinates 
+          - Hybrid: geometries are described in zmat, but the gradient are used in cartesian 
+\item   Step\_method: method to compute the step for optimizing a geometry; choices are:  
+          - RFO: Rational function optimization 
+          - GDIIS: Geometry optimization using direct inversion in the iterative supspace 
+\item    HesUpd: method to update the hessian. By default, it is Murtagh-Sargent 
+         Except for geometry optimization where it is BFGS. 
+\item   MaxCyc: maximum number of iterations for the path optimization 
+\item   Smax: Maximum length of a step during path optimization 
+\item   SThresh: Step Threshold to consider that the path is stationary 
+\item   GThresh: Gradient Threshold to consider that the path is stationary, only orthogonal part is taken 
+\item   FTan: We moving the path, this gives the proportion of the displacement tangent to the path 
+         that is kept. FTan=1. corresponds to the full displacement,  
+         whereas FTan=0. gives a displacement orthogonal to the path. 
+\item   IReparam: The path is not reparameterised at each iteration. This gives the frequency of reparameterization. 
+\item   ISpline: By default, a linear interpolation is used to generate the path. 
+            This option indicates the first step where spline interpolation is used. 
+\end{description}
+           
+          Arrays: 
+\begin{description}
+\item   Rcov: Array containing the covalent radii of the first 80 elements. 
+         You can modify it using, \verb!rcov(6)=0.8!. 
+\item   Mass: Array containing the atomic mass of the first 80 elements. 
+\item   AtTypes: Name of the different atoms used in a VASP calculations. 
+          If not given, Path will read the POTCAR file. 
+\end{description}
+           
+          Flags: 
+\begin{description}
+\item        MW:  Flag. True if one wants to work in Mass Weighted coordinates. Default=.TRUE. 
+\item       Renum: Flag. True if one wants to reoder the atoms in the initial order. default is .TRUE. most of the time. 
+\item       OptProd: True if one wants to optimize the geometry of the products. 
+\item       OptReac: True if one wants to optimize the geometry of the reactants. 
+\item       PathOnly:TRUE if one wants to generate the initial path, and stops.  
+\item       Hinv: if True, then Hessian inversed is used. 
+\item       IniHup: if True, then Hessian inverse is extrapolated using the initial path calculations. 
+\item       HupNeighbour: if True, then Hessian inverse is extrapolated using the neighbouring points of the path. 
+\item       FFrozen: True if one wants to freeze the positions of some atoms.  
+                If True, a \verb!&frozenlist! namelist containing the list of frozen atoms must be given. 
+                 If VASP is used, and frozen is not given 
+        here, the program will use the F flags of the input geometry 
+\item       FCart:  True if one wants to describe some atoms using cartesian coordinates.  
+               *** Only used in 'mixed' calculations. *** 
+             If True, a \verb!&cartlist! namelist containing the list of cart atoms must be given. 
+             By default, only frozen atoms are described in cartesian coordinates. 
+        
+\item       Autocart: True if you want to let the program choosing the cartesian atoms. 
+\item       VMD: TRUE if you want to use VMD to look at the Path. Used only for VASP for now 
+\end{description}
+
+More to come...      have a look at the files provided in the
+\texttt{examples} directory. In particular, you will find there three
+directories containing easy-to-use examples. That is, each directory contains
+all the files you need to launch the application. For now, you have working
+examples for:
+\begin{enumerate}
+\item \texttt{Gaussian}: Examples  using sequential call
+  to Gaussian to calculate the energies and forces along the path. 
+\item \texttt{VASP}: Examples  using 
+  to VASP to calculate the energies and forces along the path.
+As VASP can perform NEB calculations, Path can use it in two ways:
+Serial or Parallel. 
+\begin{itemize}
+\item[Serial] 
+In the Serial mode, Path uses Vasp to compute the energy and forces of each image separately (as it does for Gaussian for example).
+Therefore, the INCAR file should not contain any references to the number of images (no IMAGES command!).
+
+\item[Parallel]
+In the Parallel mode, Path uses VASP to compute at once the energies and forces for all the images (as VASP does for a NEB calculation).
+Therefore, the INCAR file MUST contain the IMAGES command.
+More, the directories 00, 01, ... should exist.
+
+\item[Home or Scratch ?]
+On our local cluster, it is adviced to perform the calculations on the
+/scratch directory that is local rather than on the /home that is
+mounted  via NFS and is thus slow. 
+However, when doing so, we sometimes had troubles with VASP, and
+discovered that all files should be copied on the /scratch of all
+machines. 
+Therefore, the scripts are a bit tricky.
+In case your computer center is similar to ours, we provide 2 SGE
+scripts: 
+\begin{itemize}
+\item[run\_Path\_SGE\_home] performs the VASP calculations in the /home
+directory 
+\item[run\_Path\_SGE\_scratch] creates the directories, copies the
+  files and performs the VASP calculations in the local /scratch
+  directories.
+\end{itemize}
+\end{itemize}
+\item \texttt{Mopac}: Examples  using sequential call
+  to MOPAC2009 to calculate the energies and forces along the path.
+\item \texttt{Test}: Examples  using the analytical HCN potential
+  energy surface to calculate the energies and forces along the path.
+As this is fast, we also provide other Analysis tools.
+See README files in the Cart and Zmat subdirectories.
+\end{enumerate}
+
+\subsection{Path analysis}
+In order to analyse the path evolution, we provide some utilities, in
+the \texttt{utils} directory. \texttt{xyz2scan} and \texttt{xyz2path}
+have to be compiled. For this, go to either the \texttt{src} or the
+\texttt{utils} directory and type \texttt{make utils}.
+Here is a brief description of these utilities.
+
+\begin{itemize}
+\item \texttt{AnaPath} and/or \texttt{AnaPathref} \\
+These scripts analyse a calculated path. They use \texttt{xyz2path} to
+convert the cartesian coordinates saved by \Path{} into a data file
+(called PathName.datl) that be plotted using the gnuplot files that are
+also created. They all plot the path energy  but in different ways:
+\begin{itemize}
+\item[PathName\_l.gplot] plots the energy of the first iteration (the
+  initial path) together with the energy of the following iterations,
+  but one at a time.
+\item[PathName\_l2.gplot]  plots the energy of the path for all
+  iterations, with respect to the
+curvilinear distance along the path.
+\item[PathName\_l3.gplot]  plots the energy of the path for all
+  iterations, with respect to the index of the images.
+\end{itemize}
+\item \texttt{xyz2path} and \texttt{xyz2scan} convert a bunch of
+  cartesian coordinates into 
+  a data file. They are very similar: the only difference is the way
+  they print their results. For \texttt{xyz2scan} the analyses are
+  indiced using the geometry number whereas \texttt{xyz2path} computes
+  the mass weighted distance between two geometries and uses this
+  distance to index the results. \\
+They both use a file called 'list' to perform the analysis,  which has
+the following structure:  each line contains the type of the value you
+want to follow, it can be:
+\begin{itemize}
+\item[b]  for a Bond distance
+\item[a] for an angle
+\item[d] for a dihedral
+\item[c] to create a center of mass
+\end{itemize}
+This descriptor is followed by the number of the atoms involved.  The
+exception, is the \texttt{c} command that is followed by the number of
+atoms used to define this center of mass, and then the index of the atoms.
+A typical file can be:
+\begin{verbatim}
+ b  1  2
+ b 2  3
+ a 1 2 3
+ c  2 1 2   <- create a new atom located at the middle of the 1-2 bond.
+\end{verbatim}
+
+The cartesian geometries have to follow the XMol format. If the
+comment line contains \texttt{E=} then \texttt{xyz2scan} and
+\texttt{xyz2path} will read the following number and take it as the
+image energy.
+\end{itemize}
+
+\end{document}
Index: src/VarTypes.f90
===================================================================
--- src/VarTypes.f90	(revision 0)
+++ src/VarTypes.f90	(revision 1)
@@ -0,0 +1,21 @@
+MODULE VarTypes
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+  INTEGER(KINT), PARAMETER :: VLCHARS=256, LCHARS=132, SCHARS=32
+
+  Type ListCoord
+! Type of the coordinate
+! For now: BOND, ANGLE, DIHEDRAL
+      CHARACTER(32) :: Type
+
+! Index of the atoms
+     INTEGER(KINT) :: At1,At2,At3,At4
+! Value of the Coordinate
+     REAL(KREAL) :: Value
+     INTEGER(KINT) :: SignDihedral
+     TYPE (ListCoord), POINTER :: Next
+  END TYPE ListCoord
+
+
+END MODULE VARTYPES
Index: src/Annul.f90
===================================================================
--- src/Annul.f90	(revision 0)
+++ src/Annul.f90	(revision 1)
@@ -0,0 +1,15 @@
+
+      SUBROUTINE Annul(Liaisons,at,atli)
+!  Cette routine supprime l'atome atli dans les liaisons de at
+      use Path_module, only : Nat, NMaxL
+
+      INTEGER(4) :: Liaisons(Nat,0:NMaxL),At,Atli,I,J
+      I=1
+      Do WHILE ((Liaisons(at,I).NE.Atli).AND.(I.LE.Liaisons(at,0)))
+       I=I+1
+      END DO
+      Do J=I,NMaxL-1
+        Liaisons(at,J)=Liaisons(at,J+1)
+      END DO
+        Liaisons(at,NMaxL)=0
+      END

Property changes on: src/Annul.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Read_geom.f90
===================================================================
--- src/Read_geom.f90	(revision 0)
+++ src/Read_geom.f90	(revision 1)
@@ -0,0 +1,339 @@
+SUBROUTINE Read_Geom(input)
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+
+  CHARACTER(32), INTENT(IN) :: input    
+  CHARACTER(132) :: LineTmp,Line
+
+  INTEGER(KINT), ALLOCATABLE :: NbAtType(:) !na
+  INTEGER(KINT) :: NbType, NbTypeUser
+  INTEGER(KINT) :: I, J, Iat,NAtP,Idx,JStart
+  INTEGER(KINT) :: IGeom
+  REAL(KREAL) :: Xt,Yt,Zt
+  LOGICAL :: Debug, TChk
+  CHARACTER(4), ALLOCATABLE :: FFFt(:,:) ! 3,Na
+  LOGICAL, ALLOCATABLE :: FFFl(:,:) ! 3,Na
+
+!!! for VASP inputs
+! latx_loc used to check that the lattice parameters are the same for all geometries
+  REAL(KREAL) :: lata_loc(3), latb_loc(3), latc_loc(3)
+! VaspPar_loc is the local value of the vasp parametre
+  REAL(KREAL) :: VaspPar_loc
+! Vdir_loc is used to convert the read geometry to Cartesian.
+! V_direct is set by the first geometry.
+  CHARACTER(LCHARS) :: Vdir_loc
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('Read_geom')
+ if (debug) Call Header("Entering Read_Geom")
+  if (debug) WRITE(*,*) "Input:",Trim(Input)
+
+  SELECT CASE(Input)
+  CASE ('XYZ','CART')
+     DO I=1,NGeomI
+        IF (DEBUG) WRITE(*,*) "Reading Geom :",I
+        READ(IOIN,*) NAtp
+        if (NAtp.NE.Nat) THEN
+           IF (I==1) THEN
+              WRITE(IOOUT,*) 'WARNING Number of atoms not consistent between NAMELIST &path and First geom'
+              WRITE(IOOUT,*) "Using:",Natp 
+              DEALLOCATE(XyzGeomI, AtName)
+              Nat=Natp 
+              ALLOCATE(XyzGeomI(NGeomI,3,Nat), AtName(NAt))
+           ELSE
+              WRITE(IOOUT,*) 'Number of atoms not consistent between geometries. STOP'
+              STOP
+           END IF
+        END IF
+        READ(IOIN,'(A)') Line
+        DO J=1,NAt
+           READ(IOIN,*) AtName(J),XyzGeomI(I,1:3,J)
+        END DO
+        If (Debug) THEN
+           WRITE(*,*) "Geom ",I
+           DO J=1,NAt
+              WRITE(*,'(1X,A2,3(1X,F15.6))') AtName(J),XyzGeomI(I,1:3,J)
+           END DO
+        END IF
+     END DO
+  CASE ('TURBOMOLE')
+     DO I=1,NGeomI
+        IF (DEBUG) WRITE(*,*) "Reading Geom :",I
+        JStart=1
+! read the $coord line, or $user-defined, or $end
+        Line='$ok'
+        DO WHILE (Line(1:1).EQ."$")
+           READ(IOIN,'(A)') Line 
+           Line=AdjustL(Line)
+        END DO
+        J=1
+        READ(Line,*) XyzGeomI(I,1:3,J),AtName(J)
+        DO J=2,NAt
+           READ(IOIN,*) XyzGeomI(I,1:3,J),AtName(J)
+        END DO
+        XyzGeomI(I,:,:)= XyzGeomI(I,:,:)*a0
+        If (Debug) THEN
+           WRITE(*,*) "Geom ",I
+           DO J=1,NAt
+              WRITE(*,'(1X,A2,3(1X,F15.6))') AtName(J),XyzGeomI(I,1:3,J)
+           END DO
+        END IF
+     END DO
+  CASE ('VASP')
+     ALLOCATE(FFF(3,nat),FFFl(3,Nat),FFFt(3,Nat))
+     ! First geometry is a bit special for VASP as we have to set
+     ! many things
+     IGeom=1
+     IF (DEBUG) WRITE(*,*) "Reading Geom :",IGeom
+     READ(IOIN,'(A)') Vasp_Title
+     READ(IOIN,*) Vasp_param
+
+     READ(IOIN,*) Lat_a
+     READ(IOIN,*) Lat_b
+     READ(IOIN,*) Lat_c
+
+     Lat_a=Lat_a*Vasp_param
+     Lat_b=Lat_b*Vasp_param
+     Lat_c=Lat_c*Vasp_param
+
+     ALLOCATE(NbAtType(nat))
+     READ(IOIN,'(A)') Vasp_types
+     ! First, how many different types ?
+     NbAtType=0
+     READ(Vasp_types,*,END=999) NbAtType
+999  CONTINUE
+     NbType=0
+     NatP=0
+     DO WHILE (NbAtType(NbType+1).NE.0)
+        NbType=NbType+1
+        Natp=Natp+NbAtType(NbType)
+     END DO
+
+
+     if (NAtp.NE.Nat) THEN
+        WRITE(IOOUT,*) 'WARNING Number of atoms not consistent between NAMELIST &path and First geom'
+        WRITE(IOOUT,*) "Using:",Natp 
+        DEALLOCATE(XyzGeomI, AtName)
+        Nat=Natp 
+        ALLOCATE(XyzGeomI(NGeomI,3,Nat), AtName(NAt))
+     END if
+
+     ! Do we know the atom types ?
+     IF (AtTypes(1).EQ.'  ') THEN
+        ! user has not provided atom types... we have to find them by ourselves
+        ! by looking into the POTCAR file...
+        INQUIRE(File="POTCAR", EXIST=Tchk)
+        IF (.NOT.Tchk) THEN
+           WRITE(*,*) "ERROR! No AtTypes provided, and POTCAR file not found"
+           STOP
+        END IF
+        OPEN(IOTMP,File="POTCAR")
+        DO I=1,NbType
+           Line='Empty'
+           DO WHILE (Line(1:5).NE.'TITEL')
+              READ(IOTMP,'(A)') Line
+              Line=AdjustL(Line)
+           END DO
+           Line=adjustl(Line(9:))
+           Idx=index(Line," ")
+           Line=adjustl(Line(Idx+1:))
+           AtTypes(I)=Line(1:2)
+        END DO
+        if (debug) WRITE(*,'(A,100(1X,A2))') "ReadG:VASP AtTypes",AtTypes(1:NbType)
+        CLOSE(IOTMP)
+
+     ELSE  !AtTypes(1).EQ.'  '
+        ! user has provided atom types
+        NbTypeUser=0
+        DO WHILE (AtTypes(NbTypeUser+1).NE.'  ')
+           NbTypeUser=NbTypeUser+1
+        END DO
+        IF (NbType.NE.NbTypeUser) THEN
+           WRITE(*,*) "ERROR Read_Geom : NbType in POSCAR do not match AtTypes"
+           STOP
+        END IF
+     END IF
+
+     IAt=1
+     DO I=1,NbType
+        DO J=1,NbAtType(I)
+           AtName(Iat)=AtTypes(I)
+           Iat=Iat+1
+        END DO
+     END DO
+     DEALLOCATE(NbAtType)
+
+     NbTypes=NbType
+
+     READ(IOIN,'(A)') Vasp_comment
+     READ(IOIN,'(A)') Vasp_direct
+
+     V_direct=adjustl(Vasp_direct)
+     Call upcase(V_direct)
+
+     if (debug) WRITE(*,*) "V_direct=",Trim(V_Direct)
+
+     DO I=1,Nat
+        READ(IOIN,*) XyzGeomI(IGeom,1:3,I),FFF(1:3,I)
+           DO J=1,3
+              FFF(J,I)=AdjustL(FFF(J,I))
+              FFFl(j,i)=(FFF(j,i)(1:1).EQ.'T')
+           END DO
+
+     END DO
+     IF (V_direct(1:6).EQ.'DIRECT') THEN
+        DO I=1,Nat
+           Xt=XyzGeomI(IGeom,1,I)
+           Yt=XyzGeomI(IGeom,2,I)
+           Zt=XyzGeomI(IGeom,3,I)
+           XyzGeomI(IGeom,1,I)=Xt*lat_a(1)+Yt*lat_b(1)+Zt*lat_c(1)
+           XyzGeomI(IGeom,2,I)=Xt*lat_a(2)+Yt*lat_b(2)+Zt*lat_c(2)
+           XyzGeomI(IGeom,3,I)=Xt*lat_a(3)+Yt*lat_b(3)+Zt*lat_c(3)
+        END DO
+
+     END IF
+
+     ALLOCATE(X0_vasp(Nat),Y0_vasp(Nat),Z0_vasp(Nat))
+     X0_vasp=XyzGeomI(IGeom,1,:)
+     Y0_vasp=XyzGeomI(IGeom,2,:)
+     Z0_vasp=XyzGeomI(IGeom,3,:)
+
+     if (debug)  THEN
+        WRITE(*,*) Nat
+        WRITE(*,*) "Geom ",IGeom,"/",NGeomI
+        DO I=1,Nat
+           WRITE(*,'(1X,A2,3(1X,F15.6))') AtName(I),XyzGeomI(IGeom,1:3,I)
+        END DO
+     END IF
+
+
+     DO IGeom=2,NGeomI
+!!! PFL 16th March 2008 ->
+! Users might want to use different conditions for different geometries
+! i.e. to mix Cartesian and Direct :-p
+! thus we check for each geom which condition is used.
+! 
+
+! Title
+        READ(IOIN,*) LineTmp
+        !        if (debug) WRITE(*,*) "1 LineTmp:",Trim(LineTmp)
+! Vasp_Param
+        READ(IOIN,*) VaspPar_loc
+        !        if (debug) WRITE(*,*) "2 LineTmp:",Trim(LineTmp)
+! Lattice parameters
+        READ(IOIN,*) Lata_loc 
+        !        if (debug) WRITE(*,*) "3 LineTmp:",Trim(LineTmp)
+        READ(IOIN,*) latb_loc
+        !        if (debug) WRITE(*,*) "4 LineTmp:",Trim(LineTmp)
+        READ(IOIN,*) Latc_loc
+        !        if (debug) WRITE(*,*) "5 LineTmp:",Trim(LineTmp)
+! Attypes
+        READ(IOIN,*) LineTmp
+        !        if (debug) WRITE(*,*) "6 LineTmp:",Trim(LineTmp)
+! Comment
+        READ(IOIN,*) LineTmp,line
+        !        if (debug) WRITE(*,*) "7 LineTmp:",Trim(LineTmp),Trim(Line)
+! V_direct
+        READ(IOIN,*) Vdir_loc
+        Vdir_loc=adjustl(Vdir_loc)
+        Call upcase(Vdir_loc)
+        !        if (debug) WRITE(*,*) "8 LineTmp:",Trim(LineTmp)
+
+        Lata_loc=Lata_loc*VaspPar_loc-Lat_a
+        if (dot_product(lata_loc,Lata_loc).GE.1e-6) THEN
+           WRITE(*,*) "Lattice parameter a is different between geometries 1 and ",IGeom
+           WRITE(IOOUT,*) "Lattice parameter a is different between geometries 1 and ",IGeom
+           STOP
+        END IF
+
+        Latb_loc=Latb_loc*VaspPar_loc-Lat_b
+        if (dot_product(latb_loc,Latb_loc).GE.1e-6) THEN
+           WRITE(*,*) "Lattice parameter b is different between geometries 1 and ",IGeom
+           WRITE(IOOUT,*) "Lattice parameter b is different between geometries 1 and ",IGeom
+           STOP
+        END IF
+
+        Latc_loc=Latc_loc*VaspPar_loc-Lat_c
+        if (dot_product(latc_loc,Latc_loc).GE.1e-6) THEN
+           WRITE(*,*) "Lattice parameter c is different between geometries 1 and ",IGeom
+           WRITE(IOOUT,*) "Lattice parameter c is different between geometries 1 and ",IGeom
+           STOP
+        END IF
+
+        DO I=1,Nat
+           READ(IOIN,*) XyzGeomI(IGeom,1:3,I),FFFt(1:3,I)
+           DO J=1,3
+! A frozen atom in any geom is considered frozen in all geom
+              FFFt(j,I)=AdjustL(FFFt(j,i))
+              FFFl(j,i)=FFFl(j,i).AND.(FFFt(j,i).EQ.'T')
+           END DO
+        END DO
+
+        IF (Vdir_loc(1:6).EQ.'DIRECT') THEN
+           DO I=1,Nat
+              Xt=XyzGeomI(IGeom,1,I)
+              Yt=XyzGeomI(IGeom,2,I)
+              Zt=XyzGeomI(IGeom,3,I)
+              XyzGeomI(IGeom,1,I)=Xt*lat_a(1)+Yt*lat_b(1)+Zt*lat_c(1)
+              XyzGeomI(IGeom,2,I)=Xt*lat_a(2)+Yt*lat_b(2)+Zt*lat_c(2)
+              XyzGeomI(IGeom,3,I)=Xt*lat_a(3)+Yt*lat_b(3)+Zt*lat_c(3)
+           END DO
+        END IF
+
+        if (debug)  THEN
+           WRITE(*,*) Nat
+           WRITE(*,*) "Geom ",IGeom,"/",NGeomI
+           DO I=1,Nat
+              WRITE(*,'(1X,A2,3(1X,F15.6))') AtName(I),XyzGeomI(IGeom,1:3,I)
+           END DO
+        END IF
+
+     END DO
+
+! PFL 23 Nov 2008 ->
+! This is done in Path.f90
+! ! We put FFrozen in place
+!   Idx=1
+!   DO I=1,Nat
+!      TChk=.FALSE.
+!      DO J=1,3
+!         TChk=Tchk.OR.(.NOT.FFFl(j,i))
+!      END DO
+!      IF (TChk) THEN
+!         Frozen(Idx)=I
+!         Idx=Idx+1
+!      END IF
+!   END DO
+!   Frozen(Idx)=0
+! We put FFF in place because FFFl is a logical flag
+     DO I=1,Nat
+        DO J=1,3
+           if (FFFl(j,i)) FFF(j,i)="T"
+        END DO
+     END DO
+
+!<- PFL 23 Nov 2008
+
+ Deallocate(FFFl,FFFt)
+
+  CASE Default
+     WRITe(*,*) 'Input=',trim(Input),' UNKNOWN. Stop'
+     STOP
+
+  END SELECT
+
+
+ if (debug) Call Header("Exiting Read_Geom")
+
+END SUBROUTINE Read_Geom
Index: src/Hupdate_all.f90
===================================================================
--- src/Hupdate_all.f90	(revision 0)
+++ src/Hupdate_all.f90	(revision 1)
@@ -0,0 +1,81 @@
+ subroutine hupdate_all(n, ds, dgrad, Hess)
+
+  use Path_module, only :  hesupd,Hinv
+  use Io_module, only : IoOut
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+  INTEGER(KINT), INTENT(IN) :: n
+  real(KREAL), INTENT(IN) :: ds(n), dgrad(n)
+  REAL(KREAL),INTENT(INOUT) :: Hess(n:n)
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! This subroutine is a drive for the update of the Hessian 
+! in the Quasi-Newton optimization step.
+! We propose mostly update of the inverse Hessian.
+!
+! input:
+!  - n: number of coordinates
+!  - ds: GeomOld-Geom (expressed in the optimization coord.)
+!  - dgrad: GradOld-Grad  (expressed in the optimization coord.)
+!
+!  input/output:
+!  - Hess: old Hessian in input, replaced by updated Hessian on output
+!
+!!!!!!!!!!!!!!!!
+!
+! For now, we propose :
+! - For update of inverser Hessian:
+!      - BFGS
+!
+! - For update of hessian:
+!      - Bofill (combination of Murtagh-Sargent and Powell-symmetric-Broyden
+!      - Murtagh-Sargent
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+
+  interface
+     function valid(string) result (isValid)
+       logical                  :: isValid
+       character(*), intent(in) :: string
+     end function valid
+
+  end interface
+
+  ! ======================================================================
+  LOGICAL :: Debug
+
+  ! ======================================================================
+
+  debug = valid ('DEBUG HESS') .OR. Valid('DEBUG HUPDATE')
+
+  if (debug) WRITE(*,*) "================================= Entering Hupdate_all ==============="
+
+  SELECT CASE (Hinv)
+     CASE (.TRUE.)
+        SELECT CASE (HesUpd)
+           CASE ("BFGS")
+              Call Hinvup_BFGS(n,ds,dgrad,hess)
+           CASE DEFAULT
+              WRITE(*,*) Trim(HesUpd) // " not known: using BFGS"
+              Call Hinvup_BFGS(n,ds,dgrad,hess)
+         END SELECT
+     CASE (.FALSE.)
+        SELECT CASE (HesUpd)
+           CASE ("BOFILL")
+              Call Hupdate_Bofill(n,ds,dgrad,hess)
+           CASE ("MS")
+              Call Hupdate_MS(n,ds,dgrad,hess)
+           CASE DEFAULT
+              WRITE(*,*) Trim(HesUpd) // " not known: using Bofill"
+              Call Hupdate_Bofill(n,ds,dgrad,hess)
+           END SELECT
+    END SELECT
+
+end subroutine hupdate_all
Index: src/cmshft.f90
===================================================================
--- src/cmshft.f90	(revision 0)
+++ src/cmshft.f90	(revision 1)
@@ -0,0 +1,71 @@
+subroutine cmshft(natom,rx,ry,rz,rmass,cmx,cmy,cmz,ishift)
+  !c
+  !c      shifts all x, y, and z coordinates passed in rx,ry,rz to keep
+  !c      the center of mass at the origin if ishift is not zero. otherwise
+  !c      cmx, cmy, and cmz return the center of mass coordinates and no
+  !c      shift is performed. coordinate and mass units arbitrary.
+  !c
+
+  use VarTypes
+  use Io_module
+
+  IMPLICIT NONE
+
+  
+! Number of atoms
+  INTEGER(KINT), INTENT(IN) :: NAtom
+! Coordinates and masses 
+  REAL(KREAL), DIMENSION(NAtom) :: rx,ry,rz,rmass
+! Center of mass coordinates
+  real(KREAL) :: cmx,cmy,cmz
+! Flag if user wants to shift center of mass to origin
+  INTEGER(KINT) :: IShift
+
+  REAL(KREAL), parameter :: zero=0.d0,one=1.d0
+  INTEGER(KINT) :: i,j
+  REAL(KREAL) :: TmassI, tmass
+
+  if(natom.le.0) then
+     if(IOOUT.gt.0) write(IOOUT,'(/2a/)')  &
+          '  *** error, illegal array dimension in cmshft,', &
+          ' return without action ***'
+     return
+  end if
+  !c
+  !c      calculate center of mass coordinates
+  !c
+  tmass=rmass(1)
+  do j=2,natom
+     tmass=tmass+rmass(j)
+  END DO
+  !c
+  !c     DO i=1,natom
+  !c       write(IOOUT,'(4F15.3)') rmass(i),rx(i),ry(i),rz(i)
+  !c     END DO
+
+  cmx=zero
+  cmy=zero
+  cmz=zero
+  do j=1,natom
+     cmx=rmass(j)*rx(j)+cmx
+     cmy=rmass(j)*ry(j)+cmy
+     cmz=rmass(j)*rz(j)+cmz
+  END DO
+
+  tmassi=one/tmass
+  cmx=cmx*tmassi
+  cmy=cmy*tmassi
+  cmz=cmz*tmassi
+  !c
+  !c      optional shift of all cartesian coordinates
+  !c
+  if(ishift.ne.0) then
+     do j=1,natom
+        rx(j)=rx(j)-cmx
+        ry(j)=ry(j)-cmy
+        rz(j)=rz(j)-cmz
+     END DO
+  end if
+
+  return
+end subroutine cmshft
Index: src/Calc_zmat_constr_frag.f90
===================================================================
--- src/Calc_zmat_constr_frag.f90	(revision 0)
+++ src/Calc_zmat_constr_frag.f90	(revision 1)
@@ -0,0 +1,2017 @@
+SUBROUTINE Calc_Zmat_const_frag(na,atome,ind_zmat,val_zmat,x,y,z, &
+     r_cov,fact,frozen)
+
+  !     
+  !     This second version enables the user to freeze some atoms
+  !     the frozen atoms indices are listed in the frozen array.
+  !     
+  !     The idea is surely too stupid to work all the time... but here it is
+  !     we first construct the zmat using only the frozen atoms, and then
+  !     we add the other atoms on top of the first ones...
+  !     
+  Use Path_module, only : max_Z, NMaxL, Nom,MaxFroz
+  Use Io_module
+
+  IMPLICIT NONE
+
+
+  CHARACTER(5) :: AtName
+  integer(KINT) :: na,atome(na),ind_zmat(Na,5)
+  INTEGER(KINT) :: idx_zmat(NA)
+  real(KREAL) ::  x(Na),y(Na),z(Na),fact
+  real(KREAL) ::  val_zmat(Na,3)
+  real(KREAL) :: r_cov(0:Max_Z)
+  !     Frozen contains the indices of frozen atoms
+  INTEGER(KINT) :: Frozen(*),NFroz
+  INTEGER(KINT), ALLOCATABLE :: FrozDist(:) ! na
+  INTEGER(KINT) :: NbFrag,IdxFrag
+  INTEGER(KINT), ALLOCATABLE :: Fragment(:),NbAtFrag(:) !na
+  INTEGER(KINT), ALLOCATABLE :: FragAt(:,:) !na,na
+  INTEGER(KINT), ALLOCATABLE :: FrozFrag(:,:) !na,3
+  !  INTEGER(KINT), ALLOCATABLE :: IdxFragAt(:) !na
+  INTEGER(KINT), ALLOCATABLE :: FrozBlock(:,:) !(na,0:na)
+  REAL(KREAL), ALLOCATABLE :: DistFroz(:) !na
+
+  INTEGER(KINT) :: IdxCaFaire, IAfaire
+  INTEGER(KINT), ALLOCATABLE ::  LIAISONS(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE ::  LiaisonsBis(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE ::  LiaisonsIni(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE :: CAFaire(:) ! (Na)
+
+
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d, d12, d13,d23,d
+  Logical PasFini,Debug
+  LOGICAL, ALLOCATABLE :: DejaFait(:), FCaf(:) !(na)
+  Logical, ALLOCATABLE ::  FrozAt(:)    !T if this atom is frozen
+  LOGICAL F1213, F1223,F1323
+
+
+  INTEGER(KINT) :: I,J,n0,n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
+  INTEGER(KINT) :: IMax, I3,I1,Ip, IFragFroz
+  INTEGER(KINT) :: I0, Izm, JAt,Izm0
+
+  REAL(KREAL) :: sDihe, Pi
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+     END FUNCTION SINANGLE
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+  END INTERFACE
+
+
+
+  Pi=dacos(-1.d0)
+  debug=valid("calc_zmat_constr").OR.valid("calc_zmat_contr_frag")
+
+  if (debug) WRITE(*,*) "=============================== Entering Calc_zmat_contr_frag ========================"
+  if (na.le.2) THEN
+     WRITE(*,*) "I do not work for less than 2 atoms :-p"
+     RETURN
+  END IF
+
+  ALLOCATE(FrozDist(Na),Fragment(na), NbAtFrag(na),FragAt(na,na))
+  !  ALLOCATE(FrozFrag(na,3), IdxFragAt(na), FrozBlock(na,0:na))
+  ALLOCATE(FrozFrag(na,3), FrozBlock(na,0:na))
+  ALLOCATE(DistFroz(na),Liaisons(na,0:NMaxL))
+  ALLOCATE(LiaisonsBis(na,0:NMaxL),LiaisonsIni(na,0:NMaxL))
+  ALLOCATE(CaFaire(na),DejaFait(Na),FCaf(na),FrozAt(na))
+
+  DO i=1,na
+     DO J=1,5
+        Ind_Zmat(i,J)=0
+     END DO
+  END DO
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!     Easy case : 3 or less atoms
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  if (Na.eq.3) THEN
+     d12=sqrt((x(1)-x(2))**2+(y(1)-y(2))**2+(z(1)-z(2))**2)
+     d13=sqrt((x(1)-x(3))**2+(y(1)-y(3))**2+(z(1)-z(3))**2)
+     d23=sqrt((x(3)-x(2))**2+(y(3)-y(2))**2+(z(3)-z(2))**2)
+     F1213=(d12<=d13)
+     F1323=(d13<=d23)
+     F1223=(d12<=d23)
+     if (debug) THEN
+        WRITE(*,*) "DEBUG Calc_Zmat 3 atoms"
+        WRITE(*,*) "d12,d13,d23:",d12,d13,d23
+        WRITE(*,*) "F1213,F1323,F1223:",F1213,F1323,F1223
+     END IF
+     if (F1213) THEN
+        if (F1323) THEN
+           ind_zmat(1,1)=3
+           ind_zmat(2,1)=1
+           ind_zmat(2,2)=3
+           ind_zmat(3,1)=2
+           ind_zmat(3,2)=1
+           ind_zmat(3,3)=3
+        ELSE
+           ind_zmat(1,1)=1
+           ind_zmat(2,1)=2
+           ind_zmat(2,2)=1
+           ind_zmat(3,1)=3
+           ind_zmat(3,2)=2
+           ind_zmat(3,3)=1
+        END IF
+     ELSE
+        IF (F1223) THEN
+           ind_zmat(1,1)=2
+           ind_zmat(2,1)=1
+           ind_zmat(2,2)=2
+           ind_zmat(3,1)=3
+           ind_zmat(3,2)=1
+           ind_zmat(3,3)=2
+        ELSE
+           ind_zmat(1,1)=2
+           ind_zmat(2,1)=3
+           ind_zmat(2,2)=2
+           ind_zmat(3,1)=1
+           ind_zmat(3,2)=3
+           ind_zmat(3,3)=2
+        END IF
+     END IF
+     IF (debug) THEN
+        DO i=1,na
+           WRITE(*,'(1X,5(1X,I5))') (ind_zmat(i,j),j=1,5)
+        END DO
+     END IF
+
+     !     We have ind_zmat, we fill val_zmat
+     val_zmat(1,1)=0.
+     val_zmat(1,2)=0.
+     val_zmat(1,3)=0.
+     n2=ind_zmat(2,1)
+     n1=ind_zmat(2,2)
+     d=sqrt((x(n1)-x(n2))**2+(y(n1)-y(n2))**2+(z(n1)-z(n2))**2)
+     val_zmat(2,1)=d
+     val_zmat(2,2)=0.
+     val_zmat(2,3)=0.
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     if (debug) write(*,*) n1,n2,norm1
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+     if (debug) write(*,*) n2,n3,norm2,val
+     val_zmat(3,2)=val
+     val_zmat(3,3)=0.
+
+     RETURN
+  END IF
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!  End of   Easy case : 3 or less atoms
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! General Case 
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! 1 - Frozen Atoms
+
+! Initialization
+  DejaFait=.False.
+  FrozAt=.False.
+  Liaisons=0
+  LiaisonsBis=0
+  ind_zmat=0
+  val_zmat=0.d0
+
+  NFroz=0
+  I=1
+  DO WHILE (Frozen(I).NE.0)
+     If (Frozen(I).LT.0) THEN
+        DO J=Frozen(I-1),abs(Frozen(I))
+           IF (.NOT.FrozAt(J)) THEN
+              NFroz=NFroz+1
+              FrozAt(J)=.TRUE.
+           END IF
+        END DO
+     ELSEIF (.NOT.FrozAt(Frozen(I))) THEN
+        FrozAt(Frozen(I))=.TRUE.
+        NFroz=NFroz+1
+     END IF
+  I=I+1
+  END DO
+
+  if (debug) WRITE(*,*) 'DGB zmtc NFroz=', NFroz
+  if (debug) WRITE(*,*) 'DGB zmtc FrozAt=',(FrozAt(I),I=1,na)
+
+  if (debug) THEN
+     WRITE(*,*) "Liaisons initialized"
+     WRITE(*,*) 'Covalent radii used'
+     DO iat=1,na
+        i=atome(iat)
+        WRITE(*,*) Nom(I),Iat,r_cov(i),r_cov(i)*fact
+     END DO
+  END IF
+
+1003 FORMAT(1X,I4,' - ',25(I5))
+  !     DO IL=1,na
+  !     WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+  !     WRITE(IOOUT,1003) Il,(LIAISONSBis(IL,JL),JL=0,NMaxL)
+  !     END DO
+!   First step : connectivity  are calculated
+
+  Call CalcCnct(na,atome,x,y,z,LIAISONS,r_cov,fact)
+
+  if (debug) THEN
+     WRITE(*,*) "Connections calculated"
+     DO IL=1,na
+        WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+  FCaf=.TRUE.
+  Call Decomp_frag(na,liaisons,FCaf,nbfrag,Fragment,NbAtFrag,FragAt)
+
+  IF (debug) THEN
+     WRITE(*,*) 'I found ',NbFrag, 'fragments'
+     WRITE(*,'(20(1X,I4))') (NbAtFrag(I),I=1,NbFrag)
+     DO I=1,NbFrag
+        WRITE(*,*) NbAtFrag(I)
+        WRITE(*,*) 'Fragment ', i
+        DO J=1,Na
+           IF (Fragment(J).EQ.I)   THEN                
+		        if (FrozAt(J))    THEN   
+                   WRITE(*,'(1X,I3,"f",1X,A5,3(1X,F10.6))') J,Nom(Atome(J)) &
+                        ,X(J),Y(J),Z(J)
+               ELSE
+                    WRITE(*,'(1X,I3,2X,A5,3(1X,F10.6))') J,Nom(Atome(J)) &
+                      ,X(J),Y(J),Z(J)
+                END IF
+		   END IF
+        END DO
+        WRITE(*,*) "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+     END DO
+  END IF
+
+
+! First, we decompose the connectivity into Frozen atoms and non frozen atoms
+  DO I=1,na
+     LiaisonsBis(I,0)=0
+     DO J=1,Liaisons(I,0)
+        IF (FrozAt(Liaisons(I,J))) THEN
+           LiaisonsBis(I,0)=LiaisonsBis(I,0)+1
+           LiaisonsBis(I,LiaisonsBis(I,0))=Liaisons(I,J)
+        END IF
+     END DO
+     IMax=LiaisonsBis(I,0)+1
+     LiaisonsBis(I,Imax)=0
+     DO J=1,Liaisons(I,0)
+        IF (.NOT.FrozAt(Liaisons(I,J))) THEN
+           LiaisonsBis(I,IMax)=LiaisonsBis(I,Imax)+1
+           LiaisonsBis(I,LiaisonsBis(I,Imax)+Imax)=Liaisons(I,J)
+        END IF
+     END DO
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "Liaisons and LiaisonsBis"
+     DO I=1,Na
+        WRITE(*,'(1X,I3," -",I3,":",15(1X,I3))') I, &
+             (Liaisons(I,J),J=0,NMaxL)
+        WRITE(*,'(1X,I3," +",I3,":",15(1X,I3))') I, &
+             (LiaisonsBis(I,J),J=0,NMaxL)
+     END DO
+  END IF
+
+! Now, for each frozen atom, we count the length of the frozen block
+! FrozBlock(I,0) contains the number of frozen atoms forming a frozen
+!                fragment containing atom I
+! FrozBlock(I,:) is the list of the frozen atoms of this fragment.
+  Do I=1,na
+     FrozBlock(I,0)=-1
+  END DO
+  DO I=1,na
+     IF (FrozAt(I).AND.(FrozBlock(I,0).EQ.-1)) THEN
+        if (debug) WRITE(*,*) 'Treating atom ',I
+        FrozBlock(I,0)=1
+        FrozBlock(I,1)=I
+        DO J=1,na
+           DejaFait(J)=.FALSE.
+        END DO
+        DejaFait(I)=.TRUE.
+        DO J=1,LiaisonsBis(I,0)
+           CaFaire(J)=LiaisonsBis(I,J)
+        END DO
+        IdxCaFaire=LiaisonsBis(I,0)+1
+        CaFaire(IdxCaFaire)=0
+        IAfaire=1
+        FCaf=DejaFait
+        DO WHILE (CaFaire(IAfaire).NE.0)
+           Iat=CaFaire(IAFAire)
+           if (debug) WRITE(*,*) 'IaFaire; Iat:', IaFaire, Iat, DejaFait(Iat)
+           IF (.NOT.DejaFait(Iat)) THEN
+              FrozBlock(I,0)=FrozBlock(I,0)+1
+              FrozBlock(I,FrozBlock(I,0))=Iat
+              DO J=1,LiaisonsBis(Iat,0)
+                 IF ((.NOT.DejaFait(LiaisonsBis(Iat,J))).AND.(.NOT.FCaf(LiaisonsBis(Iat,J)))) THEN
+                    CaFaire(IdxCaFaire)=LiaisonsBis(Iat,J)
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(LiaisonsBis(Iat,J))=.TRUE.
+                 END IF
+              END DO
+              !     WRITE(*,*) 'liaisonbis(Iat,0),FrozBlick(I,0)',&
+              !                      LiaisonsBis(Iat,0), FrozBlock(I,0)
+           END IF
+           DejaFait(Iat)=.TRUE.
+           IaFaire=IaFaire+1
+        END DO
+        if (debug) WRITE(*,*) 'I,FrozBlock(0),IaFaire',I,FrozBlock(I,0),IaFaire
+        if (debug) WRITE(*,*) 'FrozBlock:',FrozBlock(I,1:FrozBlock(I,0))
+        !        FrozBlock(I,1)=I
+        !        DO J=2,IaFaire
+        !           FrozBlock(I,J)=CaFaire(J-1)
+        !        END DO
+        !     We copy this block into all frozen atoms that belongs to it
+        DO J=2,Frozblock(I,0)
+           Iat=FrozBlock(I,J)
+           DO K=0,FrozBlock(I,0)
+              FrozBlock(Iat,K)=FrozBlock(I,K)
+           END DO
+        END DO
+     ELSE
+        IF (.NOT.FrozAt(I))      FrozBlock(I,0)=0
+     END IF
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "FrozBlock"
+     DO I=1,Na
+        If (FrozAt(I))  WRITE(*,'(1X,I3," -",I3,":",15(1X,I3))') I, &
+             (FrozBlock(I,J),J=0,FrozBlock(I,0))
+     END DO
+  END IF
+
+  DO I=1,NbFrag
+     FrozFrag(I,1)=0
+     FrozFrag(I,2)=0
+     DO J=1,NbAtFrag(I)
+        IF (FrozAt(FragAt(I,J))) THEN
+           FrozFrag(I,1)=FrozFrag(I,1)+1
+           IF (FrozBlock(FragAt(I,J),0).GE.FrozFrag(I,2))  &
+                FrozFrag(I,2)=FrozBlock(FragAt(I,J),0)
+           if (FrozFrag(I,3).LE.LiaisonsBis(FragAt(I,J),0))& 
+                FrozFrag(I,3)=LiaisonsBis(FragAt(I,J),0)
+        END IF
+     END DO
+     IF (debug) WRITE(*,*) 'Frag :',I,FrozFrag(I,1), &
+          ' frozen atoms,max linked:'  &
+          ,FrozFrag(I,2),' with at most',FrozFrag(I,3),' frozen'
+  END DO
+
+  !     We will now build the molecule fragment by fragment
+  !     First the frozen atoms, then the rest of the fragment
+  !     We choose the starting fragment with two criteria:
+  !     1- Number of linked frozen atoms:
+  !       * >=3 is good as it fully defines the coordinate space
+  !       * 2 is ok as we can either use a 3rd atom from the same fragment
+  !       or add a X atom somewhere but this complicates quite a lot the way
+  !       to treat the conversion from cartesian to zmat latter
+  !       * 1 is bad...
+  !     2- Max number of linked frozen atoms
+  !     this allows us to deal more easily with cases 1- when number of 
+  !     directly linked frozen atoms is less than 3
+
+  IFrag=0
+  I0=0
+  I1=0
+  DO I=1,NbFrag
+     SELECT CASE(FrozFrag(I,3)-I0)
+     CASE (1:)
+        IFrag=I
+        I0=FrozFrag(I,3)
+        I1=FrozFrag(I,2)
+     CASE (0)
+        if (FrozFrag(I,2).GT.I1) THEN
+           IFrag=I
+           I0=FrozFrag(I,3)
+           I1=FrozFrag(I,2)
+        END IF
+     END SELECT
+  END DO
+
+  if (debug) WRITE(*,'(1X,A,I5,A,I5,A,I5,A)') 'Starting with fragment:',IFrag,' with ',I0,' frozen linked and overall',I1,' linked'
+
+  !     We will build the first fragment in a special way, as it will
+  !     set the coordinates system
+  !     We look for the frozen atom that is linked to the maximum frozen atom,
+  !     and belongs to the longer fragment
+  I0=0
+  I1=0
+  DO I=1,NbAtFrag(IFrag)
+     IF (FrozAt(FragAt(IFrag,I))) THEN
+        SELECT CASE(LiaisonsBis(FragAt(IFrag,I),0)-I0)
+        CASE (1:) 
+           IAt=FragAt(IFrag,I)
+           I0=LiaisonsBis(IAt,0)
+           I1=FrozBlock(IAt,0)
+        CASE (0)
+           IF (FrozBlock(FragAt(IFrag,I),0).GT.I1) THEN
+              IAt=FragAt(IFrag,I)
+              I0=LiaisonsBis(Iat,0)
+              I1=FrozBlock(Iat,0)
+           END IF
+        END SELECT
+     END IF
+     if (debug) WRITE(*,*) 'DBG: I,FragAt(IFrag,I),IAt,I0,I1',I,FragAt(IFrag,I),IAt,I0,I1
+  END DO
+
+  if (debug) WRITE(*,*) 'Fragment 1, starting with atom:',IAt,I0,I1
+
+  DO I=1,na
+     DejaFait(I)=.FALSE.
+     FCaf(I)=.FALSE.
+  END DO
+
+  izm=0
+  SELECT CASE (I0)
+  CASE(3:)
+     if (debug) WRITE(*,*) 'DBG select case I0 3'
+     n0=Iat
+     !     We search for the fourth atom while making sure that the dihedral angle
+     !     is not 0 or Pi
+     ITmp=2
+     sDihe=0.
+     n2=IAt
+     n3=LiaisonsBis(Iat,1)
+     ! We search for the third atom while making sure that it is not aligned with first two !
+     DO While ((ITmp.LE.LiaisonsBis(Iat,0)).AND.(sDihe.LE.0.09d0))
+        n4=LiaisonsBis(Iat,Itmp)
+        CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+        CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+        val_d=angle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+        sDiHe=abs(sin(val_d*pi/180.d0))
+        if (debug) Write(*,*) 'Trying n2,n3,n4,sdihe,val_d',n2,n3,n4,sdihe,val_d
+        Itmp=Itmp+1
+     END DO
+     If (debug) WRITE(*,*) 'Itmp,LiaisonsBis',Itmp,LiaisonsBis(Iat,1:NMaxL)
+     LiaisonsBis(Iat,Itmp-1)=LiaisonsBis(iat,2)
+     LiaisonsBis(Iat,2)=n4
+     If (debug) WRITE(*,*) 'Itmp,LiaisonsBis',Itmp,LiaisonsBis(Iat,1:NMaxL)
+
+     if (sDihe.LE.0.09d0) THEN
+        WRITE(*,*) "Dans le caca car tous les atoms de ce block sont align�s!"
+     END IF
+
+     CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+          vx5,vy5,vz5,norm5)
+
+
+     Itmp=2
+     sDiHe=0.
+
+     DO While ((ITmp.LT.LiaisonsBis(Iat,0)).AND.(sDihe.LE.0.09d0))
+        ITmp=ITmp+1
+        n1=LiaisonsBis(Iat,Itmp)
+        if (debug) WRITe(*,*) 'trying n1,n2,n3,n4',n1,n2,n3,n4
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+        ! Is this atom aligned with n2-n3 ?
+        val_d=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+        sDiHe=abs(sin(val_d*pi/180.d0))
+        if (debug) Write(*,*) 'Angle n3-n2-n1',val_d
+        if (sDiHe.le.0.09d0) THEN
+           ! As atoms n2,n3 and n4 are not aligned, we interchange n3 and n4 so that n1,n2 and n3 are not aligned
+           if (debug) WRITE(*,*) "n3-n2-n1 aligned, we interchange n3 and n4"
+           n1=n3
+           n3=n4
+           n4=n1
+           n1=LiaisonsBis(Iat,ITmp)
+           CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)           
+           CALL vecteur(n2,n4,x,y,z,vx3,vy3,vz3,norm3)           
+           val_d=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+           if (debug) Write(*,*) 'NEW Angle n3-n2-n1',val_d
+        END IF
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        ! avant de tester l'angle diedre, il faut verifier que ce 4e atome n'est pas
+        ! aligne avec les 2 premiers. 
+        ! comme on a deja test� que les 3 premiers ne sont pas alignes,
+        ! s'il est align� avec les 2 premiers, on peut inverser le role de 2 et 3.
+        ! On pourrait tout simplier en faisant une bete recherche parmi tous les atomes geles
+        ! de ce bloc (au moins 4 ?) avec le critere 1) on les range par distance croissante
+        ! 2) on les scanne tant que l'angle valence n'est pas bon, puis tant que diehedre pas bon
+        ! on pourrait comme ca faire un tableau avec les atomes ranges d'abord pour le fragment s�lectionn�
+        ! puis les atomes des autres fragment par distance croissante.
+        ! les autres fragments ne seraient additonn�s que si l'on ne trouve pas notre bonheur dans le premier bloc
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+        CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+             vx4,vy4,vz4,norm4)
+        val_d=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+             vx2,vy2,vz2,norm2)
+        sDihe=abs(sin(val_d*pi/180.d0))
+        if (debug) WRITE(*,*) 'n2,n3,n4,n1, angle_d',n2,n3,n4,n1,val_d
+     END DO
+
+     DejaFait(n2)=.TRUE.
+     DejaFait(n3)=.TRUE.
+     DejaFait(n4)=.TRUE.
+
+     if (sDihe.LE.0.09d0) THEN
+        !     None of the frozen atoms linked to IAt are good to define the third
+        !     direction in space...
+        !     We will look at the other frozen atoms
+        !     we might improve the search so as to take the atom closest to IAt
+        if (debug) WRITE(*,*) "All atoms linked to ",Iat," are in a plane. Looking for other frozen atoms"
+        ITmp=0
+        DO I=1,NbAtFrag(IFrag)
+           JAt=FragAt(IFrag,I)
+           if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+              n1=JAt
+              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+              CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+                   vx4,vy4,vz4,norm4)
+              val_d=angle_d(vx4,vy4,vz4,norm4, &
+                   vx5,vy5,vz5,norm5, &
+                   vx2,vy2,vz2,norm2)
+              if (abs(sin(val_d)).GE.0.09D0) THEN
+                 ITmp=ITmp+1
+                 DistFroz(ITmp)=Norm1
+                 FrozDist(ITmp)=JAt
+              END IF
+           END IF
+        END DO
+        IF (ITmp.EQ.0) THEN
+           !     All dihedral angles between frozen atoms are less than 5�
+           !     (or more than 175�). We have to look at other fragments :-(
+           DO I=1,NFroz
+              Jat=Frozen(I)
+              if (.NOT.DejaFait(JAt)) THEN
+                 n1=JAt
+                 CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+                 CALL produit_vect(vx1,vy1,vz1,norm1, &
+                      vx2,vy2,vz2,norm2, &
+                      vx4,vy4,vz4,norm4)
+                 val_d=angle_d(vx4,vy4,vz4,norm4, &
+                      vx5,vy5,vz5,norm5, &
+                      vx2,vy2,vz2,norm2)
+                 if (abs(sin(val_d)).GE.0.09D0) THEN
+                    ITmp=ITmp+1
+                    DistFroz(ITmp)=Norm1
+                    FrozDist(ITmp)=JAt
+                 END IF
+              END IF
+           END DO
+           IF (ITmp.EQ.0) THEN
+              !     All frozen atoms are in a plane... too bad
+              WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+              WRITE(*,*) 'For now, I do not treat this case'
+              STOP
+           END IF
+        END IF
+        I1=0
+        d=1e9
+        DO I=1,ITmp
+           IF (DistFroz(I).LE.d) THEN
+              d=DistFroz(I)
+              I1=FrozDist(I)
+           END IF
+        END DO
+     ELSE                !(sDihe.LE.0.09d0)
+        I1=FrozBlock(IAt,ITmp)
+        if (debug) WRITE(*,*) 'I1,n1:',I1,n1
+     END IF                 !(sDihe.LE.0.09d0)
+     !     we now have the atom that is closer to the first one and that
+     !     forms a non 0/Pi dihedral angle
+
+     ind_zmat(1,1)=n2
+     ind_zmat(2,1)=n3
+     ind_zmat(2,2)=n2
+     ind_zmat(3,1)=n4
+     ind_zmat(3,2)=n2
+     ind_zmat(3,3)=n3
+     DejaFait(n2)=.TRUE.
+     DejaFait(n3)=.TRUE.
+     DejaFait(n4)=.TRUE.
+     CaFaire(1)=n3
+     CaFaire(2)=n4
+
+     ind_zmat(4,1)=I1
+     ind_zmat(4,2)=n2
+     ind_zmat(4,3)=n3
+     ind_zmat(4,4)=n4
+     DejaFait(I1)=.TRUE.
+     CaFaire(3)=I1
+     CaFaire(4)=0
+     IdxCaFaire=4
+
+     FCaf(n2)=.TRUE.
+     FCaf(n3)=.TRUE.
+     FCaf(I1)=.TRUE.
+     izm=4
+     DO I=3,LiaisonsBis(Iat,0)
+        IF (.NOT.DejaFait(LiaisonsBis(Iat,I))) THEN
+           izm=izm+1
+           !           ind_zmat(izm,1)=LiaisonsBis(Iat,I)
+           !           ind_zmat(izm,2)=n2
+           !           ind_zmat(izm,3)=n3
+           !           ind_zmat(izm,4)=n4
+           Call add2indzmat(na,izm,LiaisonsBis(Iat,I),n2,n3,n4,ind_zmat,x,y,z)
+           IF (.NOT.FCaf(LiaisonsBis(Iat,I))) THEN
+              CaFaire(IdxCaFaire)=LiaisonsBis(Iat,I)
+              IdxCaFaire=IdxCaFaire+1
+              CaFaire(IdxCaFaire)=0
+              FCaf(LiaisonsBis(Iat,I))=.TRUE.
+           END IF
+           DejaFait(LiaisonsBis(Iat,I))=.TRUE.
+        END IF
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Ind_zmat 0 - SELECT CASE I0 3: -- izm=",izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+        DO I=4,izm
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+                ind_zmat(I,3), ind_zmat(I,4)
+        END DO
+     END IF
+
+
+     !     First four atoms (at least) have been put we go on with next parts
+     !     of this fragment... later
+
+
+  CASE(2)
+     if (debug) WRITE(*,*) 'DBG select case I0 2'
+     if (debug) WRITE(*,*) 'ATTENTION For now, case with only 3 frozen atoms non treated'
+     ind_zmat(1,1)=IAt
+     ind_zmat(2,1)=liaisonsBis(IAt,1)
+     ind_zmat(2,2)=IAt
+     ind_zmat(3,1)=LiaisonsBis(IAt,2)
+     ind_zmat(3,2)=IAt
+     ind_zmat(3,3)=LiaisonsBis(IAt,1)
+     DejaFait(IAt)=.TRUE.
+     DejaFait(LiaisonsBis(Iat,1))=.TRUE.
+     DejaFait(LiaisonsBis(Iat,2))=.TRUE.
+     CaFaire(1)=LiaisonsBis(Iat,1)
+     CaFaire(2)=LiaisonsBis(Iat,2)
+     FCaf(LiaisonsBis(Iat,1))=.TRUE.
+     FCaf(LiaisonsBis(Iat,2))=.TRUE.
+
+     !     We search for a fourth atom, first in the FrozBlock atoms
+     ITmp=2
+     sDihe=0.
+     n2=IAt
+     n3=LiaisonsBis(Iat,1)
+     n4=LiaisonsBis(Iat,2)
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+     CALL produit_vect(vx3,vy3,vz3,norm3, &
+          vx2,vy2,vz2,norm2, &
+          vx5,vy5,vz5,norm5)
+
+     DO While ((ITmp.LE.FrozBlock(Iat,0)).AND.(sDihe.LE.0.09d0))
+        ITmp=ITmp+1
+        n1=FrozBlock(Iat,Itmp)
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+        CALL produit_vect(vx1,vy1,vz1,norm1, &
+             vx2,vy2,vz2,norm2, &
+             vx4,vy4,vz4,norm4)
+        val_d=angle_d(vx4,vy4,vz4,norm4,  &
+             vx5,vy5,vz5,norm5,           &
+             vx2,vy2,vz2,norm2)
+        sDihe=abs(sin(val_d))
+     END DO
+     IF (debug) WRITE(*,*) 'DBG 4th atom, ITmp, sDihe',ITmp, sDihe
+     if (sDihe.LE.0.09d0) THEN
+        !     None of the frozen atoms linked to IAt are good to define the third
+        !     direction in space...
+        !     We will look at the other frozen atoms
+        !     we might improve the search so as to take the atom closest to IAt
+        ITmp=0
+        DO I=1,NbAtFrag(IFrag)
+           JAt=FragAt(IFrag,I)
+           if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+              n1=JAt
+              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+              CALL produit_vect(vx1,vy1,vz1,norm1,  &
+                   vx2,vy2,vz2,norm2,               &
+                   vx4,vy4,vz4,norm4)
+              val_d=angle_d(vx4,vy4,vz4,norm4,    &
+                   vx5,vy5,vz5,norm5,              &
+                   vx2,vy2,vz2,norm2)
+              if (abs(sin(val_d)).GE.0.09D0) THEN
+                 ITmp=ITmp+1
+                 DistFroz(ITmp)=Norm1
+                 FrozDist(ITmp)=JAt
+              END IF
+           END IF
+        END DO
+        IF (ITmp.EQ.0) THEN
+           !     All dihedral angles between frozen atoms are less than 5�
+           !     (or more than 175�). We have to look at other fragments :-(
+           DO I=1,NFroz
+              Jat=Frozen(I)
+              if (.NOT.DejaFait(JAt)) THEN
+                 n1=JAt
+                 CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+                 CALL produit_vect(vx1,vy1,vz1,norm1,   &
+                      vx2,vy2,vz2,norm2,                 &
+                      vx4,vy4,vz4,norm4)
+                 val_d=angle_d(vx4,vy4,vz4,norm4,       &
+                      vx5,vy5,vz5,norm5,                 &
+                      vx2,vy2,vz2,norm2)
+                 if (abs(sin(val_d)).GE.0.09D0) THEN
+                    ITmp=ITmp+1
+                    DistFroz(ITmp)=Norm1
+                    FrozDist(ITmp)=JAt
+                 END IF
+              END IF
+           END DO
+           IF (ITmp.EQ.0) THEN
+              !     All frozen atoms are in a plane... too bad
+              WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+              WRITE(*,*) 'For now, I do not treat this case'
+              STOP
+           END IF
+        END IF
+        I1=0
+        d=1e9
+        DO I=1,ITmp
+           IF (DistFroz(I).LE.d) THEN
+              d=DistFroz(I)
+              I1=FrozDist(I)
+           END IF
+        END DO
+     ELSE                   !(sDihe.LE.0.09d0)
+        I1=FrozBlock(IAt,ITmp)
+     END IF                 !(sDihe.LE.0.09d0)
+     !     we now have the atom that is closer to the first one and that
+     !     forms a non 0/Pi dihedral angle
+     !     ind_zmat(4,1)=I1
+     !     ind_zmat(4,2)=IAt
+     !     ind_zmat(4,3)=LiaisonsBis(Iat,1)
+     !     ind_zmat(4,4)=LiaisonsBis(Iat,2)
+     n3=LiaisonsBis(Iat,1)
+     n4=LiaisonsBis(Iat,2)
+     Call add2indzmat(na,4,I1,Iat,n3,n4,ind_zmat,x,y,z)
+     LiaisonsBis(Iat,1)=n3
+     LiaisonsBis(Iat,2)=n4
+     DejaFait(I1)=.TRUE.
+     CaFaire(3)=I1
+     CaFaire(4)=0
+     IdxCaFaire=4
+     izm=4
+     FCaf(I1)=.TRUE.
+
+  CASE(1)
+     if (debug) WRITE(*,*) 'DBG select case I0 1'
+     ind_zmat(1,1)=IAt
+     ind_zmat(2,1)=liaisonsBis(IAt,1)
+     ind_zmat(2,2)=IAt
+     DejaFait(IAt)=.TRUE.
+     DejaFait(LiaisonsBis(Iat,1))=.TRUE.
+     IdxCaFaire=2
+     CaFaire(1)=LiaisonsBis(Iat,1)
+     CaFaire(2)=0
+     FCaf(LiaisonsBis(Iat,1))=.TRUE.
+
+     !     We search for a third and fourth atoms, first in the FrozBlock atoms
+     !     It should not be possible to have   (FrozBlock(Iat,0).GT.2) and
+     !     iat linked to only one atom !       
+
+     IF (FrozBlock(Iat,0).GT.2) THEN
+        WRITE(*,*) 'I found some inconsistancy: IAt linked to 1'
+        WRITE(*,*) 'Atom only, but belongs to a frozblock of at '
+        WRITE(*,*) 'least 3 atoms. IAt, FrozBlock'
+        WRITE(*,*) Iat,(FrozBlock(IAt,J),J=0,FrozBlock(Iat,0))
+        STOP
+     END IF
+
+     !     we calculate the distances between Iat and all other frozen
+     !     atoms of this fragment, and store only those for which 
+     !     valence angles are not too close to 0/Pi. (limit:5�)
+
+     ITmp=0
+     CALL vecteur(LiaisonsBis(Iat,1),IAt,x,y,z,vx2,vy2,vz2,norm2)
+
+     DO I=1,NbAtFrag(IFrag)
+        JAt=FragAt(IFrag,I)
+        if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+           CALL vecteur(JAt,IAt,x,y,z,vx1,vy1,vz1,norm1)
+           if (abs(cos(angle(vx1,vy1,vz1,norm1,  &
+                vx2,vy2,vz2,norm2))).LE.0.996d0) THEN
+              ITmp=ITmp+1
+              DistFroz(ITmp)=Norm1
+              FrozDist(ITmp)=JAt
+           END IF
+        END IF
+     END DO
+
+     IF (ITMP.EQ.0) THEN
+        !     We have no frozen atoms correct in this fragment, we use
+        !     atoms from other fragments
+        DO I=1,NFroz
+           Jat=Frozen(I)
+           if (.NOT.DejaFait(JAt)) THEN
+              CALL vecteur(JAt,IAt,x,y,z,vx1,vy1,vz1,norm1)
+              if (abs(cos(angle(vx1,vy1,vz1,norm1, &
+                   vx2,vy2,vz2,norm2))).LE.0.996d0) THEN
+                 ITmp=ITmp+1
+                 DistFroz(ITmp)=Norm1
+                 FrozDist(ITmp)=JAt
+              END IF
+           END IF
+        END DO
+        IF (ITMP.EQ.0) THEN
+           WRITE(*,*) 'It seems all frozen atoms are aligned'
+           WRITE(*,*) 'Case non treated for now :-( '
+           STOP
+        END IF
+     END IF
+
+     I1=0
+     d=1e9
+     DO I=1,ITmp
+        IF (DistFroz(I).LE.d) THEN
+           I1=FrozDist(I)
+           d=DistFroz(I)
+        END IF
+     END DO
+
+     !     we now have the atom that is closer to the first one and that
+     !     forms a non 0/Pi valence angle
+     ind_zmat(3,1)=I1
+     ind_zmat(3,2)=IAt
+     ind_zmat(3,3)=LiaisonsBis(Iat,1)
+     DejaFait(I1)=.TRUE.
+     CaFaire(2)=I1
+     FCaf(I1)=.TRUE.
+
+
+     !     we search for a fourth atom !
+     !     We search for a fourth atom, first in the FrozBlock atoms
+     ITmp=2
+     sDihe=0.
+     n2=IAt
+     n3=LiaisonsBis(Iat,1)
+     n4=I1
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+     CALL produit_vect(vx3,vy3,vz3,norm3,  &
+          vx2,vy2,vz2,norm2,    &
+          vx5,vy5,vz5,norm5)
+
+     !     We will look at the other frozen atoms
+     !     we might improve the search so as to take the atom closest to IAt
+     ITmp=0
+     DO I=1,NbAtFrag(IFrag)
+        JAt=FragAt(IFrag,I)
+        if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+           n1=JAt
+           CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+           CALL produit_vect(vx1,vy1,vz1,norm1, &
+                vx2,vy2,vz2,norm2, &
+                vx4,vy4,vz4,norm4)
+           val_d=angle_d(vx4,vy4,vz4,norm4,  &
+                vx5,vy5,vz5,norm5,   &
+                vx2,vy2,vz2,norm2)
+           if (abs(sin(val_d)).GE.0.09D0) THEN
+              ITmp=ITmp+1
+              DistFroz(ITmp)=Norm1
+              FrozDist(ITmp)=JAt
+           END IF
+        END IF
+     END DO
+     IF (ITmp.EQ.0) THEN
+        !     All dihedral angles between frozen atoms are less than 5�
+        !     (or more than 175�). We have to look at other fragments :-(
+        DO I=1,NFroz
+           Jat=Frozen(I)
+           if (.NOT.DejaFait(JAt)) THEN
+              n1=JAt
+              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+              CALL produit_vect(vx1,vy1,vz1,norm1,  &
+                   vx2,vy2,vz2,norm2, &
+                   vx4,vy4,vz4,norm4)
+              val_d=angle_d(vx4,vy4,vz4,norm4,   &
+                   vx5,vy5,vz5,norm5,           &
+                   vx2,vy2,vz2,norm2)
+              if (abs(sin(val_d)).GE.0.09D0) THEN
+                 ITmp=ITmp+1
+                 DistFroz(ITmp)=Norm1
+                 FrozDist(ITmp)=JAt
+              END IF
+           END IF
+        END DO
+        IF (ITmp.EQ.0) THEN
+           !     All frozen atoms are in a plane... too bad
+           WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+           WRITE(*,*) 'For now, I do not treat this case'
+           STOP
+        END IF
+     END IF                 ! ITmp.EQ.0 after scaning fragment
+     I1=0
+     d=1e9
+     DO I=1,ITmp
+        IF (DistFroz(I).LE.d) THEN
+           d=DistFroz(I)
+           I1=FrozDist(I)
+        END IF
+     END DO
+
+     !     we now have the atom that is closer to the first one and that
+     !     forms a non 0/Pi dihedral angle
+     !     ind_zmat(4,1)=I1
+     !     ind_zmat(4,2)=IAt
+     !     ind_zmat(4,3)=ind_zmat(2,1)
+     !     ind_zmat(4,4)=ind_zmat(3,1)
+     n3=ind_zmat(2,1)
+     n4=ind_zmat(3,1)
+     Call add2indzmat(na,4,I1,IAt,n3,n4,ind_zmat,x,y,z)
+     ind_zmat(2,1)=n3
+     ind_zmat(3,1)=n4
+     DejaFait(I1)=.TRUE.
+     CaFaire(3)=I1
+     CaFaire(4)=0
+     IdxCaFaire=4
+     izm=4
+     FCaf(I1)=.TRUE.
+
+  CASE(0)
+     WRITE(*,*) 'All frozen atoms are separated .. '
+     WRITE(*,*) 'this case should be treated separately !'
+     STOP
+  END SELECT
+
+  if (debug) THEN
+     WRITE(*,*) 'ind_zmat 1'
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+     DO I=4,izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+             ind_zmat(I,3), ind_zmat(I,4)
+     END DO
+  END IF
+
+  DO I=1,izm
+     Idx_zmat(ind_zmat(I,1))=i
+  END Do
+
+  !     at least first four (frozen) atoms of this fragment done...
+  !     we empty the 'cafaire' array before pursuing
+  IAFaire=1
+  DO WHILE (CaFaire(IaFaire).NE.0)
+     n1=CaFaire(IaFaire)
+     n2=ind_zmat(idx_zmat(N1),2)
+     if (idx_zmat(N1).EQ.2) THEN
+        !     We have a (small) problem: we have to add atoms linked to the 2nd
+        !     atom of the zmat. This is a pb because we do not know
+        !     which atom to use to define the dihedral angle
+        !     we take the third atom of the zmat
+        n3=ind_zmat(3,1)
+     ELSE
+        n3=ind_zmat(idx_zmat(n1),3)
+     END IF
+     IF (LiaisonsBis(n1,0).GE.1) THEN
+        IAt=LiaisonsBis(n1,1)
+        if (.NOT.DejaFait(Iat)) THEN
+           izm=izm+1
+           if (debug) WRITE(*,*) ">0< Adding atom ",Iat,"position izm=",izm
+           !           ind_zmat(izm,1)=iat
+           !           ind_zmat(izm,2)=n1
+           !           ind_zmat(izm,3)=n2
+           !           ind_zmat(izm,4)=n3
+           Call add2indzmat(na,izm,iat,n1,n2,n3,ind_zmat,x,y,z)
+           Idx_zmat(iat)=izm
+           n3=iat
+           IF (.NOT.FCaf(Iat)) THEN
+              CaFaire(IdxCaFaire)=iat
+              IdxCaFaire=IdxCaFaire+1
+              CaFaire(IdxCaFaire)=0
+              FCaf(Iat)=.TRUE.
+           END IF
+           DejaFait(iat)=.TRUE.
+        END IF
+     END IF
+     DO I=2,LiaisonsBis(n1,0)
+        IAt=LiaisonsBis(n1,I)
+! PFL 29.Aug.2008 ->
+! We dissociate the test on 'DejaFait' that indicates that this atom
+! has already been put in the Zmat
+! from the test on FCaf that indicates that this atom has been put in the
+! 'CAFaire' list that deals with identifying its connectivity.
+! Those two test might differ for a frozen atom linked to non frozen atoms.
+        IF (.NOT.DejaFait(Iat)) THEN
+           izm=izm+1
+           if (debug) WRITE(*,*) ">1< Adding atom ",Iat,"position izm=",izm
+           !           ind_zmat(izm,1)=iat
+           !           ind_zmat(izm,2)=n1
+           !           ind_zmat(izm,3)=n2
+           !           ind_zmat(izm,4)=n3
+           Call add2indzmat(na,izm,iat,n1,n2,n3,ind_zmat,x,y,z)
+           idx_zmat(iat)=izm
+           DejaFait(iat)=.TRUE.
+        END IF
+        IF (.NOT.FCaf(Iat)) THEN
+           CaFaire(IdxCaFaire)=iat
+           IdxCaFaire=IdxCaFaire+1
+           CaFaire(IdxCaFaire)=0
+           FCaf(Iat)=.TRUE.
+        END IF
+! <- PFL 29.Aug.2008
+     END DO
+     IaFaire=IaFaire+1
+  END Do                    ! DO WHILE CaFaire
+
+  if (debug) THEN
+     WRITE(*,*) 'ind_zmat 2, izm=',izm
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+     DO I=4,izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+             ind_zmat(I,3), ind_zmat(I,4)
+     END DO
+  END IF
+
+  !     We have finished putting atoms linked to the first one
+  !     we will add other frozen atoms of this fragment
+  DO I=1,NbAtFrag(IFrag)
+     Iat=FragAt(IFrag,I)
+     if (debug) WRITE(*,*) "DBG: I,Iat,Frozat,dejafait,frozbloc",I,Iat,FrozAt(Iat), DejaFait(Iat),FrozBlock(Iat,0)
+     IF (FrozAt(Iat).AND.(.NOT.DejaFait(Iat))) THEN
+        !     in order to have the zmat as connected as possible,
+        !     we look if this atom belongs to a frozblock
+        if (debug) WRITE(*,*) 'Treating atom I,Iat, FrozBlock ',I,Iat, FrozBlock(Iat,0)
+        IF (FrozBlock(Iat,0).EQ.1) THEN
+           !     it is a lonely atom :-)
+           d=1e9
+           DO J=1,izm
+              Call vecteur(iat,ind_zmat(j,1),x,y,z,vx1,vy1,vz1,norm1)
+              if (norm1.le.d) THEN
+                 Jat=j
+                 d=norm1
+              END IF
+           END DO
+           n2=ind_zmat(jat,1)
+           SELECT CASE(jat)
+           CASE (1)
+              n3=ind_zmat(2,1)
+              n4=ind_zmat(3,1)
+           CASE (2)
+              n3=ind_zmat(1,1)
+              n4=ind_zmat(3,1)
+           CASE DEFAULT
+              n3=ind_zmat(jAt,2)
+              n4=ind_zmat(jat,3)
+           END SELECT
+           izm=izm+1
+           !           ind_zmat(izm,1)=iat
+           !           ind_zmat(izm,2)=n2
+           !           ind_zmat(izm,3)=n3
+           !           ind_zmat(izm,4)=n4
+           Call add2indzmat(na,izm,iat,n2,n3,n4,ind_zmat,x,y,z)
+           DejaFait(iat)=.TRUE.
+           idx_zmat(iat)=iat
+        ELSE        !(FrozBlock(Iat,0).EQ.1)
+           !     we have a group of atoms
+           !     We search for the atom of the group with the most links
+           ITmp=-1
+           DO J=1,FrozBlock(Iat,0)
+              Jat=FrozBlock(Iat,J)
+              IF ((.NOT.DejaFait(Jat)).AND.  &
+                   (LiaisonsBis(Jat,0).GT.ITMP)) THEN
+                 JL=Jat
+                 ITmp=LiaisonsBis(Jat,0)
+              END IF
+           END DO
+           if (debug) WRITE(*,*) 'JL,ITmp:',JL,ITmp
+           Iat=JL
+           d=1e9
+           DO J=1,izm
+              Call vecteur(iat,ind_zmat(j,1),x,y,z, vx1,vy1,vz1,norm1)
+              if (norm1.le.d) THEN
+                 Jat=j
+                 d=norm1
+              END IF
+           END DO
+           if (debug) WRITE(*,*) 'Jat,d:',Jat,d
+           n2=ind_zmat(jat,1)
+           SELECT CASE(jat)
+           CASE (1)
+              n3=ind_zmat(2,1)
+              n4=ind_zmat(3,1)
+           CASE (2)
+              n3=ind_zmat(1,1)
+              n4=ind_zmat(3,1)
+           CASE DEFAULT
+              n3=ind_zmat(jAt,2)
+              n4=ind_zmat(jat,3)
+           END SELECT
+           izm=izm+1
+           !           ind_zmat(izm,1)=iat
+           !           ind_zmat(izm,2)=n2
+           !           ind_zmat(izm,3)=n3
+           !           ind_zmat(izm,4)=n4
+           Call add2indzmat(na,izm,iat,n2,n3,n4,ind_zmat,x,y,z)
+           idx_zmat(iat)=izm
+           DejaFait(iat)=.TRUE.
+           IdxCaFaire=2
+           CaFaire(1)=iat
+           CaFaire(2)=0
+           FCaf(Iat)=.TRUE.
+
+           if (debug) WRITE(*,*) izm,iat,n2,n3,n4
+
+           IaFaire=1
+           DO WHILE (CaFaire(IaFaire).NE.0)
+              n1=CaFaire(IaFaire)
+              n2=ind_zmat(idx_zmat(N1),2)
+              if (debug) WRITE(*,*) 'DBG Cafaire, Iafaire,n1,n2',Iafaire,n1,n2
+              if (idx_zmat(N1).EQ.2) THEN
+                 !     We have a (small) problem: we have to add atoms linked to the 2nd
+                 !     atom of the zmat. This is a pb because we do not know
+                 !     which atom to use to define the dihedral angle
+                 !     we take the third atom of the zmat
+                 n3=ind_zmat(3,1)
+              ELSE
+                 n3=ind_zmat(idx_zmat(n1),3)
+              END IF
+              if (debug) WRITe(*,*) 'DBG :n3,liaisonBis',n3,LiaisonsBis(n1,0)
+              DO I3=1,LiaisonsBis(n1,0)
+! PFL 29.Aug.2008 ->
+! We dissociate the test on 'DejaFait' that indicates that this atom
+! has already been put in the Zmat
+! from the test on FCaf that indicates that this atom has been put in the
+! 'CAFaire' list that deals with identifying its connectivity.
+! Those two test might differ for a frozen atom linked to non frozen atoms.
+                 IAt=LiaisonsBis(n1,I3)
+                 if (.NOT.DejaFait(Iat)) THEN
+                    izm=izm+1
+                    !                 ind_zmat(izm,1)=iat
+                    !                 ind_zmat(izm,2)=n1
+                    !                 ind_zmat(izm,3)=n2
+                    !                 ind_zmat(izm,4)=n3
+                    Call add2indzmat(na,izm,iat,n1,n2,n3,ind_zmat,x,y,z)
+                    idx_zmat(iat)=izm
+                    if (I3.EQ.1) n3=ind_zmat(izm,1)
+                    DejaFait(Iat)=.TRUE.
+                 END IF
+                 If (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                 END IF
+! <- PFL 29.Aug.2008
+              END DO
+              IaFaire=IaFaire+1
+           END Do           ! DO WHILE CaFaire
+        END IF
+     END IF
+     if (debug) THEN
+        WRITE(*,*) 'ind_zmat 3'
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+        DO Ip=4,izm
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1), ind_zmat(Ip,2),  &
+                ind_zmat(Ip,3), ind_zmat(Ip,4)
+        END DO
+     END IF
+
+  END DO
+
+  FrozFrag(IFrag,1)=-1
+  FrozFrag(IFrag,2)=-1
+  FrozFrag(IFrag,3)=-1
+
+  !     we start again with the rest of the molecule...
+  ! v 1.01 We add the fragment in the order corresponding to FrozFrag
+  KMax=0
+  DO I=1,NbFrag
+     IF (FrozFrag(I,1).NE.0) KMax=KMax+1
+  END DO
+
+  IF (DEBUG) WRITE(*,*) "Adding the",Kmax,"fragments with frozen atoms"
+  DO K=1, KMax-1
+     IFrag=0
+     I0=0
+     I1=0
+     DO I=1,NbFrag
+        SELECT CASE(FrozFrag(I,3)-I0)
+        CASE (1:)
+           IFrag=I
+           I0=FrozFrag(I,3)
+           I1=FrozFrag(I,2)
+        CASE (0)
+           if (FrozFrag(I,2).GT.I1) THEN
+              IFrag=I
+              I0=FrozFrag(I,3)
+              I1=FrozFrag(I,2)
+           END IF
+        END SELECT
+     END DO
+
+     FrozFrag(IFrag,1)=-1
+     FrozFrag(IFrag,2)=-1
+     FrozFrag(IFrag,3)=-1
+
+     if (debug) WRITE(*,*) "Adding Fragment ",IFrag,K
+
+     DO I=1,NbAtFrag(IFrag)
+        Iat=FragAt(IFrag,I)
+        IF (FrozAt(Iat).AND.(.NOT.DejaFait(Iat))) THEN
+           !     in order to have the zmat as connected as possible,
+           !     we look if this atom belongs to a frozblock
+           IF (FrozBlock(Iat,0).EQ.1) THEN
+              !     it is a lonely atom :-)
+              if (debug) write(*,*) "DBG 4: Lonely atom",Iat
+              d=1e9
+              DO J=1,izm
+                 Call vecteur(iat,ind_zmat(j,1),x,y,z,vx1,vy1,vz1,norm1)
+                 if (norm1.le.d) THEN
+                    Jat=j
+                    d=norm1
+                 END IF
+              END DO
+              n2=ind_zmat(jat,1)
+              SELECT CASE(jat)
+              CASE (1)
+                 n3=ind_zmat(2,1)
+                 n4=ind_zmat(3,1)
+              CASE (2)
+                 n3=ind_zmat(1,1)
+                 n4=ind_zmat(3,1)
+              CASE DEFAULT
+                 n3=ind_zmat(jAt,2)
+                 n4=ind_zmat(jat,3)
+              END SELECT
+              izm=izm+1
+              !              ind_zmat(izm,1)=iat
+              !              ind_zmat(izm,2)=n2
+              !              ind_zmat(izm,3)=n3
+              !              ind_zmat(izm,4)=n4
+              Call add2indzmat(na,izm,iat,n2,n3,n4,ind_zmat,x,y,z)
+              idx_zmat(iat)=izm
+              DejaFait(iat)=.TRUE.
+           ELSE
+              !     we have a group of atoms
+              !     We search for the atom of the group with the most links
+              if (debug) write(*,*) "DBG 4b: ",Iat," belong to frozblock",FrozBlock(Iat,0)
+              ITmp=-1
+              DO J=1,FrozBlock(Iat,0)
+                 Jat=FrozBlock(Iat,J)
+                 IF ((.NOT.DejaFait(Jat)).AND.         &
+                      (LiaisonsBis(Jat,0).GT.ITMP)) THEN
+                    JL=Jat
+                    ITmp=LiaisonsBis(Jat,0)
+                 END IF
+              END DO
+              Iat=JL
+              d=1e9
+              DO J=1,izm
+                 Call vecteur(iat,ind_zmat(j,1),x,y,z,vx1,vy1,vz1,norm1)
+                 if (norm1.le.d) THEN
+                    Jat=j
+                    d=norm1
+                 END IF
+              END DO
+              n2=ind_zmat(jat,1)
+              SELECT CASE(jat)
+              CASE (1)
+                 n3=ind_zmat(2,1)
+                 n4=ind_zmat(3,1)
+              CASE (2)
+                 n3=ind_zmat(1,1)
+                 n4=ind_zmat(3,1)
+              CASE DEFAULT
+                 n3=ind_zmat(jAt,2)
+                 n4=ind_zmat(jat,3)
+              END SELECT
+              izm=izm+1
+              !              ind_zmat(izm,1)=iat
+              !              ind_zmat(izm,2)=n2
+              !              ind_zmat(izm,3)=n3
+              !              ind_zmat(izm,4)=n4
+              Call add2indzmat(na,izm,Iat,n2,n3,n4,ind_zmat,x,y,z)
+              idx_zmat(iat)=izm
+              DejaFait(iat)=.TRUE.
+              IdxCaFaire=2
+              CaFaire(1)=iat
+              CaFaire(2)=0
+              FCaf(Iat)=.TRUE.
+              IaFaire=1
+              DO WHILE (CaFaire(IaFaire).NE.0)
+                 n1=CaFaire(IaFaire)
+                 n2=ind_zmat(idx_zmat(N1),2)
+                 if (idx_zmat(N1).EQ.2) THEN
+                    !     We have a (small) problem: we have to add atoms linked to the 2nd
+                    !     atom of the zmat. This is a pb because we do not know
+                    !     which atom to use to define the dihedral angle
+                    !     we take the third atom of the zmat
+                    n3=ind_zmat(3,1)
+                 ELSE
+                    n3=ind_zmat(idx_zmat(n1),3)
+                 END IF
+                 DO I3=1,LiaisonsBis(n1,0)
+                    IAt=LiaisonsBis(n1,I3)
+! PFL 29.Aug.2008 ->
+! We dissociate the test on 'DejaFait' that indicates that this atom
+! has already been put in the Zmat
+! from the test on FCaf that indicates that this atom has been put in the
+! 'CAFaire' list that deals with identifying its connectivity.
+! Those two test might differ for a frozen atom linked to non frozen atoms.
+                    IF (.NOT.DejaFait(Iat)) THEN
+                       izm=izm+1
+                       Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                       idx_zmat(iat)=izm
+                       n3=iat
+                       DejaFait(Iat)=.TRUE.
+                    END IF
+                    IF (.NOT.FCaf(Iat)) THEN
+                       CaFaire(IdxCaFaire)=iat
+                       IdxCaFaire=IdxCaFaire+1
+                       CaFaire(IdxCaFaire)=0
+                       FCaf(Iat)=.TRUE.
+                    END IF
+! <- PFL 29.Aug.2008
+                 END DO
+                 IaFaire=IaFaire+1
+              END Do              ! DO WHILE CaFaire
+           END IF
+        END IF
+
+        if (debug) THEN
+           WRITE(*,*) 'ind_zmat 4'
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+           DO Ip=4,izm
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1), ind_zmat(Ip,2), &
+                   ind_zmat(Ip,3), ind_zmat(Ip,4)
+           END DO
+        END IF
+
+     END DO ! loop on atoms of fragment IFrag
+  END DO                    ! Loop on all fragments
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!        General case
+!
+! 2 - we have all frozen atoms done... now comes the non frozen atoms
+! and we should fragment the fragments !
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+! First, we get rid of bonds between frozen atoms
+! the trick is to do this on liaisons while keeping LiaisonsBis ok.
+
+  if (debug) THEN
+     WRITE(*,*) 'Frozen',NFroz
+     WRITE(*,'(20(1X,I3))') (Frozen(I),I=1,NFroz)
+  END IF
+
+  DO I=1,na
+     DO J=0,NMAxL
+        LiaisonsIni(I,J)=LiaisonsBis(I,J)
+     END DO
+! PFL 29.Aug.2008 -> 
+! We re-initialize FCaf in order to add frozen atoms that are connected
+! to non frozen atoms
+     FCaf(I)=.FALSE.
+! <- 29.Aug.2008
+  END DO
+
+  DO I=1,Na
+     IF (FrozAt(I)) THEN
+        Iat=I
+        if (debug) WRITE(*,'(20(1X,I3))') I,Iat,  &
+             (LiaisonsIni(Iat,Itmp),ITmp=0,LiaisonsIni(Iat,0))
+        DO J=1,LiaisonsIni(Iat,0)
+           Jat=LiaisonsIni(Iat,J)
+           Call Annul(Liaisons,Iat,Jat)
+           Call Annul(Liaisons,Jat,Iat)
+           Call Annul(LiaisonsIni,Jat,Iat)
+           Liaisons(Iat,0)=Liaisons(Iat,0)-1
+           Liaisons(Jat,0)=Liaisons(Jat,0)-1
+           LiaisonsIni(Jat,0)=LiaisonsIni(Jat,0)-1
+        END DO
+     END IF
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "Connections calculees"
+     DO IL=1,na
+        WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+
+
+  ! We re-decompose the system into fragments, but we omit on purpuse
+  ! fragments consisting only of frozen atoms
+  ! Now, frozblock will contain the frozen atom indices in a given fragment
+
+  DO I=1,na
+     Fragment(I)=0 
+     NbAtFrag(I)=0
+     FrozBlock(I,0)=0
+  END DO
+  IdxFrag=0
+  NbFrag=0
+
+  DO I=1,na
+     IdxCAfaire=1
+     CaFaire(IdxCaFaire)=0
+
+     if (debug) WRITE(*,*) 'Treating atom I, fragment(I)',I,Fragment(I)
+     IF (.NOT.FrozAt(I).OR.(Liaisons(I,0).NE.0)) THEN 
+        IF (Fragment(I).EQ.0) THEN
+           IdxFrag=IdxFrag+1
+           NbFrag=NbFrag+1
+           IFrag=IdxFrag
+           Fragment(I)=IFrag
+           NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+           FragAt(IFrag,NbAtFrag(IFrag))=I
+        ELSE  ! fragment(I).EQ.0
+           IFrag=Fragment(I)
+        END IF     ! fragment(I).EQ.0
+        DO J=1,Liaisons(I,0)
+           Iat=Liaisons(I,J)
+           IF ((Fragment(Iat).NE.0).AND.(Fragment(Iat).NE.IFrag)) THEN
+              WRITE(*,*) 'Error : Atoms ',I,' and ',Iat
+              WRITE(*,*) 'are linked, but belongs to fragments ',IFrag,' and ',Fragment(Iat)
+              STOP
+           END IF
+           IF (Fragment(Iat).EQ.0) THEN
+              IF (.NOT.FCaf(IAt)) THEN
+                 CaFaire(IdxCaFaire)=Iat
+                 IdxCAfaire=IdxCAFaire+1
+                 FCaf(IAt)=.TRUE.
+              END IF
+              Fragment(Iat)=IFrag
+              NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+              FragAt(IFrag,NbAtFrag(IFrag))=Iat
+           END IF
+        END DO
+        CaFaire(IdxCaFaire)=0
+
+        If (debug) WRITE(*,'(1X,A,1000I4)') 'Cafaire:',CaFaire(1:IdxCaFaire)
+        If (debug) WRITE(*,*) 'IFrag=',IFrag
+
+        IAfaire=1
+        DO WHILE (CaFaire(IAfaire).NE.0)
+           Iat=CaFaire(IaFaire)
+           IF (.NOT.FrozAt(Iat).OR.(Liaisons(Iat,0).NE.0)) THEN 
+              if (debug) WRITE(*,*) 'Cafaire treating ',Iat
+              IF (Fragment(Iat).EQ.0) THEN
+                 WRITE(*,*) 'Error: Atom ',Iat,' does not belong to any fragment !'
+                 STOP
+              END IF
+
+              DO J=1,Liaisons(Iat,0)
+                 Jat=Liaisons(Iat,J)
+                 IF ((Fragment(Jat).NE.0).AND.(Fragment(Jat).NE.IFrag)) THEN
+                    WRITE(*,*) 'Error: Atoms ',Iat,' and ',Liaisons(Iat,J)
+                    WRITE(*,*) 'are linked, but belongs to fragments ',IFrag,' and ',Fragment(Liaisons(Iat,J))
+                    STOP
+                 END IF
+                 IF (Fragment(Jat).EQ.0) THEN
+                    IF (.NOT.FCaf(Liaisons(Iat,J))) THEN
+                       CaFaire(IdxCaFaire)=Liaisons(Iat,J)
+                       IdxCAfaire=IdxCAFaire+1
+                       FCaf(Liaisons(Iat,J))=.TRUE.
+                    END IF
+                    Fragment(Jat)=IFrag
+                    NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+                    FragAt(IFrag,NbAtFrag(IFrag))=Jat
+                 END IF
+              END DO
+              CaFaire(IdxCaFaire)=0
+              If (debug) WRITE(*,*) 'IAfaire, IdxCaFaire,Cafaire :',IAfaire,IdxCafaire,' == ',CaFaire(IaFaire+1:IdxCaFaire)
+              IAFaire=IAFaire+1
+           END IF
+        END DO
+     END IF
+  END DO
+
+  ! We compute FrozBlock now
+  DO IFrag=1,NbFrag
+     DO I=1,NbAtFrag(IFrag)
+        Iat=FragAt(IFrag,I)
+        IF (FrozAt(Iat)) THEN
+           FrozBlock(IFrag,0)=FrozBlock(IFrag,0)+1
+           FrozBlock(IFrag,FrozBlock(IFrag,0))=IAt
+        END IF
+     END DO
+  END DO
+
+
+  if (debug) THEN
+     WRITE(*,*) 'I found ',NbFrag, 'fragments with respectively '
+     WRITE(*,*) (NbAtFrag(I),I=1,NbFrag), 'atoms'
+     WRITE(*,*) "Fragments atoms are now listed as F in the following"
+     DO I=1,NbFrag
+        WRITE(*,*) Na
+        WRITE(*,*) 'Fragment ', i
+        DO J=1,Na
+           AtName=Nom(Atome(J))
+           IF (Fragment(J).EQ.I) AtName='F'
+           WRITE(*,'(1X,A5,3(1X,F10.6))') AtName,X(J),Y(J),Z(J)
+        END DO
+        !     WRITE(*,*) "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+     END DO
+
+     DO I=1,NbFrag
+        WRITE(*,*) 'Fragment ', i
+        WRITE(*,'(A,20(1X,I3))') "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+        WRITE(*,'(A,20(1X,I3))') "FrozBlock:",(FrozBlock(I,j),j=0,FrozBlock(I,0))
+     END DO
+  END IF
+
+
+  NFroz=0
+  DO IFrag=1,NbFrag
+     If (FrozBlock(IFrag,0).NE.0) NFroz=NFroz+1
+  END DO
+
+  IF (DEBUG) WRITE(*,'(1X,A,I4,A,I4,A)') "Found ",NFroz," fragmenst with frozen atoms, out of",NbFrag," fragments"
+
+  ! We will now add the fragments containing non frozen atoms.
+  ! I am not sure that there is a best strategy to add them...
+  ! so we add them in the order they were created :-(
+  ! First only block with frozen atoms are added
+  izm0=-1
+  IFrag=1
+  FCaf=.FALSE.
+
+  DO IFragFroz=1,NFroz
+     DO WHILE (FrozBlock(IFrag,0).EQ.0)
+        IFrag=IFrag+1
+     END DO
+     ! each atom has at least one frozen atom that will serve as the seed
+     ! of this fragment.
+     if (debug) WRITE(*,*) 'Adding fragment :', ifrag,'with',FrozBlock(IFrag,0),' frozen atoms'
+     IF (FrozBlock(IFrag,0).EQ.1) THEN
+        ! There is only one frozen atom, easy case ...
+        Iat=FrozBlock(IFrag,1)
+        if (debug) WRITE(*,*) 'Only frozen atom of frag',iat
+        DejaFait(iat)=.TRUE.
+        IdxCaFaire=2
+        CaFaire(1)=iat
+        CaFaire(2)=0
+        FCaf(Iat)=.TRUE.
+        IaFaire=1
+        DO WHILE (CaFaire(IaFaire).NE.0)
+           n1=CaFaire(IaFaire)
+           SELECT CASE(idx_zmat(n1))
+           CASE (1)
+              n2=ind_zmat(2,1)
+              n3=ind_zmat(3,1)
+           CASE (2)
+              n2=ind_zmat(1,1)
+              n3=ind_zmat(3,1)
+           CASE (3:)
+              n2=ind_zmat(idx_zmat(n1),2)
+              n3=ind_zmat(idx_zmat(n1),3)
+           END SELECT
+
+           DO I3=1,Liaisons(n1,0)
+              IAt=Liaisons(n1,I3)
+              ! PFL 2007.Apr.16 ->
+              ! We add ALL atoms linked to n1 to CaFaire
+              ! But we delete their link to n1
+              IF (.NOT.FCaf(Iat)) THEN
+                 CaFaire(IdxCaFaire)=Iat
+                 IdxCaFaire=IdxCaFaire+1
+                 CaFaire(IdxCaFaire)=0
+              END IF
+              Call Annul(Liaisons,Iat,n1)
+              Liaisons(iat,0)=Liaisons(Iat,0)-1
+              ! <- PFL 2007.Apr.16
+              IF (.NOT.DejaFait(Iat)) THEN
+                 ! we add it to the Zmat
+                 izm=izm+1
+                 !              ind_zmat(izm,1)=iat
+                 !              ind_zmat(izm,2)=n1
+                 !              ind_zmat(izm,3)=n2
+                 !              ind_zmat(izm,4)=n3
+                 Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                 idx_zmat(iat)=izm
+                 !                  Call Annul(Liaisons,n1,iat)
+                 n3=iat
+                 DejaFait(Iat)=.TRUE.
+              END IF
+           END DO
+              IaFaire=IaFaire+1
+
+              if (debug) THEN
+                 WRITE(*,*) 'ind_zmat 5'
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+                 DO Ip=4,izm
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1),  &
+                         ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+                 END DO
+              END IF
+              
+           END Do              ! DO WHILE CaFaire
+
+
+        ELSE     ! FrozBlock(I,0)==1
+           if (debug) WRITE(*,*) 'IFrag=',IFrag,'Frozblock(I,0)/=1',Frozblock(IFrag,0)
+           ! We have many frozen atoms for one fragment. We will have to choose
+           ! the first one, and then to decide when to swich...
+           Iat=0
+           I0=-1
+           DO I=1,FrozBlock(IFrag,0)
+              JAt=FrozBlock(IFrag,I)
+              if (debug) WRITE(*,*) Jat, &
+                   (LiaisonsBis(Jat,Itmp),Itmp=0,LiaisonsBis(Jat,0))
+              IF (LiaisonsBis(Jat,0).GT.I0) THEN
+                 I0=LiaisonsBis(Jat,0)
+                 Iat=Jat
+              END IF
+           END DO
+           ! Iat is the starting frozen atom
+           IF (debug) WRITE(*,*) 'Choosing atom ',iat,'as a starting atom for frag',ifrag
+           DejaFait(iat)=.TRUE.
+           IdxCaFaire=2
+           CaFaire(1)=iat
+           CaFaire(2)=0
+           IaFaire=1
+           FCaf(Iat)=.TRUE.
+           DO WHILE (CaFaire(IaFaire).NE.0)
+              n1=CaFaire(IaFaire)
+              if (debug) WRITE(*,*) 'Iafaire,n1,dejafait,idx_zmat', &
+                   IaFaire,n1,    DejaFait(n1),idx_zmat(n1)
+              if (debug) WRITE(*,*) 'Cafaire', &
+                   (CaFaire(J),J=Iafaire,IdxCAfaire)
+              SELECT CASE(idx_zmat(n1))
+              CASE (1)
+                 n2=ind_zmat(2,1)
+                 n3=ind_zmat(3,1)
+              CASE (2)
+                 n2=ind_zmat(1,1)
+                 n3=ind_zmat(3,1)
+              CASE (3:)
+                 n2=ind_zmat(idx_zmat(n1),2)
+                 n3=ind_zmat(idx_zmat(n1),3)
+              END SELECT
+
+              if (debug) WRITE(*,*) "DBG n1,Liaisons(n1,0)",n1,Liaisons(n1,0)
+              DO I3=1,Liaisons(n1,0)
+                 IAt=Liaisons(n1,I3)                 
+                 if (debug) WRITE(*,*) "DBG I3,Iat",I3,Iat
+                 ! PFL 2007.Apr.16 ->
+                 ! We add ALL atoms linked to n1 to CaFaire
+                 ! But we delete their link to n1
+!! PFL 2007.Aug.28 ->
+! re-add the test on FCaf in order not to put the same atom more than once in 
+! CaFaire array.
+                 IF (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=Iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                    if (debug) WRITE(*,*) 'Adding ',iat,' to CaFaire. I3=',I3,'IdxCafaire=',IdxCafaire
+                    if (debug) WRITE(*,*) 'Cafaire',(CaFaire(J),J=Iafaire,IdxCAfaire)
+
+                 END IF
+!! <-- PFL 2007.Aug.28
+
+                 Call Annul(Liaisons,Iat,n1)
+                 Liaisons(iat,0)=Liaisons(Iat,0)-1
+                 ! <- PFL 2007.Apr.16
+                 IF (.NOT.DejaFait(Iat)) THEN
+                    izm=izm+1
+                    !                 ind_zmat(izm,1)=iat
+                    !                 ind_zmat(izm,2)=n1
+                    !                 ind_zmat(izm,3)=n2
+                    !                 ind_zmat(izm,4)=n3
+                    Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                    idx_zmat(iat)=izm
+                    !                  Call Annul(Liaisons,n1,iat)
+
+                    n3=iat
+                    DejaFait(Iat)=.TRUE.
+                 END IF
+              END DO
+
+              if (debug) WRITE(*,*) 'I3,n1,Liaisons(n1,:)', &
+                   I3,n1,(Liaisons(n1,J),J=0,Liaisons(n1,0))
+
+
+              if (debug.AND.(izm.GT.izm0)) THEN
+                 WRITE(*,*) 'ind_zmat 6, izm=',izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2),  &
+                      ind_zmat(3,3)
+                 DO Ip=4,izm
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1), &
+                         ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+                 END DO
+                 izm0=izm
+              END IF
+
+              IaFaire=IaFaire+1
+
+
+           END Do              ! DO WHILE CaFaire
+
+        END IF  ! FrozBlock(I,0)==1
+
+        IFrag=IFrag+1
+     END DO                    ! Loop on all fragments
+
+
+     DO IFrag=1,NbFrag
+        IF (FrozBlock(IFrag,0).EQ.0) THEN
+           if (debug) WRITE(*,*) 'Adding fragment :', ifrag,'with no frozen atoms'
+           ! We have no frozen atoms for this fragment. We will have to choose
+           ! the first atom to put.
+           ! For now, we do not care of the 'central' atom (ie the one with
+           ! no CP atoms...)
+           ! We just take the atom that is the closest to the already placed
+           ! atoms !
+
+
+           I0=0
+           I1=0
+           d=1e9
+           DO J=1,izm
+              Jat=ind_zmat(J,1)
+              DO I=1,NbAtfrag(IFrag)
+                 IAt=FragAt(IFrag,I)
+                 IF (.NOT.DejaFait(Iat)) THEN
+                    Call vecteur(Iat,Jat,x,y,z,vx1,vy1,vz1,norm1)
+                    IF (norm1.LT.d) THEN
+                       I1=Jat
+                       I0=Iat
+                       d=Norm1
+                    END IF
+                 END IF
+              END DO
+           END DO
+
+           Iat=I0
+           n1=I1
+
+           IF (debug) WRITE(*,*) Iat,' starting atom for frag',ifrag
+
+
+           SELECT CASE(idx_zmat(n1))
+           CASE (1)
+              n2=ind_zmat(2,1)
+              n3=ind_zmat(3,1)
+           CASE (2)
+              n2=ind_zmat(1,1)
+              n3=ind_zmat(3,1)
+           CASE (3:)
+              n2=ind_zmat(idx_zmat(n1),2)
+              n3=ind_zmat(idx_zmat(n1),3)
+           END SELECT
+
+           izm=izm+1
+           !        ind_zmat(izm,1)=iat
+           !        ind_zmat(izm,2)=n1
+           !        ind_zmat(izm,3)=n2
+           !        ind_zmat(izm,4)=n3
+           Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+           idx_zmat(iat)=izm
+
+
+           DejaFait(iat)=.TRUE.
+           IdxCaFaire=2
+           CaFaire(1)=iat
+           CaFaire(2)=0
+           IaFaire=1
+           FCaf(Iat)=.TRUE.
+           DO WHILE (CaFaire(IaFaire).NE.0)
+              n1=CaFaire(IaFaire)
+              if (debug) WRITE(*,*) 'Iafaire,n1',IaFaire,n1, &
+                   DejaFait(n1),idx_zmat(n1)
+              if (debug) WRITE(*,*) 'Cafaire', &
+                   (CaFaire(J),J=Iafaire,IdxCAfaire)
+              SELECT CASE(idx_zmat(n1))
+              CASE (1)
+                 n2=ind_zmat(2,1)
+                 n3=ind_zmat(3,1)
+              CASE (2)
+                 n2=ind_zmat(1,1)
+                 n3=ind_zmat(3,1)
+              CASE (3:)
+                 n2=ind_zmat(idx_zmat(n1),2)
+                 n3=ind_zmat(idx_zmat(n1),3)
+              END SELECT
+
+
+              DO I3=1,Liaisons(n1,0)
+                 IAt=Liaisons(n1,I3)
+                 ! PFL 2007.Apr.16 ->
+                 ! We add ALL atoms linked to n1 to CaFaire
+                 ! But we delete their link to n1
+!! PFL 2007.Aug.28 ->
+! re-add the test on FCaf in order not to put the same atom more than once in 
+! CaFaire array.
+                 IF (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=Iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                 END IF
+!! <-- PFL 2007.Aug.28
+
+                 Call Annul(Liaisons,Iat,n1)
+                 Liaisons(iat,0)=Liaisons(Iat,0)-1
+                 if (debug) WRITE(*,*) 'Adding ',iat,' to CaFaire. I3=',I3
+                 if (debug) WRITE(*,*) 'Cafaire',(CaFaire(J),J=Iafaire,IdxCAfaire)
+
+                 ! <- PFL 2007.Apr.16
+                 IF (.NOT.DejaFait(Liaisons(n1,i3))) THEN
+                    IAt=Liaisons(n1,I3)
+                    izm=izm+1
+                    !                 ind_zmat(izm,1)=iat
+                    !                 ind_zmat(izm,2)=n1
+                    !                 ind_zmat(izm,3)=n2
+                    !                 ind_zmat(izm,4)=n3
+                    Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                    idx_zmat(iat)=izm
+
+                    n3=iat
+                    DejaFait(Iat)=.TRUE.
+                 END IF
+
+              if (debug) WRITE(*,*) 'I3,n1,Liaisons(n1,:)', &
+                   I3,n1,(Liaisons(n1,J),J=0,Liaisons(n1,0))
+              END DO
+              IaFaire=IaFaire+1
+
+              if (debug) THEN
+                 WRITE(*,*) 'ind_zmat 7', izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2),ind_zmat(3,3)
+                 DO Ip=4,izm
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1), &
+                         ind_zmat(Ip,2),  &
+                         ind_zmat(Ip,3), ind_zmat(Ip,4)
+                 END DO
+              END IF
+
+           END Do              ! DO WHILE CaFaire
+        END IF                 ! FrozBlock(IFrag,0).EQ.0
+
+     END DO                    ! Loop on all fragments without frozen atoms
+
+     if (debug) THEN
+        WRITE(*,*) Na+Izm
+        WRITE(*,*) 'Done... ', izm
+        DO J=1,Na
+           WRITE(*,'(1X,A5,3(1X,F10.6))') Nom(Atome(J)),X(J),Y(J),Z(J)
+        END DO
+        DO I=1,Izm
+           J=ind_zmat(I,1)
+           WRITE(*,'(1X,A5,3(1X,F10.6))') 'X ',X(J),Y(J),Z(J)
+        END DO
+        IF (izm.NE.Na) THEN
+           WRITE(*,*) "Atoms not done:"
+           DO I=1,Na
+              IF (.NOT.DejaFait(I)) WRITE(*,'(I5)',ADVANCE='NO') I
+           END DO
+        END IF
+     END IF
+
+
+     ! We have ind_zmat. We calculate val_zmat :-)
+     if (debug) WRITE(*,*) "Calculating val_zmat"
+
+     val_zmat(1,1)=0.d0
+     val_zmat(1,2)=0.d0
+     val_zmat(1,3)=0.d0
+     val_zmat(2,2)=0.d0
+     val_zmat(2,3)=0.d0
+     val_zmat(3,3)=0.d0
+
+     n1=ind_zmat(2,1)
+     n2=ind_zmat(2,2)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     val_zmat(2,1)=norm1
+
+
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+     val_zmat(3,2)=val
+
+     DO i=4,na
+
+        n1=ind_zmat(i,1)
+        n2=ind_zmat(i,2)
+        n3=ind_zmat(i,3)
+        n4=ind_zmat(i,4)
+
+        if (debug) WRITE(*,*) "Doing i,n1,n2,n3,n4",i,n1,n2,n3,n4
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+        CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+        val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+        CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+        CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+             vx4,vy4,vz4,norm4)
+        CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+             vx5,vy5,vz5,norm5)
+
+        val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, &
+             vx2,vy2,vz2,norm2)
+
+        !     write(*,11) n1,n2,norm1,n3,val,n4,val_d
+        !11   format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+        val_zmat(i,1)=norm1
+        val_zmat(i,2)=val
+        val_zmat(i,3)=val_d
+
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) 'DBG Cre_Zmat_Constr: ind_zmat'
+        DO I=1,na
+           WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+        END DO
+
+        WRITE(*,*) 'DBG Cre_Zmat_Constr: Full zmat'
+        DO I=1,na
+           WRITE(*,'(1X,I5,1X,I5,F8.4,2(1X,I5,1X,F7.2))') ind_zmat(i,1),(ind_zmat(i,j+1),val_zmat(i,j),j=1,3)
+        END DO
+
+     END IF
+
+     if (debug) WRITE(*,*) "Deallocate (FrozDist,Fragment, NbAtFrag,FragAt)"
+     DEALLOCATE(FrozDist,Fragment, NbAtFrag,FragAt)
+     if (debug) WRITE(*,*) "Deallocate FrozFrag, IdxFragAt, FrozBlock"
+     !  DEALLOCATE(FrozFrag, IdxFragAt, FrozBlock)
+     DEALLOCATE(FrozFrag,FrozBlock)
+     if (debug) WRITE(*,*) "Deallocate (DistFroz,Liaisons)"
+     DEALLOCATE(DistFroz,Liaisons)
+     if (debug) WRITE(*,*) "Deallocate (LiaisonsIni)"
+     DEALLOCATE(LiaisonsIni)
+     if (debug) WRITE(*,*) "Deallocate(CaFaire,DejaFait,FrozAt)"
+     DEALLOCATE(CaFaire,DejaFait,FrozAt)
+     if (debug) WRITE(*,*) "Deallocate (LiaisonsBis"
+     DEALLOCATE(LiaisonsBis)
+
+
+     if (debug) WRITE(*,*) "=============================== Exiting Calc_zmat_contr_frag ========================"
+
+   END SUBROUTINE Calc_Zmat_const_frag
+
+
Index: src/ConvertNumAt.f90
===================================================================
--- src/ConvertNumAt.f90	(revision 0)
+++ src/ConvertNumAt.f90	(revision 1)
@@ -0,0 +1,34 @@
+      FUNCTION ConvertNumAt(ATOM)
+
+      use Path_module, only : Nom, max_Z
+
+      IMPLICIT NONE
+
+      INTEGER(4) :: I,Long,ConvertNumAt,IC
+      character(*) :: ATOM
+      CHARACTER(3) :: ATOME
+      CHARACTER(10) :: L_Atom
+
+!     Verifie qu'il n'y a que des lettres et des espaces dans ATOM
+
+      L_atom=ADJUSTL(Atom)
+      IF (ATOM(1:1).LT.'A') L_ATOM(1:1)=' '
+      IC=Ichar(ATOM(1:1))
+      IF ((ic.le.123).AND.(ic.ge.97)) L_ATOM(1:1)=CHAr(IC-32)
+      IF (ATOM(2:2).LT.'A') L_ATOM(2:2)=' '
+      IC=Ichar(ATOM(2:2))
+      IF ((ic.le.123).AND.(ic.ge.97)) L_ATOM(2:2)=CHAr(IC-32)
+
+!     Justifie le nom sur la droite (et non sur la gauche comme souvent...)
+      Long=INDEX(L_ATOM,' ')-1
+      ATOME=' ' // L_ATOM(1:2)
+      IF (Long.EQ.1) L_ATOM=ATOME(1:2)
+      I=max_Z
+      DO WHILE ((nom(I).NE.L_ATOM(1:2)) .AND. (I.GT.0))
+         I=I-1
+      END DO
+
+      ConvertNumAT=I
+
+      END
+

Property changes on: src/ConvertNumAt.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/CalcHess.f90
===================================================================
--- src/CalcHess.f90	(revision 0)
+++ src/CalcHess.f90	(revision 1)
@@ -0,0 +1,147 @@
+      subroutine CalcHess (nfree,geom, hess,Igeom,Iopt)
+
+! This routine calculate the Hessian (or its inverse) numerically using Egrad.
+! It should be general and should work with any combination of Coord and Prog
+! however, it has not been tested with Prog different from 'test'
+
+! It comes mostly from the hess.f subroutine of the IRC package.
+
+
+  use Path_module, only : Nat,Coord,Hinv
+
+  use Io_module
+!
+      IMPLICIT NONE
+
+!!!!!!!!!!! Parameters
+  ! NFree==NCoord: Number of the degrees of freedom
+  ! IGeom: index of the geometry.
+  ! Iopt: step in the optimization process
+  INTEGER(KINT), INTENT (IN) :: NFree, IGeom, IOpt
+! Geometry at which Hessian is calculated (or its inverse)
+   REAL(KREAL), INTENT(IN) :: Geom(Nfree)
+! Hessian in compacted form
+      REAL(KREAL), INTENT(OUT) ::  Hess(Nfree,Nfree)
+!
+! Parameters used to calculate the Hessian
+! numerically with increasing accuray
+      INTEGER(KINT), DIMENSION(6,0:3), PARAMETER :: IECOEF  &
+      = RESHAPE(SOURCE=(/           &
+          -1,1,0,0,0,0,             &
+          -1,1,0,0,0,0,             &
+          1,-8,8,-1,0,0,            & 
+          -1,9,-45,45,-9,1          &
+       /), SHAPE=(/6,4/))
+
+      INTEGER(KINT), DIMENSION(6,0:3), PARAMETER :: ISCOEF   &
+      = RESHAPE(SOURCE=(/    &
+         0,1,0,0,0,0,         &
+          -1,1,0,0,0,0,       & 
+          -2,-1,1,2,0,0,      &
+           -3,-2,-1,1,2,3     &
+         /),SHAPE=(/6,4/))
+      INTEGER(KINT), DIMENSION(0:3), PARAMETER :: NbDiv = (/1,2,12,60/)
+      INTEGER(KINT), DIMENSION(0:3), PARAMETER :: NbCoef = (/2,2,4,6/)
+
+
+      INTEGER(KINT), PARAMETER :: HessAcc=2
+      REAL(KREAL), PARAMETER :: StepHess=0.01d0
+! ======================================================================
+      logical           :: debug
+
+      REAL(KREAL) :: Ener
+      INTEGER(KINT) :: I, J, IAT, JAT, IJ0, IJ1, IConst
+
+       REAL(KREAL), ALLOCATABLE :: Temp(:),Temp2(:,:) 
+
+
+       REAL(KREAL), ALLOCATABLE :: Value(:), ValueOld(:), GradTMP(:)
+       REAL(KREAL), ALLOCATABLE :: RTmp1(:,:), RTmp3(:,:)  ! Nat,3
+       REAL(KREAL), ALLOCATABLE :: RTmp2(:)  ! NFree
+! ======================================================================
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+! ======================================================================
+
+      hess=0.d0
+
+      debug=valid('CALCHESS').OR.valid('hess')
+
+      if (debug) THEN
+         WRITE(*,*) 'Entering CalcHess'
+         WRITE(*,*) 'StepHess=',StepHess
+         WRITE(*,*) "HessAcc=",HessAcc
+      END IF
+
+      allocate(Value(Nfree), ValueOld(Nfree), GradTmp(Nfree))
+      ALLOCATE(RTmp1(Nat,3),RTmp3(Nat,3),RTmp2(NFree))
+      allocate(temp2(Nfree,Nfree))
+
+      RTmp1=0.d0
+      RTmp3=0.d0
+      RTmp2=Geom
+
+!     Now, we calculate the second derivatives for the active variables               
+      Value=Geom
+      ValueOld=Geom
+
+      Do IConst=1,Nfree
+            DO I=1,NbCoef(HessAcc)
+               Value(IConst)=valueOld(IConst)+StepHess*ISCOEF(I,HessAcc)
+!     We 'propagate this new value in the Zmatrix'
+               call egrad(ener,value,gradtmp,NFree,IGeom,Iopt,RTmp1,RTmp2,RTmp3,.FALSE.)
+               Hess(1:Nfree,IConst)= Hess(1:Nfree,IConst)+   &
+                    gradtmp(1:Nfree)*IECOEF(I,HessAcc)
+            end do
+         END DO
+        deallocate(Value, ValueOld, GradTmp)
+         
+        HESS=Hess/(NbDiv(HessAcc)*StepHess)
+
+         if (debug) then
+            WRITE(*,*) 'Non symmetrized hessian'
+            DO iat=1,Nfree
+               WRITE(*,'(15(1X,F12.5))') Hess(iat,1:Nfree)
+            END DO
+         END if
+
+         DO i=1,Nfree
+           Temp2(i,i)=Hess(i,i)
+           DO j=i+1,Nfree
+             Temp2(i,j)=0.5*(Hess(i,j)+Hess(j,i))
+             Temp2(j,i)=Temp2(i,j)
+           END DO
+         END DO
+
+         Hess=Hess-Temp2
+
+         if (debug) then
+            WRITE(*,*) 'Symmetrized hessian'
+            DO iat=1,Nfree
+               WRITE(*,'(15(1X,F12.5))') Temp2(iat,1:Nfree)
+            END DO
+
+            WRITE(*,*) 'Difference between non-syma and Symmetrized hessian'
+            DO iat=1,Nfree
+               WRITE(*,'(15(1X,F12.5))') Hess(iat,1:Nfree)
+            END DO
+         end if
+
+! We calculate inverse of the Hessian only if HInv=T
+
+         Hess=Temp2
+      if (Hinv) then
+        call Geninv(Nfree,Hess,Temp2,NFree)
+        Hess=Temp2
+      end if
+
+      deallocate(RTmp1,RTmp2,RTmp3,Temp2)
+
+! ======================================================================
+      end subroutine CalcHess

Property changes on: src/CalcHess.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Int2cart.f90
===================================================================
--- src/Int2cart.f90	(revision 0)
+++ src/Int2cart.f90	(revision 1)
@@ -0,0 +1,97 @@
+SUBROUTINE Int2Cart(Nat,IndZmat,IntCoord,XyzCoord)
+
+  Use Path_module, ONLY : Pi
+
+  IMPLICIT NONE
+  
+  INTEGER, PARAMETER :: Kint=Kind(1)
+  INTEGER, PARAMETER :: KREAL=Kind(1.0D0)
+
+  INTEGER(KINT), INTENT(IN) :: Nat
+  INTEGER(KINT), INTENT(IN) :: IndZmat(Nat,5)
+  REAL(KREAL), INTENT(IN) :: IntCoord(3*Nat-6)
+  REAL(KREAL), INTENT(OUT) :: XyzCoord(Nat,3)
+
+  INTEGER(KINT) :: I,J,K,L,Idx
+  REAl(KREAL), ALLOCATABLE :: ValZmat(:,:),XyzTmp(:,:)
+  REAL(KREAL) :: d, a_val
+  LOGICAL :: debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+  debug=valid('int2cart')
+
+   if (debug) WRITE(*,*) '================ Entering Int2Cart ==================='
+
+  ALLOCATE(ValZmat(Nat,3),XyzTmp(Nat,3))
+
+  ValZmat=0.d0
+  ValZmat(2,1)=IntCoord(1)
+  ValZmat(3,1)=IntCoord(2)
+  ValZmat(3,2)=IntCoord(3)*180./Pi
+  DO I=4,Nat
+     ValZmat(I,1)=IntCoord(3*I-8)
+     ValZmat(I,2)=IntCoord(3*I-7)*180./Pi
+     ValZmat(I,3)=IntCoord(3*I-6)*180./Pi
+  END DO
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG Int2Cart'
+     DO I=1,Nat
+        WRITe(*,'(1X,I3,3(1X,I3,1X,F10.4))') IndZmat(I,1), IndZmat(I,2), ValZmat(I,1), IndZmat(I,3),&
+             ValZmat(I,2), IndZmat(I,4), Valzmat(I,3)
+     END DO
+  END IF
+
+  Xyztmp=0.d0
+  Xyztmp(2,1)=valzmat(2,1)
+  d=valzmat(3,1)
+  a_val=valzmat(3,2)/180.*Pi
+!              write(*,*) "aval,pi",a_val,valzmat(3,2),pi
+  if (Nat.GE.3) THEN
+     if (IndZmat(3,2).EQ.1)  THEN
+        Xyztmp(3,1)=Xyztmp(1,1)+d*cos(a_val)
+     ELSE
+        Xyztmp(3,1)=Xyztmp(2,1)-d*cos(a_val)
+     ENDIF
+     Xyztmp(3,2)=d*sin(a_val)
+  ENDIF
+  !              i=1
+  !                WRITE(*,*) 'TOTOCart:',i, (Xyztmp(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+  !              i=2
+  !                WRITE(*,*) 'TOTOCart:',i, (Xyztmp(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+  !              i=3
+  !                WRITE(*,*) 'TOTOCart:',i, (Xyztmp(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+
+  DO i=4,Nat
+     call ConvertZmat_cart(i,IndZmat,valzmat,                &
+          Xyztmp(1,1), Xyztmp(1,2),Xyztmp(1,3))
+     !                  WRITE(*,*) 'TOTOZma:',i,IndZmat(I,1),            &
+     !                        (IndZmat(I,J+1),valzmat(I,J),J=1,3)
+     !                   WRITE(*,*) 'TOTOCart:',i, (Xyztmp(I,J),J=1,3)
+  END DO
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG Int2Cart XyzTmp'
+     DO I=1,Nat
+        WRITe(*,'(1X,I3,3(1X,F10.4))') I, XyzTmp(I,1:3)
+     END DO
+  END IF
+
+
+!  XyzCoord=Reshape(XyzTmp,(/3,Nat/),ORDER=(/2,1/))
+  XyzCoord=XyzTmp
+
+  DEALLOCATE(valzmat,xyztmp)
+  if (debug) WRITE(*,*) '================ Exiting Int2cart ==================='
+
+END SUBROUTINE Int2Cart
Index: src/Header.f90
===================================================================
--- src/Header.f90	(revision 0)
+++ src/Header.f90	(revision 1)
@@ -0,0 +1,23 @@
+       subroutine Header(String)
+! This short subroutine print a header in a nice way
+
+         IMPLICIT NONE
+
+         CHARACTER(*) :: String
+         CHARACTER(70) :: Head1,Sep
+         INTEGER, PARAMETER :: I=70
+         INTEGER :: LenS,Len1,Pos1
+
+         Head1="====================================================================="
+           Sep="                                                                     "
+
+         LenS=len(String)
+ !        WRITE(*,*) "DBG Head:",LenS, String
+         Pos1=34-Int(LenS/2)
+         Len1=67-LenS-Pos1
+
+         WRITe(*,'(A)') Head1
+         WRITE(*,'(A)') "=" // Sep(1:Pos1) // String(1:LenS) // Sep(1:Len1) // "="
+         WRITe(*,'(A)') Head1
+
+       END subroutine Header
Index: src/Calc_zmat.f90
===================================================================
--- src/Calc_zmat.f90	(revision 0)
+++ src/Calc_zmat.f90	(revision 1)
@@ -0,0 +1,976 @@
+      SUBROUTINE Calc_Zmat(na,atome,ind_zmat,val_zmat,x,y,z, &
+           r_cov,  fact)
+
+      use Path_module, only : Pi,max_Z, NMaxL, Nom, KINT, KREAL
+      use Io_module, only : IoIn, IoOut
+
+      IMPLICIT NONE
+
+! Number of atoms
+      integer(KINT), INTENT(IN) :: na
+! Mass number of atoms
+      INTEGER(KINT), INTENT(IN) :: atome(na)
+! Coordinates
+      real(KREAL), INTENT(IN) ::  x(na),y(na),z(na)
+! Covalent radii
+      REAL(KREAL), INTENT(IN) :: R_cov(Max_Z)
+! Factor to determine connectivity
+      REAL(KREAL) :: Fact
+! Zmat index and values
+      integer(KINT), INTENT(OUT) :: ind_zmat(na,5)
+      real(KREAL),INTENT(OUT) ::  val_zmat(na,3)
+
+      character(2) :: ATOM
+      integer(KINT) :: at,long
+
+      real(KREAL) ::  vx,vy,vz,dist
+      INTEGER(KINT), ALLOCATABLE :: LIAISONS(:,:) !(na,0:NMaxL
+      INTEGER(KINT), ALLOCATABLE :: LiaisonsBis(:,:) ! na,0:NMaxL
+      INTEGER(KINT), ALLOCATABLE :: LieS_CP(:,:),LieS_CF(:,:) ! (na,0:NMaxL)
+      INTEGER(KINT), ALLOCATABLE :: NbAt3(:,:) !(Na,2)
+      INTEGER(KINT), ALLOCATABLE :: CycleAt(:) !(Na)
+      INTEGER(KINT) :: Nbli,Nblj
+      INTEGER(KINT), ALLOCATABLE :: CAFaire(:) ! Na
+
+      Integer(KINT) :: AtTypCycl(Max_Z)
+      Integer(KINT) :: NbCycle
+      real(KREAL) ::  vx1,vy1,vz1,norm1
+      real(KREAL) ::  vx2,vy2,vz2,norm2
+      real(KREAL) ::  vx3,vy3,vz3,norm3
+      real(KREAL) ::  vx4,vy4,vz4,norm4
+      real(KREAL) ::  vx5,vy5,vz5,norm5
+      real(KREAL) ::  val,val_d
+      Logical PasFini,AtTerm,Debug,Bicycle,FLie3,FirstCycle
+      LOGICAL, ALLOCATABLE ::  Former3(:), DejaFait(:) ! Na
+      Logical FTmp
+      LOGICAL F1213, F1223,F1323
+
+      INTEGER(KINT) :: I,J,K, IZM, N1,n2, N3, IL, JL
+      INTEGER(KINT) :: IdAt0, I3, IAt3, Idx3, I1, I0, IAf
+      INTEGER(KINT) :: Izm1,Izm2, IZm3,IZm4, VCF, ICat
+      INTEGER(KINT) :: IOld, IndFin, IdAtL, IndAFaire
+      INTEGER(KINT) :: IAti, IAtD, IAtv, IIAtDh, IAtDh
+      INTEGER(KINT) :: IAt0, IAta, IAt, Jat,Idx
+      INTEGER(KINT) :: ITmp, IAtTmp, NbAt0
+      INTEGER(KINT) :: NbLies, ICycle, IMax
+      REAL(KREAL) :: d,d12, d13,d32
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+
+  END INTERFACE
+
+
+
+      debug=valid("Calc_zmat")
+      if (debug) WRITE(*,*) "========== Entering Calc_zmat =========="
+
+      FirstCycle=.TRUE.
+      FTmp=.FALSE.
+      NbCycle=0
+      DO i=1,na
+         DO J=1,5
+            Ind_Zmat(i,J)=0
+         END DO
+      END DO
+      ALLOCATE(Former3(Na), DejaFait(Na))
+      ALLOCATE(CaFaire(Na), CycleAt(Na))
+      ALLOCATE(NbAt3(Na,2))
+      ALLOCATE(Liaisons(na,0:NMaxL),LiaisonsBis(na,0:NMaxL))
+      ALLOCATE(Lies_CP(na,0:NMaxL), Lies_CF(na,0:NMaxL))
+
+
+      WRITE(IOOUT,*) Na
+      WRITE(IOOUT,*) 'Calc_zmat'
+      DO I=1,na
+         WRITE(IOOUT,*) NOM(Atome(I)),X(i),y(i),z(i)
+      END DO
+
+      if (na.le.2) THEN
+         WRITE(*,*) "I do not work for less than 2 atoms :-p"
+         RETURN
+      END IF
+
+!     Cas particulier: 3 atomes ou moins...
+      if (Na.eq.3) THEN
+         d12=sqrt((x(1)-x(2))**2+(y(1)-y(2))**2+(z(1)-z(2))**2)
+         d13=sqrt((x(1)-x(3))**2+(y(1)-y(3))**2+(z(1)-z(3))**2)
+         d32=sqrt((x(3)-x(2))**2+(y(3)-y(2))**2+(z(3)-z(2))**2)
+         F1213=(d12<=d13)
+         F1323=(d13<=d32)
+         F1223=(d12<=d32)
+         if (debug) THEN
+            WRITE(*,*) "DEBUG Calc_Zmat 3 atoms"
+            WRITE(*,*) "d12,d13,d32:",d12,d13,d32
+            WRITE(*,*) "F1213,F1323,F1223:",F1213,F1323,F1223
+         END IF
+         if (F1213) THEN
+            if (F1323) THEN
+               ind_zmat(1,1)=3
+               ind_zmat(2,1)=1
+               ind_zmat(2,2)=3
+               ind_zmat(3,1)=2
+               ind_zmat(3,2)=1
+               ind_zmat(3,3)=3
+            ELSE
+               ind_zmat(1,1)=1
+               ind_zmat(2,1)=2
+               ind_zmat(2,2)=1
+               ind_zmat(3,1)=3
+               ind_zmat(3,2)=2
+               ind_zmat(3,3)=1
+            END IF
+         ELSE
+            IF (F1223) THEN
+               ind_zmat(1,1)=2
+               ind_zmat(2,1)=1
+               ind_zmat(2,2)=2
+               ind_zmat(3,1)=3
+               ind_zmat(3,2)=1
+               ind_zmat(3,3)=2
+            ELSE
+               ind_zmat(1,1)=2
+               ind_zmat(2,1)=3
+               ind_zmat(2,2)=2
+               ind_zmat(3,1)=1
+               ind_zmat(3,2)=3
+               ind_zmat(3,3)=2
+            END IF
+         END IF
+         IF (debug) THEN
+            DO i=1,na
+               WRITE(*,*) (ind_zmat(i,j),j=1,5)
+            END DO
+         END IF
+
+!     We have ind_zmat, we fill val_zmat
+         val_zmat(1,1)=0.
+         val_zmat(1,2)=0.
+         val_zmat(1,3)=0.
+         n2=ind_zmat(2,1)
+         n1=ind_zmat(2,2)
+         d=sqrt((x(n1)-x(n2))**2+(y(n1)-y(n2))**2+ &
+              (z(n1)-z(n2))**2)
+         val_zmat(2,1)=d
+         val_zmat(2,2)=0.
+         val_zmat(2,3)=0.
+         n1=ind_zmat(3,1)
+         n2=ind_zmat(3,2)
+         n3=ind_zmat(3,3)
+         CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+         if (debug) write(*,*) n1,n2,norm1
+         val_zmat(3,1)=norm1
+
+         CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+         if (debug) write(*,*) n2,n3,norm2,val
+         val_zmat(3,2)=val
+         val_zmat(3,3)=0.
+
+         RETURN
+      END IF
+
+
+ 1036 FORMAT(I2)
+
+!     Premiere etape : calcul des connectivites
+      DO I=1,na
+         DejaFait(I)=.FALSE.
+         Former3(I)=.False.
+         Do J=0,NMaxL
+            Liaisons(I,j)=0.
+            LiaisonsBis(I,j)=0.
+         END DO
+         DO J=1,5
+            ind_zmat(I,J)=0
+         END DO
+      END DO
+
+      if (debug) WRITE(IOOUT,*) "Liaisons initialiazed"
+!     DO IL=1,na
+!     WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+!     WRITE(IOOUT,1003) Il,(LIAISONSBis(IL,JL),JL=0,NMaxL)
+!     END DO
+
+      Call CalcCnct(na,atome,x,y,z,LIAISONS,r_cov,fact)
+
+      if (debug) THEN
+         WRITE(IOOUT,*) "Connections calculated"
+         DO IL=1,na
+            WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+         END DO
+      END IF
+
+
+!     on va maintenant trier ces connectivites en 2 :
+!     Lies_CF : vers l'exterieur de la molecule
+!     Lies_CP : vers l'interieur de la molecule
+!     Pour cela, on procede 'a l'envers' : on regarde les atomes
+!     auxquels sont lies les atomes attaches -> on remplit Lies_CF/P
+!     et on supprime ces atomes...
+
+!     v2.0 on copie Liaison dans LiaisonBis. On analyse LiaisonBis
+!     tout en modifiant Liaison. Cela evite de fausser l'analyse: un atome
+!     qui est lie initialement a 2 atomes (et qui n'est donc pas terminal)
+!     peut devenir terminal en milieu de traitement si on annule la liaison
+!     qui le liait a un atome terminal situ� avant lui...
+!     ex: H2O code dans l'ordre H,O,H.
+      PasFini=.True.
+      AtTerm=.True.
+      DO WHILE (PasFini.AND.AtTerm)
+         PasFini=.False.
+         AtTerm=.False.
+         DO I=1,na
+            DO J=0,NMaxL
+               LiaisonsBis(I,J)=Liaisons(I,J)
+            END DO
+         END DO
+!     DO IL=1,na
+!     WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+!     WRITE(IOOUT,1003) Il,(LIAISONSBis(IL,JL),JL=0,NMaxL)
+!     END DO
+!     WRITE(IOOUT,*) "=================================="
+
+
+         DO I=1,na
+            if ((LiaisonsBis(I,0).eq.1).AND.Liaisons(I,0).ne.0) THEN
+               AtTerm=.True.
+!     On enleve cet atome
+               Liaisons(I,0)=0
+               NbLies=Lies_CP(I,0)+1
+               Lies_CP(I,NbLies)=Liaisons(I,1)
+               Lies_CP(I,0)=NbLies
+               Liaisons(Liaisons(I,1),0)=Liaisons(Liaisons(I,1),0)-1
+
+               NbLies=Lies_CF(Liaisons(I,1),0)+1
+               Lies_CF(Liaisons(I,1),NbLies)=I
+               Lies_CF(Liaisons(I,1),0)=NbLies
+
+               Call Annul(Liaisons,Liaisons(I,1),I)
+
+            END IF
+
+            if (Liaisons(I,0).ge.1) THEN
+               PasFini=.TRUE.
+            END IF
+
+         END DO
+         if (debug) WRITE(*,*) 'PasFini, AtTerm',PasFini,AtTerm
+         If (PasFini.AND.(.Not.AtTerm)) THEN
+!     Pas d'atomes terminaux lors de l'exploration precedente.
+!     On a soit une erreur, soit un cycle. Je ne sais pas encore gerer
+!     tous les  cas :  on affiche un warning
+            WRITE(*,*) "Je ne trouve pas d'atomes terminaux"
+            WRITE(*,*) "Possibilite de molecule cyclique"
+            WRITE(*,*) "Cas en cours de traitement: verifier l'output"
+!     On va d'abord voir si on a des atomes li�s a plus de 2 centres.
+            AtTerm=.TRUE.
+            Bicycle=.False.
+            ICycle=0
+            IMax=0
+            DO I=1,na
+               if (Liaisons(I,0).gt.2) THEN
+                  ICycle=ICycle+1
+                  BiCycle=.True.
+                  If (Liaisons(I,0).gt.IMax) Imax=Liaisons(I,0)
+                  Former3(I)=.True.
+               END IF
+            END DO
+            IF (BiCycle) THEN
+!     On a des atomes lies a 3 ou plus d'atomes...
+!     donc soit des bicycles, soit plusieurs
+!     cycles attaches par un sommet...
+               WRITE(*,*) "On dirait un bicyle... on essaie"
+               WRITE(*,*) ICycle, "atomes lies a plus de 2 atomes"
+               WRITe(*,*) "Nb Attaches max:",IMax
+!     Plusieurs cas possibles pour un bicycle:
+!     1) 2 cycles relies par un sommet, ICycle=2, IMax=3
+!     2) 2 cycles relies par une arrete, ICycle=2, Imax=3
+               If (Imax.Eq.3) THEN
+!     on doit pouvoir traiter celui la...
+!     On classe les atomes li�s a trois atomes, par le nombre d'atomes
+!     lies a trois atomes
+!     auxquels ils sont li�s ... interessant pour les composes asterisques.
+                  I3=0
+                  FLie3=.False.
+                  DO I=1,Na
+                     If (Liaisons(I,0).EQ.3) THEN
+                        I3=I3+1
+                        K=0
+                        DO J=1,Liaisons(I,0)
+                           If (Liaisons(Liaisons(I,J),0).Eq.3) THEN
+                              k=k+1
+                              FLie3=.True.
+                           END IF
+                        END DO
+                        NbAt3(I3,2)=k
+                        NbAt3(I3,1)=I
+                     END IF
+                  END DO
+!     A-t-on deux atomes a 3 lies ensemble ?
+                  IF (FLie3) THEN
+!     on les classe pas nb at lies a 3
+                     IAt3=0
+                     Idx3=0
+                     DO I=1,I3
+                        IF (NbAt3(I,2).ge.Iat3) THEN
+                           IAt3=NbAt3(I,2)
+                           Idx3=NbAt3(I,1)
+                        END IF
+                     END DO
+!     On va enlever ces liaisons entre atomes a 3, en les mettant
+!     en CF de l'atome 'central'
+                     if (debug) WRITE(*,*) "Atome ",Idx3, &
+                          " retenu, li� a",IAt3," atomes 3"
+                     DO I=1,Liaisons(Idx3,0)
+                        I1=Liaisons(Idx3,I)
+                        If (Liaisons(I1,0).EQ.3) THEN
+                           if (debug) WRITE(*,*) "Traitement ",I1,Idx3
+                           NbLies=Lies_CF(Idx3,0)+1
+                           Lies_CF(Idx3,NbLies)=I1
+                           Lies_CF(Idx3,0)=NbLies
+                           NbLies=Lies_CP(I1,0)+1
+                           Lies_CP(I1,NbLies)=Idx3
+                           Call Annul(Liaisons,I1,Idx3)
+                           Call Annul(Liaisons,Idx3,I1)
+                           Liaisons(Idx3,0)=Liaisons(Idx3,0)-1
+                           Liaisons(I1,0)=Liaisons(I1,0)-1
+                        END IF
+                     END DO
+                  ELSE
+                     WRITE(*,*) "Aucune liaisons entre deux atomes li�s"
+                     WRITE(*,*) "Pas encore trait�"
+                     STOP
+                  END IF        !FLie3=T ?
+               END IF           !Imax=3 ?
+            ELSE                ! BiCyle ?
+!     Un seul cycle. Facile :-)
+               WRITE(*,*) "Un  cycle identifie..."
+               NbCycle=NbCycle+1
+               if (debug) WRITE(*,*) 'Considering cycle ',NbCycle
+               If (NbCycle.ge.2) THEN
+!     si ce n'est pas le premier cycle que l'on met, on regarde si parmi les
+!     atomes du cycle, l'un d'eux etait avant attache a 3 atomes...
+                  I=1
+                  DO WHILE (Liaisons(I,0).ne.2)
+                     I=I+1
+                  END DO
+                  if (debug) WRITE(*,*) "I>2:",I,Former3(I)
+                  FTmp=Former3(I)
+                  I0=I
+                  IOld=I
+                  I1=I
+                  I=Liaisons(I,1)
+                  DO WHILE (.NOT.FTmp)
+                     I1=Liaisons(I,1)
+                     If (I1.Eq.IOld) I1=Liaisons(I,2)
+                     FTmp=Former3(I1)
+                     if (debug) WRITE(*,*) "I,I1,I0,IOld",I,I1,I0, &
+                          IOld,FTmp
+                     IF (I1.eq.I0) FTmp=.TRUE.
+                     if (debug) WRITE(*,*) "I,I1,I0,IOld",I,I1,I0, &
+                          IOld,FTmp
+                     IOld=I
+                     I=I1
+                  END DO
+                  if (debug) WRITE(*,*)  "I,I1,I0,IOld",I,I1,I0, &
+                       IOld,FTmp
+                  IF (Former3(I1)) THEN
+!     On a notre atome particulier ... cool :-)
+                     if (debug) WRITE(*,*) "Atome former3",I1
+                     ITmp=I1
+                  END IF
+               END IF           ! NbCycle >=2
+               IF (.NOT.Ftmp) THEN
+                  if (debug) WRITE(*,*) "Pas trouve de former3"
+!     on regarde si il y a un atome particulier.. ie un heteroatome ou autre.
+                  DO I=1,Max_Z
+                     AtTypCycl(I)=0
+                  END DO
+                  DO I=1,na
+                     if (Liaisons(I,0).eq.2) &
+                          AtTypCycl(Atome(I))=AtTypCycl(Atome(I))+1
+                     if (debug) WRITE(*,*) I,Atome(I), &
+                          AtTypCycl(Atome(I)), &
+                          Liaisons(I,0)
+                  END DO
+                  Itmp=NmaxL+1
+                  IAtTmp=0
+                  DO I=1,Max_Z
+                     If ((AtTypCycl(I).gt.0).and.(AtTypCycl(I).le.Itmp)) &
+                          THEN
+                        Itmp=AtTypCycl(I)
+                        IAtTmp=I
+                     END IF
+                  END DO
+                  if (debug) WRITE(*,*) 'Itmp,IAtTmp:',Itmp,IAtTmp
+!     On a le type de l'atome particulier... on va prendre le premier venu
+                  DO I=na,1,-1
+                     If ((Atome(I).eq.IAtTmp).AND.(Liaisons(I,0).Eq.2)) &
+                          Itmp=I
+                  END DO
+               END IF
+               if (debug) WRITE(*,*) 'Atome ',Itmp,'(',IAtTmp,') retenu'
+!     On va tricher en enlevant les liaisons de cet atome a la main...
+               I0=Itmp
+               I1=Liaisons(I0,1)
+               DO WHILE (I1.Ne.ITmp)
+                  if (debug) WRITE(*,*) "Going from",I0,"to ",I1
+!     On rajoute ces deux liaisons en CF de Itmp
+                  NbLies=Lies_CF(I0,0)+1
+                  Lies_CF(I0,NbLies)=Liaisons(I0,1)
+                  Lies_CF(I0,0)=NbLies
+!     et les liaisons vers Itmp deviennent des CP pour les autres atomes
+                  NbLies=Lies_CP(I1,0)+1
+                  Lies_CP(I1,NbLies)=I0
+                  Lies_CP(I1,0)=NbLies
+
+                  Call Annul(Liaisons,I1,I0)
+                  Liaisons(I1,0)=Liaisons(I1,0)-1
+                  Liaisons(I0,0)=Liaisons(I0,0)-1
+
+                  DO IL=1,na
+                     WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+                  END DO
+                  I0=I1
+                  I1=Liaisons(I0,1)
+
+               end do
+               Call Annul(Liaisons,I1,I0)
+               Liaisons(I1,0)=Liaisons(I1,0)-1
+               Liaisons(I0,0)=Liaisons(I0,0)-1
+            END IF
+         END IF
+         DO IL=1,na
+            WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+         END DO
+!     WRITE(IOOUT,*) "=================================="
+!     WRITE(IOOUT,*) "=================================="
+      END DO
+
+!     WRITE(IOOUT,*) "=================================="
+!     Il ne reste plus que des atomes lies a rien...
+!     ce sont les 'centres' de la molecule. On repart
+!     d'eux pour construire le reste de la molecule.
+
+ 1003 FORMAT(1X,I4,' - ',15(I5))
+!     Avant de partir, on va classer, pour chaque atome, les atomes CF par
+!     nombre de masse decroissant.
+      DO I=1,na
+!     WRITE(*,*) I,Lies_CF(I,0),(Atome(Lies_CF(I,J)),j=1,Lies_CF(I,0))
+         DO J=1,Lies_CF(I,0)-1
+            DO K=J+1,Lies_CF(I,0)
+               if (atome(Lies_CF(I,K))>atome(Lies_CF(I,J))) THEN
+                  Itmp=Lies_CF(I,K)
+                  Lies_CF(I,K)=Lies_CF(I,J)
+                  Lies_CF(I,J)=Itmp
+               END IF
+            END DO
+         END DO
+!     WRITE(*,*) I,Lies_CF(I,0),(Atome(Lies_CF(I,J)),j=1,Lies_CF(I,0))
+      END DO
+
+      IF (Debug) THEN
+         WRITE(IOOUT,*) 'LIAISONS'
+         DO I=1,na
+            WRITE(IOOUT,1003) i,(LIAISONS(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(IOOUT,*) 'LIes_CF'
+         DO I=1,na
+            WRITE(IOOUT,1003) i,(LIeS_CF(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(IOOUT,*) 'LIes_CP'
+         DO I=1,na
+            WRITE(IOOUT,1003) i,(LIeS_CP(I,J),J=0,NMaxL)
+         END DO
+      END IF
+
+
+!     On compte le nb d'atomes sans atomes CP (centripetes)
+      NbAt0=0
+      DO I=1,na
+         IF (Lies_CP(I,0).eq.0) THEN
+            NbAt0=NbAt0+1
+            IF (DEBUG) WRITE(*,*) "Center atom",NbAt0,I,Atome(I)
+         END IF
+      END DO
+
+!     On va les traiter tous en construisant les molecules en partant d'eux
+!     Le premier atome sans CP est different des autres car il fixe
+!     l'origine
+
+      IZm=1
+!     Boucle pour trouver celui qui a le plus d'atomes CF
+      IdAt0=0
+      VCF=0
+      DO ICAt=1,na
+         if ((Lies_CP(ICaT,0).eq.0).AND.(Lies_CF(ICAt,0).gt.VCF)) THEN
+            IdAt0=ICat
+            VCF=Lies_CF(ICAt,0)
+         END IF
+      END DO
+      Lies_CP(IdAt0,0)=-1
+
+!     WRITE(IOOUT,*) 'Atome 1', IdAt0, Nom(Atome(IdAt0))
+      Izm1=IdAt0
+      ind_zmat(izm,1)=Izm1
+      ind_zmat(izm,2)=0
+      ind_zmat(izm,3)=0
+      ind_zmat(izm,4)=0
+      ind_zmat(izm,5)=0
+      val_zmat(izm,1)=0.0
+      val_zmat(izm,2)=0.0
+      val_zmat(izm,3)=0.0
+      DejaFait(Izm1)=.True.
+
+!     Les atomes CF lies a IdAt0 sont mis en attente pour
+!     etre traites
+
+      IndFin=1
+      Do iaf=1,Lies_CF(IdAt0,0)
+         CAfaire(IndFin)=Lies_CF(IdAt0,Iaf)
+         IndFin=IndFin+1
+      END DO
+      CAfaire(IndFin)=0
+
+!     On construit la premiere couche qui est speciale car elle fixe les
+!     axes.
+!     Plusieurs cas sont possibles suivant le nb d'atomes CF
+
+      IF (Lies_CF(IdAt0,0).ge.3) THEN
+         if (debug) WRITE(*,*) 'Cas tres simple,',IdAt0, &
+              ' li� a plus de 3 atomes'
+         IZm2=Lies_CF(IdAt0,1)
+         IZm3=Lies_CF(IdAt0,2)
+!     WRITE(IOOUT,*) 'Atome 2' , Izm2, Nom(Atome(Izm2))
+!     WRITE(IOOUT,*) 'Atome 3' ,Izm3, Nom(Atome(izm3))
+
+         Izm=2
+         CALL vecteur(IZm1,IZm2,x,y,z,vx1,vy1,vz1,norm1)
+!     write(*,11) n1,n2,norm1
+
+         ind_zmat(izm,1)=izm2
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=0
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm1
+         val_zmat(izm,2)=0.0
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm2)=.TRUE.
+
+         Izm=3
+         CALL vecteur(izm1,izm3,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+!     write(*,11) n1,n2,norm1,n3,val
+
+         ind_zmat(izm,1)=izm3
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=izm2
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm2
+         val_zmat(izm,2)=val
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm3)=.TRUE.
+
+         DO IdAtl=3,Lies_CF(IdAt0,0)
+            Izm4= Lies_CF(IdAt0,IdAtl)
+!     WRITE(IOOUT,*) 'Atome ',Izm+1,Izm4,Nom(Atome(Izm4)),Izm1,
+!     $Izm2,Izm3
+            Izm=Izm+1
+            Call AddLigne(Izm,Izm4,Izm1,Izm2,Izm3,ind_zmat,val_zmat, &
+                 x,y,z)
+            DejaFait(Izm4)=.TRUE.
+         END DO
+      END IF
+
+      IF (Lies_CF(Izm1,0).eq.2) THEN
+         if (debug) WRITE(*,*) 'Cas simple,',IdAt0, &
+              ' li� a 2 atomes'
+
+         IZm2=Lies_CF(IdAt0,1)
+         IZm3=Lies_CF(IdAt0,2)
+         Izm=2
+         CALL vecteur(IZm1,IZm2,x,y,z,vx1,vy1,vz1,norm1)
+!     write(*,11) n1,n2,norm1
+
+         ind_zmat(izm,1)=izm2
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=0
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm1
+         val_zmat(izm,2)=0.0
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm2)=.TRUE.
+
+         Izm=3
+
+         CALL vecteur(izm1,izm3,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1, &
+              vx2,vy2,vz2,norm2)
+
+!     write(*,11) n1,n2,norm1,n3,val
+
+         ind_zmat(izm,1)=izm3
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=izm2
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm2
+         val_zmat(izm,2)=val
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm3)=.TRUE.
+
+      END IF
+
+      IF (Lies_CF(Izm1,0).eq.1) THEN
+         if (debug) WRITE(*,*) 'Cas merdouille,',IdAt0, &
+              ' li� a 1 atome'
+
+         IZm2=Lies_CF(IdAt0,1)
+         Izm=2
+         CALL vecteur(IZm1,IZm2,x,y,z,vx1,vy1,vz1,norm1)
+!     write(*,11) n1,n2,norm1
+
+         ind_zmat(izm,1)=izm2
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=0
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm1
+         val_zmat(izm,2)=0.0
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm2)=.TRUE.
+
+!     Pour les autres atomes, on prend les atomes
+!     CF lie a l'tome CF lie a At0... en esperant
+!     qu'il en a !!!
+!     => il faudra voir le cas ou il n'en a pas !!!
+!     en attendant on rajoute le test...
+         IF (Lies_CF(Izm2,0).Eq.0) THEN
+            WRITE(*,*) "Je n'arrive pas a trouver les premiers"
+            WRITE(*,*) "atomes pour construire la molecule"
+            WRITE(*,*) "Atome central li� au plus a 1 atome",Izm1,izm2
+            WRITE(*,*) "Et atome 2 li� a rien... moi perdu"
+            STOP
+         END IF
+
+!     On ajoute les atomes lies a cet atome dans la liste a faire
+         Do iaf=1,Lies_CF(Izm2,0)
+            CAfaire(IndFin)=Lies_CF(Izm2,Iaf)
+            IndFin=IndFin+1
+         END DO
+         CAfaire(IndFin)=0
+         Izm3= Lies_CF(Izm2,1)
+         Izm=3
+         CALL vecteur(izm2,izm1,x,y,z,vx1,vy1,vz1,norm1)
+
+         CALL vecteur(izm2,izm3,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1, &
+              vx2,vy2,vz2,norm2)
+
+!     write(*,11) n1,n2,norm1,n3,val
+
+         ind_zmat(izm,1)=izm3
+         ind_zmat(izm,2)=izm2
+         ind_zmat(izm,3)=izm1
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm1
+         val_zmat(izm,2)=val
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm3)=.TRUE.
+
+!     je pense que ce qui suit est totalement inutile
+!     C     DO IdAtl=3,Lies_CF(IdAt0,0)
+!     C     Izm4= Lies_CF(IdAt0,IdAtl)
+!     C     Izm=Izm+1
+!     C     Call AddLigne(Izm,Izm4,Izm1,Izm2,Izm3,ind_zmat,val_zmat
+!     C     $,x,y,z)
+!     C     DejaFait(Izm4)=.TRUE.
+!     C     END DO
+      END IF
+
+!     on a cree la premiere couche autour du premier centre
+!     reste a finir les autres couches
+      IndAFaire=1
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+      Do WHILE (Cafaire(IndAFaire).ne.0)
+         IAt0=Cafaire(IndAfaire)
+         if (debug) WRITE(*,*) "IndAFaire,IAt0,Lies_CF(IAt0,0)", &
+              IndAFaire,IAt0,Lies_CF(IAt0,0)
+         if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+            IAti=Lies_CF(IAt0,1)
+!     WRITE(IOOUT,*) 'IAti:',IAti
+            IAtd=IAt0
+!     WRITE(IOOUT,*) 'IAtd:',IAtd
+            IAtv=Lies_CP(IAt0,1)
+!     WRITE(IOOUT,*) 'IAtv:',IAtv
+            IIAtdh=1
+            IAtdh=Lies_CF(IAtv,IIatdh)
+            DO WHILE (Iatdh.eq.IAt0)
+               IIatdh=IIatdh+1
+               IAtdh=Lies_CF(IAtv,IIatdh)
+            END DO
+            IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+!     WRITE(IOOUT,*) 'IAtdh:',IAtdh
+            IF (.NOT.DejaFait(IAti)) THEN
+               Izm=Izm+1
+               if (debug) WRITE(*,*) 'izm,IAti,IAtd,IAtv,IAtdh', &
+                    izm,IAti,IAtd,IAtv,IAtdh
+               Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh,ind_zmat,val_zmat &
+                    ,x,y,z)
+               DejaFait(IAti)=.TRUE.
+            END IF
+
+            CAfaire(IndFin)=Lies_CF(IAt0,1)
+            IndFin=IndFin+1
+!     Le traitement des autres est plus facile
+            IAtdh=Lies_CF(IAt0,1)
+            DO IAta=2,Lies_CF(IAt0,0)
+               IAtI=Lies_CF(IAt0,IAta)
+                     if (debug) WRITE(*,*) " Problem is here; IndFin:",I
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+
+               IF (.NOT.DejaFait(IAti)) THEN
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh,ind_zmat &
+                       ,val_zmat,x,y,z)
+                  DejaFait(IAti)=.TRUE.
+               END IF
+            END DO
+
+            CAfaire(IndFin)=0
+         END IF
+         IndAFaire=IndAFaire+1
+      END DO
+
+
+!     On a fini de creer la molecule autour du premier atome 'centre'
+!     Pour les autres c'est presque id... sauf que les axes sont deja fixes
+!     On pourrait imaginer de mettre des atomes fictifs pour redefinir des axes
+!     locaux... dans une autre version
+!     V2.0
+      NbAt0=NbAt0-1
+      DO I=1,NbAt0
+!     Boucle pour trouver celui qui a le plus d'atomes CF
+
+         IdAt0=0
+         VCF=0
+
+         DO ICAt=1,na
+            if ((Lies_CP(ICaT,0).eq.0).AND.(Lies_CF(ICAt,0).gt.VCF)) &
+                 THEN
+               IdAt0=ICat
+               VCF=Lies_CF(ICAt,0)
+            END IF
+         END DO
+         Lies_CP(IdAt0,0)=-1
+
+         IF (debug) WRITE(*,*) 'Adding fragment centered on ',IdAt0, &
+              LIAISONS(IdAt0,0)
+         IF (debug) WRITE(*,*) 'Center linked to ',Lies_CF(IdAt0,0), &
+              ' atoms'
+!     if (LIAISONS(IdAt0,0).EQ.0) goto 12345
+
+         if (debug) THEN
+            WRITE(IOOUT,*) 'LIAISONS tralala',nbcycle
+            DO IAt=1,na
+               WRITE(IOOUT,1003) iat,(LIAISONS(Iat,Jat),Jat=0,NMaxL)
+            END DO
+         END IF
+
+!     Boucle pour voir quel est l'atome du fragment precedent qui est le plus
+!     proche de celui ci
+!     Rq: si ce sont des cycles lies, il pourrait etre malin de rechercher
+!     a quoi il etait lie.
+         norm2=1.e6
+         Idx=0
+         DO ICAt=1,Izm
+            CALL vecteur(Idat0,ind_zmat(icat,1),x,y,z,vx1,vy1,vz1,norm1)
+            if (norm2.ge.norm1) THEN
+               norm2=norm1
+               Idx=Icat
+            END IF
+         END DO
+         IF (debug) WRITE(*,*) 'Link between fragments ',IdAt0, &
+              ind_zmat(Idx,1), ' -- Idx=',Idx
+
+!     on a l'indice... on va rajouter cet atome a la liste !
+         izm=izm+1
+         n1=ind_zmat(Idx,1)
+!     Petit probleme si Idx<=2
+         IF (Idx.EQ.1) THEN
+!     Pb non negligeable ...
+            IF (izm.ge.2) THEN
+               IAtv=ind_zmat(2,1)
+               IAtdh=ind_zmat(3,1)
+            ELSE
+               WRITE(*,*) '2 fragments, le 1er a moins de 2 atomes...'
+               WRITE(*,*) "J'ai merde... "
+               STOP
+            END IF
+         ELSEIF (Idx.EQ.2) THEN
+            IAtv=1
+            IF (izm.ge.2) THEN
+               IAtdh=ind_zmat(3,1)
+            ELSE
+               WRITE(*,*) '2 fragments, le 1er a moins de 2 atomes...'
+               WRITE(*,*) "J'ai merde... "
+               STOP
+            END IF
+         ELSE
+            IAtv=ind_zmat(Idx,2)
+            IAtdh=ind_zmat(Idx,3)
+         END IF
+
+!     WRITE(*,*) "Outchilou IAtv, IAtdh", IAtv, IAtdh,n1
+         CALL vecteur(n1,IdAt0,x,y,z,vx1,vy1,vz1,norm1)
+         CALL vecteur(n1,IAtv,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1, &
+              vx2,vy2,vz2,norm2)
+         if (debug) WRITE(*,*) 'Angle val:1',IdAt0,n1,IAtv,val
+         if ((abs(val).LE.10.).OR.(abs(pi-val).le.10.)) THEN
+            IAtv=IAtdh
+!     Ceci pose pb si Idx<=3... a traiter plus tard
+            IF (Idx.ge.3) THEN
+               IAtdh=ind_zmat(Idx,4)
+            ELSE
+               if (izm.ge.4) THEN
+                  IAtdh=4
+               ELSE
+                  WRITE(*,*) 'Pb Angle Val+idx=3+izm<=4'
+                  STOP
+               END IF
+            END IF
+         END IF
+         Call AddLigne(Izm,IdAt0,ind_zmat(Idx,1),IAtv,IAtdh, &
+              ind_zmat,val_zmat,x,y,z)
+
+
+         IndFin=1
+         IAtd=IdAt0
+         n1=IAtdh
+         IAtdh=IAtv
+         IAtv=ind_zmat(Idx,1)
+!     On ajoute les atomes lies a cet atome dans la liste a faire
+         Do iaf=1,Lies_CF(IdAt0,0)
+            IatI=Lies_CF(IdAt0,Iaf)
+!     We check that this atom is not the one that is the closest to
+!     the center atom
+            if (IAtv.Ne.IAtI) THEN
+               IF (debug) WRITE(*,*) 'Adding atom',IAtI, &
+                    'to CAFaire in pos',iaf
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+!     On les ajoute aussi dans la zmat
+               If (.NOT.DejaFait(IatI)) THEN
+                  izm=izm+1
+!     WRITE(*,*) "Outchili IAtv, IAtdh,IAtI", IAtv, IAtdh,IAtI
+                  CALL vecteur(IAtI,IAtD,x,y,z,vx1,vy1,vz1,norm1)
+                  CALL vecteur(IAtI,IAtv,x,y,z,vx2,vy2,vz2,norm2)
+                  val=angle(vx1,vy1,vz1,norm1, vx2,vy2,vz2,norm2)
+                  if (debug) WRITE(*,*) 'Angle val:2',IAtI,IAtD,IAtv,val
+                  if ((abs(val).LE.10.).OR.(abs(180.-abs(val)).le.10.)) &
+                       THEN
+                     Call AddLigne(Izm,IAtI,IAtv,IAtdh,n1, &
+                          ind_zmat,val_zmat,x,y,z)
+                  ELSE
+
+                     Call AddLigne(Izm,IAtI,IAtD,IAtv,IAtdh, &
+                          ind_zmat,val_zmat,x,y,z)
+                  END IF
+               END IF
+            END IF
+         END DO
+         CAfaire(IndFin)=0
+
+!     On traite le reste de ce fragment !!
+         IndAFaire=1
+         WRITE(IOOUT,*) CaFaire
+         Do WHILE (Cafaire(IndAFaire).ne.0)
+            IAt0=Cafaire(IndAfaire)
+            if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+               Itmp=1
+               IAti=Lies_CF(IAt0,Itmp)
+               DO WHILE (DejaFait(IAti).AND.(Itmp.Le.Lies_CF(IAt0,0)))
+                  Itmp=Itmp+1
+                  IAti=Lies_CF(IAt0,ITmp)
+               END DO
+               If (.NOT.DejaFait(Iati)) THEN
+                  IF (debug) WRITE(IOOUT,*) 'IAti:',IAti
+                  IAtd=IAt0
+                  IF (debug)     WRITE(IOOUT,*) 'IAtd:',IAtd
+                  IAtv=Lies_CP(IAt0,1)
+                  IF (debug)     WRITE(IOOUT,*) 'IAtv:',IAtv
+                  IIAtdh=1
+                  IAtdh=Lies_CF(IAtv,IIatdh)
+                  DO WHILE (Iatdh.eq.IAt0)
+                     IIatdh=IIatdh+1
+                     IAtdh=Lies_CF(IAtv,IIatdh)
+                  END DO
+                  IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+                  IF (debug) WRITE(IOOUT,*) 'IAtdh:',IAtdh
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                       ind_zmat,val_zmat,x,y,z)
+!     Le traitement des autres est plus facile
+                  IAtdh=Lies_CF(IAt0,ITmp)
+                  DO IAta=ITmp+1,Lies_CF(IAt0,0)
+                     IAtI=Lies_CF(IAt0,IAta)
+                     If (.NOT.DejaFait(IAtI)) THEN
+                        Izm=Izm+1
+                        Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                             ind_zmat,val_zmat,x,y,z)
+                     END IF
+                  END DO
+               END IF
+
+!     On ajoute les atomes lies a cet atome dans la liste a faire
+               Do iaf=1,Lies_CF(IAt0,0)
+                  CAfaire(IndFin)=Lies_CF(IAt0,Iaf)
+                  IndFin=IndFin+1
+               END DO
+               CAfaire(IndFin)=0
+            END IF
+            IndAFaire=IndAFaire+1
+         END DO
+12345    CONTINUE
+      END DO
+
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+      END IF
+
+
+
+      if (debug) WRITE(*,*) "====================== Exiting Calc_zmat ==================="
+
+    END SUBROUTINE Calc_Zmat
+

Property changes on: src/Calc_zmat.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/EgradPath.f90
===================================================================
--- src/EgradPath.f90	(revision 0)
+++ src/EgradPath.f90	(revision 1)
@@ -0,0 +1,701 @@
+SUBROUTINE EGradPath(Iopt,Flag_Opt_Geom)
+
+  ! This subroutine calculates the energy+gradient for all points of
+  ! the path
+
+  use Path_module, only : ProgExe, NCoord, PROG, Nat, NGeomF, Coord, IntCoordF, &
+       IndZmat, XyzGeomF, Atome, Order, OrderInv, Latr, FrozAtoms, &
+       Grad, Energies, renum, dzdc, massat, Pi, NCART, OptReac, &
+       OptProd, IntCoordI, GeomOld_all, AtName, Unit
+  ! GeomOld_all(NGeomF,NCoord), BTransInv (3*Nat,NCoord): used for Baker case
+  use Io_module
+
+  IMPLICIT NONE
+
+  INTEGER(KINT), INTENT(IN) :: Iopt
+  LOGICAL, INTENT(IN) :: Flag_Opt_Geom
+
+  INTEGER(KINT) :: IGeom,IGeom0,IGeomF
+  CHARACTER(LCHARS) :: Line,FileInp,RunCommand
+  CHARACTER(SCHARS) :: Line2
+
+  REAL(KREAL), ALLOCATABLE :: GeomTmp(:),GradTmp(:) ! NCoord
+  REAL(KREAL), ALLOCATABLE :: GradCart(:) ! 3*Nat
+  REAL(KREAL), ALLOCATABLE :: PathCart(:,:) ! (3*Nat,NGeomF)
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  REAL(KREAL), ALLOCATABLE :: x_k(:), y_k(:), z_k(:)
+  REAL(KREAL), ALLOCATABLE :: GeomCart(:,:) !(Nat,3)
+  REAL(KREAL), ALLOCATABLE :: GeomOld_dummy(:),GeomCart_old_dummy(:,:)
+  REAL(KREAL) :: E
+  LOGICAL :: Debug
+  LOGICAL, SAVE :: First=.TRUE.
+
+  INTEGER(KINT) :: I, Iat, IBeg, Idx
+  REAL(KREAL) :: RTmp1, RTmp2, RTmp3
+  INTEGER(KINT) :: Itmp1, ITmp2
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('EGradPath')
+
+  if (debug) Call header("Entering EgradPath")
+
+  ALLOCATE(GeomTmp(NCoord))
+  ALLOCATE(x(Nat),y(Nat),z(Nat))
+  ALLOCATE(x_k(Nat),y_k(Nat),z_k(Nat))
+  ALLOCATE(GeomOld_dummy(NCoord))
+  ALLOCATE(GeomCart_old_dummy(Nat,3))
+
+
+  IF (RunMode=="PARA") THEN ! matches at L315
+
+     ALLOCATE(GradCart(3*Nat),PathCart(3*Nat,NGeomF))
+
+
+     SELECT CASE(Prog)
+     CASE ("VASP")
+        ! We will use the NEB routine of VASP to get all forces at once on Para8 queue
+
+        ! First, we create all the POSCAR into the 0x directories
+
+        ! With RunMode="Para" one cannot optimize reactants or products (due to Vasp constraints)
+        ! so this has been done beforehand :-)
+        IGeom0=2
+        IGeomF=NGeomF-1
+        PathCart=0.d0
+
+        IF (First) THEN
+           ! For the first iteration, we do write a POSCAR into 00 and 0Final
+           ! Vasp needs it !
+           First=.FALSE.
+           IGeom0=1
+           IGeomF=NGeomF
+        END IF
+
+        Line2="00"
+        DO IGeom=IGeom0,IGeomF
+
+           ! NOTE THAT HERE IGeom0 (IGeomF) IS NOT 1 (NGeomF) FOR NON-FIRST OPTIMIZATION.
+           ! THIS WILL HAVE EFFECT ON XyzGeomF UPDATE IN BAKER CASE.
+           WRITE(Line,'(I5)') IGeom-1
+           Idx=2-Len_TRIM(ADJUSTL(Line))
+           FileInp=Line2(1:Idx) // TRIM(AdjustL(Line)) // "/POSCAR"
+           if (debug) WRITE(*,*) "Creating ",TRIM(FileInp)
+           OPEN(IOTMP,File=TRIM(FileInp))
+
+           WRITE(Line,"('Geometry ',I3,'/',I3,' for iteration ',I3)") Igeom,NgeomF,Iopt
+           if (debug) WRITE(*,*) Line
+           SELECT CASE(Coord)
+           CASE ('ZMAT')
+              GeomTmp=IntCoordF(IGeom,:)
+              Call Int2cart(nat,indzmat,geomTmp,PathCart(1,IGeom))
+           CASE ('BAKER')
+              GeomTmp=IntCoordF(IGeom,:)
+              !
+              IF (IOpt .EQ. 0) THEN
+                 ! EgradPath(...) is called only after the call of PathCreate(...)
+                 ! and in PathCreate, IF (MOD(IOpt,IReparam).EQ.0) (which is always 
+                 ! true if IOpt==0), THEN ExtraPol_baker(...) is called.
+                 ! In ExtraPol_baker(...), XyzGeomF(...) is calculated upon converting
+                 ! the interpolated internal coordinates into cartesian coordinates.
+                 ! Thus here we don't need to reconvert the internal coordinates again
+                 ! to the cartesian coordinates. 
+                 DO I=1,Nat
+                    PathCart(3*I-2,IGeom) = XyzGeomF(IGeom,1,I)
+                    PathCart(3*I-1,IGeom) = XyzGeomF(IGeom,2,I)
+                    PathCart(3*I,IGeom) = XyzGeomF(IGeom,3,I)
+                 END DO
+              ELSE
+                 ! XyzGeomF(NGeomF,3,Nat).
+                 x_k(:) = XyzGeomF(IGeom,1,:)
+                 y_k(:) = XyzGeomF(IGeom,2,:)
+                 z_k(:) = XyzGeomF(IGeom,3,:)
+
+                 !Call ConvertBakerInternal_cart(GeomOld_all(IGeom,:),IntCoordI(IGeom,:), &
+                 !                               x_k,y_k,z_k,x,y,z)
+                 ! PathCart(3*Nat,NGeomF)
+                 DO I=1,Nat
+                    PathCart(3*I-2,IGeom) = x(I)
+                    PathCart(3*I-1,IGeom) = y(I)
+                    PathCart(3*I,IGeom) = z(I)
+                 END DO
+
+                 XyzGeomF(IGeom,1,:)=x(:)
+                 XyzGeomF(IGeom,2,:)=y(:)
+                 XyzGeomF(IGeom,3,:)=z(:)
+              END IF
+           CASE ('MIXED')
+              GeomTmp=IntCoordF(IGeom,:)
+              Call Mixed2cart(nat,indzmat,geomTmp,PathCart(1,IGeom))
+           CASE ('CART','HYBRID')
+!!! CAUTION : PFL 29.AUG.2008 ->
+              ! XyzGeomI/F stored in (NGeomI/F,3,Nat) and NOT (NGeomI/F,Nat,3)
+              ! This should be made  consistent !!!!!!!!!!!!!!!
+              GeomTmp=Reshape(reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+!!! <- CAUTION : PFL 29.AUG.2008 
+            PathCart(:,IGeom)=GeomTmp
+          CASE DEFAULT
+            WRITE(*,*) "Coord=",TRIM(Coord)," not recognized. EgradPath L134. STOP"
+            STOP
+        END SELECT
+
+           IF (debug) THEN
+              WRITE(*,*) "Calling PrintGeomVasp for geom",Igeom
+              Call PrintGeom(Line,Nat,NCoord,PathCart(1,Igeom),Coord,IoOut,Atome,Order,OrderInv,IndZmat)
+           END IF
+           Call PrintGeomVasp(Line,PathCart(1,IGeom),Latr,FrozAtoms,IoTmp)
+
+           !           IF (debug) THEN 
+           !              WRITE(*,*) 'DBG MAin, COORD=',TRIM(COORD), ' Igeom=',IGeom
+           !              WRITE(*,'(3(1X,F9.4))') Reshape(Reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+           !              WRITE(*,'(3(1X,F9.4))') Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+           !              DO Iat=1,Nat
+           !                 WRITE(*,*) XyzGeomF(IGeom,1:3,Iat)
+           !              END DO
+           !           END IF
+
+           IF (debug) THEN 
+              WRITE(*,*) 'DBG MAin, COORD=',TRIM(COORD),' Igeom=',IGeom,' Iopt=',Iopt
+              WRITE(*,*) GeomTmp(1:min(NCoord,9))
+           END IF
+
+           CLOSE(IOTMP)
+        END DO ! matches DO IGeom=IGeom0,IGeomF
+
+!!!!!!!!!!!!!!!!!!!
+!
+        ! We calculate the energies and gradients
+!
+
+        RunCommand=Trim(ProgExe)
+        if (debug) WRITE(*,*) "Launching:", TRIM(RunCommand)
+        call system(RunCommand)
+        if (debug) WRITE(*,*) "Back from:", TRIM(RunCommand)
+
+!!!!!!!!!!!!!
+!
+        ! We read the gradients and energies
+!
+        IGeom0=2
+        IGeomF=NGeomF-1
+        Grad=0.d0
+
+        Line2="00"
+        DO IGeom=IGeom0,IGeomF
+           WRITE(Line,'(I5)') IGeom-1
+           Idx=2-Len_TRIM(ADJUSTL(Line))
+           FileInp=Line2(1:Idx) // TRIM(AdjustL(Line)) // "/OUTCAR"
+           if (debug) WRITE(*,*) "Reading E and forces from ", TRIM(FileInp)
+           OPEN(IOTMP,File=TRIM(FileInp))
+
+           ! We first search for the forces
+           READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           ! We search for the  last part of the OUTCAR file, after wavefunction is converged
+           DO WHILE (INDEX(LINE,'EDIFF is reached')==0)
+              READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           END DO
+           READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           DO WHILE (INDEX(LINE,'TOTEN')==0)
+              READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           END DO
+           Line=Line(26:)
+           READ(LINE,*) E
+           if (debug) WRITE(*,'(1X,A,I5,A,F20.6)') "DBG Egrad_VASP E(",Igeom,")=",E
+           Energies(Igeom)=E
+
+           ! We search for the forces
+           DO WHILE (INDEX(LINE,'TOTAL-FORCE')==0)
+              READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           END DO
+           READ(IOTMP,'(A)',END=999,ERR=999) LINE
+           DO I=1,Nat
+              Iat=I
+              IF (renum) Iat=Order(I)
+              READ(IOTMP,*,END=999,ERR=999)  Rtmp1,RTmp2,RTmp3,GradCart(3*Iat-2:3*Iat)
+           END DO
+
+           Close(IoTmp)
+
+           IF (debug) THEN
+              WRITE(*,*) "DBG EGRAD_VASP - GradCart=FORCES - original order"
+              DO I=1,Nat
+                 Iat=Order(I)
+                 WRITE(*,'(1X,I5,3(1X,F20.6))') I,GradCart(3*Iat-2:3*Iat)
+              END DO
+              WRITE(*,*) "DBG EGRAD_VASP - GradCart=FORCES - internal order"
+              DO I=1,Nat
+                 Iat=Order(I)
+                 WRITE(*,'(3(1X,I5),3(1X,F20.6))') I,Iat,OrderInv(I),GradCart(3*I-2:3*I)
+              END DO
+           END IF
+
+           ! VASP gives the Forces in eV/Angstrom, so we convert it into the
+           ! gradient in ua/Angstrom
+           GradCart=-1.0d0*ev2Au*GradCart
+
+           ! We convert it into the right coordinate system
+           ! This should be put into a subroutine (because it is also in egradient)
+           SELECT CASE (COORD)
+           CASE ("ZMAT")
+              ALLOCATE(GradTmp(3*Nat))
+              if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_int"
+              CALL CalcBmat_int(nat, PathCart(1:3*Nat,Igeom), indzmat, dzdc, massat,atome)
+              CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+
+              Grad(IGeom,1)=GradTmp(4)
+              Grad(IGeom,2)=GradTmp(7)
+              ! We might have troubles whith angles that are not in the [0:pi] range because,
+              ! when converted to catesian coord, they do appear in the [0:Pi] range to gaussian...
+              ! so that the derivative is not good, and a multiplicative factor should be added...
+              !
+              ! This in fact should be taken care of in calc Bmat ...
+              !
+              IF ((IntCoordF(Igeom,3).LE.0).OR.(IntCoordF(Igeom,3).GE.Pi)) THEN
+                 Grad(IGeom,3)=-1.0d0*GradTmp(8)
+              ELSE
+                 Grad(IGeom,3)=GradTmp(8)
+              END IF
+              Idx=4
+              DO I=4,Nat
+                 Grad(IGeom,Idx)=GradTmp(3*i-2)
+                 Grad(IGeom,Idx+1)=GradTmp(3*i-1)
+                 Grad(IGeom,Idx+2)=GradTmp(3*i)
+                 Idx=Idx+3
+              END DO
+              DEALLOCATE(GradTmp)
+              ! We have the gradient in Cartesian coordinates... which is ok for COORD=Cart, Hybrid
+              ! but we have to convert it into internal coordinates if COORD=Baker	    
+           CASE ('BAKER')
+              ALLOCATE(GradTmp(3*Nat))
+              GradTmp=0.d0
+              ! Below is to be corrected.
+              ! This is inside 'IF ((PROG=="VASP").AND.(RunMode=="PARA")) THEN'
+              !DO I=1, 3*Nat
+              ! here GradTmp and Grad are gradients in Baker coordinates
+              ! Not implemented  IF ((PROG=="VASP").AND.(RunMode=="PARA"))
+              ! GradTmp(:) = GradTmp(:) + BTransInv(:,I)*GradCart(I)
+              !END DO
+              Grad(IGeom,:) = GradTmp
+              DEALLOCATE(GradTmp)
+           CASE ('MIXED')
+              ALLOCATE(GradTmp(3*Nat))
+              if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_mixed"
+              CALL CalcBMat_mixed (nat,PathCart(1:3*Nat,IGeom), indzmat, dzdc, massat,atome)
+              CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+              DO I=1,Nat
+                 WRITE(*,'(1X,3(1X,F10.5))') GradTmp(3*I-2:3*I)
+              END DO
+              SELECT CASE (NCART)
+              CASE (1)
+                 Grad(IGeom,1:3)=GradTmp(1:3)
+                 Grad(IGeom,4)=GradTmp(4)
+                 Grad(IGeom,5)=GradTmp(7)
+                 Grad(IGeom,6)=GradTmp(8)
+                 Idx=7
+                 IBeg=4
+              CASE(2)
+                 Grad(IGeom,1:3)=GradTmp(1:3)
+                 Grad(IGeom,4:6)=GradTmp(4:6)
+                 Grad(IGeom,7)=GradTmp(7)
+                 Grad(IGeom,8)=GradTmp(8)
+                 Idx=9
+                 IBeg=4
+              CASE DEFAULT
+                 Idx=1
+                 IBeg=1
+              END SELECT
+              DO I=IBeg,Nat
+                 Grad(IGeom,Idx)=GradTmp(3*i-2)
+                 Grad(IGeom,Idx+1)=GradTmp(3*i-1)
+                 Grad(IGeom,Idx+2)=GradTmp(3*i)
+                 Idx=Idx+3
+              END DO
+              DEALLOCATE(GradTmp)
+           CASE ("CART","HYBRID")
+              Grad(IGeom,:)=GradCart
+           CASE DEFAULT
+              WRITE(*,*) "Coord=",AdjustL(Trim(COORD))," not yet implemented in EgradPath.L257.STOP"
+              STOP
+           END SELECT
+
+           IF (debug) THEN
+              Line='DBG Path, GradTmp'
+              Call PrintGeom(Line,Nat,NCoord,reshape(GRad(Igeom,1:NCoord),(/Ncoord/)),Coord,6,Atome,Order,OrderInv,IndZmat)
+           END IF
+        END DO ! matches  DO IGeom=IGeom0,IGeomF
+
+     CASE ("GAUSSIAN")
+        ! We create the output files.
+        IGeom0=2
+        IGeomF=NGeomF-1
+        PathCart=0.d0
+
+        If (OptReac) IGeom0=1
+        If (OptProd) IGeomF=NGeomF
+
+        OPEN(IOTMP2,File="ListJob",STATUS="REPLACE")
+
+        DO Igeom=IGeom0,IGeomF
+           ! We first convert the geometry into a Cartesian one
+           SELECT CASE(Coord)
+           CASE ('ZMAT')
+              GeomTmp=IntCoordF(IGeom,:)
+              Call Int2cart(nat,indzmat,geomTmp,PathCart(1,IGeom))
+           CASE ('BAKER')
+              GeomTmp=IntCoordF(IGeom,:)
+              !
+              IF (IOpt .EQ. 0) THEN
+                 ! EgradPath(...) is called only after the call of PathCreate(...)
+                 ! and in PathCreate, IF (MOD(IOpt,IReparam).EQ.0) (which is always 
+                 ! true if IOpt==0), THEN ExtraPol_baker(...) is called.
+                 ! In ExtraPol_baker(...), XyzGeomF(...) is calculated upon converting
+                 ! the interpolated internal coordinates into cartesian coordinates.
+                 ! Thus here we don't need to reconvert the internal coordinates again
+                 ! to the cartesian coordinates. 
+                 DO I=1,Nat
+                    PathCart(3*I-2,IGeom) = XyzGeomF(IGeom,1,I)
+                    PathCart(3*I-1,IGeom) = XyzGeomF(IGeom,2,I)
+                    PathCart(3*I,IGeom) = XyzGeomF(IGeom,3,I)
+                 END DO
+              ELSE
+
+                 ! XyzGeomF(NGeomF,3,Nat).
+                 x_k(:) = XyzGeomF(IGeom,1,:)
+                 y_k(:) = XyzGeomF(IGeom,2,:)
+                 z_k(:) = XyzGeomF(IGeom,3,:)
+
+                 !Call ConvertBakerInternal_cart(GeomOld_all(IGeom,:),IntCoordI(IGeom,:), &
+                 !                               x_k,y_k,z_k,x,y,z)
+                 ! PathCart(3*Nat,NGeomF)
+                 DO I=1,Nat
+                    PathCart(3*I-2,IGeom) = x(I)
+                    PathCart(3*I-1,IGeom) = y(I)
+                    PathCart(3*I,IGeom) = z(I)
+                 END DO
+
+                 XyzGeomF(IGeom,1,:)=x(:)
+                 XyzGeomF(IGeom,2,:)=y(:)
+                 XyzGeomF(IGeom,3,:)=z(:)
+              END IF
+           CASE ('MIXED')
+              GeomTmp=IntCoordF(IGeom,:)
+              Call Mixed2cart(nat,indzmat,geomTmp,PathCart(1,IGeom))
+           CASE ('CART','HYBRID')
+!!! CAUTION : PFL 29.AUG.2008 ->
+              ! XyzGeomI/F stored in (NGeomI/F,3,Nat) and NOT (NGeomI/F,Nat,3)
+              ! This should be made  consistent !!!!!!!!!!!!!!!
+              GeomTmp=Reshape(reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+!!! <- CAUTION : PFL 29.AUG.2008 
+              PathCart(:,IGeom)=GeomTmp
+           CASE DEFAULT
+              WRITE(*,*) "Coord=",TRIM(Coord)," not recognized. EgradPath L75.STOP"
+              STOP
+           END SELECT
+
+           WRITE(Line,'(I5)') IGeom
+           FileInp="PathPar_" // TRIM(ADJUSTL(Line)) // ".com"
+           WRITE(IOTMP2,'(1X,A)') TRIM(FileInp)
+
+           OPEN(IOTMP,File=TRIM(FileInp))
+           Current => Gauss_root
+           DO WHILE (ASSOCIATED(Current%next))
+              WRITE(IOTMP,'(1X,A)') Trim(current%line)
+              WRITE(*,'(1X,A)') Trim(current%line)
+              Current => current%next
+           END DO
+
+           WRITE(IOTMP,*) 
+
+           Current => Gauss_comment
+           DO WHILE (ASSOCIATED(Current%next))
+              WRITE(IOTMP,'(1X,A)') Trim(current%line)
+              Current => current%next
+           END DO
+           !  WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)"),Igeom,NgeomF,Iopt
+
+           WRITE(IOTMP,*) 
+           WRITE(IOTMP,*) Trim(Gauss_charge)
+
+           DO I=1,Nat
+              If (renum) THEN
+                 Iat=Order(I)
+                 WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(I)) &
+                      ,PathCart(Iat,IGeom),PathCart(Iat+Nat,IGeom),PathCart(Iat+2*Nat,IGeom)  &
+                      ,TRIM(Gauss_Paste(I))
+              ELSE
+                 Iat=OrderInv(I)
+                 WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)) &
+                 ,PathCart(Iat,IGeom),PathCart(Iat+Nat,IGeom),PathCart(Iat+2*Nat,IGeom)  &
+                      , TRIM(Gauss_Paste(Iat))
+              END IF
+           END DO
+
+           WRITE(IOTMP,*) 
+
+           Current => Gauss_End
+           DO WHILE (ASSOCIATED(Current%next))
+              WRITE(IOTMP,'(1X,A)') Trim(current%line)
+              Current => current%next
+           END DO
+
+           WRITE(IOTMP,*) 
+           CLOSE(IOTMP)
+
+        END DO
+
+        Close(IOTMP2)
+
+! We launch the parallel calculations
+
+        Line=Trim(ProgExe) 
+        IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(Line)
+        call system(Line)
+        IF (DEBUG) WRITE(*,*)'Back from RunCommand:'
+
+! We read energies and gradients from the log files
+
+        DO IGeom=IGeom0,IGeomF
+           WRITE(Line,'(I5)') IGeom
+           FileInp="PathPar_" // TRIM(ADJUSTL(Line)) // ".log"
+           OPEN(IOTMP,File=TRIM(FileInp))
+
+  ! We first search for the forces
+  READ(IOTMP,'(A)') LINE
+  DO WHILE (INDEX(LINE,'Forces (Hartrees/Bohr)')==0)
+     ! here, we have a problem, because there are so many ways to write E for Gaussian :-)
+     ! but we do not really need E except if we want to weight the different points
+     ! on the path... that will be done later :-)
+     ! And I should use ConvGaussXmol ...
+! PFL 3rd Jan 2008 ->
+! I have finally upgraded the energy reading phase so that it should be able to read 
+! many formats corresponding to HF, DFT, MP2, AM1, PM3, ONIOM with or w/o PCM
+!
+     
+! For MP2, energy is after the last =
+     IF ((Line(2:9)=="E2 =    ")) THEN
+	    Itmp1=Index(LINE,"=",BACK=.TRUE.)+1
+		READ(LINE(Itmp1:),*) e
+      END IF
+! For other methods, it is after the first =
+     IF ((LINE(2:9)=='Energy= ').OR.(Line(2:9)=="SCF Done").OR.(Line(2:9)=="ONIOM: e") &
+	 .OR.(Line(2:9)==" with al") &
+         .OR.(Line(2:31)=="Counterpoise: corrected energy")) THEN
+	    Itmp1=Index(LINE,"=")+1
+		READ(LINE(Itmp1:),*) e
+	END IF
+! <- PFL 3 Jan 2008
+     READ(IOTMP,'(A)') LINE
+  END DO
+  READ(IOTMP,'(A)') LINE
+  READ(IOTMP,'(A)') LINE
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     READ(IOTMP,*)  Itmp1,ITmp2, GradCart(3*Iat-2:3*Iat)
+  END DO
+
+! Gaussian gives the Forces in ua/a0, so we convert it into the 
+! gradient in ua/Angstrom 
+  gradCart=-1.0d0*Unit*gradCart
+
+  CLOSE(IOTMP)
+  Energies(IGeom)=E
+  
+           ! We convert it into the right coordinate system
+           ! This should be put into a subroutine (because it is also in egradient)
+           SELECT CASE (COORD)
+           CASE ("ZMAT")
+              ALLOCATE(GradTmp(3*Nat))
+              if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_int"
+              CALL CalcBMat_int (nat, PathCart(1:3*Nat,Igeom), indzmat, dzdc, massat,atome)
+              CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+
+              Grad(IGeom,1)=GradTmp(4)
+              Grad(IGeom,2)=GradTmp(7)
+              ! We might have troubles whith angles that are not in the [0:pi] range because,
+              ! when converted to catesian coord, they do appear in the [0:Pi] range to gaussian...
+              ! so that the derivative is not good, and a multiplicative factor should be added...
+              !
+              ! This in fact should be taken care of in B-mat calculation...
+              !
+              IF ((IntCoordF(Igeom,3).LE.0).OR.(IntCoordF(Igeom,3).GE.Pi)) THEN
+                 Grad(IGeom,3)=-1.0d0*GradTmp(8)
+              ELSE
+                 Grad(IGeom,3)=GradTmp(8)
+              END IF
+              Idx=4
+              DO I=4,Nat
+                 Grad(IGeom,Idx)=GradTmp(3*i-2)
+                 Grad(IGeom,Idx+1)=GradTmp(3*i-1)
+                 Grad(IGeom,Idx+2)=GradTmp(3*i)
+                 Idx=Idx+3
+              END DO
+              DEALLOCATE(GradTmp)
+              ! We have the gradient in Cartesian coordinates... which is ok for COORD=Cart, Hybrid
+              ! but we have to convert it into internal coordinates if COORD=Baker	    
+           CASE ('BAKER')
+              ALLOCATE(GradTmp(3*Nat))
+              GradTmp=0.d0
+              ! Below is to be corrected.
+              ! This is inside 'IF ((PROG=="VASP").AND.(RunMode=="PARA")) THEN'
+              !DO I=1, 3*Nat
+              ! here GradTmp and Grad are gradients in Baker coordinates
+              ! Not implemented  IF ((PROG=="VASP").AND.(RunMode=="PARA"))
+              ! GradTmp(:) = GradTmp(:) + BTransInv(:,I)*GradCart(I)
+              !END DO
+              Grad(IGeom,:) = GradTmp
+              DEALLOCATE(GradTmp)
+           CASE ('MIXED')
+              ALLOCATE(GradTmp(3*Nat))
+              if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_mixed"
+              CALL CalcBMat_mixed(nat,PathCart(1:3*Nat,IGeom), indzmat, dzdc, massat,atome)
+              CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+              DO I=1,Nat
+                 WRITE(*,'(1X,3(1X,F10.5))') GradTmp(3*I-2:3*I)
+              END DO
+              SELECT CASE (NCART)
+              CASE (1)
+                 Grad(IGeom,1:3)=GradTmp(1:3)
+                 Grad(IGeom,4)=GradTmp(4)
+                 Grad(IGeom,5)=GradTmp(7)
+                 Grad(IGeom,6)=GradTmp(8)
+                 Idx=7
+                 IBeg=4
+              CASE(2)
+                 Grad(IGeom,1:3)=GradTmp(1:3)
+                 Grad(IGeom,4:6)=GradTmp(4:6)
+                 Grad(IGeom,7)=GradTmp(7)
+                 Grad(IGeom,8)=GradTmp(8)
+                 Idx=9
+                 IBeg=4
+              CASE DEFAULT
+                 Idx=1
+                 IBeg=1
+              END SELECT
+              DO I=IBeg,Nat
+                 Grad(IGeom,Idx)=GradTmp(3*i-2)
+                 Grad(IGeom,Idx+1)=GradTmp(3*i-1)
+                 Grad(IGeom,Idx+2)=GradTmp(3*i)
+                 Idx=Idx+3
+              END DO
+              DEALLOCATE(GradTmp)
+           CASE ("CART","HYBRID")
+              Grad(IGeom,:)=GradCart
+           CASE DEFAULT
+              WRITE(*,*) "Coord=",AdjustL(Trim(COORD))," not yet implemented in EgradPath.L257.STOP"
+              STOP
+           END SELECT
+
+           IF (debug) THEN
+              Line='DBG Path, GradTmp'
+              Call PrintGeom(Line,Nat,NCoord,reshape(GRad(Igeom,1:NCoord),(/Ncoord/)),Coord,6,Atome,Order,OrderInv,IndZmat)
+           END IF
+
+        END DO
+
+     CASE DEFAULT
+        WRITE(*,*) "Prog=",TRIM(Prog)," not yet supported for Para mode."
+        STOP
+     END SELECT
+
+     DEALLOCATE(GradCart,PathCart)
+
+  ELSE ! matches IF (RunMode=="PARA") THEN
+ ! We will launch all calculations sequentially
+     ALLOCATE(GradTmp(NCoord))
+     GeomOld_dummy=0.d0 ! Internal coordinates
+     GeomCart_old_dummy=0.d0
+     ! We have the new path, we calculate its energy and gradient
+     IGeom0=2
+     IGeomF=NGeomF-1
+     IF (OptReac) IGeom0=1
+     IF (OptProd) IGeomF=NGeomF
+     ALLOCATE(GeomCart(Nat,3))
+
+     DO IGeom=IGeom0,IGeomF
+        WRITE(Line,"('Geometry ',I3,'/',I3,' for iteration ',I3)") Igeom,NgeomF,Iopt
+        if (debug) WRITE(*,*) Line
+        SELECT CASE(Coord)
+        CASE ('ZMAT','MIXED')
+           GeomTmp=IntCoordF(IGeom,:)
+        CASE ('BAKER')
+           GeomTmp=IntCoordF(IGeom,:)
+        CASE ('CART','HYBRID')
+!!! CAUTION : PFL 29.AUG.2008 ->
+           ! XyzGeomI/F stored in (NGeomI/F,3,Nat) and NOT (NGeomI/F,Nat,3)
+           ! This should be made  consistent !!!!!!!!!!!!!!!
+           GeomTmp=Reshape(reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+           !           GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+!!! <- CAUTION : PFL 29.AUG.2008
+        CASE DEFAULT
+           WRITE(*,*) "Coord=",TRIM(Coord)," not recognized in EgradPath. L299"
+           STOP
+        END SELECT
+
+        !if (debug) WRITE(*,*) "Calling PrintGeom"
+        !Call PrintGeom(Line,Nat,NCoord,GeomTmp,Coord,IoOut,Atome,Order,OrderInv,IndZmat)
+
+        !           IF (debug) THEN 
+        !              WRITE(*,*) 'DBG Main, COORD=',TRIM(COORD), ' Igeom=',IGeom
+        !              WRITE(*,'(3(1X,F9.4))') Reshape(Reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+        !              WRITE(*,'(3(1X,F9.4))') Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+        !              DO Iat=1,Nat
+        !                 WRITE(*,*) XyzGeomF(IGeom,1:3,Iat)
+        !              END DO
+        !           END IF
+
+        IF (debug) THEN 
+           WRITE(*,*) 'DBG Main, COORD=',TRIM(COORD),' IGeom=',IGeom,' Iopt=',Iopt
+           WRITE(*,*) GeomTmp(1:min(NCoord,12))
+        END IF
+
+        GeomCart=0.d0
+        IF(IOpt .EQ. 1) Then
+           Print *, 'GeomTmp='
+           WRITE(*,'(12(1X,F6.3))') GeomTmp
+           Print *, 'GeomCart='
+           WRITE(*,'(12(1X,F6.3))') GeomCart
+	    END IF
+		
+		IF (COORD.EQ.'BAKER') THEN
+		   ! GradTmp is gradient and calculated in Egrad.F, INTENT(OUT).
+		   ! GeomCart has INTENT(OUT)
+		   Call EGrad_baker(E,GeomTmp,GradTmp,NCoord,IGeom,IOpt,GeomCart,Flag_Opt_Geom, &
+		              GeomOld_dummy,GeomCart_old_dummy)
+		ELSE
+		   Call EGrad(E,GeomTmp,GradTmp,NCoord,IGeom,IOpt,GeomCart,Flag_Opt_Geom) !GeomTmp=IntCoordF(IGeom,:)
+        END IF
+
+		! Egrad calls ConvertBakerInternal_cart to convert GeomTmp=IntCoordF(IGeom,:) into 
+		! GeomCart (Cartesian Coordinates) so that energy and gradients can be calculated 
+		! for each geometry.
+        XyzGeomF(IGeom,1,:)=GeomCart(:,1)
+        XyzGeomF(IGeom,2,:)=GeomCart(:,2)
+        XyzGeomF(IGeom,3,:)=GeomCart(:,3)
+			
+        Energies(IGeom)=E
+
+        if (debug) THEN
+           Line='DBG Path, GradTmp'
+           Call PrintGeom(Line,Nat,NCoord,GRadTmp,Coord,6,Atome,Order,OrderInv,IndZmat)
+        END IF
+        Grad(IGeom,:)=GradTmp
+     END DO ! matches DO IGeom=IGeom0,IGeomF
+     DEALLOCATE(GradTmp,GeomCart)
+  END IF ! matches IF (RunMode=="PARA") THEN AFTER ELSE
+
+  DEALLOCATE(GeomTmp)
+  DEALLOCATE(x,y,z)
+  DEALLOCATE(x_k,y_k,z_k)
+  DEALLOCATE(GeomOld_dummy,GeomCart_old_dummy)
+  if (debug) Call header('Exiting EgradPath')
+  RETURN
+999 WRITE(*,*) "EgradPath : We should not be here !"
+  STOP
+
+END SUBROUTINE EGRADPATH
Index: src/Path_module.f90
===================================================================
--- src/Path_module.f90	(revision 0)
+++ src/Path_module.f90	(revision 1)
@@ -0,0 +1,248 @@
+MODULE Path_module
+! This module contains most of the variables needed for the path
+
+  use VarTypes
+
+  IMPLICIT NONE
+
+  SAVE
+
+  INTEGER(KINT), PARAMETER :: NMaxL=21
+  INTEGER(KINT), PARAMETER :: Max_Z=86
+  INTEGER(KINT), PARAMETER :: MaxFroz=100
+  REAL(KREAL), PARAMETER :: a0=0.529177249d0
+  REAL(KREAL), PARAMETER :: Unit=1.d0/a0
+  REAL(KREAL), PARAMETER :: au2kcal=627.509608d0
+  REAL(KREAL) :: Pi
+
+ ! Frozen contains the indices of frozen atoms
+  INTEGER(KINT),ALLOCATABLE :: Frozen(:) !Nat
+ ! Cart contains the indices of atoms described in cartesian coords
+  INTEGER(KINT),ALLOCATABLE :: Cart(:) !Nat
+! intFroz is the number of internal coord frozen
+! NFroz the number of frozen atoms
+! Ncart the number of  atoms described in cartesian coords
+  INTEGER(KINT) :: IntFroz, NFroz, NCart
+! FrozAtoms is true for a frozen atom, false else.
+  LOGICAL, ALLOCATABLE :: FrozAtoms(:)  !! Nat
+! Number of Primitives (mainly for Baker coordinates)
+  INTEGER(KINT) :: NPrim
+! Nat number of atoms
+  INTEGER(KINT) :: Nat
+! NGeomI number of initial geometries
+! NgeomF number of final geometries
+  INTEGER(KINT) :: NGeomI, NGeomF
+! NCoord=3*Nat or NFree depending on the coordinate choice
+  INTEGER(KINT) :: NCoord
+  INTEGER(KINT) :: NMaxPtPath=1000
+! IReparam is the period of reparameterization of the Path
+  INTEGER(KINT) :: IReparam=1
+! IReparamT is the period of reparameterization of the tangents along the path
+! Be default IReparamT=IReparam
+  INTEGER(KINT) :: IReparamT
+! ISpline is the iteration number where spline interpolation starts to be used 
+! instead of linear interpolation
+  INTEGER(KINT) :: ISpline=1
+! Linear: if TRUE, then we perform linear interpolation and not spline
+  LOGICAL :: Linear
+
+! FrozTol is the criterion to decide wether a frozen atom has moved between
+! two initial geometries
+  REAL(KREAL) :: FrozTol=1e-4
+
+! BoxTol is the criterion to decide wether an atom has crossed the box between
+! two initial geometries
+  REAL(KREAL) :: BoxTol=0.5
+
+
+  LOGICAL :: Freq, MW, Bohr, Renum, Hinv
+  LOGICAL :: OptReac, OptProd, PathOnly
+  LOGICAL :: IniHup,HupNeighbour
+
+  REAL(KREAL) :: Fact,FTan
+! IGeomRef is the index of the reference geometry, used to calculate the Zmat
+! or the Baker coordinates.
+  INTEGER(KINT) :: IGeomRef=-1
+! For geometry optimization , OptGeom is the index of the starting geometry
+  INTEGER(KINT) :: OptGeom=-1
+
+! Optimization parameter
+  INTEGER(KINT) :: MaxCyc
+  REAL(KREAL) :: SThresh, Smax, SthreshRms
+  REAL(KREAL) :: GThresh, GThreshRMS
+
+! Number of steps in memory for Step_RFO_all
+  INTEGER(KINT) :: NGintMax = 10
+
+  CHARACTER(SCHARS) :: Coord='HYBRID'
+  CHARACTER(SCHARS) :: Step_method='RFO'
+  CHARACTER(SCHARS) :: Prog="GAUSSIAN"
+  CHARACTER(VLCHARS) :: ProgExe="g03"
+
+  CHARACTER(SCHARS) :: runtyp='GEOMETRY OPTIMIZATION'
+  CHARACTER(SCHARS) :: hesupd="BFGS"
+
+  REAL(KREAL), ALLOCATABLE, TARGET :: XyzGeomI(:,:,:) ! (NGeomI,3,Nat)
+  REAL(KREAL), ALLOCATABLE :: XyzGeomF(:,:,:) ! (NGeomF,3,Nat)
+  REAL(KREAL), ALLOCATABLE :: XyzTangent(:,:)   ! (NGeomF,3*Nat)
+  REAL(KREAL), ALLOCATABLE :: IntTangent(:,:)   ! (NGeomF,Nfree=3Nat-6)
+  REAL(KREAL), ALLOCATABLE :: IntCoordI(:,:) ! (NGeomI,3*Nat-6)
+  ! IntCoordF: Final Internal coordinates for number of final geometries.
+  ! 3*Nat-6 is the number of coordinates (NCoord) of each geometry. 
+  REAL(KREAL), ALLOCATABLE :: IntCoordF(:,:) ! (NGeomF,3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: Vfree(:,:) ! (Ncoord,Ncoord)
+  REAL(KREAL), ALLOCATABLE :: SGeom(:) ! (NGeomF)
+  REAL(KREAL), ALLOCATABLE :: Energies(:) ! NGeomF
+! NCoord=3*Nat or NFree depending on the coordinate choice
+  REAL(KREAL), ALLOCATABLE :: Grad(:,:) ! (NGeomF,NCoord)
+  REAL(KREAL), ALLOCATABLE :: Hess(:,:,:)  !(NgeomF, N,N)
+  REAL(KREAL), ALLOCATABLE :: DzDc(:,:,:,:) ! (3,Nat,3,Nat)
+  REAL(KREAL), ALLOCATABLE :: BMat_BakerT(:,:) ! (3*Nat,NCoord)
+  INTEGER(KINT), ALLOCATABLE :: IndZmat(:,:)   ! (Nat,5)
+  INTEGER(KINT), ALLOCATABLE :: Order(:),OrderInv(:) ! Nat
+  CHARACTER(10), ALLOCATABLE :: AtName(:) ! Nat
+  INTEGER(KINT), ALLOCATABLE :: Atome(:) ! Nat
+  REAL(KREAL), ALLOCATABLE :: MassAt(:)   ! Nat
+  REAL(KREAL), ALLOCATABLE :: BTransInv(:,:) ! BTransInv (3*Nat-6,3*Nat), used for Baker case.
+  REAL(KREAL), ALLOCATABLE :: BTransInvF(:,:,:) ! BTransInvF (NGeomF,3*Nat-6,3*Nat)
+  ! BTransInv_local (3*Nat-6,3*Nat), used for Baker case in Opt_Geom.f90
+  REAL(KREAL), ALLOCATABLE :: BTransInv_local(:,:)
+  REAL(KREAL), ALLOCATABLE :: UMat(:,:) !(NPrim,3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: UMat_local(:,:) !(NPrim,3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: UMatF(:,:,:) !(NGeomF,NPrim,3*Nat-6)
+  !REAL(KREAL), ALLOCATABLE :: IntCoordIBaker(:,:) ! (NGeomI,NCoord=3*Nat-6)
+  ! IntCoordIBaker allocated in PathCreate.f90
+  REAL(KREAL), ALLOCATABLE :: Xprimitive(:,:) ! Xprimitive(NgeomI,NPrim)
+  REAL(KREAL), ALLOCATABLE :: Xprimitive_t(:) ! used in ConvertBakerInternal_cart.f as a temporary variable.
+  REAL(KREAL), ALLOCATABLE :: XprimitiveF(:,:) ! Xprimitive(NgeomF,NPrim)
+  REAL(KREAL), ALLOCATABLE :: GeomOld_all(:,:)
+  REAL(KREAL), ALLOCATABLE :: GeomOld(:) ! Used in DIIS step method.
+  
+  LOGICAL, PARAMETER :: FRot=.TRUE., FAlign=.TRUE.
+  REAL(KREAL), ALLOCATABLE :: BprimT(:,:) !(3*Nat,NPrim). This is B^prim.
+  REAL(KREAL), ALLOCATABLE :: BBT(:,:) ! BBT (3*Nat-6,3*Nat-6), used for Baker case
+  REAL(KREAL), ALLOCATABLE :: BBT_inv(:,:) ! BBT_inv (3*Nat-6,3*Nat-6), used for Baker case
+  INTEGER(KINT) :: Symmetry_elimination
+  LOGICAL :: FirstTimePathCreate
+  
+  Type (ListCoord), POINTER :: Coordinate, CurrentCoord 
+  Type (ListCoord), POINTER :: ScanCoord
+
+! Triggers the dynamical update of the maximum step
+  LOGICAL :: DynMaxStep
+
+! Triggers the alignment of not
+  LOGICAL :: Align
+
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Flags for printing
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+! Vmd is set to TRUE if user wants to use VMD to look
+! at the Path.
+! For now, used only for VASP
+
+  LOGICAL :: Vmd
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Variables for VASP input/output
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  
+  REAL(KREAL) :: lat_a(3), lat_b(3), lat_c(3)
+  REAL(KREAL), ALLOCATABLE :: X0_vasp(:),Y0_vasp(:), Z0_vasp(:) ! nat
+  REAL(KREAL) :: Latr(3,3)
+  CHARACTER(LCHARS) :: V_direct
+! AutoCart : true if user let PATH determines which atoms should be
+! described in cartesian when COORD=MIXED
+  LOGICAL :: AutoCart
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! General
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  CHARACTER(2) :: Nom(0:max_Z)=(/ ' X',' H',                   'HE',  &
+                'LI','BE',            ' B',' C',' N',' O',' F','NE',  &
+                'NA','MG',            'AL','SI',' P',' S','CL','AR',  &
+                ' K','CA',                                            &
+            'SC','TI',' V','CR','MN','FE','CO','NI','CU','ZN',        &
+                                      'GA','GE','AS','SE','BR','KR',  &
+                'RB','SR',                                            &
+            ' Y','ZR','NB','MO','TC','RU','RH','PD','AG','CD',        &
+                                      'IN','SN','SB','TE',' I','XE',  &
+                'CS','BA',                                            &
+            'LA',                                                     &
+              'CE','PR','ND','PM','SM','EU','GD','TB','DY','HO',      &
+              'ER','TM','YB','LU',                                    &
+                     'HF','TA',' W','RE','OS','IR','PT','AU','HG',    &
+                                      'TL','PB','BI','PO','AT','RN'/)
+
+! This is the new table, more complete, taken from a periodic table
+! some value have been changed to be consistent
+  REAL(KREAL) ::  r_cov(0:max_Z)=(/ 1e-13, 37.,                93.,     &
+!     2           'LI','BE',          ' B',' C',' N',' O',' F','NE',
+                  123.,90.,            82., 77., 75., 73., 71., 69.,     &
+!     3           'NA','MG',          'AL','SI',' P',' S','CL','AR',
+                  154.,136.,          118.,111.,106.,102., 99., 97.,     &
+!     4           ' K','CA',
+                  203.,  174.,                                           &
+!     4       'SC','TI',' V','CR','MN','FE','CO','NI','CU','ZN',
+             144.,132.,122.,118.,117.,117.,116.,115.,117.,125.,          &
+!     4                               'GA','GE','AS','SE','BR','KR',
+                                     120.,122.,122.,117.,114.,110.,      &
+!     5           'RB','SR',
+                 216.,191.,                                              &
+!     5       ' Y','ZR','NB','MO','TC','RU','RH','PD','AG','CD', 
+              162.,145.,134.,130.,127.,125.,125.,128.,134.,148.,         &
+!     5                               'IN','SN','SB','TE',' I','XE',
+                                     144.,140.,143.,135.,133.,130.,      &
+!     6           'CS','BA',
+                 235., 198.,                                             &
+!     6       'LA',
+!               'CE','PR','ND','PM','SM','EU','GD','TB','DY','HO',      &
+!               'ER','TM','YB','LU',                                    &
+             169.,                                                       &  
+             165., 165., 164., 163., 162., 185., 161., 159., 159., 158., &
+             157., 156., 184.,156.,                                      &
+!     6                'HF','TA',' W','RE','OS','IR','PT','AU','HG',
+!     6                                 'TL','PB','BI','PO','AT','RN'/
+             144., 134., 130., 126., 126., 127., 120., 134., 149.,       &
+                        148., 147., 146., 146., 148., 151. /)
+
+  REAL(KREAL) :: Mass(0:Max_Z)=(/0.0D0,1.0078D0,          4.0026D0,      &
+                  7.0160D0, 9.0122D0,11.0093D0,                          &
+                 12.0000D0,14.0031D0,15.9949D0,18.9984D0,19.9924D0,      &
+                 22.9898D0,23.9850D0,26.9815D0,                          &
+                 27.9769D0,30.9738D0,31.9721D0,34.9688D0,39.9624D0,      &
+                 39.0983D0,40.08D0,                                      &
+                   44.9559D0, 47.88D0, 50.9415D0, 51.996D0, 54.9380D0,   &
+                   55.847D0, 58.9332D0, 58.69D0, 63.546D0, 65.39D0,      &
+                 69.72D0,72.59D0,74.9216D0,78.96D0,79.904D0,83.80D0,     &
+                 85.4678D0,87.62D0,88.9059D0,91.224D0,92.9064D0,         &
+         95.94D0,98D0,101.07D0,102.906D0,106.42D0,107.868D0,112.41D0,    &
+         114.82D0,118.71D0,121.75D0,127.60D0,126.905D0,131.29D0,         &
+!     6           'CS','BA',
+                 132.905D0,137.34D0,                                      &
+!     6       'LA',
+!               'CE','PR','ND','PM','SM','EU','GD',
+!               'TB','DY','HO', 'ER','TM','YB','LU',   
+            138.91D0,                                                      &
+            140.12D0, 130.91D0, 144.24D0,147.D0,150.35D0, 151.96D0,157.25D0,  &
+          158.924D0, 162.50D0, 164.93D0, 167.26D0,168.93D0,173.04D0,174.97D0, &
+!     6                'HF','TA',' W','RE','OS','IR','PT',
+!                      'AU','HG',
+!     6                                 'TL','PB','BI','PO','AT','RN'/
+         178.49D0, 180.95D0, 183.85D0, 186.2D0, 190.2D0, 192.2D0, 195.09D0,  &
+             196.97D0, 200.59D0,                                             &
+             204.37D0, 207.19D0,208.98D0,210.D0,210.D0,222.D0 /)
+
+      END MODULE Path_module
Index: src/Mixed2cart.f90
===================================================================
--- src/Mixed2cart.f90	(revision 0)
+++ src/Mixed2cart.f90	(revision 1)
@@ -0,0 +1,103 @@
+SUBROUTINE Mixed2Cart(Nat,IndZmat,IntCoord,XyzCoord)
+
+  Use Path_module, ONLY : Pi,NCart,NCoord
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: Kint=Kind(1)
+  INTEGER, PARAMETER :: KREAL=Kind(1.0D0)
+
+  INTEGER(KINT), INTENT(IN) :: Nat
+  INTEGER(KINT), INTENT(IN) :: IndZmat(Nat,5)
+  REAL(KREAL), INTENT(IN) :: IntCoord(*)
+  REAL(KREAL), INTENT(OUT) :: XyzCoord(Nat,3)
+
+  INTEGER(KINT) :: I,J,K,L,Idx,IBeg,Iat
+  REAl(KREAL), ALLOCATABLE :: ValZmat(:,:),XyzTmp(:,:)
+  REAL(KREAL) :: d, a_val
+
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('mixed2cart')
+
+  if (debug) WRITE(*,*) "================ Entering Mixed2Cart =================="
+
+
+  ALLOCATE(ValZmat(Nat,3),XyzTmp(Nat,3))
+
+  if (debug) WRITE(*,*) "DBG Mixed2Cart, IntCoord:",IntCoord(1:NCoord)
+  Idx=1
+  valzmat=0.
+  XyzTmp=0.
+  DO I=1,NCart
+     XYZTmp(I,1:3)=IntCoord(Idx:Idx+2)
+     valzmat(I,1:3)=IntCoord(Idx:Idx+2)
+     Idx=Idx+3
+  END DO
+
+  IBeg=NCart+1
+  SELECT CASE (NCart)
+  CaSE (1)
+     Idx=4
+     XyzTmp(2,1)=IntCoord(Idx)
+     XyzTmp(2,1:3)= XyzTmp(2,1:3)+ XyzTmp(1,1:3) 
+     if (Nat.GE.3) THEN
+        Idx=Idx+1
+        d=IntCoord(Idx)
+        Idx=Idx+1
+        a_val=IntCoord(Idx)
+        Idx=Idx+1
+        call ConvertZmat_cart_3(3,IndZmat,d,a_val,       &
+             XyzTmp(1,1), XyzTmp(1,2),XyzTmp(1,3))
+     ENDIF
+     IBeg=4
+  CASE (2)
+     Idx=7
+     if (Nat.GE.3) THEN
+        d=IntCoord(Idx)
+        idx=idx+1
+        a_val=IntCoord(Idx)
+        Idx=Idx+1
+        call ConvertZmat_cart_3(3,IndZmat,d,a_val,       &
+             XyzTmp(1,1), XyzTmp(1,2),XyzTmp(1,3))
+     ENDIF
+     IBeg=4
+  CASE DEFAULT
+     Ibeg=NCart+1
+  END SELECT
+
+  DO iat=IBeg,Nat
+     ValZmat(iat,1)=IntCoord(idx)
+     Idx=Idx+1
+     do j=2,3
+        ValZmat(iat,J)=IntCoord(idx)*180./Pi
+        Idx=Idx+1
+     END DO
+  END DO
+
+  DO iat=iBeg,Nat
+     call ConvertZmat_cart(iat,IndZmat,ValZmat,       &
+          XyzTmp(1,1), XyzTmp(1,2),XyzTmp(1,3))
+  END DO
+
+  if (debug) THEN 
+     WRITE(*,*) 'DBG Mixed2Cart XyzTmp'
+     DO I=1,Nat
+        WRITe(*,'(1X,I3,3(1X,F10.4))') I, XyzTmp(I,1:3)
+     END DO
+  END IF
+
+!  XyzCoord=Reshape(XyzTmp,(/3,Nat/),ORDER=(/2,1/))
+  XyzCoord=XyzTmp
+
+  DEALLOCATE(valzmat,xyztmp)
+  if (debug) WRITE(*,*) "================ Mixed2Cart Over =================="
+
+END SUBROUTINE Mixed2Cart
Index: src/Std_ori.f90
===================================================================
--- src/Std_ori.f90	(revision 0)
+++ src/Std_ori.f90	(revision 1)
@@ -0,0 +1,127 @@
+subroutine Std_ori(natom,rx,ry,rz,a,b,c,rmass)
+  !c
+  !c      rotational constants for all replicas by inline diagonalization
+  !c      of inertial tensor
+  !c
+!!!!!!! Input
+! natom    : number of atoms
+! rx,ry,rz : arrays natom with cartesian coordinates of natom particles
+! rmass    : vector of length natom with particle masses
+!
+!!!!!!! Output
+! a,b,c    : rotational constants a, b, and c
+!
+!!!!!! Dependencies
+! tensor: calculate the inertial tensor
+! Jacobi, trie : diaganalization subroutines
+
+  implicit none
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+  INTEGER(KINT), INTENT(IN) :: Natom
+  REAL(KREAL), INTENT(INOUT) :: rx(Natom),ry(Natom),rz(Natom)
+  REAL(KREAL), INTENT(IN) :: rmass(Natom)
+  REAL(KREAL), INTENT(OUT) :: a,b,c
+
+  real(KREAL) :: Tinert(3,3),D(3),V(3,3),CoordG(3)
+  real(KREAL) :: ca,sa,na,cb,sb,nb
+
+  INTEGER(KINT) :: I
+  REAL(KREAL) :: Vt,Rxt,Ryt
+
+  call tensor(natom,rx,ry,rz,Tinert,CoordG,rmass)
+  call Jacobi(Tinert,3,D,V,3)
+  call Trie(3,D,V,3)
+
+!1000 FORMAT(3F15.3)
+!1010 FORMAT(4F15.3)
+
+  a=D(1)
+!     WRITE(*,1010) a,(V(i,1),i=1,3)
+  b=D(2)
+!     WRITE(*,1010) b,(V(i,2),i=1,3)
+  c=D(3)
+!     WRITE(*,1010) c,(V(i,3),i=1,3)
+
+!C On commence par mettre le centre de masse a l'origine
+
+  Do I=1,natom
+!     WRITE(*,*) 'DBG Tensor', I, rx(I),rY(I),rz(I)
+     rx(i)=rx(i)-CoordG(1)
+     ry(i)=ry(i)-CoordG(2)
+     rz(i)=rz(i)-CoordG(3)
+!     WRITE(*,*) 'DBG Tensor', I, rx(I),rY(I),rz(I)
+  END DO
+
+  ! C Ensuite, on va faire coincider les axes d'inertie avec x,y,z
+  ! C Pour etre coherent, et bien que ce ne soit pas le plus logique,
+  ! C on classe les vecteurs dans le sens croissant, et on fait coincider
+  ! C les axes dans l'ordre x,y,z pour l'instant.
+
+  ! C Coincidation du premier axe avec x
+  ! C Rotation autour de z pour l'amener dans le plan xOz
+  ! C puis Rotation autour de y pour l'amener suivant x
+  na=sqrt(V(1,1)*V(1,1)+V(2,1)*V(2,1))
+  nb=1
+  if (na.gt.1D-10) then
+     ca=V(1,1)/na
+     sa=-V(2,1)/na
+  else
+     ca=1
+     sa=0
+  END IF
+  cb=na/nb
+  sb=-V(3,1)/nb
+  DO I=1,natom
+     rxt=rx(i)
+     rx(i)=rx(i)*ca-ry(i)*sa
+     ry(i)=rxt*sa+ry(i)*ca
+     rxt=rx(i)
+     rx(i)=rx(i)*cb-rz(i)*sb
+     rz(i)=rxt*sb+rz(i)*cb
+  END DO
+
+  !C on applique aussi la rotation aux deux autres axes...
+  Vt=V(1,2)
+  V(1,2)=V(1,2)*ca-V(2,2)*sa
+  V(2,2)=Vt*sa+V(2,2)*ca
+  Vt=V(1,2)
+  V(1,2)=V(1,2)*cb-V(3,2)*sb
+  V(3,2)=Vt*sb+V(3,2)*cb
+
+  !c     WRITE(IOOUT,1010) b,(V(i,2),i=1,3)
+
+  !c      Vt=V(1,3)
+  !c      V(1,3)=V(1,3)*ca-V(2,3)*sa
+  !c      V(2,3)=Vt*sa+V(2,3)*ca
+  !c      Vt=V(1,3)
+  !c      V(1,3)=V(1,3)*cb-V(3,3)*sb
+  !c      V(3,3)=Vt*sb+V(3,3)*cb
+  !c     WRITE(IOOUT,1010) c,(V(i,3),i=1,3)
+
+  !C et on repart pour le 2e axe sur y
+  !C commes les vecteurs sont orthonormes, il est
+  !C deja dans le plan yOz d'ou une seule rotation
+  !c      na=sqrt(V(2,2)*V(2,2)+V(3,2)*V(3,2))
+  na=1
+  nb=1
+  ca=V(2,2)/na
+  sa=-V(3,2)/na
+  !c      write(IOOUT,*) 'ca:',ca,sa,cb,sb,na
+  DO I=1,natom
+     ryt=ry(i)
+     ry(i)=ry(i)*ca-rz(i)*sa
+     rz(i)=ryt*sa+rz(i)*ca
+  END DO
+  !C on applique aussi la rotation au dernier axe...
+  !c      Vt=V(2,3)
+  !c      V(2,3)=V(2,3)*ca-V(3,3)*sa
+  !c      V(3,3)=Vt*sa+V(3,3)*ca
+  !c      WRITE(IOOUT,1010) c,(V(i,3),i=1,3)
+
+  !C et le 3e axe est deja sur z car  ils sont orthogonaux...
+
+  return
+end subroutine Std_ori
Index: src/Decomp_frag.f90
===================================================================
--- src/Decomp_frag.f90	(revision 0)
+++ src/Decomp_frag.f90	(revision 1)
@@ -0,0 +1,120 @@
+!This subroutines decomposes a connectivity list into fragments.
+SUBROUTINE Decomp_Frag(na,ListConnect,ListAt,nbfrag,Fragment,NbAtFrag,FragAt)
+
+  Use Path_module, only : NMaxL
+  Use Io_module
+
+  IMPLICIT NONE
+
+  INTEGER(KINT), INTENT(IN) :: na
+  INTEGER(KINT), INTENT(IN) :: ListConnect(na,0:NMaxL)
+  LOGICAL,       INTENT(IN) :: ListAt(na)
+  INTEGER(KINT), INTENT(OUT) :: NbFrag,Fragment(na),NbAtFrag(na),FragAt(na,na)
+
+  INTEGER(KINT) :: i,j,k,iat,jat
+  INTEGER(KINT) :: IdxFrag, IdxtoDo, IFrag,IaFaire
+  INTEGER(KINT), ALLOCATABLE :: ToDo(:)
+
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+
+  debug=valid('decompfrag')
+  !     We analyse the connectivity in terms of fragments
+  ALLOCATE(ToDo(na))
+
+  Fragment=0
+  ToDo=0
+  IdxFrag=0
+  NbFrag=0
+  NbAtFrag=0
+  Fragment=0
+  FragAt=0
+
+  DO I=1,na
+     IdxToDo=1
+     ToDo(IdxToDo)=0
+
+     if (debug) WRITE(*,*) 'Treating atom I, fragment(I)',I,Fragment(I)
+     IF (ListAt(I).OR.(ListConnect(I,0).NE.0)) THEN 
+        IF (Fragment(I).EQ.0) THEN
+           IdxFrag=IdxFrag+1
+           NbFrag=NbFrag+1
+           IFrag=IdxFrag
+           Fragment(I)=IFrag
+           NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+           FragAt(IFrag,NbAtFrag(IFrag))=I
+        ELSE
+           IFrag=Fragment(I)
+        END IF
+        DO J=1,ListConnect(I,0)
+           Iat=ListConnect(I,J)
+           IF ((Fragment(Iat).NE.0).AND.(Fragment(Iat).NE.IFrag)) THEN
+              WRITE(*,*) 'Error : Atoms ',I,' and ',Iat
+              WRITE(*,*) 'are linked, but belongs to fragments ',IFrag,' and ',Fragment(Iat)
+              STOP
+           END IF
+           IF (Fragment(Iat).EQ.0) THEN
+              ToDo(IdxToDo)=Iat
+              Fragment(Iat)=IFrag
+              NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+              FragAt(IFrag,NbAtFrag(IFrag))=Iat
+              IdxToDo=IdxToDo+1
+           END IF
+        END DO
+        ToDo(IdxToDo)=0
+
+        If (debug) WRITE(*,*) 'ToDo:',ToDo(1:IdxToDo)
+        If (debug) WRITE(*,*) 'IFrag=',IFrag
+
+        IAfaire=1
+
+        DO WHILE (ToDo(IAfaire).NE.0)
+           Iat=ToDo(IaFaire)
+           IF (ListAt(I).OR.(ListConnect(I,0).NE.0)) THEN 
+              if (debug) WRITE(*,*) 'ToDo treating ',Iat
+              IF (Fragment(Iat).EQ.0) THEN
+                 WRITE(*,*) 'Error: Atom ',Iat,' does not belong to any fragment !'
+                 STOP
+              END IF
+
+              DO J=1,ListConnect(Iat,0)
+                 Jat=ListConnect(Iat,J)
+                 IF ((Fragment(ListConnect(Iat,J)).NE.0).AND.(Fragment(ListConnect(Iat,J)).NE.IFrag)) THEN
+                    WRITE(*,*) 'Error: Atoms ',Iat,' and ',ListConnect(Iat,J)
+                    WRITE(*,*) 'are linked, but belongs to fragments ',IFrag,' and ',Fragment(ListConnect(Iat,J))
+                    STOP
+                 END IF
+                 IF (Fragment(Jat).EQ.0) THEN
+                    ToDo(IdxToDo)=ListConnect(Iat,J)
+                    Fragment(Jat)=IFrag
+                    NbAtFrag(IFrag)=NbAtFrag(IFrag)+1
+                    FragAt(IFrag,NbAtFrag(IFrag))=Jat
+                    IdxToDo=IdxToDo+1
+                 END IF
+              END DO
+              ToDo(IdxToDo)=0
+              If (debug) WRITE(*,*) 'IAfaire, IdxToDo,ToDo :',IAfaire,IdxToDo,' == ',ToDo(IaFaire+1:IdxToDo)
+              IAFaire=IAFaire+1
+           END IF
+        END DO
+     END IF
+  END DO
+
+  IF (debug) THEN
+     WRITE(*,*) 'DECOMP_FRAG: I found ',NbFrag, 'fragments'
+     DO I=1,NbFrag
+        WRITE(*,*) 'Fragment ', i,' with ',NbAtFrag(I),' atoms.'
+        WRITE(*,*) "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+     END DO
+  END IF
+
+
+END SUBROUTINE Decomp_Frag
+
Index: src/egrad_chamfre.f90
===================================================================
--- src/egrad_chamfre.f90	(revision 0)
+++ src/egrad_chamfre.f90	(revision 1)
@@ -0,0 +1,815 @@
+!*************############### Attention	###############*************
+!(a) Two parameters aa and br(3,3) must be provided in main program
+!(b) At first, z=0 for the outmost surface 
+!(c) The units of all parameters are not atomic units, but angstrom, eV etc.
+!(d) Before using this routine, you must confirm that the energy is CONSISTENT with its derivative. 
+!                        This check of consistency is VERY IMPORTANT for energy conservation in MD.
+!!!
+!!  xa, ya,za present the positions of atoms. v is the energy of the system. dvdr present the force along the x,y,z directions.
+!!
+subroutine egrad_chamfre(Nat,V,Geom,Grad)
+! WAS xa,ya,za,v,dvdr)
+
+
+  use Path_module, only : Lat_a,Lat_b,Lat_c,order,orderinv,renum
+  use Io_module
+
+
+   IMPLICIT NONE
+
+       INTEGER(KINT), INTENT(IN) :: Nat
+       REAL(KREAL), INTENT(OUT) :: V,grad(Nat*3)
+       REAL(KREAL), INTENT(IN) :: Geom(Nat,3)
+
+!     Bohr --> Angstr
+      real(KREAL), parameter :: BOHR   = 0.52917726D+00
+
+!! PFL 2010 Nov. 28 ->
+! for now I keep this old F77 scheme. This has to be replaced by ALLOCATABLE
+! things
+! <- PFL 2010 Nov 28.
+  REAL(KREAL) :: xa(100),ya(100),za(100),dvdr(100,3)
+  REAL(KREAL) :: rshort,rlong,zshort,zlong
+  REAL(KREAL), SAVE :: rnc,rnn,rhh,rch,rnh,ann(100),anc(100),anh(100),ach(100),ahh(100),a(100)
+  REAL(KREAL) :: dv(100,10,3),df(100,10,3)
+  REAL(KREAL) :: px(9000),py(9000),pz(9000),tmp,temp,rtemp,yf
+  INTEGER(KINT) :: ka(9000),kx(9000),ky(9000),itx,ity,nf(100),mf(100,500)
+  REAL(KREAL) :: xi(3),xj(3),xk(3),rij,rik,rjk,rji,rki,er,eb
+  REAL(KREAL) :: fcut,tf,bodij,bodji,bod,cost,gtheta,dgdt,xt,t1,t2,t3
+  REAL(KREAL) :: zi,fcut2
+  INTEGER(KINT) :: np,nq,nh,nc
+  INTEGER(KINT) :: i, j, nn, m, n, mid, n1, im, jm, n2,n3,n4, iat
+  LOGICAL, SAVE :: First=.TRUE.
+  LOGICAL :: debug, FExist
+
+  common/zdis/zshort,zlong
+  common/rdistanc/rshort,rlong
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+     
+  END INTERFACE
+
+!**********************************************
+
+
+  debug=valid('egrad_chamfre')
+
+ if (debug) Call Header('Entering Egrad_chamfre')
+
+  v=0.0;dvdr=0.0
+!******prepare the parameters of REBO potential
+!rshort=3.5 
+!rlong=3.9
+zshort=3.5
+zlong=4.5
+
+rnn=3.2    !! to adjust
+rnc=3.5    !! to adjust
+rnh=3.0    !! to adjust
+rch=3.2    !! to adjust
+rhh=3.2    !! to adjust
+
+!rph=rlong
+
+ if (First) THEN
+    First=.FALSE.
+    INQUIRE(FILE="parameter.dat",EXIST=FExist)
+    if (.NOT.Fexist) THEN
+       WRITE(*,*) "!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!!"
+       WRITE(*,*) "!!   egrad_chamfre             !!!!"
+       WRITE(*,*) "The file parameter.dat does not exists."
+       WRITE(*,*) "!!   egrad_chamfre             !!!!"
+       WRITE(*,*) "!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!!"
+       STOP
+    END IF
+open(1,file="parameter.dat")
+do i=1,5   !Ni-Ni
+read(1,*)ann(i)
+enddo
+
+do i=1,5   !Ni-C
+read(1,*)anc(i)
+enddo
+
+do i=1,5   !Ni-H
+read(1,*)anh(i)
+enddo
+
+do i=1,5   !H-H
+read(1,*)ahh(i)
+enddo
+do i=1,5  !C-H
+read(1,*)ach(i)
+enddo
+!********LONG INTERACTION **********
+!do i=1,2
+!read(1,*)a(i)
+!enddo
+close(1)
+END IF
+!************************************
+np=45
+nh=4
+nc=1
+nq=np+nh+nc
+!************************************
+
+ DO I=1,Nat
+    Iat=Order(I)
+    xa(I)=Geom(Iat,1)
+    ya(I)=Geom(Iat,2)
+    za(I)=Geom(Iat,3)
+ END DO
+
+px=0.0;py=0.0;pz=0.0
+nn=0
+ do m=-1,1
+    do n=-1,1
+       do i=1,nq
+          if(m==0.and.n==0.and.i==1)mid=nn
+            nn=nn+1
+            px(nn)=xa(i)+m*lat_a(1)+n*lat_b(1)
+            py(nn)=ya(i)+m*lat_a(2)+n*lat_b(2)
+            pz(nn)=za(i)
+            ka(nn)=i;kx(nn)=m;ky(nn)=n
+       enddo
+    enddo
+ enddo
+!***********************xyz file required for MS input
+ open(123,file="111.xyz",ACCESS='APPEND')
+    write(123,*)nn
+    write(123,*)
+   do i=1,nn
+       if(ka(i)<(np+1))then
+            write(123,10)'Ni',px(i),py(i),pz(i)
+       elseif (ka(i)<np+5) then
+            write(123,10)'H',px(i),py(i),pz(i)
+       else
+            write(123,10)'C',px(i),py(i),pz(i)
+  10 format(a6,3f15.8)
+       endif
+   enddo
+ close(123)
+!******************************************
+ do i=1,nq
+    tmp=px(i);px(i)=px(i+mid);px(i+mid)=tmp
+    tmp=py(i);py(i)=py(i+mid);py(i+mid)=tmp
+    tmp=pz(i);pz(i)=pz(i+mid);pz(i+mid)=tmp
+    itx=kx(i);kx(i)=kx(i+mid);kx(i+mid)=itx
+    ity=ky(i);ky(i)=ky(i+mid);ky(i+mid)=ity
+ enddo
+ mid=0
+!******************************************
+  nf=0;mf=0
+    do i=1,nq
+        nf(i)=0
+           do j=1,nn
+             temp=sqrt((px(i)-px(j))**2+(py(i)-py(j))**2+(pz(i)-pz(j))**2)
+!
+!rtemp=rlong
+    if (ka(i+mid)<np+1.and.ka(j+mid)<np+1)then     ! Ni-Ni
+	     
+	      rtemp=rnn
+	 endif
+    if (ka(i+mid)<np+1.and.ka(j+mid)>np.and.ka(j+mid)<np+5)then  ! Ni-H
+          
+           rtemp=rnh
+     endif
+    if (ka(i+mid)<np+1.and.ka(j+mid)>np+4) then   ! Ni-C
+           
+           rtemp=rnc
+     endif
+      if (ka(i+mid)>np.and.ka(i+mid)<np+5.and.ka(j+mid)>np+4)  then ! H-C
+           
+            rtemp=rch
+     endif
+    if (ka(i+mid)>np.and.ka(i+mid)<np+5.and.ka(j+mid)>np.and.ka(j+mid)<np+5)then  ! H-H
+	       
+	        rtemp=rhh
+	 endif
+    if (ka(i+mid)>np.and.ka(i+mid)<np+5.and.ka(j+mid)<np+1) then  ! H-Ni
+            
+             rtemp=rnh
+       endif
+    if (ka(i+mid)>np+4.and.ka(j+mid)<np+1) then !  C-Ni
+            
+             rtemp=rnc
+     endif
+    if (ka(i+mid)>np+4.and.ka(j+mid)>np.and.ka(j+mid)<np+5) then ! C-H
+             
+              rtemp=rch
+     endif
+
+      if(temp>0.1.and.temp<rtemp)then
+         nf(i)=nf(i)+1
+         mf(i,nf(i))=j
+      endif
+!
+    enddo
+  !write(*,*)nf(i)
+ enddo
+!**************************************
+!stop
+
+!*************************************Starting to calculate the sum
+  yf=0.0;dvdr=0.0
+   do i=1,nq
+      er=0.0;eb=0.0
+      dv=0.0;df=0.0
+      do j=1,nf(i)
+
+             xi(1)=px(i);      xi(2)=py(i);      xi(3)=pz(i)
+             xj(1)=px(mf(i,j));xj(2)=py(mf(i,j));xj(3)=pz(mf(i,j))
+             rij=sqrt((xj(1)-xi(1))**2.0+(xj(2)-xi(2))**2.0+(xj(3)-xi(3))**2.0)
+             n1=ka(i)/(np+1);n2=ka(mf(i,j))/(np+1)    !!!  Ni 46  H  50  C
+             n3=ka(i)/(np+5);n4=ka(mf(i,j))/(np+5)
+	
+ !**********************************Ni-Ni interaction
+ ! **********
+         if(n1==0.and.n3==0.and.n2==0.and.n4==0)then		 !Ni-Ni
+           call fctNiNi(rnn,rij,fcut)
+           call dfcutNiNi(rnn,rij,tf)
+            eb=eb+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut
+            er=er+ann(4)*exp(-1.0*ann(2)*(rij/ann(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+ann(4)*exp(-1.0*ann(2)*(rij/ann(3)-1.0))*fcut*(-ann(2)/ann(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut*(-2.0*ann(1)/ann(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+ann(4)*exp(-1.0*ann(2)*(rij/ann(3)-1.0))*fcut*(-ann(2)/ann(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut*(-2.0*ann(1)/ann(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+ann(4)*exp(-1.0*ann(2)*(rij/ann(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+ann(4)*exp(-1.0*ann(2)*(rij/ann(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+ann(5)*exp(-2.0*ann(1)*(rij/ann(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+             endif
+
+ !**********************************Ni-H interaction
+! **********
+         if(n1==0.and.n3==0.and.n2==1.and.n4==0)then		 !Ni-H
+           call fctNiH(rnh,rij,fcut)
+           call dfcutNiH(rnh,rij,tf)
+             eb=eb+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+             er=er+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut*(-anh(2)/anh(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut*(-2.0*anh(1)/anh(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut*(-anh(2)/anh(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut*(-2.0*anh(1)/anh(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+!
+             endif
+
+!**********************************Ni-C interaction
+! **********
+         if(n1==0.and.n3==0.and.n2==1.and.n4==1)then		 !Ni-C
+           call fctNiC(rnc,rij,fcut)
+           call dfcutNiC(rnc,rij,tf)
+            eb=eb+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+            er=er+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut*(-anc(2)/anc(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut*(-2.0*anc(1)/anc(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut*(-anc(2)/anc(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut*(-2.0*anc(1)/anc(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+               endif
+!!**********************************H-Ni interaction
+! **********
+         if(n1==1.and.n3==0.and.n2==0.and.n4==0)then        ! H-Ni
+           call fctNiH(rnh,rij,fcut)
+           call dfcutNiH(rnh,rij,tf)
+             eb=eb+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+             er=er+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut*(-anh(2)/anh(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut*(-2.0*anh(1)/anh(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*fcut*(-anh(2)/anh(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut*(-2.0*anh(1)/anh(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+anh(4)*exp(-1.0*anh(2)*(rij/anh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+anh(5)*exp(-2.0*anh(1)*(rij/anh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+              endif
+!!**********************************H-H interaction
+! **********
+        if(n1==1.and.n3==0.and.n2==1.and.n4==0)then   !H-H
+           call fctHH(rhh,rij,fcut)
+           call dfcutHH(rhh,rij,tf)
+              eb=eb+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut
+              er=er+ahh(4)*exp(-1.0*ahh(2)*(rij/ahh(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+ahh(4)*exp(-1.0*ahh(2)*(rij/ahh(3)-1.0))*fcut*(-ahh(2)/ahh(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut*(-2.0*ahh(1)/ahh(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+ahh(4)*exp(-1.0*ahh(2)*(rij/ahh(3)-1.0))*fcut*(-ahh(2)/ahh(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut*(-2.0*ahh(1)/ahh(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+ahh(4)*exp(-1.0*ahh(2)*(rij/ahh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+ahh(4)*exp(-1.0*ahh(2)*(rij/ahh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+ahh(5)*exp(-2.0*ahh(1)*(rij/ahh(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+             endif
+
+
+!!**********************************H-C interaction
+! **********
+        if(n1==1.and.n3==0.and.n2==1.and.n4==1)then   !H-C
+            call fctCH(rch,rij,fcut)
+            call dfcutCH(rch,rij,tf)
+             eb=eb+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+             er=er+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut*(-ach(2)/ach(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut*(-2.0*ach(1)/ach(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut*(-ach(2)/ach(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut*(-2.0*ach(1)/ach(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+                endif
+!!**********************************C-Ni interaction
+! **********
+        if(n1==1.and.n3==1.and.n2==0.and.n4==0)then   !C-Ni
+            call fctNiC(rnc,rij,fcut)
+            call dfcutNiC(rnc,rij,tf)
+             eb=eb+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+             er=er+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut
+
+!Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut*(-anc(2)/anc(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut*(-2.0*anc(1)/anc(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*fcut*(-anc(2)/anc(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut*(-2.0*anc(1)/anc(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+anc(4)*exp(-1.0*anc(2)*(rij/anc(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+anc(5)*exp(-2.0*anc(1)*(rij/anc(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+
+               endif
+!!**********************************C-H interaction
+! **********
+       if(n1==1.and.n3==1.and.n2==1.and.n4==0)then   !C-H
+           call fctCH(rch,rij,fcut)
+           call dfcutCH(rch,rij,tf)
+             eb=eb+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+             er=er+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut
+
+
+   !Calculation of FORCE
+do im=1,3
+dv(i,1,im)=dv(i,1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut*(-ach(2)/ach(3))*(xi(im)-xj(im))/rij
+dv(i,2,im)=dv(i,2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+dv(i,3,im)=dv(i,3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut*(-2.0*ach(1)/ach(3))*(xi(im)-xj(im))/rij
+dv(ka(mf(i+mid,j)),1,im)=dv(ka(mf(i+mid,j)),1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*fcut*(-ach(2)/ach(3))*(xj(im)-xi(im))/rij
+dv(ka(mf(i+mid,j)),2,im)=dv(ka(mf(i+mid,j)),2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+dv(ka(mf(i+mid,j)),3,im)=dv(ka(mf(i+mid,j)),3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut*(-2.0*ach(1)/ach(3))*(xj(im)-xi(im))/rij
+
+df(i,1,im)=df(i,1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(i,2,im)=df(i,2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+df(i,3,im)=df(i,3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*tf*(xi(im)-xj(im))/rij
+df(ka(mf(i+mid,j)),1,im)=df(ka(mf(i+mid,j)),1,im)+ach(4)*exp(-1.0*ach(2)*(rij/ach(3)-1.0))*tf*(xj(im)-xi(im))/rij
+df(ka(mf(i+mid,j)),2,im)=df(ka(mf(i+mid,j)),2,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*fcut
+df(ka(mf(i+mid,j)),3,im)=df(ka(mf(i+mid,j)),3,im)+ach(5)*exp(-2.0*ach(1)*(rij/ach(3)-1.0))*tf*(xj(im)-xi(im))/rij
+enddo
+!
+
+        endif
+  !!***************************ONE end****************      
+
+enddo
+!!******** CALCULATION ENERGY
+!
+        yf=yf+er-sqrt(eb)
+!!*********
+       do im=1,3
+            dvdr(i,im)=dvdr(i,im)+dv(i,1,im)-0.5/(dv(i,2,im))**0.5*dv(i,3,im)
+            dvdr(i,im)=dvdr(i,im)+df(i,1,im)-0.5/(df(i,2,im))**0.5*df(i,3,im)
+         do j=1,nf(i+mid)
+             jm=ka(mf(i+mid,j))
+             dvdr(jm,im)=dvdr(jm,im)+dv(jm,1,im)-0.5/(dv(i,2,im))**0.5*dv(jm,3,im)
+             dvdr(jm,im)=dvdr(jm,im)+df(jm,1,im)-0.5/(df(i,2,im))**0.5*df(jm,3,im)
+         enddo
+       enddo
+!
+enddo
+!!*****************************TWO ENDS**************************
+!***************************************Long-ranged interaction
+!do i=nq-4,nq
+!     zi=pz(i+mid) !-0.3*aa*br(3,3)
+!     call fct2(zshort,zlong,zi,fcut2)
+ !    call dfcut2(zshort,zlong,zi,tf)
+ !    yf=yf+fcut2*(a(6)-a(7)/zi**2.0)
+
+ !  dvdr(i,3)=dvdr(i,3)+fcut2*(a(7)*2.0/zi**3.0)+tf*(a(6)-a(7)/zi**2.0)
+
+!enddo
+!*******************************************************************
+  v=yf 
+   do im=1,3
+      do jm=1,nq
+          dvdr(jm,im)=dvdr(jm,im)  
+      enddo
+  enddo
+
+!PFL: We convert dvdr into Grad
+      do jm=1,nq
+          Iat=Jm
+          if (renum) Iat=order(jm)
+          Grad(3*Iat-2:3*Iat)=dvdr(jm,1:3)
+      enddo
+  
+ if (debug) WRITE(*,*) "EGRAD_CHAMFRE, E=",V
+  
+ if (debug) call Header('Egrad_chamfre OVER')
+
+!********************************************ENDENDENDENDENDENDENDEND
+return
+end subroutine egrad_chamfre
+
+!******************************************
+!**********PARAMETERS**********************
+subroutine fctNiNi(r2,r,fcut)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+ REAL(KREAL) :: r2,r,fcut,r1,pi
+pi=4.0*atan(1.0)
+r1=r2-0.5
+
+if(r<=r1)then
+fcut=1.0
+endif
+if(r>r1.and.r<=r2)then
+fcut=(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+fcut=0.0
+endif
+return
+end subroutine fctNiNi
+!!************
+subroutine dfcutNiNi(r2,r,df)
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+  REAL(KREAL) :: r, r2,df,pi,r1
+pi=4.0*atan(1.0)
+r1=r2-0.5
+
+if(r<=r1)then
+df=0.0
+endif
+if(r>r1.and.r<=r2)then
+df=-pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+df=0.0
+endif
+return
+end subroutine dfcutNiNi
+
+
+!!************
+subroutine fctNiH(r2,r,fcut)
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+ REAL(KREAL) ::r2,r,fcut
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=2.7
+ rlong=3.0
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ fcut=1.0
+endif
+if(r>r1.and.r<=r2)then
+ fcut=(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+ fcut=0.0
+endif
+return
+end subroutine fctNiH
+!!**********
+
+subroutine dfcutNiH(r2,r,df)
+
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::r2,r,df
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=2.7
+ rlong=3.0
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ df=0.0
+endif
+if(r>r1.and.r<=r2)then
+ df=-pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+ df=0.0
+endif
+return
+end subroutine dfcutNiH
+
+!!************
+subroutine fctNiC(r2,r,fcut)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::r2,r,fcut
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=3.2
+ rlong=3.5
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ fcut=1.0
+endif
+if(r>r1.and.r<=r2)then
+ fcut=(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+ fcut=0.0
+endif
+return
+end subroutine fctNiC
+
+!!***********
+subroutine dfcutNiC(r2,r,df)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+     
+REAL(KREAL) ::r2,r,df
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=3.2
+ rlong=3.5
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ df=0.0
+endif
+if(r>r1.and.r<=r2)then
+ df=-pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+ df=0.0
+endif
+return
+end subroutine dfcutNiC
+
+!!************
+subroutine fctCH(r2,r,fcut)
+
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::r2,r,fcut
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=2.1
+ rlong=3.2
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ fcut=1.0
+endif
+if(r>r1.and.r<=r2)then
+ fcut=(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+ fcut=0.0
+endif
+return
+end subroutine fctCH
+!!*****************
+
+subroutine dfcutCH(r2,r,df)
+
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+     
+REAL(KREAL) ::r2,r,df
+REAL(KREAL) ::rshort,rlong,r1,pi
+
+ rshort=2.1
+ rlong=3.2
+ pi=4.0*atan(1.0)
+ r1=rshort
+ r2=rlong
+if(r<=r1)then
+ df=0.0
+endif
+if(r>r1.and.r<=r2)then
+ df=-pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+ df=0.0
+endif
+return
+end subroutine dfcutCH
+!!************
+subroutine fctHH(r2,r,fcut)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::r2,r,fcut,r1,pi
+pi=4.0*atan(1.0)
+r1=r2-1.1
+if(r<=r1)then
+ fcut=1.0
+endif
+if(r>r1.and.r<=r2)then
+ fcut=(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+ fcut=0.0
+endif
+return
+end subroutine fctHH
+!!************
+subroutine dfcutHH(r2,r,df)
+
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::r2,r,df,r1,pi
+pi=4.0*atan(1.0)
+r1=r2-1.1
+if(r<=r1)then
+ df=0.0
+endif
+if(r>r1.and.r<=r2)then
+ df=-pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+ df=0.0
+endif
+return
+end subroutine dfcutHH
+
+!!*********************LONG INTERACTION
+
+subroutine dfcut2(zshort,zlong,r,df)
+
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::zshort,zlong,r,df,pi, r1, r2
+
+pi=4.0*atan(1.0)
+
+r1=zshort
+r2=zlong
+
+if(r<=r1)then
+df=0.0
+endif
+if(r>r1.and.r<=r2)then
+df=pi/2.0/(r2-r1)*sin(pi*(r-r1)/(r2-r1))
+endif
+if(r>r2)then
+df=0.0
+endif
+
+return
+end subroutine dfcut2
+
+subroutine fct2(zshort,zlong,r,fcut)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+REAL(KREAL) ::zshort,zlong,r,fcut,pi,r1,r2
+
+pi=4.0*atan(1.0)
+
+r1=zshort
+r2=zlong
+
+if(r<=r1)then
+fcut=0.0
+endif
+if(r>r1.and.r<=r2)then
+fcut=1.0-(1.0+cos(pi*(r-r1)/(r2-r1)))/2.0
+endif
+if(r>r2)then
+fcut=1.0
+endif
+
+return
+end subroutine fct2
+
Index: src/Extrapol_cart.f90
===================================================================
--- src/Extrapol_cart.f90	(revision 0)
+++ src/Extrapol_cart.f90	(revision 1)
@@ -0,0 +1,396 @@
+SUBROUTINE Extrapol_cart(iopt,s,dist,x0,y0,z0,xgeom,Coef)
+
+  ! This subroutine constructs the path, and if dist<>Infinity, it samples
+  ! the path to obtain geometries.
+  ! Basically, you call it twice: i) dist=infinity, it will calculate the length of the path
+  ! ii) dist finite, it will give you the images you want along the path.
+  !
+  ! For now, it gives equidistant geometries
+  !
+
+  use Path_module
+  use Io_module
+
+
+  IMPLICIT NONE
+
+
+  REAL(KREAL), INTENT(OUT) :: s
+  ! X0(Nat),Y0(Nat),Z0(Nat): reference geometry.
+  REAL(KREAL), INTENT(IN) :: dist,X0(Nat),Y0(Nat),Z0(Nat)
+  REAL(KREAL), INTENT(IN) :: Xgeom(NGeomI),Coef(NGeomI,NCoord)
+! Iopt: Number of the cycles for the optimization
+  INTEGER(KINT), INTENT(IN) :: Iopt
+  INTEGER(KINT) :: IdxGeom, I, J, K, Idx,Iat, IGeom
+! NSpline is the number of points along the interpolating path
+  INTEGER(KINT) :: NSpline
+! FileSpline: Filename to save the interpolating path coordinates
+  CHARACTER(LCHARS) :: FileSpline,TmpChar
+  REAL(KREAL) :: Rmsd,MRot(3,3), ds, u, v
+  REAL(KREAL) :: a_val, d
+
+  REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3)
+  REAL(KREAL), ALLOCATABLE :: DerXyz(:,:) ! Nat,3
+
+
+  LOGICAL ::  debug, print, printspline
+  LOGICAL, EXTERNAL :: valid
+
+  !We will calculate the length of the path, in MW coordinates...
+  ! this is done is a stupid way: we interpolate the zmatrix values,
+  ! convert them into cartesian, weight the cartesian
+  ! and calculate the evolution of the distance ! 
+  ! We have to follow the same procedure for every geometry
+  ! so even for the first one, we have to convert it from zmat
+  ! to cartesian !
+
+  debug=valid("pathcreate")
+  print=valid("printgeom")
+
+  printspline=(valid("printspline").AND.(dist<=1e30))
+
+  if (debug) Call Header("Entering Extrapol_cart")
+
+! We want 100 points along the interpolating path
+  NSpline=int(NMaxPtPath/100)
+
+  if (printspline) THEN
+     WRITE(TmpChar,'(I5)') Iopt
+     FileSpline=Trim(adjustL(PathName)) // '_spline.' // AdjustL(TRIM(TmpChar))
+     OPEN(IOTMP,FILE=FileSpline)
+
+  END IF
+
+
+  ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3),DerXyz(Nat,3))
+
+!  XyzTmp2=Reshape(XyzGeomI(1,:,:),(/Nat,3/),ORDER=(/2,1/))
+
+  if (debug) THEN
+     WRITE(*,*) "DBG Extrapol_cart Initial geometries"
+     DO IGeom=1,NGeomI
+        WRITE(*,*) 'XyzGeomI, IGeom=',IGeom
+        DO I=1,Nat
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),      &
+                (XyzGeomI(IGeom,J,I),J=1,3)
+        END DO
+     END DO
+  END IF
+
+
+! In order to mesure only the relevant distance between two points
+! we align all geometries on the original one
+
+   DO IGeom=1,NGeomI
+
+      XyzTmp2=Reshape(XyzGeomI(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/))
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+  XyzGeomI(IGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+ END DO
+
+   if (print) THEN
+      WRITE(*,*) "Aligned geometries"
+      DO J=1, NGeomI
+         WRITE(IOOUT,*) Nat
+         WRITE(IOOUT,*) " Aligned geometry ",J,"/",NGeomI
+           DO i=1,Nat
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),    &
+                   XyzGeomI(J,1:3,I)
+           END DO
+        END DO
+     END IF
+
+  XyzGeomF(1,:,:)=XyzGeomI(1,:,:)
+
+
+  ! We initialize the first geometry
+
+  XyzTmp=Reshape(XyzGeomI(1,:,:),(/Nat,3/),ORDER=(/2,1/))
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp(1,1),xyzTmp(1,2),xyzTMP(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp(1,1),xyzTmp(1,2),xyzTMP(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+
+
+  s=0.d0
+  if (printspline) THEN
+     u=0.d0
+     DO Iat=1,Nat
+        ! We generate the interpolated coordinates
+        if (Linear) THEN
+           call LinearInt(u,XyzTmp2(Iat,1),DerXyz(Iat,1),NGeomI,xgeom(1),XyzGeomI(1,1,Iat))
+           call LinearInt(u,XyzTmp2(Iat,2),DerXyz(Iat,2),NGeomI,xgeom(1),XyzGeomI(1,2,Iat))
+           call LinearInt(u,XyzTmp2(Iat,3),DerXyz(Iat,3),NGeomI,xgeom(1),XyzGeomI(1,3,Iat))
+
+        ELSE
+           call splintder(u,XyzTmp2(Iat,1),DerXyz(Iat,1),NGeomI,xgeom(1),XyzGeomI(1,1,Iat),Coef(1,3*Iat-2))
+           call splintder(u,XyzTmp2(Iat,2),DerXyz(Iat,2),NGeomI,xgeom(1),XyzGeomI(1,2,Iat),Coef(1,3*Iat-1))
+           call splintder(u,XyzTmp2(Iat,3),DerXyz(Iat,3),NGeomI,xgeom(1),XyzGeomI(1,3,Iat),Coef(1,3*Iat))
+        END IF
+     END DO
+
+     WRITE(IOTMP,*) Nat
+     WRITE(IOTMP,'(1X,A,1X,F15.6)') "Debug Spline - Coord=Cart,s=",s
+     DO Iat=1,Nat
+        WRITE(IOTMP,'(1X,A2,3(1X,F15.6))') Nom(Atome(Iat)),    &
+                   (XyzTmp2(Iat,1:3))
+     END DO
+  END IF
+
+ IdxGeom=1
+
+  DO K=1,NMaxPtPath
+     u=real(K)/NMaxPtPath*(NGeomI-1.)
+
+     DO Iat=1,Nat
+        ! We generate the interpolated coordinates
+        if (Linear) THEN
+           call LinearInt(u,XyzTmp2(Iat,1),DerXyz(Iat,1),NGeomI,xgeom(1),XyzGeomI(1,1,Iat))
+           call LinearInt(u,XyzTmp2(Iat,2),DerXyz(Iat,2),NGeomI,xgeom(1),XyzGeomI(1,2,Iat))
+           call LinearInt(u,XyzTmp2(Iat,3),DerXyz(Iat,3),NGeomI,xgeom(1),XyzGeomI(1,3,Iat))
+
+        ELSE
+           call splintder(u,XyzTmp2(Iat,1),DerXyz(Iat,1),NGeomI,xgeom(1),XyzGeomI(1,1,Iat),Coef(1,3*Iat-2))
+           call splintder(u,XyzTmp2(Iat,2),DerXyz(Iat,2),NGeomI,xgeom(1),XyzGeomI(1,2,Iat),Coef(1,3*Iat-1))
+           call splintder(u,XyzTmp2(Iat,3),DerXyz(Iat,3),NGeomI,xgeom(1),XyzGeomI(1,3,Iat),Coef(1,3*Iat))
+        END IF
+     END DO
+
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+
+
+     ds=0.
+     DO I=1,Nat
+        DO J=1,3
+           ds=ds+MassAt(I)*(XYZTMp2(I,J)-XYZTmp(I,J))**2
+           XYZTmp(I,J)=XyzTMP2(I,J)
+        ENDDO
+     ENDDO
+     s=s+sqrt(ds)
+
+     !         if (debug) WRITE(*,*) "Debug u,s,dist",u,s,dist
+
+  if ((printspline).AND.(MOD(K,NSpline).EQ.0)) THEN
+     WRITE(IOTMP,*) Nat
+     WRITE(IOTMP,'(1X,A,1X,F15.6)') "Debug Spline - Coord=Cart,s=",s
+     DO Iat=1,Nat
+        WRITE(IOTMP,'(1X,A2,3(1X,F15.6))') Nom(Atome(Iat)),    &
+                   (XyzTmp2(Iat,1:3))
+     END DO
+  END IF
+
+
+     if (s>=dist) THEN
+
+        if (debug) THEN
+           WRITE(*,*) "DBG Interpol_cart",s
+           DO i=1,Nat
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),    &
+                   (XyzTmp2(I,J),J=1,3)
+           END DO
+        END IF
+
+        s=s-dist
+        IdxGeom=IdxGeom+1
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+        XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+        XyzTangent(IdxGeom,:)=Reshape(DerXyz(:,:),(/3*Nat/))
+
+        if (print) THEN
+           WRITE(IOOUT,'(1X,I5)') Nat
+           WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+
+           DO i=1,Nat
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),    &
+                   (XyzTmp2(I,J),J=1,3)
+           END DO
+
+        END IF
+     END IF  ! s>= dist
+  ENDDO  ! K
+
+
+  if (s>=0.9*dist) THEN
+     s=s-dist
+     XyzTmp2=Reshape(XyzGeomI(NGeomI,:,:),(/Nat,3/),ORDER=(/2,1/))
+
+  if (printspline) THEN
+     WRITE(IOTMP,*) Nat
+     WRITE(IOTMP,*) "Debug Spline - Coord=Cart,s=",s
+     DO Iat=1,Nat
+        WRITE(IOTMP,'(1X,A2,3(1X,F15.6))') Nom(Atome(Iat)),    &
+                   (XyzTmp2(Iat,1:3))
+     END DO
+  END IF
+
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+     IdxGeom=IdxGeom+1
+
+    IF (IdxGeom.GT.NGeomF) THEN
+        WRITE(IOOUT,*) "!!! ERROR in Extrapol_cart !!!!"
+        WRITE(IOOUT,*) "Too many structures. Increase NMaxPath"
+        WRITE(*,*) "** PathCreate ***"
+        WRITE(*,*) "Distribution of points along the path is wrong."
+        WRITE(*,*) "Increase value of NMaxPtPath in the input file"
+        WRITE(*,*) "Present value is:", NMaxPtPath
+        STOP
+     END IF
+
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+!  IF (Nat.GT.4) THEN
+! PFL 24 Nov 2008 ->
+! If we have frozen atoms we align only those ones.
+! PFL 8 Feb 2011 ->
+! I add a flag to see if we should align or not.
+! For small systems, it might be better to let the user align himself
+      IF (Align) THEN
+         if (NFroz.GT.0) THEN
+            Call AlignPartial(Nat,x0,y0,z0,                     &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 FrozAtoms,MRot)
+         ELSE
+            Call  CalcRmsd(Nat, x0,y0,z0,                              &
+                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                 MRot,rmsd,.TRUE.,.TRUE.)
+         END IF
+! <- PFL 24 Nov 2008
+      END IF
+! -> PFL 8 Feb 2011
+!  END IF
+
+     XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+     XyzTangent(IdxGeom,:)=Reshape(DerXyz(:,:),(/3*Nat/))
+
+     if (print) THEN
+        WRITE(IOOUT,'(1X,I5)') Nat
+        WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+
+        DO i=1,Nat
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),     &
+                (XyzTmp2(I,J),J=1,3)
+        END DO
+     END IF
+  END IF
+
+  DEALLOCATE(XyzTmp,XyzTmp2)
+
+  if (debug) WRITE(*,*) 's final =',s
+
+  if (printspline) CLOSE(IOTMP)
+
+  if (debug) Call Header("Extrapol_cart over")
+
+END SUBROUTINE EXTRAPOL_CART
Index: src/Space_GEDIIS_all.f90
===================================================================
--- src/Space_GEDIIS_all.f90	(revision 0)
+++ src/Space_GEDIIS_all.f90	(revision 1)
@@ -0,0 +1,67 @@
+      ! SPACE_GEDIIS SIMPLY LOADS THE CURRENT VALUES OF Geom AND Grad INTO THE ARRAYS GeomSet AND GradSet
+
+      SUBROUTINE SPACE_GEDIIS_All(NGeomF,IGeom,MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+      ! MSET=mth iteration, MRESET=Maximum no. of iterations. 
+      INTEGER(KINT) :: NCoord, MRESET, MSET(NGeomF), NGeomF, IGeom 
+      ! Geom=geometry with NCoord coordinates. GRAD=gradients.
+      REAL(KREAL) :: Geom(NCoord), Grad(NCoord)
+	  REAL(KREAL) :: Heat
+      LOGICAL :: FRST(NGeomF), Print=.FALSE.
+      ! GeomSet, GradSet : a long array to store.
+      REAL(KREAL) :: GeomSet(NGeomF,MRESET*NCoord), GradSet(NGeomF,MRESET*NCoord), ESET(NGeomF,MRESET)
+      ! Geom and GRAD for all iterations.
+
+      INTEGER(KINT) :: I,J,K,NMK,MI,NI
+      INTEGER(KINT), SAVE :: NRESET
+
+      ! UPDATE PARAMETER AND GRADIENT SUBSPACE:
+      IF (PRINT)  WRITE(*,'(/,''       BEGIN SPACE_GEDIIS_ALL   '')')
+	  IF(FRST(IGeom))THEN
+	    ! Print *, 'Inside FRST(',IGeom,')=', FRST(IGeom)
+         NRESET=MIN(NCoord/2,MRESET)
+             IF (NCoord .LT. 5 ) THEN ! This condition is imposed for small NCoord,
+               ! particularly if NCoord is equal to 2 or 3.
+                NRESET = NCoord-1
+             END IF
+         FRST(IGeom)=.FALSE.
+         MSET(IGeom)=0
+      ENDIF
+
+      IF (PRINT)  WRITE(*,'(/,''       SPACE_GEDIIS_ALL 1  '')')
+      ! purging the very first Geom and GRAD.
+      if (print) WRITE(*,*) "DBG SPACE_GEDIIS MSET, NRESET", MSET,NRESET
+      IF (MSET(IGeom) .EQ. NRESET) THEN
+         DO I=1,MSET(IGeom)-1
+            MI = NCoord*(I-1)
+            NI = NCoord*I
+            ESET(IGeom,I)=ESET(IGeom,I+1)
+            DO K=1,NCoord
+               GeomSet(IGeom,MI+K) = GeomSet(IGeom,NI+K)
+               GradSet(IGeom,MI+K) = GradSet(IGeom,NI+K)
+            END DO
+		 END DO	
+            MSET(IGeom)=NRESET-1
+      ENDIF
+
+      ! STORE THE CURRENT POINT:
+	  IF (PRINT)  WRITE(*,'(/,''       SPACE_GEDIIS_ALL  2  '')')
+      DO  K=1,NCoord
+         NMK = NCoord*MSET(IGeom)+K ! MSET(IGeom) corresponds the mth iteration.
+         IF (PRINT)  WRITE(*,*) 'K,NMK,MSET(',IGeom,'),NCoord',K,NMK,MSET(IGeom),NCoord !, &
+          !   SIZE(GeomSet(IGeom,:)), SIZE(GradSet(IGeom,:)),SIZE(Geom),SIZE(GRAD)
+         GeomSet(IGeom,NMK) = Geom(K)
+         GradSet(IGeom,NMK) = Grad(K)
+      END DO
+	  
+      MSET(IGeom)=MSET(IGeom)+1
+      ESET(IGeom,MSET(IGeom))=HEAT
+	   
+      IF (PRINT) WRITE (*,*) "MSET(",IGeom,")=", MSET(IGeom)
+      IF (PRINT)  WRITE(*,'(/,''       END SPACE_GEDIIS_ALL    '')')
+
+      END SUBROUTINE SPACE_GEDIIS_All

Property changes on: src/Space_GEDIIS_all.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/minv.f90
===================================================================
--- src/minv.f90	(revision 0)
+++ src/minv.f90	(revision 1)
@@ -0,0 +1,142 @@
+      SUBROUTINE MINV(A,N,D)
+ 
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+      REAL(KREAL), INTENT(INOUT) :: A(N*N)
+      INTEGER(KINT), INTENT(IN) :: N
+      REAL(KREAL), INTENT(OUT) :: D
+
+ 
+!**********************************************************************
+!*
+!*     INVERT A MATRIX USING GAUSS-JORDAN METHOD.  PART OF DIIS
+!*     A - INPUT MATRIX (MUST BE A GENERAL MATRIX), DESTROYED IN
+!*        COMPUTATION AND REPLACED BY RESULTANT INVERSE.
+!*     N - ORDER OF MATRIX A
+!*     D - RESULTANT DETERMINANT
+!*
+!**********************************************************************
+      INTEGER(KINT), ALLOCATABLE :: L(:), M(:)
+      INTEGER(KINT) :: I,J,K,NK,KK,KI,KJ,IZ,IJ,JP,JK,IK,JR,JQ,JI
+
+      REAL(KREAL) :: BigA,Hold
+
+      ALLOCATE(L(N),M(N))
+!
+!     SEARCH FOR LARGEST ELEMENT
+!
+      D=1.0D0
+      NK=-N
+      DO 180 K=1,N
+         NK=NK+N
+         L(K)=K
+         M(K)=K
+         KK=NK+K
+         BIGA=A(KK)
+         DO 20 J=K,N
+            IZ=N*(J-1)
+            DO 20 I=K,N
+               IJ=IZ+I
+   10          IF (ABS(BIGA).LT.ABS(A(IJ)))THEN
+                  BIGA=A(IJ)
+                  L(K)=I
+                  M(K)=J
+               ENDIF
+   20    CONTINUE
+!
+!     INTERCHANGE ROWS
+!
+         J=L(K)
+         IF (J-K) 50,50,30
+   30    KI=K-N
+         DO 40 I=1,N
+            KI=KI+N
+            HOLD=-A(KI)
+            JI=KI-K+J
+            A(KI)=A(JI)
+   40    A(JI)=HOLD
+!
+!     INTERCHANGE COLUMNS
+!
+   50    I=M(K)
+         IF (I-K) 80,80,60
+   60    JP=N*(I-1)
+         DO 70 J=1,N
+            JK=NK+J
+            JI=JP+J
+            HOLD=-A(JK)
+            A(JK)=A(JI)
+   70    A(JI)=HOLD
+!C
+!C     DIVIDE COLUMN BY MINUS PIVOT (VALUE OF PIVOT ELEMENT IS
+!C     CONTAINED IN BIGA)
+!C
+   80    IF (BIGA) 100,90,100
+   90    D=0.0
+         RETURN
+  100    DO 120 I=1,N
+            IF (I-K) 110,120,110
+  110       IK=NK+I
+            A(IK)=A(IK)/(-BIGA)
+  120    CONTINUE
+!C  REDUCE MATRIX
+         DO 150 I=1,N
+            IK=NK+I
+            HOLD=A(IK)
+            IJ=I-N
+            DO 150 J=1,N
+               IJ=IJ+N
+               IF (I-K) 130,150,130
+  130          IF (J-K) 140,150,140
+  140          KJ=IJ-I+K
+               A(IJ)=HOLD*A(KJ)+A(IJ)
+  150    CONTINUE
+!C
+!C     DIVIDE ROW BY PIVOT
+!C
+         KJ=K-N
+         DO 170 J=1,N
+            KJ=KJ+N
+            IF (J-K) 160,170,160
+  160       A(KJ)=A(KJ)/BIGA
+  170    CONTINUE
+!C
+!C     PRODUCT OF PIVOTS
+!C
+         D=MAX(-1.D25,MIN(1.D25,D))
+         D=D*BIGA
+!C
+!C     REPLACE PIVOT BY RECIPROCAL
+!C
+         A(KK)=1.0/BIGA
+  180 CONTINUE
+!C
+!C     FINAL ROW AND COLUMN INTERCHANGE
+!C
+      K=N
+  190 K=(K-1)
+      IF (K) 260,260,200
+  200 I=L(K)
+      IF (I-K) 230,230,210
+  210 JQ=N*(K-1)
+      JR=N*(I-1)
+      DO 220 J=1,N
+         JK=JQ+J
+         HOLD=A(JK)
+         JI=JR+J
+         A(JK)=-A(JI)
+  220 A(JI)=HOLD
+  230 J=M(K)
+      IF (J-K) 190,190,240
+  240 KI=K-N
+      DO 250 I=1,N
+         KI=KI+N
+         HOLD=A(KI)
+         JI=KI-K+J
+         A(KI)=-A(JI)
+  250 A(JI) =HOLD
+      GO TO 190
+  260 RETURN
+      END

Property changes on: src/minv.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Tensor.f90
===================================================================
--- src/Tensor.f90	(revision 0)
+++ src/Tensor.f90	(revision 1)
@@ -0,0 +1,106 @@
+subroutine tensor(natom,rx,ry,rz,Tinert,CoordG,rmass)
+  ! c
+  ! c      elements of inertial tensor for a set of atomic systems.
+  ! c
+  ! c      rx,ry,rz : arrays natom with cartesian coordinates of natom particles; input
+  ! c      txx,tyy,tzz,txy,txz,tyz: elements of inertial tensors ; output
+  ! c      a,b,c    :  returning center of mass coordinates.
+  ! c      rmass    : vector of length natom with particle masses; input
+  ! c      natom    : number of particles per system; input
+  ! c      IOOUT     : unit number for messages, silent for IOOUT.le.0; input
+  ! c      subroutines called: cmshft                   m. lewerenz jul/92
+  ! c
+
+  use Io_module
+
+  IMPLICIT NONE
+
+  REAL(KREAL), parameter :: zero=0.d0,one=1.d0
+
+  INTEGER(KINT), INTENT(IN) :: Natom
+  real(KREAL) :: rx(Natom),ry(Natom),rz(Natom),rmass(Natom)
+  real(KREAL) :: a,b,c,Tinert(3,3),CoordG(3)
+
+  INTEGER(KINT) :: jover, I, J
+  REAL(KREAL) :: Txx, Tyy, Tzz, Txy, Txz, Tyz, Txxi
+  REAL(KREAL) :: Ryb, Rzc, Rxa, Rmj2, ryb2, rzc2, rxa2, Rmj
+
+
+  if(natom.le.0) then
+     if(IOOUT.gt.0) write(IOOUT,'(/2a/)')   &
+          '  *** error, illegal array dimension(s) in tensor,', &
+          ' return without action ***'
+  else if(natom.eq.1) then
+     a=rx(1)
+     b=ry(1)
+     c=rz(1)
+     txx=zero
+     tyy=zero
+     tzz=zero
+     txy=zero
+     txz=zero
+     tyz=zero
+  else
+     !c
+     !c      first center of mass coordinates, then tensor elements
+     !c
+     call cmshft(natom,rx,ry,rz,rmass,a,b,c,0)
+     CoordG(1)=a
+     CoordG(2)=b
+     CoordG(3)=c
+1000 FORMAT(3F15.3)
+     !c       WRITE(IOOUT,1000) (CoordG(i),i=1,3)
+     jover=mod(natom,2)
+     if(jover.eq.0) then
+        txx=zero
+        tyy=zero
+        tzz=zero
+        txy=zero
+        txz=zero
+        tyz=zero
+     else
+        rmj=rmass(1)
+        ryb=b-ry(1)
+        rzc=c-rz(1)
+        tyz=-rmj*ryb*rzc
+        rxa=a-rx(1)
+        txz=(-rmj*rxa)*rzc
+        txy=(-rmj*rxa)*ryb
+        txx=rmj*((ryb*ryb)+(rzc*rzc))
+        tyy=rmj*((rxa*rxa)+(rzc*rzc))
+        tzz=rmj*((rxa*rxa)+(ryb*ryb))
+     end if
+!c
+!c      force vectorization of inner loop if necessary (ibm-3090)
+!c
+     do j=jover+1,natom,2
+        rmj=rmass(j)
+        rmj2=rmass(j+1)
+        ryb=b-ry(j)
+        rzc=c-rz(j)
+        txxi=txx+rmj*((ryb*ryb)+(rzc*rzc))
+        ryb2=b-ry(j+1)
+        rzc2=c-rz(j+1)
+        txx=txxi+rmj2*((ryb2*ryb2)+(rzc2*rzc2))
+        tyz=tyz-rmj*ryb*rzc-rmj2*ryb2*rzc2
+        rxa=a-rx(j)
+        rxa2=a-rx(j+1)
+        txy=txy-(rmj*rxa)*ryb-(rmj2*rxa2)*ryb2
+        txz=txz-(rmj*rxa)*rzc-(rmj2*rxa2)*rzc2
+        tyy=tyy+rmj*((rxa*rxa)+(rzc*rzc))  &
+             +rmj2*((rxa2*rxa2)+(rzc2*rzc2))
+        tzz=tzz+rmj*((rxa*rxa)+(ryb*ryb))   &
+             +rmj2*((rxa2*rxa2)+(ryb2*ryb2)) 
+     END DO
+  end if
+  Tinert(1,1)=txx
+  Tinert(1,2)=txy
+  Tinert(1,3)=txz
+  Tinert(2,1)=txy
+  Tinert(2,2)=tyy
+  Tinert(2,3)=tyz
+  Tinert(3,1)=txz
+  Tinert(3,2)=tyz
+  Tinert(3,3)=tzz
+  return
+end subroutine tensor
Index: src/Splin1D.f90
===================================================================
--- src/Splin1D.f90	(revision 0)
+++ src/Splin1D.f90	(revision 1)
@@ -0,0 +1,391 @@
+       SUBROUTINE spline(x,y,n,yp1,ypn,y2)
+!Given arrays x(1:n) and y(1:n) containing a tabulated function,
+! i.e., y i = f(xi), with x1<x2< :::<xN , and given values yp1 and ypn
+!for the  rst derivative of the inter- polating function at points 1 and n,
+! respectively, this routine returns an array y2(1:n) of length n
+!which contains the second derivatives of the interpolating function
+!at the tabulated points xi.
+! Ifyp1 and/or ypn are equal to 1*10^30 or larger,
+! the routine is signaled to set the corresponding boundary
+!condition for a natural spline,
+!with zero second derivative on that boundary.
+
+         Use Vartypes
+
+         IMPLICIT NONE
+
+! Number of points
+         INTEGER(KINT) :: n
+! Coordinate to spline
+         REAL(KREAL) :: x(n),y(n)
+! Coefficients to compute
+         REAL(KREAL) :: y2(n)
+! End-points derivatives
+         REAL(KREAL) ::yp1,ypn
+
+       INTEGER(KINT), PARAMETER  :: NMAX=500
+
+       INTEGER(KINT) :: i,k
+       REAL(KREAL) :: p,qn,sig,un,u(NMAX)
+       LOGICAL Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+       Debug=valid("spline")
+
+       IF (DEBUG) THEN
+          WRITE(*,*) "Spline 1D",n
+          WRITE(*,*) "x:",(x(i),i=1,n)
+          WRITE(*,*) "y:",(y(i),i=1,n)
+       END IF
+
+       if (yp1.gt..99e30) then
+! The lower boundary condition is set either to be \natural"
+        y2(1)=0.
+        u(1)=0.
+       else
+! or else to have a speci ed  rst derivative.
+        y2(1)=-0.5
+        u(1)=(3./(x(2)-x(1)))*((y(2)-y(1))/(x(2)-x(1))-yp1)
+      endif
+      do i=2,n-1
+! This is the decomposition loop of the tridiagonal algorithm.
+!y2 and u are used for temporary storage of the decomposed factors.
+       sig=(x(i)-x(i-1))/(x(i+1)-x(i-1))
+        p=sig*y2(i-1)+2.
+       y2(i)=(sig-1.)/p
+       u(i)=(6.*((y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1)) &
+                /(x(i)-x(i-1)))/(x(i+1)-x(i-1))-sig*u(i-1))/p
+       enddo
+       if (ypn.gt..99e30) then
+!The upper boundary condition is set either to be \natural"
+         qn=0.
+         un=0.
+        else
+!or else to have a speci ed  rst derivative.
+         qn=0.5
+         un=(3./(x(n)-x(n-1)))*(ypn-(y(n)-y(n-1))/(x(n)-x(n-1)))
+         endif
+        y2(n)=(un-qn*u(n-1))/(qn*y2(n-1)+1.)
+        do k=n-1,1,-1
+         y2(k)=y2(k)*y2(k+1)+u(k)
+        enddo
+
+        IF (DEBUG)  WRITE(*,*) "y2:",(y2(i),i=1,n)
+         return
+        END
+
+
+      SUBROUTINE splint(x,y,N,xa,ya,y2a)
+
+         Use Vartypes
+
+         IMPLICIT NONE
+
+! Number of points
+         INTEGER(KINT) :: n
+! Spline coefficients
+         REAL(KREAL) :: xa(n),ya(n), y2a(n)
+! Y to compute for a given x
+         REAL(KREAL) :: x,y
+
+
+       INTEGER(KINT) :: ind
+       LOGICAL debug
+
+! Given the arrays xa(1:n) and ya(1:n) of length n, which tabulate a
+! function (with the xai's in order), and given the array y2a(1:n),
+!which is the output from spline above, and given a value of x,
+! this routine returns a cubic-spline interpolated value y.
+       INTEGER(KINT) :: k,khi,klo
+       REAL(KREAL) :: a,b,h
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+       Debug=valid("splint")
+
+
+!           if (debug) THEN
+!       WRITE(*,*) "Splint 1D",n
+!       WRITE(*,*) "xa:",(xa(i),i=1,n)
+!       WRITE(*,*) "ya:",(ya(i),i=1,n)
+!       WRITE(*,*) "y2a:",(y2a(i),i=1,n)
+!        END IF
+
+
+
+          klo=1
+!We will  find the right place in the table by means of bisection.
+! This is optimal if sequential calls to this routine are at
+!random values of x. If sequential calls are in order, and closely
+! spaced, one would do better to store previous values of klo and khi
+! and test if they remain appropriate on the next call.
+          khi=n
+ !         WRITE(*,*) xa(klo),xa(khi),n,x
+ 1        if (khi-klo.gt.1) then
+             k=(khi+klo)/2
+             if(xa(k).gt.x) then
+                khi=k
+             else
+                klo=k
+             endif
+          goto 1
+          endif
+! klo and khi now bracket the input value of x.
+          h=xa(khi)-xa(klo)
+! The xa's must be distinct.
+          if (h.eq.0.) pause 'bad xa input in splint'
+! Cubic spline polynomial is now evaluated.
+           a=(xa(khi)-x)/h
+           b=(x-xa(klo))/h
+           y=a*ya(klo)+b*ya(khi)+ ((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi)) &
+                *(h**2)/6.
+
+!           WRITE(*,*) "Splint1D x,y",x,y
+          return
+          END
+
+
+! SUBROUTINE splinder *************************************************
+! *********************************************************************
+
+      SUBROUTINE splinder(x,y,N,xa,ya,y2a)
+         Use Vartypes
+
+         IMPLICIT NONE
+
+! Number of points
+         INTEGER(KINT) :: n
+! Spline coefficients
+         REAL(KREAL) :: xa(n),ya(n), y2a(n)
+! Y to compute for a given x
+         REAL(KREAL) :: x,y
+
+
+       INTEGER(KINT) :: ind
+       LOGICAL debug
+
+! Given the arrays xa(1:n) and ya(1:n) of length n, which tabulate a
+! function (with the xai's in order), and given the array y2a(1:n),
+! which is the output from spline above, and given a value of x,
+! this routine returns a cubic-spline interpolated value y first DERIVATIVE.
+! this routine returns a cubic-spline interpolated value y.
+       INTEGER(KINT) :: k,khi,klo
+       REAL(KREAL) :: a,b,h
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+ 
+       Debug=valid("splinder")
+
+
+
+          klo=1
+! We will  find the right place in the table by means of bisection.
+! This is optimal if sequential calls to this routine are at
+!random values of x. If sequential calls are in order, and closely
+! spaced, one would do better to store previous values of klo and khi
+! and test if they remain appropriate on the next call.
+          khi=n
+ !         WRITE(*,*) xa(klo),xa(khi),n,x
+ 1        if (khi-klo.gt.1) then
+             k=(khi+klo)/2
+             if(xa(k).gt.x) then
+                khi=k
+             else
+                klo=k
+             endif
+          goto 1
+          endif
+! klo and khi now bracket the input value of x.
+          h=xa(khi)-xa(klo)
+! The xa's must be distinct.
+          if (h.eq.0.) pause 'bad xa input in splint'
+! Cubic spline polynomial is now evaluated.
+           a=(xa(khi)-x)/h
+           b=(x-xa(klo))/h
+! Formula taken from the Numerical Recipies book.
+           y=(ya(khi)-ya(klo))/h - (3*a**2-1)/6.*h*y2a(klo)+ &
+                (3*b**2-1)/6.*h*y2a(khi)
+          return
+          END
+
+
+
+! SUBROUTINE splintder *************************************************
+! *********************************************************************
+
+      SUBROUTINE splintDer(x,y,der,N,xa,ya,y2a)
+
+! Given the arrays xa(1:n) and ya(1:n) of length n, which tabulate a
+! function (with the xai's in order), and given the array y2a(1:n),
+! which is the output from spline above, and given a value of x,
+! this routine returns a cubic-spline interpolated value y.
+! and the derivative der.
+
+         Use Vartypes
+
+         IMPLICIT NONE
+
+! Number of points
+         INTEGER(KINT) :: n
+! Spline coefficients
+         REAL(KREAL) :: xa(n),ya(n), y2a(n)
+! Y to compute for a given x
+         REAL(KREAL) :: x,y, der
+
+
+       INTEGER(KINT) :: ind
+       LOGICAL debug
+
+       INTEGER(KINT) :: k,khi,klo
+       REAL(KREAL) :: a,b,h
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+       Debug=valid("splintder")
+
+
+!           if (debug) THEN
+!       WRITE(*,*) "SplintDer 1D",n
+!       WRITE(*,*) "xa:",(xa(i),i=1,n)
+!       WRITE(*,*) "ya:",(ya(i),i=1,n)
+!       WRITE(*,*) "y2a:",(y2a(i),i=1,n)
+!        END IF
+
+
+
+          klo=1
+! We will  find the right place in the table by means of bisection.
+! This is optimal if sequential calls to this routine are at
+! random values of x. If sequential calls are in order, and closely
+! spaced, one would do better to store previous values of klo and khi
+! and test if they remain appropriate on the next call.
+          khi=n
+ !         WRITE(*,*) xa(klo),xa(khi),n,x
+ 1        if (khi-klo.gt.1) then
+             k=(khi+klo)/2
+             if(xa(k).gt.x) then
+                khi=k
+             else
+                klo=k
+             endif
+          goto 1
+          endif
+! klo and khi now bracket the input value of x.
+          h=xa(khi)-xa(klo)
+! The xa's must be distinct.
+          if (h.eq.0.) pause 'bad xa input in splint'
+! Cubic spline polynomial is now evaluated.
+           a=(xa(khi)-x)/h
+           b=(x-xa(klo))/h
+           y=a*ya(klo)+b*ya(khi)+ ((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi)) &
+                *(h**2)/6.
+! Formula taken from the Numerical Recipies book.
+           der=(ya(khi)-ya(klo))/h - (3*a**2-1)/6.*h*y2a(klo)+ &
+                (3*b**2-1)/6.*h*y2a(khi)
+          return
+        END SUBROUTINE splintDer
+
+
+
+      SUBROUTINE LinearInt(x,y,der,N,xa,ya)
+
+! Given the arrays xa(1:n) and ya(1:n) of length n, which tabulate a
+! function (with the xai's in order), and given the array y2a(1:n),
+! which is the output from spline above, and given a value of x,
+! this routine returns a cubic-spline interpolated value y.
+
+         Use Vartypes
+
+         IMPLICIT NONE
+
+! Number of points
+         INTEGER(KINT) :: n
+! Spline coefficients
+         REAL(KREAL) :: xa(n),ya(n)
+! Y to compute for a given x
+         REAL(KREAL) :: x,y, der
+
+
+       INTEGER(KINT) :: ind
+       LOGICAL debug
+
+       INTEGER(KINT) :: k,khi,klo
+       REAL(KREAL) :: a,b,h
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+       Debug=valid("linearint")
+
+
+!           if (debug) THEN
+!       WRITE(*,*) "SplintDer 1D",n
+!       WRITE(*,*) "xa:",(xa(i),i=1,n)
+!       WRITE(*,*) "ya:",(ya(i),i=1,n)
+!       WRITE(*,*) "y2a:",(y2a(i),i=1,n)
+!        END IF
+
+
+
+          klo=1
+! We will  find the right place in the table by means of bisection.
+! This is optimal if sequential calls to this routine are at
+! random values of x. If sequential calls are in order, and closely
+! spaced, one would do better to store previous values of klo and khi
+! and test if they remain appropriate on the next call.
+          khi=n
+ !         WRITE(*,*) xa(klo),xa(khi),n,x
+ 1        if (khi-klo.gt.1) then
+             k=(khi+klo)/2
+             if(xa(k).gt.x) then
+                khi=k
+             else
+                klo=k
+             endif
+          goto 1
+          endif
+! klo and khi now bracket the input value of x.
+          h=xa(khi)-xa(klo)
+! The xa's must be distinct.
+          if (h.eq.0.) pause 'bad xa input in splint'
+! Linear int now evaluated.
+           a=(xa(khi)-x)/h
+           b=(x-xa(klo))/h
+           y=a*ya(klo)+b*ya(khi)
+! Formula taken from the Numerical Recipies book.
+           der=a+b
+          return
+        END SUBROUTINE LinearInt

Property changes on: src/Splin1D.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Hinvup_BFGS.f90
===================================================================
--- src/Hinvup_BFGS.f90	(revision 0)
+++ src/Hinvup_BFGS.f90	(revision 1)
@@ -0,0 +1,173 @@
+! This program reads an old hessian, old forces, new
+! forces and updates the hessian matrix inverse
+! using the BFGS scheme.
+! 
+! This routines has been modified so that its input is now:
+SUBROUTINE Hinvup_BFGS(Nfree,ds,dgrad,Hess)
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  INTEGER(KINT), INTENT(IN) :: NFREE
+  REAL(KREAL), INTENT(INOUT) :: Hess(Nfree,Nfree)
+  REAL(KREAL), INTENT(IN) :: ds(Nfree)
+  REAL(KREAL), INTENT(IN) :: dGrad(Nfree)
+  
+  REAL(KREAL), ALLOCATABLE  :: HessOld(:,:) , Wy(:)
+  REAL(KREAL), ALLOCATABLE  :: Hup(:,:),ssT(:,:)
+  REAL(KREAL), ALLOCATABLE  :: HupInt(:)
+  REAL(KREAL), ALLOCATABLE  :: Num(:,:), Num2(:,:)
+  REAL(KREAL) :: Phi, Num3, Den, Den2,NormDS
+  CHARACTER(120) :: fmt,fmt2,Line
+  INTEGER(KINT) :: i,j,k, Idx
+
+  LOGICAL debug,valid
+  EXTERNAL valid
+
+  debug=valid("Hinvup_BFGS")
+
+  if (debug) WRITE(*,*) "=========================== Entering Hinvup_BFGS ===================="
+
+  ALLOCATE(HessOld(nfree,nfree), Hup(nfree,nfree), &
+       HupInt(nfree),  &
+       Num(nfree,nfree), Num2(nfree,nfree),Wy(Nfree),ssT(Nfree,nFree) )
+
+  ! Notations
+  ! s=Geom-GeomOld
+  ! y=Grad-GradOld
+  ! W= (H)-1 ie the inverse matrix that we are updating
+  ! W+=W - [s(yT)W+Wy(sT)]/(y,s)+ {1+[(y,Wy)/(y,s)]}(s(sT))/(y,s)
+
+
+  HessOld=Hess
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG Hinvup_BFGS HessOld'
+     Idx=min(12,Nfree)
+     DO I=1,NFree
+        WRITE(*,'(12(1X,F8.4))') HessOld(I,1:Idx)
+     END DO
+     WRITE(*,*) 'DBG Hinvup_BFGS ds'
+     WRITE(*,'(12(1X,F8.4))') ds(1:Idx)
+     WRITE(*,*) 'DBG Hinvup_BFGS dGrad'
+     WRITE(*,'(12(1X,F8.4))') dGrad(1:Idx)
+  END IF
+
+
+
+  NormDS=sqrt(DOT_PRODUCT(DS,DS))
+  if (NormDS>=1e-6) THEN
+     IF (debug) WRITE(*,*) 'NormDS=',NormDS
+     IF (debug) WRITE(*,*) 'DS=',DS
+     IF (debug) WRITE(*,*) 'DGrad=',DGrad
+     ! We calculate the denominator (DGrad,DS)
+     den=DOT_PRODUCT(DGrad,DS)
+
+     if (debug) WRITE(*,*) "(y,s)=(yT)s",den
+
+     ! We calculate Wy
+     Wy=0
+     DO I=1,nfree
+        DO J=1,NFree
+           Wy(I)=Wy(I)+HessOld(i,j)*DGrad(j)
+        END DO
+     END DO
+
+     if (debug) WRITE(*,*) "Wy=",Wy
+
+     ! We calculate Num=Wy(sT)
+     Num=0.
+     DO I=1,Nfree
+        DO J=1,Nfree
+           Num(I,J)=Wy(i)*Ds(j)
+        END DO
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Wy(sT)"
+        DO I=1,NFree
+           WRITE(*,*) Num(I,:)
+        END DO
+     END if
+
+     ! We calculate Num2=s(yT)
+     Num2=0
+     Do I=1,NFree
+        DO J=1,NFree
+           Num2(I,J)=Ds(i)*DGrad(j)
+        END DO
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "s(yT)"
+        DO I=1,NFree
+           WRITE(*,*) Num2(I,:)
+        END DO
+     END if
+
+
+     ! we add Num2*W to Num
+     Do I=1,NFree
+        DO J=1,NFree
+           DO K=1,NFree
+              Num(I,J)=Num(I,J)+Num2(I,K)*HessOld(K,J)
+           END DO
+        END DO
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Num=s(yT)W+Wy(sT)"
+        DO I=1,NFree
+           WRITE(*,*) Num(I,:)
+        END DO
+     END if
+
+
+     ! we calculate ssT
+     ssT=0.
+     DO I=1,Nfree
+        DO J=1,NFree
+           ssT(I,J)=Ds(I)*Ds(J)
+        END DO
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "s(sT)"
+        DO I=1,NFree
+           WRITE(*,*) ssT(I,:)
+        END DO
+     END if
+
+
+     !We add everything
+     Hup=(1+DOT_PRODUCT(DGRAD,Wy)/Den)*ssT/Den-Num/Den
+     Hess=HessOld+Hup
+
+     if (debug) THEN
+        WRITE(*,*) 'DBG Hinvup_BFGS Hup'
+        Idx=min(12,Nfree)
+        DO I=1,NFree
+           WRITE(*,'(12(1X,F8.4))') Hup(I,1:Idx)
+        END DO
+        WRITE(*,*) 'DBG Hinvup_BFGS Hess new'
+        Idx=min(12,Nfree)
+        DO I=1,NFree
+           WRITE(*,'(12(1X,F8.4))') Hess(I,1:Idx)
+        END DO
+     END IF
+
+  ELSE
+     Hess=HessOld
+  END IF
+  !     WRITE(*,*) 'New hess'
+  !     DO I=1,nfree
+  !        WRITE(*,fmt) Hess(i,:)
+  !     END DO
+
+  DEALLOCATE(HessOld, Wy,ssT, Hup,HupInt, Num, Num2 )
+
+  if (debug) WRITE(*,*) "=========================== Hinvup_BFGS Over ===================="
+
+END SUBROUTINE Hinvup_BFGS
Index: src/Step_GDIIS_Simple_Err.f90
===================================================================
--- src/Step_GDIIS_Simple_Err.f90	(revision 0)
+++ src/Step_GDIIS_Simple_Err.f90	(revision 1)
@@ -0,0 +1,253 @@
+!C  HEAT is never used, not even in call of Space(...)
+!C  Geom = input parameter vector (Geometry).
+!C  Grad = input gradient vector.
+      SUBROUTINE Step_GDIIS_Simple_Err(NewGeom,Geom,NewGrad,GRAD,HP,HEAT,Hess,NCoord,FRST)
+!      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+!      INCLUDE 'SIZES'
+
+      INTEGER(KINT) :: NCoord
+      REAL(KREAL) :: NewGeom(NCoord), Geom(NCoord), NewGrad(NCoord), GRAD(NCoord), Hess(NCoord*NCoord)
+      REAL(KREAL) :: HEAT, HP
+      LOGICAL :: FRST
+	  
+!************************************************************************
+!*                                                                      *
+!*     DIIS PERFORMS DIRECT INVERSION IN THE ITERATIVE SUBSPACE         *
+!*                                                                      *
+!*     THIS INVOLVES SOLVING FOR C IN Geom(NEW) = Geom' - HG'           *
+!*                                                                      *
+!*  WHERE Geom' = SUM(C(I)Geom(I), THE C COEFFICIENTES COMING FROM      *
+!*                                                                      *
+!*                   | B   1 | . | C | = | 0 |                          *
+!*                   | 1   0 |   |-L |   | 1 |                          *
+!*                                                                      *
+!* WHERE B(I,J) =GRAD(I)H(T)HGRAD(J)  GRAD(I) = GRADIENT ON CYCLE I     *
+!*                              Hess    = INVERSE HESSIAN               *
+!*                                                                      *
+!*                          REFERENCE                                   *
+!*                                                                      *
+!*  P. CSASZAR, P. PULAY, J. MOL. STRUCT. (THEOCHEM), 114, 31 (1984)    *
+!*                                                                      *
+!************************************************************************
+!************************************************************************
+!*                                                                      *
+!*     GEOMETRY OPTIMIZATION USING THE METHOD OF DIRECT INVERSION IN    *
+!*     THE ITERATIVE SUBSPACE (GDIIS), COMBINED WITH THE BFGS OPTIMIZER *
+!*     (A VARIABLE METRIC METHOD)                                       *
+!*                                                                      *
+!*     WRITTEN BY PETER L. CUMMINS, UNIVERSITY OF SYDNEY, AUSTRALIA     *
+!*                                                                      *
+!*                              REFERENCE                               *
+!*                                                                      *
+!*      "COMPUTATIONAL STRATEGIES FOR THE OPTIMIZATION OF EQUILIBRIUM   *
+!*     GEOMETRIES AND TRANSITION-STATE STRUCTURES AT THE SEMIEMPIRICAL  *
+!*     LEVEL", PETER L. CUMMINS, JILL E. GREADY, J. COMP. CHEM., 10,    *
+!*     939-950 (1989).                                                  *
+!*                                                                      *
+!*     MODIFIED BY JJPS TO CONFORM TO EXISTING MOPAC CONVENTIONS        *
+!*                                                                      *
+!************************************************************************
+
+      ! MRESET = number of iterations.
+      INTEGER(KINT), PARAMETER :: MRESET=15, M2=(MRESET+1)*(MRESET+1) !M2 = 256
+      REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet(:), GradSet(:), ERR(:) ! MRESET*NCoord
+      REAL(KREAL) :: ESET(MRESET)
+      REAL(KREAL), ALLOCATABLE, SAVE :: DX(:), GSAVE(:) !NCoord
+      REAL(KREAL) :: B(M2), BS(M2), BST(M2)
+      LOGICAL DEBUG, PRINT
+      INTEGER(KINT), SAVE :: MSET
+      INTEGER(KINT) :: NDIIS, MPLUS, INV, ITERA, MM, I, J, K
+      INTEGER(KINT) :: JJ, KJ, JNV, II, IONE, IJ, INK,ITmp
+      REAL(KREAL) :: XMax, XNorm, S, DET, THRES
+
+      DEBUG=.TRUE.
+      PRINT=.TRUE.
+
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN Step_GDIIS_Simple_Err   '')')
+
+      ! Initialization
+      IF (FRST) THEN
+       ! FRST will be set to False in Space, so no need to modify it here
+         IF (ALLOCATED(GeomSet)) THEN
+            IF (PRINT)  WRITE(*,'(/,''    In FRST, Step_GDIIS_Simple_Err Dealloc  '')')
+            DEALLOCATE(GeomSet,GradSet,ERR,DX,GSave)
+            RETURN
+         ELSE
+            IF (PRINT)  WRITE(*,'(/,''     In FRST,  Step_GDIIS_Simple_Err alloc  '')')
+            ALLOCATE(GeomSet(MRESET*NCoord), GradSet(MRESET*NCoord), ERR(MRESET*NCoord))
+            ALLOCATE(DX(NCoord),GSAVE(NCoord))
+         END IF
+      END IF
+
+      ! SPACE SIMPLY LOADS THE CURRENT VALUES OF Geom AND GRAD INTO THE ARRAYS GeomSet AND GradSet
+      ! HEAT is never used, not even in Space(...)
+      CALL SPACE(MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+      IF (PRINT)  WRITE(*,'(/,''       Step_GDIIS_Simple_Err after Space  '')')
+
+      ! INITIALIZE SOME VARIABLES AND CONSTANTS:
+      NDIIS = MSET
+      MPLUS = MSET + 1
+      MM = MPLUS * MPLUS
+
+      ! CONSTRUCT THE GDIIS MATRIX:
+      ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>
+      JJ=0
+      INV=-NCoord
+      DO I=1,MSET
+         INV=INV+NCoord
+         JNV=-NCoord
+         DO J=1,MSET
+            JNV=JNV+NCoord
+            JJ = JJ + 1
+            B(JJ)=0.D0
+			DO K=1, NCoord
+			   B(JJ) = B(JJ) + (((GradSet(INV+K)-GradSet(JNV+K))*(GeomSet(INV+K)-GeomSet(JNV+K)))/2.D0)
+			END DO
+         END DO
+      END DO   
+
+     ! The following shifting is required to correct indices of B_ij elements in the GDIIS matrix.
+	 ! The correction is needed because the last coloumn of the matrix contains all 1 and one zero.
+      DO 60 I=MSET-1,1,-1
+         DO 60 J=MSET,1,-1
+   60 B(I*MSET+J+I) = B(I*MSET+J)
+   
+      ! for last row and last column of GDIIS matrix 
+      DO 70 I=1,MPLUS
+         B(MPLUS*I) = 1.D0
+   70 B(MPLUS*MSET+I) = 1.D0
+      B(MM) = 0.D0
+
+      ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+   80 CONTINUE
+      DO 90 I=1,MM
+   90 BS(I) = B(I)
+      IF (NDIIS .EQ. MSET) GO TO 140
+      DO 130 II=1,MSET-NDIIS
+         XMAX = -1.D10
+         ITERA = 0
+         DO 110 I=1,MSET
+            XNORM = 0.D0
+            INV = (I-1) * MPLUS
+            DO 100 J=1,MSET
+  100       XNORM = XNORM + ABS(B(INV + J))
+            IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+               XMAX = XNORM
+               ITERA = I
+               IONE = INV + I
+            ENDIF
+  110    CONTINUE
+         DO 120 I=1,MPLUS
+            INV = (I-1) * MPLUS
+            DO 120 J=1,MPLUS
+               JNV = (J-1) * MPLUS
+               IF (J.EQ.ITERA) B(INV + J) = 0.D0
+               B(JNV + I) = B(INV + J)
+  120    CONTINUE
+         B(IONE) = 1.0D0
+  130 CONTINUE
+  140 CONTINUE
+  
+      IF (DEBUG) THEN
+
+      ! OUTPUT THE GDIIS MATRIX:
+         WRITE(*,'(/5X,'' Step_GDIIS_Simple_Err MATRIX'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F10.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO
+      ENDIF
+
+      ! SCALE DIIS MATRIX BEFORE INVERSION:
+      DO 160 I=1,MPLUS
+         II = MPLUS * (I-1) + I
+  160 GSAVE(I) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+      GSAVE(MPLUS) = 1.D0
+      DO 170 I=1,MPLUS
+         DO 170 J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+  170 B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+  
+      IF (DEBUG) THEN
+
+      ! OUTPUT SCALED GDIIS MATRIX:
+         WRITE(*,'(/5X,'' Step_GDIIS_Simple_Err MATRIX (SCALED)'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F10.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO
+            
+      ENDIF ! matches IF (DEBUG) THEN
+
+      ! INVERT THE GDIIS MATRIX B:
+      CALL MINV(B,MPLUS,DET) ! matrix inversion.
+
+      DO 190 I=1,MPLUS
+         DO 190 J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+  190 B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+  
+      ! COMPUTE THE INTERMEDIATE INTERPOLATED PARAMETER AND GRADIENT VECTORS:
+      DO 200 K=1,NCoord
+         NewGeom(K) = 0.D0
+         NewGrad(K) = 0.D0
+         DO 200 I=1,MSET
+            INK = (I-1) * NCoord + K
+			!Print *, 'B(',MPLUS*MSET+I,')=', B(MPLUS*MSET+I)
+            NewGeom(K) = NewGeom(K) + B(MPLUS*MSET+I) * GeomSet(INK)
+  200 NewGrad(K) = NewGrad(K) + B(MPLUS*MSET+I) * GradSet(INK)
+      HP=0.D0
+      DO 210 I=1,MSET
+  210 HP=HP+B(MPLUS*MSET+I)*ESET(I)
+      
+      DO 220 K=1,NCoord
+  220 DX(K) = Geom(K) - NewGeom(K)
+      XNORM = SQRT(DOT_PRODUCT(DX,DX))
+      IF (PRINT) THEN
+         WRITE (6,'(/10X,''DEVIATION IN X '',F7.4,8X,''DETERMINANT '',G9.3)') XNORM,DET
+         WRITE(*,'(10X,''Step_GDIIS_Simple_Err COEFFICIENTS'')')
+         WRITE(*,'(10X,5F12.5)') (B(MPLUS*MSET+I),I=1,MSET)
+      ENDIF
+
+      ! THE FOLLOWING TOLERENCES FOR XNORM AND DET ARE SOMEWHAT ARBITRARY:
+      THRES = MAX(10.D0**(-NCoord), 1.D-25)
+      IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+         IF (PRINT)THEN
+            WRITE(*,*) "THE DIIS MATRIX IS ILL CONDITIONED"     
+            WRITE(*,*) " - PROBABLY, VECTORS ARE LINEARLY DEPENDENT - "
+            WRITE(*,*) "THE DIIS STEP WILL BE REPEATED WITH A SMALLER SPACE"
+         END IF
+         DO 230 K=1,MM
+  230    B(K) = BS(K)
+         NDIIS = NDIIS - 1
+         IF (NDIIS .GT. 0) GO TO 80
+         IF (PRINT) WRITE(*,'(10X,''NEWTON-RAPHSON STEP TAKEN'')')
+         DO 240 K=1,NCoord
+            NewGeom(K) = Geom(K)
+  240       NewGrad(K) = GRAD(K)  
+      ENDIF ! matches IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+	  
+      !    q_{m+1} = q'_{m+1} - H^{-1}g'_{m+1}
+		 ! Hess is a symmetric matrix.
+		 !Hess_inv = 1.d0 ! to be deleted.
+		 !Call GenInv(NCoord,Reshape(Hess,(/NCoord,NCoord/)),Hess_inv,NCoord) ! Implemented in Mat_util.f90
+		 ! H^{-1}g'_{m+1}
+		 !Print *, 'Hess_inv='
+		! Print *, Hess_inv
+		 !Geom=0.d0
+		 !DO I=1, NCoord
+		  !  Geom(:) = Geom(:) + Hess_inv(:,I)*NewGrad(I)
+		 !END DO
+		 !Geom(:) = NewGeom(:) - Geom(:) ! now Geom is a new geometry.
+		 
+		 ! STEP is the difference between the new and old geometry and thus "step":
+         !STEP = Geom - Geom_old
+         
+      IF (PRINT)  WRITE(*,'(/,''       END Step_GDIIS_Simple_Err  '',/)')
+
+      END SUBROUTINE Step_GDIIS_Simple_Err

Property changes on: src/Step_GDIIS_Simple_Err.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/egrad_gaussian.f90
===================================================================
--- src/egrad_gaussian.f90	(revision 0)
+++ src/egrad_gaussian.f90	(revision 1)
@@ -0,0 +1,231 @@
+subroutine egrad_gaussian(e,geomcart,gradcart)
+
+  ! This routines calculates the energy and the gradient of 
+  ! a molecule, using Gaussian 
+
+  use Path_module, only : Nat, renum,Order,OrderInv,AtName, Coord, dzdc, indzmat,Nom,Atome, massat, unit,ProgExe
+  use Io_module
+
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: e
+  ! Nb degree of freedom
+  REAL(KREAL), INTENT (IN) :: geomcart(Nat,3)
+  ! Gradient calculated at Geom geometry
+  REAL(KREAL), INTENT (OUT) :: gradcart(3*NAt)
+
+  ! ======================================================================
+
+  character(LCHARS) :: LINE
+
+  logical           :: debug, G03Ok
+  LOGICAL :: fexist, FSim
+  LOGICAL, SAVE :: first=.true.
+  LOGICAL, ALLOCATABLE :: Done(:)
+
+  REAL(KREAL), SAVE :: Eold=1.e6
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:)
+
+  REAL(KREAL) :: d, a_val, Pi
+
+  REAL(KREAL) :: coef,x
+  INTEGER(KINT) :: ItG03
+  INTEGER(KINT) :: iat, jat, kat, i, j, n3at, absidg, absidg2
+  INTEGER(KINT) :: kTmp, Istart,ITmp1,ITmp2, Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  CHARACTER(132) :: FileIn, FileOut, FileChk
+
+  CHARACTER(3) :: SepIn=' < ', SepOut=' > '
+  CHARACTER(LCHARS) :: ListName, TitleTmp, CH32SVAR1
+  CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand
+  LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False.
+  LOGICAL   :: FRdyn,FStopNucl, FTmp, Tchk,Tchk1
+  INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit
+  INTEGER(KINT) :: NStepAd,NStepTmp
+  INTEGER(KINT) :: IShowTmp
+  REAL(KREAL)   :: FricPsiMin,FricPsiT, FricNuclTmp
+
+  INTEGER(KINT), PARAMETER :: NbExtName=4
+
+  INTEGER(KINT) :: ICouc
+
+  INTEGER(KINT) :: ILine
+  INTEGER(KINT) :: NPulses, PulseLen, NStepWarm,NStepAv,NStepEq,NStepTot
+  REAL(KREAL) :: TempWarm,Mean,Slope,Dev,RTmp1,RTmp2
+
+  ! ======================================================================
+
+  LOGICAL, EXTERNAL :: valid
+
+  ! ======================================================================
+
+  Pi=dacos(-1.0d0)
+  n3at=3*nat
+
+  debug=valid('EGRAD')
+  if (debug) Call Header("Entering Egrad_gaussian")
+
+  if (first) THEN
+     First=.FALSE.
+     call system("uname > Path.tmp")
+     OPEN(IOTMP,FILE='Path.tmp')
+     READ(IOTMP,'(A)') Line
+     CLOSE(IOTMP)
+     IF (index(Line,'CYGWIN').NE.0) THEN
+        SepIn='   '
+        SepOut='   '
+     END IF
+  END IF
+
+  gradcart=0.
+  E=0.
+  FileIn=Trim(CalcName) // "." // Trim(ISuffix)
+  FileOut=Trim(CalcName) // "." // Trim(OSuffix)
+  FileChk=Trim(CalcName) // ".chk"
+  RunCommand=Trim(ProgExe) // SepIn // Trim(FileIn) // SepOut // Trim(FileOut)
+
+  IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(RunCommand)
+
+  ! we create the input file
+
+  OPEN(IOTMP,File=FileIn)
+
+  Current => Gauss_root
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(1X,A)') Trim(current%line)
+     WRITE(*,'(1X,A)') Trim(current%line)
+     Current => current%next
+  END DO
+
+  WRITE(IOTMP,*) 
+
+  Current => Gauss_comment
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(1X,A)') Trim(current%line)
+     Current => current%next
+  END DO
+  !  WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)"),Igeom,NgeomF,Iopt
+
+  WRITE(IOTMP,*) 
+  WRITE(IOTMP,*) Trim(Gauss_charge)
+
+  DO I=1,Nat
+     If (renum) THEN
+        Iat=Order(I)
+        WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(I)),GeomCart(Iat,:), TRIM(Gauss_Paste(I))
+     ELSE
+        Iat=OrderInv(I)
+        WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomCart(I,:), TRIM(Gauss_Paste(Iat))
+     END IF
+  END DO
+
+  WRITE(IOTMP,*) 
+
+  Current => Gauss_End
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(1X,A)') Trim(current%line)
+     Current => current%next
+  END DO
+
+  WRITE(IOTMP,*) 
+  CLOSE(IOTMP)
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG EGRAD ' //  Trim(FileIn),' COORD=',TRIM(COORD)
+     call system('cat ' // Trim(FileIn))
+  END IF
+
+!!! PFL 15th March 2008 ->
+! Sometimes for unknown reasons G03 fails.
+! We thus add one test to check that Gaussian has finisehd properly.
+! We also check that we do not run an infinite loop...
+
+ G03Ok=.FALSE.
+ ItG03=0
+
+  DO WHILE ((.NOT.G03Ok).AND.(ItG03<3))
+   ItG03=ItG03+1
+  call system(RunCommand)
+ OPEN(IOTMP,FILE=FileOut, STATUS='old', POSITION='APPEND')
+ BACKSPACE(IOTMP)
+ READ(IOTMP,'(A)') Line
+ IF (LINE(2:19).EQ.'Normal termination')  G03Ok=.TRUE.
+  END DO
+  CLOSE(IOTMP)
+  IF (.NOT.G03Ok) THEN
+     WRITE(*,*) "Egrad_gaussian Failed..."
+     WRITE(*,*) "Wrong termination of Gaussian after 3 tries. Check Input and geometry"
+     STOP
+  END IF
+
+  if (debug) WRITE(*,*) 'DBG EGRAD, back from calculation'
+
+  ! Whatever the coordinate system, we read the cartesian gradient
+  ! and we convert it to Zmat or other if needed
+
+  OPEN(IOTMP,FILE=FileOut, STATUS='old')
+  ! We first search for the forces
+  READ(IOTMP,'(A)') LINE
+  DO WHILE (INDEX(LINE,'Forces (Hartrees/Bohr)')==0)
+     ! here, we have a problem, because there are so many ways to write E for Gaussian :-)
+     ! but we do not really need E except if we want to weight the different points
+     ! on the path... that will be done later :-)
+     ! And I should use ConvGaussXmol ...
+! PFL 3rd Jan 2008 ->
+! I have finally upgraded the energy reading phase so that it should be able to read 
+! many formats corresponding to HF, DFT, MP2, AM1, PM3, ONIOM with or w/o PCM
+     
+! For MP2, energy is after the last =
+     IF ((Line(2:9)=="E2 =    ")) THEN
+	    Itmp1=Index(LINE,"=",BACK=.TRUE.)+1
+		READ(LINE(Itmp1:),*) e
+      END IF
+! For other methods, it is after the first =
+     IF ((LINE(2:9)=='Energy= ').OR.(Line(2:9)=="SCF Done").OR.(Line(2:9)=="ONIOM: e") &
+	 .OR.(Line(2:9)==" with al") &
+         .OR.(Line(2:31)=="Counterpoise: corrected energy")) THEN
+	    Itmp1=Index(LINE,"=")+1
+		READ(LINE(Itmp1:),*) e
+	END IF
+! <- PFL 3 Jan 2008
+     READ(IOTMP,'(A)') LINE
+  END DO
+  if (debug) WRITE(*,*) "GradCart reading - renum=",Renum
+  READ(IOTMP,'(A)') LINE
+  READ(IOTMP,'(A)') LINE
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     READ(IOTMP,*)  Itmp1,ITmp2, GradCart(3*Iat-2:3*Iat)
+     if (debug) WRITE(*,*) "I,Iat,GradCart:",I,Iat,GradCart(3*Iat-2:3*Iat)
+  END DO
+
+! Gaussian gives the Forces in ua/a0, so we convert it into the 
+! gradient in ua/Angstrom 
+  gradCart=-1.0d0*gradCart*Unit
+
+!  if (debug.AND.(COORD.EQ.'ZMAT')) THEN
+!     DO WHILE (INDEX(LINE,'Internal Coordinate Forces')==0)
+!        READ(IOTMP,'(A)') LINE
+!!        WRITE(*,*) 'Pas bon:' // TRIM(LINE)
+!     END DO
+!     WRITE(*,*) TRIM(LINE)
+!     DO I=1,Nat+2
+!        READ(IOTMP,'(A)') LINE
+!        WRITE(*,*) TRIM(LINE)
+!     END DO
+!  END IF
+
+  CLOSE(IOTMP)
+
+  if (debug) Call header("Egrad_gaussian Over")
+
+  RETURN
+
+999 CONTINUE
+  if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
+  STOP
+  ! ======================================================================
+end subroutine egrad_gaussian
Index: src/Space_GEDIIS.f90
===================================================================
--- src/Space_GEDIIS.f90	(revision 0)
+++ src/Space_GEDIIS.f90	(revision 1)
@@ -0,0 +1,68 @@
+      ! SPACE_GEDIIS SIMPLY LOADS THE CURRENT VALUES OF Geom AND Grad INTO
+      ! THE ARRAYS GeomSet AND GradSet
+
+      SUBROUTINE SPACE_GEDIIS(MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+      ! MSET=mth iteration, MRESET=Maximum no. of iterations. 
+      INTEGER(KINT) :: NCoord, MRESET, MSET 
+      ! Geom=geometry with NCoord coordinates. GRAD=gradients.
+	  REAL(KREAL), INTENT(IN) :: Geom(NCoord)
+      REAL(KREAL) :: Grad(NCoord)
+	  REAL(KREAL) :: Heat
+      LOGICAL :: FRST, Print=.TRUE.
+      ! GeomSet, GradSet : a long array to store
+      REAL(KREAL) :: GeomSet(MRESET*NCoord), GradSet(MRESET*NCoord), ESET(MRESET)
+      ! Geom and GRAD for all iterations.
+
+      INTEGER(KINT) :: I,J,K,NMK,MI,NI
+      INTEGER(KINT), SAVE :: NRESET
+
+      ! UPDATE PARAMETER AND GRADIENT SUBSPACE:
+      IF (PRINT)  WRITE(*,'(/,''       BEGIN SPACE_GEDIIS  '')')
+      IF(FRST)THEN
+         NRESET=MIN(NCoord/2,MRESET)
+             IF (NCoord .LT. 5 ) THEN ! This condition is imposed for small NCoord,
+               ! particularly if NCoord is equal to 2 or 3.
+                NRESET = NCoord-1
+             END IF
+         FRST=.FALSE.
+         MSET=0
+      ENDIF
+
+      ! IF (PRINT)  WRITE(*,'(/,''       SPACE_GEDIIS 1  '')')
+      ! purging the very first Geom and GRAD.
+      if (print) WRITE(*,*) "DBG SPACE_GEDIIS MSET, NRESET", MSET,NRESET
+      IF (MSET .EQ. NRESET) THEN
+         DO I=1,MSET-1
+            MI = NCoord*(I-1)
+            NI = NCoord*I
+            ESET(I)=ESET(I+1)
+            DO K=1,NCoord
+               GeomSet(MI+K) = GeomSet(NI+K)
+               GradSet(MI+K) = GradSet(NI+K)
+            END DO
+		 END DO	
+            MSET=NRESET-1
+      ENDIF
+
+      ! STORE THE CURRENT POINT:
+      !IF (PRINT)  WRITE(*,'(/,''       SPACE_GEDIIS 2  '')')
+      DO  K=1,NCoord
+         NMK = NCoord*MSET+K ! MSET corresponds mth iteration.
+         !IF (PRINT)  WRITE(*,*) 'K,NMK,MSET,NCoord',K,NMK,MSET,NCoord !, &
+             !SIZE(GeomSet), SIZE(GradSet),SIZE(Geom),SIZE(GRAD)
+         GeomSet(NMK) = Geom(K)
+         GradSet(NMK) = Grad(K)
+      END DO
+	  
+      MSET=MSET+1
+      ESET(MSET)=HEAT
+	   
+      IF (PRINT) WRITE (*,*) "MSET=", MSET
+      IF (PRINT)  WRITE(*,'(/,''       END SPACE_GEDIIS   '')')
+
+      END SUBROUTINE SPACE_GEDIIS

Property changes on: src/Space_GEDIIS.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/PathCreate.f90
===================================================================
--- src/PathCreate.f90	(revision 0)
+++ src/PathCreate.f90	(revision 1)
@@ -0,0 +1,985 @@
+!================================================================
+!
+! This subroutine create a path using starting geometries
+! it is 'original' in the sense that the path is generated
+! by interpolating internal coordinates instead of cartesian.
+! Comes from the Extrapol.f subroutine of Cart suite.
+! Rewritten in F90 to be more flexible
+!
+!================================================================
+
+SUBROUTINE PathCreate(IOpt)
+
+  use Io_module
+  use Path_module, only : Nat, NGeomI, NCoord, NGeomF, IGeomRef, NMaxL, IReparam, IReparamT, &
+       Coord, Frozen, Cart, NCart, NFroz, XyzGeomI, atome, r_cov, fact, &
+       IndZmat, Renum, Order, OrderInv, IntCoordI, IntCoordF,Pi, BMat_BakerT, Nom, &
+       Hess,IntFroz, ISpline, IntTangent, XyzGeomF, NPrim,Xprimitive_t, OptGeom,  &
+       UMatF, UMat_local, XyzTangent, Linear
+  ! BMat_BakerT (3*Nat,NCoord), XyzGeomI(NGeomI,3,Nat), IGeomRef=-1 (default value)
+  ! IntCoordI(NGeomI,NCoord)
+
+  IMPLICIT NONE
+
+  REAL(KREAL), PARAMETER :: Inf=1e32
+  INTEGER(KINT), INTENT(IN) :: IOpt
+
+  INTEGER(KINT) ::  at,long
+  REAL(KREAL), ALLOCATABLE :: val_zmat(:,:), val_zmatTmp(:,:) ! (3,Nat)
+  REAL(KREAL), ALLOCATABLE :: X0(:), Y0(:), Z0(:) ! Nat
+  REAL(KREAL), ALLOCATABLE ::  XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3)
+  !  REAL(KREAL), ALLOCATABLE ::  XyzTmp3(:,:) ! (3,Nat)
+  REAL(KREAL), ALLOCATABLE ::  IntCoordTmp(:) ! (NCoord)
+  INTEGER(KINT), ALLOCATABLE :: IndZmat0(:,:) !Nat,5
+  REAL(KREAL), ALLOCATABLE :: Coef(:,:) ! (NGeomI,NCoord)
+  ! NPrim=Number of primitive coordinates.
+  REAL(KREAL), ALLOCATABLE :: XGeom(:) ! NGeomI
+  REAL(KREAL), ALLOCATABLE :: XGeomF(:) ! NGeomF
+  REAL(KREAL), ALLOCATABLE :: Hess_int(:,:) ! Hess_int (3*Nat,3*Nat), used for Baker case
+  INTEGER(KINT) :: NGeomS
+
+  REAL(KREAL) :: Rmsd,MRot(3,3), Delta, normDeltaX_int
+  REAL(KREAL), PARAMETER ::  LimAngle=145.d0,TwoPi=360.d0
+  REAL(KREAL)  ::s,ds,dist,a_val,d
+  INTEGER(KINT) :: I,J,K,NbCycle,igeom,nb,ig,iat
+  INTEGER(KINT) :: Itmp, Jat, L
+  INTEGER(KINT) :: Idx,IBeg
+  CHARACTER(LCHARS) :: Title
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  LOGICAL ::  debug, print
+  LOGICAL, SAVE :: First=.TRUE.
+  ! Frozen contains the indices of frozen atoms
+  LOGICAL, ALLOCATABLE :: FCart(:) ! Nat
+  INTEGER, ALLOCATABLE :: AtCart(:) !Nat
+  INTEGER(KINT), ALLOCATABLE ::  LIAISONS(:,:),LiaisonsIni(:,:) ! (Nat,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE :: Fragment(:),NbAtFrag(:) !nat
+  INTEGER(KINT), ALLOCATABLE :: FragAt(:,:) !nat,nat
+  INTEGER(KINT) :: NbFrag,NFragRef
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION test_zmat(na,ind_zmat)
+
+       USE Path_module
+
+       logical :: test_zmat
+       integer(KINT) :: na
+       integer(KINT) :: ind_zmat(Na,5)
+     END FUNCTION TEST_ZMAT
+  END INTERFACE
+
+
+
+  debug=valid("pathcreate")
+  print=valid("printgeom")
+  if (debug) Call header("Entering PathCreate")
+  if (debug.AND.First) WRITE(*,*) "=		 First call					="
+
+  if (debug) WRITE(*,*) "Iopt,IReparam=",Iopt,IReparam
+
+  ALLOCATE(Coef(NGeomI,NCoord),val_zmat(Nat,3),val_zmatTMP(Nat,3))
+  ALLOCATE(X0(Nat),Y0(Nat),Z0(Nat),Indzmat0(Nat,5))
+  ALLOCATE(X(Nat),Y(Nat),Z(Nat),Xgeom(NGeomI),XgeomF(NGeomF))
+  ! ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3),XyzTmp3(3,Nat))
+  ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3))
+  ALLOCATE(IntCoordTmp(NCoord))
+
+  Do I=1,NGeomI
+     XGeom(I)=FLoat(I)-1.d0
+  END DO
+
+  ! First iteration of the optimization:
+  IF (First) THEN ! matches at L484
+     if (debug) WRITE(*,*) "first iteration in PathCreate.90, L93"
+
+     ! This is the first call, so we might have to generate a Zmat
+     First=.FALSE.
+
+     IF ( ((COORD.EQ."ZMAT").OR.(COORD.EQ."HYBRID").OR.(COORD.EQ."MIXED") &
+          .OR.(COORD.EQ."BAKER")).AND.(IGeomRef.LE.0)) THEN
+
+        ! User has not defined the Reference geometry, we have to choose it ourselves!
+        ! This is done by counting the number of fragments of each geometry. The 
+        ! reference geometry is the one with the least fragments. When there are 
+        ! frozen or cart atoms, they are discarded to count the fragments.
+
+        ALLOCATE(Liaisons(Nat,0:NMaxL))
+        ALLOCATE(Fragment(nat),NbAtFrag(nat),FragAt(nat,nat),FCart(Nat))
+        FCart=.FALSE.
+        ! FCart(Nat) was under IF below earlier but is being accessed after this loop.
+        IF ((Frozen(1).NE.0).OR.(Cart(1).NE.0)) THEN
+           ALLOCATE(AtCart(Nat),LiaisonsIni(Nat,0:NMaxL))
+           FCart=.FALSE.
+           NCart=0
+           Idx=1
+           DO WHILE (Frozen(Idx).NE.0)
+              IF (Frozen(Idx).LT.0) THEN
+                 DO I=Frozen(Idx-1),abs(Frozen(Idx))
+                    IF (.NOT.FCart(I)) THEN
+                       NCart=NCart+1
+                       AtCart(NCart)=I
+                       FCart(I)=.TRUE.
+                    END IF
+                 END DO
+              ELSE IF (.NOT.FCart(Frozen(Idx))) THEN
+                 FCart(Frozen(Idx))=.TRUE.
+                 NCart=NCart+1
+                 AtCart(NCart)=Frozen(Idx)
+              END IF
+              Idx=Idx+1
+           END DO ! matches DO WHILE (Frozen(Idx).NE.0)
+           NFroz=NCart
+           Idx=1
+           DO WHILE (Cart(Idx).NE.0)
+              IF (Cart(Idx).LT.0) THEN
+                 DO I=Cart(Idx-1),abs(Cart(Idx))
+                    IF (.NOT.FCart(I)) THEN
+                       NCart=NCart+1
+                       AtCart(NCart)=I
+                       FCart(I)=.TRUE.
+                    END IF
+                 END DO
+              ELSEIF (.NOT.FCart(Cart(Idx))) THEN
+                 FCart(Cart(Idx))=.TRUE.
+                 NCart=NCart+1
+                 AtCart(NCart)=Cart(Idx)
+              END IF
+              Idx=Idx+1
+           END DO !matches DO WHILE (Cart(Idx).NE.0)
+           IF (debug) THEN
+              WRITE(*,'(1X,A,I4,A,I4,A)') "DBG PathCreate - GeomRef :: Found ", &
+                   NFroz," frozen atoms, and a total of ",NCart, &
+                   " atoms described in cartesian coordinates"
+              WRITE(*,*) "AtCart:",AtCart(1:NCart)
+           END IF
+        END IF ! IF ((Frozen(1).NE.0).OR.(Cart(1).NE.0)) THEN
+
+        NFragRef=2*Nat
+        DO IGeom=1,NGeomI
+           x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+           y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+           z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+           ! we calculate the connectivities
+           Call CalcCnct(nat,atome,x,y,z,LIAISONS,r_cov,fact)
+           ! if needed, we get rid of links between cart or frozen atoms
+           IF (NCart.GE.2) THEN
+              LiaisonsIni=Liaisons
+              DO I=1,NCart
+                 Iat=AtCart(I)
+                 if (debug) WRITE(*,'(20(1X,I3))') I,Iat,  &
+                      (LiaisonsIni(Iat,Itmp),ITmp=0,LiaisonsIni(Iat,0))
+                 DO J=1,LiaisonsIni(Iat,0)
+                    Jat=LiaisonsIni(Iat,J)
+                    IF (FCart(Jat)) THEN
+                       Call Annul(Liaisons,Iat,Jat)
+                       Call Annul(Liaisons,Jat,Iat)
+                       Call Annul(LiaisonsIni,Jat,Iat)
+                       Liaisons(Iat,0)=Liaisons(Iat,0)-1
+                       Liaisons(Jat,0)=Liaisons(Jat,0)-1
+                       LiaisonsIni(Jat,0)=LiaisonsIni(Jat,0)-1
+                    END IF
+                 END DO
+              END DO
+           END IF ! matches IF (NCart.GE.2) THEN
+           ! we now calculate the number of fragments.
+           Call Decomp_frag(nat,liaisons,.NOT.Fcart,nbfrag,Fragment,NbAtFrag,FragAt)
+           IF (NbFrag.LT.NFragRef) THEN
+              NFragRef=NbFrag
+              ! The reference geometry, IGeomRef, is determined based on the least number
+              ! of fragments (here if (((COORD.EQ."ZMAT").OR.(COORD.EQ."HYBRID").OR.(COORD
+              !.EQ."MIXED")).AND.(IGeomRef.LE.0))), otherwise it still has the value of 
+              ! IGeomRef=-1.
+              IGeomRef=IGeom
+           END IF
+        END DO ! matches DO IGeom=1,NGeomI
+        DEALLOCATE(FCart)
+     END IF ! matches IF (((COORD.EQ."ZMAT").OR.(COORD.EQ."HYBRID").OR.(COORD.EQ."MIXED")
+     ! .OR.(COORD.EQ."BAKER")).AND.(IGeomRef.LE.0)).
+
+     if (debug) WRITE(*,*) "DBG PathCreate : IGeomRef= ",IGeomRef
+
+     ! we now compute the internal coordinates for this geometry !
+     ! The reference geometry, IGeomRef, is determined based on the least number
+     ! of fragments if (((COORD.EQ."ZMAT").OR.(COORD.EQ."HYBRID").OR.(COORD
+     !.EQ."MIXED")).AND.(IGeomRef.LE.0)), otherwise it has the value of 
+     ! IGeomRef=-1.
+     x(1:Nat) = XyzGeomI(IGeomRef,1,1:Nat) ! XyzGeomI(NGeomI,3,Nat)
+     y(1:Nat) = XyzGeomI(IGeomRef,2,1:Nat)
+     z(1:Nat) = XyzGeomI(IGeomRef,3,1:Nat)
+
+     IndZmat=0
+     IndZmat0=0
+
+     SELECT CASE(COORD)
+     CASE ('BAKER')
+        ! atome(Nat), r_cov(0:Max_Z)
+        ! Frozen(Nat) contains the indices of frozen atoms
+        Call Calc_baker(atome,r_cov,fact,frozen,IGeomRef)
+        if (debug) THEN
+           WRITE(*,*) "UMat_local after Calc_baker"
+           DO I=1,3*Nat-6
+              WRITE(*,'(50(1X,F12.8))') UMat_local(:,I)
+           END DO
+        END IF
+        DO IGeom=1,NGeomF
+           UMatF(IGeom,:,:)=UMat_Local(:,:)
+        END DO
+
+        ALLOCATE(Xprimitive_t(NPrim))
+        ! x, y, z corresponds the reference geometry.
+        DO I=1,Nat
+           Order(I)=I
+           OrderInv(I)=I
+        END DO
+        x0=x
+        y0=y
+        z0=z
+     CASE ('ZMAT','HYBRID')
+        ! IN case we are using Hybrid or zmat coordinate system, we have to 
+        ! generate the internal coordinates with a Z-Matrix
+        ! IN case we have frozen atoms, we generate a constrained Zmat
+        IF (Frozen(1).NE.0) THEN 
+           Renum=.True.
+           call Calc_zmat_const_frag(Nat,atome,IndZmat0,val_zmat,x,y,z,r_cov,fact,frozen)
+        ELSE
+           !no zmat... we create our own
+           call Calc_zmat_frag(Nat,atome,IndZmat0,val_zmat,x,y,z,r_cov,fact)	   
+           if (valid('old_zmat')) THEN 
+              call Calc_zmat(Nat,atome,IndZmat0,val_zmat,x,y,z,r_cov,fact)
+              WRITE(*,*) "DBG PathCreate Calc_Zmat.... STOP"
+              STOP
+           END IF
+        END IF
+
+        if (debug) WRITE(*,*) 'Back from Calc_zmat'
+        IF (.NOT.test_zmat(nat,IndZmat0)) THEN
+           WRITE(IOOUT,*) "I cannot generate a valid Zmat... help"
+           STOP
+        END IF
+
+        ! The IndZmat0 generated by Calc_zmat refers to the order of the input x,y,z
+        ! However, we need it with the new order so that we can use the zmat 
+        ! coordinates to generate cartesian coordinates.
+        ! So, we have to reorder it...
+        DO I=1,Nat
+           Order(IndZmat0(I,1))=I
+           OrderInv(I)=IndZmat0(I,1)
+           ! I let X0 being the Cartesian coordinates of the reference geometry. Before it was
+           ! those of the First geometry (which was also the reference one). This might change!
+           X0(i)=X(IndZmat0(i,1))
+           Y0(i)=Y(IndZmat0(i,1))
+           Z0(i)=Z(IndZmat0(i,1))
+        END DO
+        IndZmat(1,1)=Order(IndZmat0(1,1))
+        IndZmat(2,1)=Order(IndZmat0(2,1))
+        IndZmat(2,2)=Order(IndZmat0(2,2))
+        IndZmat(3,1)=Order(IndZmat0(3,1))
+        IndZmat(3,2)=Order(IndZmat0(3,2))
+        IndZmat(3,3)=Order(IndZmat0(3,3))
+        DO I=4,Nat
+           DO J=1,4
+              IndZmat(I,J)=Order(IndZmat0(I,J))
+           END DO
+        end do
+        IF (DEBUG) THEN
+           WRITE(IOOUT,*) "DBG PathCreate : IndZmat"
+           DO I=1,Nat
+              WRITE(IOOUT,*) (IndZmat(I,J),J=1,5)
+           END DO
+           WRITE(IOOUT,*) "DBG PathCreate : IndZmat0"
+           DO I=1,Nat
+              WRITE(IOOUT,*) (IndZmat0(I,J),J=1,5)
+           END DO
+
+        END IF
+
+        ! It is the first call, we have to create all internal coordinates
+        if (debug) WrITE(*,*) "DBG PathCreate L302: First Call, we generate internal coords"
+        DO igeom=1,NgeomI
+           x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+           y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+           z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+
+           if (debug) WRITE(*,*) "DBG PathCreate L308: we generate internal coords for geom",IGeom
+
+           Call ConvXyzZmat(Nat,x,y,z,IndZmat0,val_zmatTmp)
+           IntCoordI(IGeom,1)=val_zmatTmp(2,1)
+           IntCoordI(IGeom,2)=val_zmatTmp(3,1)
+           IntCoordI(IGeom,3)=val_zmatTmp(3,2)*Pi/180.
+           Idx=4
+           DO i=4,nat
+              IntCoordI(IGeom,Idx)=val_zmatTmp(i,1)
+              Idx=Idx+1
+              IntCoordI(IGeom,Idx)=val_zmatTmp(i,2)*Pi/180.
+              Idx=Idx+1
+
+              ! Some tests to check that the dihedral angles are similar... this is
+              ! important if they are close to Pi.
+              Delta=0.
+
+              if (abs(val_zmatTMP(i,3)-val_zmat(i,3))>=180.) THEN
+                 if ((val_zmatTMP(i,3)-val_zmat(i,3))<=-180.) THEN
+                    Delta=-1.0d0*TwoPi
+                 ELSE
+                    Delta=TwoPi
+                 END IF
+                 if (debug) THEN
+                    WRITE(*,*) Nom(atome(i)),				&
+                         abs(val_zmatTMP(i,3)-val_zmat(i,3)), &
+                         val_zmatTMP(i,3),val_zmat(i,3),Delta, &
+                         val_zmatTMP(i,3)-Delta
+                 END IF
+              END IF
+              IntCoordI(IGeom,Idx)=(val_zmatTmp(i,3)-Delta)/180.*Pi
+              Idx=Idx+1
+           END DO
+        END DO  ! End Loop on Igeom
+
+     CASE ('MIXED')
+        ! IN case we are using mixed coordinate system, we have to 
+        ! we generate the internal coordinates with a Z-Matrix
+        Renum=.TRUE.
+        ! 
+        call Calc_mixed_frag(Nat,atome,IndZmat0,val_zmat,x,y,z, &
+             r_cov,fact,frozen,cart,ncart)
+
+        if (debug) WRITE(*,*) 'Back from Calc_Mixed'
+
+        ! How to test this partial zmat ? it must be good as it was automatically generated...
+        !        IF (.NOT.test_zmat(nat,IndZmat0)) THEN
+        !           WRITE(IOOUT,*) "I cannot generate a valid Zmat... help"
+        !           STOP
+        !        END IF
+
+        ! The IndZmat0 generated by Calc_zmat refers to the order of the input x,y,z
+        ! However, we need it with the new order so that we can use the zmat 
+        ! coordinates to generate cartesian coordinates.
+        ! So, we have to reorder it...
+        DO I=1,Nat
+           Order(IndZmat0(I,1))=I
+           OrderInv(I)=IndZmat0(I,1)
+           ! I let X0 being the Cartesian coordinates of the reference geometry. Before it was
+           ! those of the First geometry (which was also the reference one). This might change!
+           X0(i)=X(IndZmat0(i,1))
+           Y0(i)=Y(IndZmat0(i,1))
+           Z0(i)=Z(IndZmat0(i,1))
+        END DO
+        IndZmat=0
+        IndZmat(1:NCart,:)=-1
+
+        DO I=1,Nat
+           IndZmat(I,1)=Order(IndZmat0(I,1))
+        END DO
+
+        SELECT CASE (NCart)
+        CASE (1)
+           IndZmat(2,2)=Order(IndZmat0(2,2))
+           IndZmat(3,2)=Order(IndZmat0(3,2))
+           IndZmat(3,3)=Order(IndZmat0(3,3))
+           IdX=4
+        CASE (2)
+           IndZmat(3,2)=Order(IndZmat0(3,2))
+           IndZmat(3,3)=Order(IndZmat0(3,3))
+           Idx=4
+        CASE DEFAULT 
+           Idx=NCart+1
+        END SELECT
+
+        DO I=Idx,Nat
+           DO J=1,4
+              IndZmat(I,J)=Order(IndZmat0(I,J))
+           END DO
+        end do
+        IF (DEBUG) THEN
+           WRITE(IOOUT,*) "DBG PathCreate : IndZmat - Mixed"
+           DO I=1,Nat
+              WRITE(IOOUT,*) (IndZmat(I,J),J=1,5)
+           END DO
+        END IF
+
+        ! It is the first call, we have to create all internal coordinates
+        !            Idx=1
+        !            DO I=1,NCart
+        !               IntCoordI(1,Idx)=val_zmat(I,1)
+        !               IntCoordI(1,Idx+1)=val_zmat(I,2)
+        !               IntCoordI(1,Idx+2)=val_zmat(I,3)
+        !               Idx=Idx+3
+        !            END DO
+        !            SELECT CASE (NCART)
+        !            CASE (1)
+        !               IntCoordI(1,Idx)=val_zmat(2,1)
+        !               IntCoordI(1,Idx+1)=val_zmat(3,1)           
+        !               IntCoordI(1,Idx+2)=val_zmat(3,2)*Pi/180.
+        !               Idx=Idx+3
+        !               IBeg=4
+        !            CASE (2)
+        !               IntCoordI(1,Idx)=val_zmat(3,1)           
+        !               IntCoordI(1,Idx+1)=val_zmat(3,2)*Pi/180.
+        !               Idx=Idx+2
+        !               IBeg=4
+        !            CASE DEFAULT
+        !               IBeg=NCart+1
+        !            END SELECT
+        !            DO i=iBeg,Nat
+        !               IntCoordI(1,Idx)=val_zmat(i,1)
+        !               Idx=Idx+1
+        !               DO j=2,3
+        !                  IntCoordI(1,Idx)=val_zmat(i,j)*Pi/180.
+        !                  Idx=Idx+1
+        !               END DO
+        !            END DO
+
+        !            If (debug) WRITE(*,*) "Idx, NCoord",Idx-1,NCoord
+
+        DO Igeom=1,NgeomI
+           x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+           y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+           z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+
+           Call ConvXyzMixed(Nat,Ncart,x,y,z,IndZmat0,val_zmatTmp(1,1))
+           Idx=1
+           DO I=1,NCart
+              IntCoordI(IGeom,Idx)=val_zmatTmp(I,1)
+              IntCoordI(IGeom,Idx+1)=val_zmatTmp(I,2)
+              IntCoordI(IGeom,Idx+2)=val_zmatTmp(I,3)
+              Idx=Idx+3
+           END DO
+
+           SELECT CASE (NCART)
+           CASE (1)
+              IntCoordI(IGeom,Idx)=val_zmatTmp(2,1)
+              Idx=Idx+1
+              IntCoordI(IGeom,Idx)=val_zmatTmp(3,1)           
+              IntCoordI(IGeom,Idx+1)=val_zmatTmp(3,2)*Pi/180.
+              Idx=Idx+2
+              IBeg=4
+           CASE (2)
+              IntCoordI(IGeom,Idx)=val_zmatTmp(3,1)           
+              IntCoordI(IGeom,Idx+1)=val_zmatTmp(3,2)*Pi/180.
+              Idx=Idx+2
+              IBeg=4
+           CASE DEFAULT
+              Ibeg=Ncart+1
+           END SELECT
+           DO i=IBeg,Nat
+              IntCoordI(IGeom,Idx)=val_zmatTmp(i,1)
+              Idx=Idx+1
+              IntCoordI(IGeom,Idx)=val_zmatTmp(i,2)*Pi/180.
+              Idx=Idx+1
+
+              ! Some tests to check that the dihedral angles are similar... this is
+              ! important if they are close to Pi.
+              Delta=0.
+
+              if (abs(val_zmatTMP(i,3)-val_zmat(i,3))>=180.) THEN
+                 if ((val_zmatTMP(i,3)-val_zmat(i,3))<=-180.) THEN
+                    Delta=-1.0d0*TwoPi
+                 ELSE
+                    Delta=TwoPi
+                 END IF
+                 if (debug) THEN
+                    WRITE(*,*) Nom(atome(i)), &
+                         abs(val_zmatTMP(i,3)-val_zmat(i,3)), &
+                         val_zmatTMP(i,3),val_zmat(i,3),Delta, &
+                         val_zmatTMP(i,3)-Delta
+                 END IF
+              END IF
+              IntCoordI(IGeom,Idx)=(val_zmatTmp(i,3)-Delta)/180.*Pi
+              Idx=Idx+1
+           END DO
+
+        END DO
+     CASE ('CART') 
+        DO I=1,Nat
+           Order(I)=I
+           OrderInv(I)=I
+        END DO
+        X0=X
+        Y0=y
+        Z0=z
+     END SELECT
+
+  ELSE ! First iteration of the optimization. Match at L616
+
+     IGeom=1
+     x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+     y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+     z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+
+     SELECT CASE (COORD)
+     CASE ('HYBRID')
+        IndZmat0=IndZmat
+        Call ConvXyzZmat(Nat,x,y,z,IndZmat,val_zmat(1,1))
+     CASE ('ZMAT')
+        IndZmat0=IndZmat
+        val_zmat=0.d0
+        val_zmat(2,1)=IntCoordI(1,1)
+        val_zmat(3,1)=IntCoordI(1,2)
+        val_zmat(3,2)=IntCoordI(1,3)*180./Pi
+
+        Idx=4
+        DO iat=4,Nat
+           val_zmat(iat,1)=IntCoordI(1,idx)
+           Idx=Idx+1
+           do j=2,3
+              val_zmat(iat,J)=IntCoordI(1,idx)*180./Pi
+              Idx=Idx+1
+           END DO
+        END DO
+
+     CASE ('MIXED')
+        IndZmat0=IndZmat
+        val_zmat=0.d0
+        Idx=1
+        DO I=1,NCart
+           DO J=1,3
+              val_zmat(i,j)= IntCoordI(1,Idx)
+              Idx=Idx+1
+           END DO
+        END DO
+        SELECT CASE (NCart)
+        CASE(1)
+           val_zmat(2,1)=IntCoordI(1,Idx)
+           val_zmat(3,1)=IntCoordI(1,Idx+1)
+           val_zmat(3,2)=IntCoordI(1,Idx+2)*180./Pi
+           Idx=Idx+3
+           IBeg=4
+        CASE(2)
+           val_zmat(3,1)=IntCoordI(1,Idx)
+           val_zmat(3,2)=IntCoordI(1,Idx)*180./Pi
+           Idx=Idx+2
+           IBeg=4
+        CASE DEFAULT
+           IBeg=NCart+1
+        END SELECT
+
+        DO Iat=IBeg,Nat
+           val_zmat(iat,1)=IntCoordI(1,idx)
+           Idx=Idx+1
+           do j=2,3
+              val_zmat(iat,J)=IntCoordI(1,idx)*180./Pi
+              Idx=Idx+1
+           END DO
+        END DO
+     CASE ('BAKER')
+        ! Nothing to be done here.
+     CASE ('CART')
+        ! Nothing to be done here.
+     CASE DEFAULT
+        WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in PathCreate.L554.STOP"
+        STOP
+     END SELECT
+     X0=x
+     y0=y
+     z0=z
+  END IF  ! First
+
+  ! Now that we have a zmat, we will generate all the IntCoodI corresponding...
+  ! First one
+  IF (COORD.EQ.'HYBRID') THEN     ! Matches at L680
+     DO IGeom=1,NGeomI
+        x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+        y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+        z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+
+        Call ConvXyzZmat(Nat,x,y,z,IndZmat0,val_zmatTmp(1,1))
+        IntCoordI(IGeom,1)=val_zmatTmp(2,1)
+        IntCoordI(IGeom,2)=val_zmatTmp(3,1)
+        IntCoordI(IGeom,3)=val_zmatTmp(3,2)*Pi/180.
+        Idx=4
+        DO i=4,nat
+           IntCoordI(IGeom,Idx)=val_zmatTmp(i,1)
+           Idx=Idx+1
+           IntCoordI(IGeom,Idx)=val_zmatTmp(i,2)*Pi/180.
+           Idx=Idx+1
+
+           ! Some tests to check that the dihedral angles are similar... this is
+           ! important if they are close to Pi.
+           Delta=0.
+
+           if (abs(val_zmatTMP(i,3)-val_zmat(i,3))>=180.) THEN
+              if ((val_zmatTMP(i,3)-val_zmat(i,3))<=-180.) THEN
+                 Delta=-1.0d0*TwoPi
+              ELSE
+                 Delta=TwoPi
+              END IF
+              if (debug) THEN
+                 WRITE(*,*) Nom(atome(i)), &
+                      abs(val_zmatTMP(i,3)-val_zmat(i,3)), &
+                      val_zmatTMP(i,3),val_zmat(i,3),Delta, &
+                      val_zmatTMP(i,3)-Delta
+              END IF
+           END IF
+           IntCoordI(IGeom,Idx)=(val_zmatTmp(i,3)-Delta)/180.*Pi
+           Idx=Idx+1
+        END DO
+     END DO
+  END IF ! Matches Coord=Hybrid
+
+  ! PFL 24 Nov 2008 ->
+  ! This should not be necessary...
+  !   ! if we have frozen atoms, we make sure that they do not move between geometries
+  !   IF (IntFroz.NE.0) THEN
+  !      if (debug) WRITE(*,*) 'DBG PathCreate L641: Number of frozen coordinates=', IntFroz
+  !      DO IGeom=2,NGeomI ! For IOpt .GT. 0, NGeomI is equal to NGeomF
+  !         IntCoordI(IGeom,1:IntFroz)=IntCoordI(1,1:IntFroz)
+  !      END DO
+  !   END IF
+  ! -> PFL 24 Nov 2008
+
+  Idx=min(9,NCoord)
+
+  IF (DEBUG.AND.(COORD.NE.'CART')) THEN
+     WRITE(*,*) "DBG PathCreate. L685 IntCoordI(IGeom,:)"
+     DO I=1,NGeomI
+        WRITE(*,'("Geom:",I5,9(1X,F10.4))') I,IntCoordI(I,1:Idx)
+     END DO
+     ! We write it also in terms of Zmat
+     IF ((COORD.EQ.'ZMAT').OR.(COORD.EQ.'HYBRID')) THEN
+        DO I=1,NGeomI
+           WRITE(*,*) 'Zmat for geom ',I,'/',NGeomI,'Xgeom=',Xgeom(I)
+           WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(IndZmat0(1,1)))
+           WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(IndZmat0(2,1))), &
+                IndZmat(2,2),IntCoordI(I,1)
+           WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(IndZmat0(3,1))), &
+                IndZmat(3,2),IntCoordI(I,2),IndZmat(3,3),IntCoordI(I,3)*180./Pi
+           Idx=4
+           DO J=4,Nat
+              WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(IndZmat0(J,1))), &
+                   IndZmat(J,2),IntCoordI(I,Idx),IndZmat(J,3),          &
+                   IntCoordI(I,Idx+1)*180./Pi, &
+                   IndZmat(J,4),IntCoordI(I,Idx+2)*180./Pi
+              Idx=Idx+3
+           END DO
+
+           XyzTmp2=0.
+           ! We convert it into Cartesian coordinates
+           XyzTmp2(2,1)=IntCoordI(I,1)
+           d=IntCoordI(I,2)
+           a_val=IntCoordI(I,3)
+           if (Nat.GE.3) THEN
+              if (IndZmat(3,2).EQ.1)  THEN
+                 XyzTmp2(3,1)=XYzTmp2(1,1)+d*cos(a_val)
+              ELSE
+                 XyzTmp2(3,1)=XyzTmp2(2,1)-d*cos(a_val)
+              ENDIF
+              XyzTmp2(3,2)=d*sin(a_val)
+           ENDIF
+
+           Idx=4
+           DO iat=4,Nat
+              val_zmatTMP(iat,1)=IntCoordI(I,idx)
+              Idx=Idx+1
+              DO j=2,3
+                 val_zmatTMP(iat,J)=IntCoordI(I,idx)*180./Pi
+                 Idx=Idx+1
+              END DO
+           END DO
+           DO iat=4,Nat
+              call ConvertZmat_cart(iat,IndZmat,val_zmatTMP, &
+                   XYzTMP2(1,1), XYzTMP2(1,2),XYzTMP2(1,3))
+           END DO
+           DO Iat=1,nat
+              WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(IndZmat0(Iat,1))),&
+                   XyzTmp2(iat,1:3)
+           END DO
+
+        END DO
+     END IF
+     IF (COORD.EQ.'MIXED') THEN
+        DO I=1,NGeomI
+           WRITE(*,*) 'Cart+Zmat for geom ',I,'/',NGeomI,'Xgeom=',Xgeom(I)
+           Idx=1
+           XyzTmp2=0.
+           DO J=1,NCART
+              WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(IndZmat0(1,1))), &
+                   IntCoordI(I,Idx:Idx+2)
+              XyzTmp2(J,1:3)=IntCoordI(I,Idx:Idx+2)
+              Idx=Idx+3
+           END DO
+           SELECT CASE (NCart)
+           CASE (1)
+              J=2
+              WRITE(*,'(1X,A5,3(I5,F11.6))') Nom(Atome(IndZmat0(J,1))), &
+                   IndZmat(J,2),IntCoordI(I,Idx)
+              Idx=Idx+1
+              J=3
+              WRITE(*,'(1X,A5,3(I5,F11.6))') Nom(Atome(IndZmat0(J,1))), &
+                   IndZmat(J,2),IntCoordI(I,Idx),IndZmat(J,3), &
+                   IntCoordI(I,Idx+1)*180./Pi
+              Idx=Idx+2
+              Ibeg=4
+           CASE (2)
+              J=3
+              WRITE(*,'(1X,A5,3(I5,F11.6))') Nom(Atome(IndZmat0(J,1))), &
+                   IndZmat(J,2),IntCoordI(I,Idx),IndZmat(J,3), &
+                   IntCoordI(I,Idx+1)*180./Pi
+              Idx=Idx+2
+              Ibeg=4
+           CASE DEFAULT
+              IBeg=NCart+1
+           END SELECT
+           DO J=IBeg,Nat
+              IF (J.EQ.2) &
+                   WRITE(*,'(1X,A5,3(I5,F11.6))') Nom(Atome(IndZmat0(J,1))), &
+                   IndZmat(J,2),IntCoordI(I,Idx),IndZmat(J,3), &
+                   IntCoordI(I,Idx+1)*180./Pi, &
+                   IndZmat(J,4),IntCoordI(I,Idx+2)*180./Pi
+              Idx=Idx+3
+           END DO
+
+           ! We convert it into Cartesian coordinates
+           IntCoordTmp=IntCoordI(I,1:NCoord)
+           Call Mixed2cart(Nat,IndZmat,IntCoordTmp,XyzTmp2)
+
+           DO Iat=1,nat
+              WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(IndZmat0(Iat,1))),&
+                   XyzTmp2(iat,1:3)
+           END DO
+
+        END DO
+     END IF
+  END IF ! matches IF (DEBUG.AND.(COORD.NE.'CART')) THEN
+
+  if (debug) WRITE(*,*) "Before interpolation, PathCreate.f90, L740, IOpt=",IOpt, &
+       "ISpline=", ISpline 
+  ! Now comes the Interpolation:
+  IF ((NGeomI>2).AND.(IOpt.GE.ISpline)) THEN
+     Linear=.FALSE.
+     ! We have at least three geometries so we can apply cubic spline
+     SELECT CASE (COORD)
+     CASE ('ZMAT','HYBRID','MIXED')
+        DO I=1,NCoord
+           ! We compute the spline coefficients
+           call spline(xGeom,IntCoordI(1,I),NGeomI,Inf,Inf, Coef(1,I))
+           if (debug) THEN
+              WRITE(*,*) 'Coef Spline for coord',I
+              WRITE(*,*) Coef(1:NGeomI,I)
+           END IF
+        END DO
+     CASE ('BAKER')
+        ! We compute the spline coefficients
+        ! xGeom(NGeomI), IntCoordI(NGeomI,3*Nat-6) declared in Path_module.f90
+        ! can also be used for the Baker's internal coordinates.
+        ! we need to get Baker's internal coordinates from cartesian coordinates.
+        ! as we have subroutine ConvXyzmat(...) in Z matrix case.
+        ! Coef(NGeomI,NCoord) or (NGeomI,N3at) has INTENT(OUT)
+        DO I=1,NCoord ! NCoord=3*Nat-6-symmetry_eliminated.
+           call spline(xGeom,IntCoordI(1,I),NGeomI,Inf,Inf,Coef(1,I))
+           ! IF (debug) THEN
+           !   WRITE(*,*) 'Coef Spline for coord',I
+           !  WRITE(*,*) Coef(1:NGeomI,I)
+           !    END IF
+        END DO
+     CASE ('CART')
+        DO I=1,Nat
+           ! We compute the spline coefficients
+           call spline(xGeom,XyzGeomI(1,1,I),NGeomI,Inf,Inf, Coef(1,3*I-2))
+           call spline(xGeom,XyzGeomI(1,2,I),NGeomI,Inf,Inf, Coef(1,3*I-1))
+           call spline(xGeom,XyzGeomI(1,3,I),NGeomI,Inf,Inf, Coef(1,3*I))
+           if (debug) THEN
+              WRITE(*,*) 'Coef Spline for coord',i
+              WRITE(*,*) Coef(1:NGeomI,I)
+           END IF
+        END DO
+     CASE DEFAULT
+        WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in PathCreate.L783.STOP"
+        STOP
+     END SELECT
+  ELSE ! matches IF ((NGeomI>2).AND.(Iopt.Ge.ISpline)) THEN
+     ! On n'a que deux images. On fera une interpolation lineaire,
+     ! qui est un cas particulier avec Coef=0
+     if (debug.AND.(NGeomI.EQ.2)) WRITE(*,*) "DBG : Only 2 starting geometries"
+     if (debug.AND.(Iopt.LE.ISpline)) WRITE(*,*) "DBG : Not enough path -> linear int"
+     Coef=0.d0
+     Linear=.TRUE.
+  END IF ! matches IF ((NGeomI>2).AND.(Iopt.Ge.ISpline)) THEN
+  ! Shall we redistribute the points along the path ?
+  if (debug) WRITE(*,*) "PathCreate.f90, L795, IOpt=", IOpt, "IReparam=", IReparam
+  IF (MOD(IOpt,IReparam).EQ.0) THEN
+
+     ! We generate the Path, in two steps:
+     ! i) we calculate the length of the mass weighted (MW) path
+     ! ii) we sample the path to get the geometries
+
+     NGeomS=NGeomI
+     SELECT CASE (COORD)
+     CASE ('ZMAT','HYBRID')
+        ! We call the extrapolation once to get the path length
+        dist=Inf
+        Call ExtraPol_int(IOpt,s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+        ! we have the length, we calculate the distance between two points
+
+        if (s.LE.1e-6) THEN
+           IF (OptGeom.LE.0) THEN
+              WRITE(*,*) "Length of the path is 0 and you are not doing Geometry Optimization."
+              WRITE(*,*) "ERROR !!! Stop !"
+              STOP
+           END IF
+        ELSE
+           ! we have the length, we calculate the distance between two points
+           dist=s/Real(NGeomf-1)
+           if (debug) WRITE(*,*) 'Dbg PathCreate ZMAT s, dist:',s,dist
+           ! we call it again to obtain the geometries !
+           Call ExtraPol_int(iopt,s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+        END IF
+     CASE ('BAKER')
+        ! We generate the Path, in two steps:
+        ! i) we calculate the length of the mass weighted (MW) path
+        ! ii) we sample the path to get the geometries
+
+        ! We call the extrapolation first time to get the path length
+        ! iopt: Number of the cycles for the optimization.
+        ! s: a real number and has INTENT(OUT), probably returns the 
+        ! length of the path.
+        ! dist=Inf=> ExtraPol_baker has to calculate the length of the path.
+        ! X0(Nat),Y0(Nat),Z0(Nat): reference geometry.
+        ! Xgeom: Xgeom(NGeomI) has INTENT(IN)
+        ! Coef(NGeomI,NCoord) is obtained from spline interpolation subroutine.
+        ! XgeomF: XGeomF(NGeomF) has INTENT(OUT)
+        ! Which reference coordinate geometry X0, Y0, Z0 to use???
+        dist=Inf
+        !if (debug) WRITE(*,*) "Before the call of ExtraPol_baker in redistribution &
+        !of the points, in PathCreate.f90, L836"
+        !Print *, 'Before ExtraPol_baker, PathCreate.90, L848, IntCoordI='
+        !Print *, IntCoordI
+        Call ExtraPol_baker(s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+        !Print *, 'After ExtraPol_baker, PathCreate.90, L848, IntCoordI='
+        !Print *, IntCoordI
+        !if (debug) WRITE(*,*) "After the call of ExtraPol_baker in the redistribution &
+        ! of the points, in PathCreate.f90, L843"
+
+        ! we have the lenght, we calculate the distance between two points
+        !Print *, 'After first call of ExtraPol_baker in PathCreate.f90, s=', s
+
+        if (s.LE.1e-6) THEN
+           IF (OptGeom.LE.0) THEN
+              WRITE(*,*) "Length of the path is 0 and you are not doing Geometry Optimization."
+              WRITE(*,*) "ERROR !!! Stop !"
+              STOP
+           END IF
+        ELSE
+
+           dist=s/Real(NGeomf-1)
+           !if (debug) WRITE(*,*) 'Dbg PathCreate ZMAT s, dist:',s,dist
+
+           ! we call it again to obtain the geometries !
+           Call ExtraPol_baker(s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+           WRITE(*,*) "At the end of Baker case in the redistribution of the points, in PathCreate.f90, L966"
+        END IF
+
+        DO IGeom=1,NGeomF
+           WRITE(*,*) "UMatF for IGeom=",IGeom
+           DO I=1,3*Nat-6
+              WRITE(*,'(50(1X,F12.8))') UMatF(IGeom,:,I)
+           END DO
+        END DO
+
+     CASE ('MIXED')
+        !           WRITE(*,*) "IOIOIOIOIOIOIOI"
+        ! We call the extrapolation once to get the path length
+        Dist=Inf
+        Call ExtraPol_Mixed(s,dist,x0,y0,z0,xgeom,Coef)
+
+        if (s.LE.1e-6) THEN
+           IF (OptGeom.LE.0) THEN
+              WRITE(*,*) "Length of the path is 0 and you are not doing Geometry Optimization."
+              WRITE(*,*) "ERROR !!! Stop !"
+              STOP
+           END IF
+        ELSE
+
+           ! we have the length, we calculate the distance between two points
+           dist=s/Real(NGeomf-1)
+           if (debug) WRITE(*,*) 'Dbg PathCreate Mixed s, dist:',s,dist
+
+           ! we call it again to obtain the geometries !
+           Call ExtraPol_Mixed(s,dist,x0,y0,z0,xgeom,Coef)
+
+           IF (debug) THEN
+              DO I=1,NGeomF
+                 WRITE(*,'(1X,A,12(1X,F10.5))') "IntTangent:",IntTangent(I,1:NCoord)
+              END DO
+           END IF
+        END IF
+     CASE ('CART')
+        ! We call the extrapolation once to get the path length
+        Dist=Inf
+        Call ExtraPol_cart(iopt,s,dist,x0,y0,z0,xgeom,Coef)
+
+        if (s.LE.1e-6) THEN
+           IF (OptGeom.LE.0) THEN
+              WRITE(*,*) "Length of the path is 0 and you are not doing Geometry Optimization."
+              WRITE(*,*) "ERROR !!! Stop !"
+              STOP
+           END IF
+        ELSE
+           ! we have the lenght, we calculate the distance between two points
+           dist=s/Real(NGeomf-1)
+           if (debug) WRITE(*,*) 'Debug s, dist:',s,dist
+
+           ! we call it again to obtain the geometries !
+           Call ExtraPol_cart(iopt,s,dist,x0,y0,z0,xgeom,Coef)
+        END IF
+     END SELECT
+  ELSE
+     ! PFL 3 Jan 2008 -> 
+     ! Tangents are not recalculated if the points are not reparameterized
+     ! PFL 6 Apr 2008 -> 
+     ! Unless user has asked to reparameterized them !
+     IF (mod(Iopt,iReparamT).EQ.0) THEN
+        XGeomF=XGeom
+        NGeomS=NGeomI
+        Call CalcTangent(XgeomF,NGeomS,xgeom,Coef)
+        !
+     END IF
+     ! <- PFL 3 Jan 2008 / 6 Apr 2008
+  END IF ! if (mod(Iop,iReparam).EQ.0)
+  if (debug) WRITE(*,*) "PathCreate.f90, L885"
+
+  ! PFL 22.Nov.2007 ->
+  ! We do not write tangents for baker coordinates because they are hard to 
+  ! interpret for a chemist.
+
+  IF (debug.AND.(COORD.NE."BAKER")) THEN
+     ! we write the tangents :-)
+     DO I=1,NGeomF
+        SELECT CASE(Coord)
+        CASE ('ZMAT','MIXED')
+           IntCoordTmp=IntTangent(I,:)
+           WRITE(*,'(1X,A,12(1X,F10.5))') "IntCoordTmp:",IntCoordTmp(1:NCoord)
+           WRITE(*,'(1X,A,12(1X,F10.5))') "IntTangent:",IntTangent(I,1:NCoord)
+        CASE ('CART','HYBRID')
+           IntCoordTmp=XyzTangent(I,:)
+        CASE DEFAULT
+           WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in PathCreate. STOP"
+           STOP
+        END SELECT
+        WRITE(Title,"('Tangents for geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomF
+        Call PrintGeom(Title,Nat,Ncoord,IntCoordTmp,Coord,6,Atome,Order,OrderInv,IndZmat) 
+     END DO
+  END IF
+
+
+  IF (DEBUG.AND.(COORD.NE.'CART')) THEN
+     Idx=min(12,NCoord)
+     WRITE(*,*) "DBG PathCreate. IntCoordF(IGeom,:)"
+     DO I=1,NGeomF
+        WRITE(*,'("Geom:",I5,12(1X,F10.4))') I,IntCoordF(I,1:Idx)
+     END DO
+  END IF
+
+  DEALLOCATE(Coef,val_zmat,val_zmatTMP)
+  DEALLOCATE(X0,Y0,Z0,Indzmat0)
+  DEALLOCATE(X,Y,Z,Xgeom,XgeomF)
+  DEALLOCATE(XyzTmp,XyzTmp2)
+
+  if (debug) Call header("PathCreate over")
+
+END SUBROUTINE PathCreate
+
Index: src/upcase.f90
===================================================================
--- src/upcase.f90	(revision 0)
+++ src/upcase.f90	(revision 1)
@@ -0,0 +1,20 @@
+      SUBROUTINE Upcase(String)
+
+! This subroutine converts a string into its Upcase
+! version
+
+        integer, parameter :: KINT = kind(1)
+        integer, parameter :: KREAL = kind(1.0d0)
+
+        CHARACTER(*), INTENT(INOUT) :: String
+        INTEGER(KINT) :: i,ic, length
+        length=len_trim(string)
+        DO I=1, length
+          ic=ICHAR(String(i:i))
+          if ((ic.ge.97).and.(ic.le.122)) ic=ic-32
+          String(i:i)=ACHAR(ic)
+        END DO
+
+        RETURN
+      END SUBROUTINE Upcase
+

Property changes on: src/upcase.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/CalcBMat_int.f90
===================================================================
--- src/CalcBMat_int.f90	(revision 0)
+++ src/CalcBMat_int.f90	(revision 1)
@@ -0,0 +1,107 @@
+subroutine CalcBmat_int(natoms, xyzatm, indzmat, dzdc, atmass,atome)
+
+  use Io_module
+  use Path_module, only : MW,Pi
+
+  IMPLICIT NONE
+
+
+  integer(KINT) :: natoms, indzmat(natoms,5),atome(natoms)
+  real(KREAL)   :: xyzatm(3,natoms), dzdc(3*natoms,3*natoms),atmass(natoms)
+
+
+!!!!!!!!!!!!!!!!!!!!!
+!
+! This routine computes the derivatives of the internal coordinates
+! with respect to the cartesian coordinates.
+! This is what is called the B matrix in Baker coordinates :
+! B(i,j)=dz_i/dx_j
+!
+! it uses the same routines as Calc_baker
+!
+!!!!!!!!!!!!!!!!!!!!!!
+!
+! Input:
+! natoms: number of atoms
+! xyzatm(3,natoms): cartesian geometry
+! indzmat(natoms,5): index of the Z-matrix definition
+! atmass(natoms): mass of the atoms
+! atome(natoms): ??
+!
+! Output:
+! dzdc(3*natoms,3*natoms): B matrix
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  LOGICAL :: debug
+  INTEGER(KINT) :: i,j,k,iat
+  INTEGER(KINT) :: iat1, iat2, iat3, iat4
+
+
+  ! ======================================================================
+
+
+  debug=valid('CalcBmat_int').OR.valid('CalcBMat')
+  if (debug) Call Header('Entering CalcBmat_int')
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG CALCBMAT_INT Xyzatm '
+     DO iat=1,natoms
+        write(*,'(1X,I5,3(1X,F15.6))') atome(iat), xyzatm(1:3,iat)
+     END DO
+     WRITE(*,*) 'DBG CALCBMAT_INT IndZmat'
+     DO iat=1,natoms
+        write(*,'(6(1X,I5))') iat, indzmat(iat,1:4)
+     END DO
+  END IF
+
+  dzdc=0.d0
+  if (natoms.ge.2) THEN
+     iat1=indzmat(2,1)
+     iat2=indzmat(2,2)
+     Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,4))
+   END IF
+  if (natoms.ge.3) THEN
+     iat1=indzmat(3,1)
+     iat2=indzmat(3,2)
+     iat3=indzmat(3,3)
+     Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,7))
+     CALL CONSTRAINTS_BONDANGLE_DER(Natoms,iAt1,iAT2,iAt3, xyzatm, dzdc(1,8))
+  END IF
+  k=10
+  DO I=4, Natoms
+     iat1=indzmat(i,1)
+     iat2=indzmat(i,2)
+     iat3=indzmat(i,3)
+     iat4=indzmat(i,4)
+     Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,k))
+     k=k+1
+     CALL CONSTRAINTS_BONDANGLE_DER(Natoms,iAt1,iAT2,iAt3, xyzatm, dzdc(1,k))
+     k=k+1
+     CALL CONSTRAINTS_TORSION_DER2(Natoms,iat1,iat2,iat3,iat4, xyzatm, dzdc(1,k)) 
+     k=k+1
+  END DO
+
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG CALCBMAT_INT dzdc '
+     k=min(3*natoms,12)
+     DO iat=1,natoms
+        DO j=1,3
+           write(*,'(1X,I5,12(1X,F12.6))') 3*iat-3+j, dzdc(1:k,3*iat-3+j)
+        END DO
+     END DO
+  END IF             
+
+  if (debug) Call Header('CalcBmat_int Over')
+  ! ======================================================================
+
+end subroutine CalcBmat_int
Index: src/egrad_test.f90
===================================================================
--- src/egrad_test.f90	(revision 0)
+++ src/egrad_test.f90	(revision 1)
@@ -0,0 +1,262 @@
+  SUBROUTINE egrad_test(nat,e,geom,grad) 
+! This program reads cartesian coordinates from the file Ext.in
+! and print the energy (in au) and gradient (in au/Ang) in the file Ext.out
+! format D25.15
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+       INTEGER(KINT), INTENT(IN) :: Nat
+       REAL(KREAL), INTENT(OUT) :: E,grad(Nat*3)
+       REAL(KREAL), INTENT(IN) :: Geom(Nat,3)
+
+!     Bohr --> Angstr
+      real(KREAL), parameter :: BOHR   = 0.52917726D+00
+!
+! Parameters to define the surface
+      INTEGER(KINT), DIMENSION(6), PARAMETER :: IECOEF = (/-1,9,-45,45,-9,1/)
+      INTEGER(KINT), DIMENSION(6), PARAMETER :: ISCOEF = (/-3,-2,-1,1,2,3/)
+      REAL(KREAL), PARAMETER :: hh=0.001d0
+      
+! Variables
+       INTEGER(KINT) :: i,j,iat,jat
+       REAL(KREAL), ALLOCATABLE :: Xyztmp(:,:),GradTmp(:,:)
+       REAL(KREAL) :: xp,yp
+
+       CHARACTER(132) :: Line
+       LOGICAL :: Debug
+  
+      real(KREAL), parameter :: zero = 0.0_KREAL,   one = 1.0_KREAL
+      REAL(KREAL), external :: Exyz 
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+     
+  END INTERFACE
+
+  debug=valid('egrad_test')
+
+ if (debug) WRITE(*,*) '================ Entering Egrad_test ==================='
+ if (debug) THEN
+    WRITE(*,*) "Cartesian Geometry"
+    DO I=1,Nat
+       WRITE(*,'(1X,I5,3(1X,F12.6))') I,Geom(i,1:3)
+    END DO
+ END IF
+      
+      ALLOCATE(XyZTmp(Nat,3),GradTmp(Nat,3))
+
+      e=Exyz(nat,Geom)
+
+! We now calculate the gradients using numerical derivatives
+      Grad=0.d0
+      GradTmp=0.d0
+      do iat=1,3
+         do jat=1,nat
+            xyztmp=geom
+            do i=1,6
+               xyztmp(jat,iat)=geom(jat,iat)+ISCoef(i)*hh
+               gradTmp(jat,iat)=gradTmp(jat,iat)+IECoef(i)*Exyz(nat,xyztmp)
+            end do
+         end do
+      end do
+      gradTmp=gradTmp/(60.*hh)
+      do iat=1,nat
+       grad(3*iat-2:3*iat)=gradTmp(iat,1:3)
+      end do
+
+ if (debug) THEN
+    WRITE(*,*) "Cartesian gradient GradTmp"
+    DO I=1,Nat
+       WRITE(*,'(1X,I5,3(1X,F12.6))') I,Gradtmp(i,1:3)
+    END DO
+    WRITE(*,*) "Cartesian gradient Grad"
+    WRITE(*,'(50(1X,F12.6))') Grad
+
+ END IF
+
+
+      deallocate(xyztmp,gradTmp)
+
+
+ if (debug) WRITE(*,*) '================ Exiting Egrad_test ==================='
+
+! ======================================================================
+      end 
+
+
+
+      function Exyz(natoms,Xyz)
+
+        use Path_module, only : order
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+      INTEGER(KINT) ,INTENT(IN) :: natoms
+      REAL(KREAL) ,INTENT(IN) :: Xyz(natoms,3)
+      REAL(KREAL) :: Exyz
+
+      INTEGER(KINT) :: i
+      REAL(KREAL) :: dCH,dNH,dCN
+
+      real(KREAL) :: autoA,autoeV
+      parameter (autoA=0.52917715d0)
+      parameter (autoeV=27.21183d0)
+
+
+      real(KREAL) :: Q(3)
+      real(KREAL) :: TT,gR,pR
+
+      real(KREAL) :: mB,mC,mH
+      real(KREAL) :: T,RN,RC,r1,r2,r3
+
+      real(KREAL) :: Z1,Z12,V1
+      real(KREAL) :: Z2,Z22,V2
+      real(KREAL) :: Z3,Z32,V3
+
+      real(KREAL) :: S1,S2,S3,S12,S22,S32,POLY
+      real(KREAL) :: E1,E2,E3,HY1,HY2,HY3,SWITCH,V123
+
+      LOGICAL :: Debug
+      LOGICAL, SAVE :: First=.TRUE.
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+     
+  END INTERFACE
+
+  debug=valid('exyz')
+
+
+      
+      dCN=0.
+      dCH=0.
+      dNH=0.
+      do i=1,3
+         dCN=dCN+(xyz(Order(3),i)-xyz(order(2),i))**2
+         dCH=dCH+(xyz(order(1),i)-xyz(order(2),i))**2
+         dNH=dNH+(xyz(order(1),i)-xyz(order(3),i))**2
+      end do
+      R1=sqrt(dCH)
+      R2=sqrt(dCN)
+      R3=sqrt(dNH)
+
+      IF (debug.AND.First) THEN
+         WRITE(*,*) "Exyz in Test, dCH,dCN,dNH:",R1,R2,R3
+      END IF
+
+!      R1=R1*autoA
+!      R2=R2*autoA
+!      R3=R3*autoA
+
+!.....CH
+      Z1=R1-1.0823
+      Z12=Z1*Z1
+      V1=-2.8521*(1.0+5.5297*Z1+8.7166*Z12+5.3082*Z1*Z12)*dexp(-5.5297*Z1)
+!.....CN
+      Z2=R2-1.1718
+      Z22=Z2*Z2 
+      V2=-7.9282*(1.0+5.2448*Z2+7.3416*Z22+4.9785*Z2*Z22)*dexp(-5.2448*Z2)
+!.....NH
+      Z3=R3-1.0370
+      Z32=Z3*Z3
+      V3=-3.9938*(1.0+3.0704*Z3)*dexp(-3.0704*Z3)
+
+!     write(6,*) v1,v2,v3
+
+!.....THREE BODY TERMS
+      Z1=R1-1.9607
+      Z2=R2-2.2794
+      Z3=R3-1.8687
+      S1=0.4436*Z1+0.6091*Z2+0.6575*Z3
+      S2=-.8941*Z1+0.2498*Z2+0.3718*Z3
+      S3=0.0622*Z1-0.7527*Z2+0.6554*Z3
+
+      S12=S1*S1
+      S22=S2*S2
+      S32=S3*S3
+      POLY=-3.0578*(1.0+1.9076*S1-0.5008*S2-0.0149*S3+0.6695*S12  &
+          -1.3535*S22-1.0501*S32+0.2698*S1*S2-1.1120*S1*S3        &
+          +1.9310*S2*S3-0.0877*S1*S12+0.0044*S2*S22+0.0700        &
+          *S3*S32+0.0898*S12*S2-1.0186*S1*S22-0.0911*S12          &
+          *S3+0.0017*S1*S32+0.4567*S22*S3-0.8840*S2*S32           &
+          +0.3333*S1*S2*S3-0.0367*S12*S12+0.4821*S22*S22          &
+          +0.2564*S32*S32-0.0017*S12*S1*S2-0.2278*S12*S22         &
+          -0.1287*S1*S2*S22+0.1759*S1*S12*S3-0.0399*S12*S32       &
+          -0.1447*S1*S3*S32-0.3147*S2*S22*S3+0.1233*S22*S32       &
+          +0.3161*S2*S3*S32+0.0919*S12*S2*S3-0.0954*S1*S22*S3     &
+          +0.1778*S1*S2*S32-0.1892*S22*S22*S2)
+
+
+      E1=dexp(3.9742*Z1/2.)
+      E2=dexp(4.3688*Z2/2.)
+      E3=dexp(1.5176*Z3/2.)
+      HY1=(E1-1.0/E1)/(E1+1.0/E1)
+      HY2=(E2-1.0/E2)/(E2+1.0/E2)
+      HY3=(E3-1.0/E3)/(E3+1.0/E3)
+      SWITCH=(1.0-HY1)*(1.0-HY2)*(1.0-HY3)
+      V123=SWITCH*POLY
+
+!     write(6,*) v123,V1+V2+V3+V123
+
+      Exyz=(V1+V2+V3+V123)/autoeV
+
+      First=.FALSE.
+
+      return
+      end function Exyz
+
+      function Exyz2(natoms,Xyz)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+      INTEGER(KINT) ,INTENT(IN) :: natoms
+      REAL(KREAL) ,INTENT(IN) :: Xyz(natoms,3)
+      REAL(KREAL) :: Exyz
+
+     INTEGER(KINT) :: i,j,iat,jat
+     REAL(KREAL) :: Exyz2
+
+      real(KREAL) :: autoA,autoeV
+      parameter (autoA=0.52917715d0)
+      parameter (autoeV=27.21183d0)
+
+
+      real(KREAL) :: Q(3)
+      real(KREAL) :: TT,gR,pR
+
+      real(KREAL) :: mB,mC,mH
+      real(KREAL) :: T,RN,RC,r1,r2,r3
+
+      real(KREAL) :: Z1,Z12,V1
+      real(KREAL) :: Z2,Z22,V2
+      real(KREAL) :: Z3,Z32,V3
+
+      real(KREAL) :: S1,S2,S3,S12,S22,S32,POLY
+      real(KREAL) :: E1,E2,E3,HY1,HY2,HY3,SWITCH,V123
+
+      Exyz=0.
+      do jat=1,natoms
+         do iat=1,3
+         Exyz=Exyz+(3*iat-3+jat)*xyz(jat,iat)**2
+         end do
+      end do
+
+      Exyz2=Exyz
+
+      return
+      end function Exyz2
Index: src/Space_all.f90
===================================================================
--- src/Space_all.f90	(revision 0)
+++ src/Space_all.f90	(revision 1)
@@ -0,0 +1,72 @@
+!C
+!C  SPACE SIMPLY LOADS THE CURRENT VALUES OF Geom AND GRAD INTO
+!C  THE ARRAYS GeomSet AND GradSet
+!C
+      SUBROUTINE Space_all(NGeomF,IGeom,MRESET,MSET,Geom,GRAD,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+!      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+!      INCLUDE 'SIZES'
+	  
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+!      INCLUDE 'SIZES'
+
+ !MSET=mth iteration, MRESET=Maximum no. of iterations. 
+      INTEGER(KINT) :: NCoord,MRESET,MSET(NGeomF),NGeomF,IGeom
+ !Geom=geometry with NCoord coordinates. GRAD=gradients.
+      REAL(KREAL) :: Geom(NCoord),GRAD(NCoord)
+      REAL(KREAL) :: Heat
+      LOGICAL :: FRST(NGeomF), Print=.FALSE.
+ ! GeomSet, GradSet : a long array to store
+      REAL(KREAL) :: GeomSet(NGeomF,MRESET*NCoord),GradSet(NGeomF,MRESET*NCoord), ESET(MRESET)
+        ! Geom and GRAD for all iterations.
+
+      INTEGER(KINT) :: I,J,K,NMK,MI,NI
+      INTEGER(KINT), SAVE :: NRESET
+!C
+!C     UPDATE PARAMETER AND GRADIENT SUBSPACE
+!C
+      IF (PRINT)  WRITE(*,'(/,''       BEGIN SPACE  '')')
+      IF(FRST(IGeom))THEN
+         NRESET=MIN(NCoord/2,MRESET)
+         IF(NCoord .LT. 5 ) THEN ! This condition is imposed for small NCoord,
+           ! particularly if NCoord is equal to 2 or 3.
+           NRESET = NCoord-1
+         ENDIF
+         FRST(IGeom)=.FALSE.
+         MSET(IGeom)=0
+      ENDIF
+!C
+      !IF (PRINT)  WRITE(*,'(/,''       SPACE 1  '')')
+        ! purging the very first Geom and GRAD.
+       if (print) WRITE(*,*) "DBG Space MSET(",IGeom,"), NRESET",MSET(IGeom),NRESET
+       IF (MSET(IGeom) .EQ. NRESET) THEN
+         DO 10 I=1,MSET(IGeom)-1
+            MI = NCoord*(I-1)
+            NI = NCoord*I
+            ESET(I)=ESET(I+1)
+            DO 10 K=1,NCoord
+               GeomSet(IGeom,MI+K) = GeomSet(IGeom,NI+K)
+   10    GradSet(IGeom,MI+K) = GradSet(IGeom,NI+K)
+            MSET(IGeom)=NRESET-1
+       ENDIF
+!C
+!C     STORE THE CURRENT POINT
+!C
+      !IF (PRINT)  WRITE(*,'(/,''       SPACE 2  '')')
+      DO  K=1,NCoord
+         NMK = NCoord*MSET(IGeom)+K ! MSET(IGeom) corresponds the mth iteration.
+         IF (PRINT)  WRITE(*,*) 'K,NMK,MSET(',IGeom,'),NCoord',K,NMK,MSET(IGeom),NCoord, &
+                     SIZE(GeomSet(IGeom,:)), SIZE(GradSet(IGeom,:)),SIZE(Geom),SIZE(GRAD)
+         GeomSet(IGeom,NMK) = Geom(K)
+         GradSet(IGeom,NMK) = Grad(K)
+      END DO
+      MSET(IGeom)=MSET(IGeom)+1
+      ESET(MSET(IGeom))=HEAT
+
+      IF (PRINT) WRITE (*,*) "MSET(",IGeom,")=", MSET(IGeom)
+      IF (PRINT)  WRITE(*,'(/,''       END SPACE   '')')
+	  
+      END SUBROUTINE Space_all

Property changes on: src/Space_all.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Write_vasp.f90
===================================================================
--- src/Write_vasp.f90	(revision 0)
+++ src/Write_vasp.f90	(revision 1)
@@ -0,0 +1,79 @@
+SUBROUTINE Write_vasp(poscar)
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+  CHARACTER(SCHARS), INTENT(IN) :: poscar
+
+  INTEGER(KINT) :: IGeom, Idx, Iat, I,J,NFr
+  REAL(KREAL), ALLOCATABLE :: GeomTmpC(:), GeomTmp(:)
+  REAL(KREAL) :: MRot(3,3), Rmsd
+  CHARACTER(SCHARS) :: Line,Line2
+
+  ! For VMD printing
+  CHARACTER(SCHARS), PARAMETER :: FirstWord="mol "
+  CHARACTER(LCHARS), PARAMETER :: LastWords=" type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all"
+
+  REAL(KREAL) :: X,Y,Z
+  CHARACTER(LCHARS) :: TITLE
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('write_vasp')
+  if (debug) WRITE(*,*) '================ Entering Write_VASP ===================='
+
+  ALLOCATE(GeomTmpC(3*Nat), GeomTmp(NCoord))
+
+  Line2="00"
+  DO IGeom=1,NGeomF
+     WRITE(Line,'(I5)') IGeom-1
+     Idx=2-Len_TRIM(ADJUSTL(Line))
+     OPEN(IOTMP,File=TRIM(POSCAR) // "_" // Line2(1:Idx) // AdjustL(TRIM(Line)))
+     ! we convert the coordinates into Cartesian coordinates
+     SELECT CASE (Coord)
+     CASE ('CART','HYBRID')
+        GeomTmpC=Reshape(reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+     CASE ('ZMAT')
+        GeomTmp=IntCoordF(IGeom,:)
+        ! we have to generate the cartesian coordinates from the internal coordinates
+        CAll Int2Cart(nat,indzmat,geomtmp,GeomTmpC)
+     CASE ('MIXED')
+        GeomTmp=IntCoordF(IGeom,:)
+        CAll Mixed2Cart(nat,indzmat,geomtmp,GeomTmpC)
+     END SELECT
+
+     if (debug) WRITE(*,*) "Converting geom ",IGeom," into file ",Trim(POSCAR) // "_" // Line2(1:Idx) // AdjustL(TRIM(Line))
+
+     WRITE(Title,'(A,I2,"/",I2)') Trim(Vasp_Title) // " - Geom ",IGeom-1,NGeomF-1
+
+     Call PrintGeomVasp(Title,geomTmpC,Latr,FrozAtoms,IoTmp)
+
+     CLOSE(IOTMP)
+  END DO
+
+  if (Vmd) THEN
+     WRITE(IOOUT,*) "## Insert the following list into the Test_NEB_example.vmd file for an easy VMD use"
+
+     Line2="00"
+     WRITE(IOOUT,'(A)') TRIM(FirstWord) // " new " // TRIM(POSCAR) // "_00" // TRIM(LastWords)
+     DO IGeom=2,NGeomF
+        WRITE(Line,'(I5)') IGeom-1
+        Idx=2-Len_TRIM(ADJUSTL(Line))
+        WRITE(IOOUT,'(A)') TRIM(FirstWord) // " addfile " // TRIM(POSCAR) //  &
+             "_" // Line2(1:Idx) // TRIM(ADJUSTL(Line)) // TRIM(LastWords)
+     END DO
+     WRITE(IOOUT,*) "## End of List"
+  END IF
+
+  if (debug) WRITE(*,*) '================  Write_VASP OVER ===================='
+  DeALLOCATE(GeomTmpC, GeomTmp)
+
+END SUBROUTINE Write_vasp
Index: src/blas/dspmv.f
===================================================================
--- src/blas/dspmv.f	(revision 0)
+++ src/blas/dspmv.f	(revision 1)
@@ -0,0 +1,262 @@
+      SUBROUTINE DSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSPMV  performs the matrix-vector operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  AP     - DOUBLE PRECISION array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 6
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when AP contains the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  K = KK
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(I)
+                      K = K + 1
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2
+                  KK = KK + J
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 K = KK,KK + J - 2
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when AP contains the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*AP(KK)
+                  K = KK + 1
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(I)
+                      K = K + 1
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+                  KK = KK + (N-J+1)
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*AP(KK)
+                  IX = JX
+                  IY = JY
+                  DO 110 K = KK + 1,KK + N - J
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + (N-J+1)
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSPMV .
+*
+      END
Index: src/blas/chpr.f
===================================================================
--- src/blas/chpr.f	(revision 0)
+++ src/blas/chpr.f	(revision 1)
@@ -0,0 +1,217 @@
+      SUBROUTINE CHPR(UPLO,N,ALPHA,X,INCX,AP)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHPR    performs the hermitian rank 1 operation
+*
+*     A := alpha*x*conjg( x' ) + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX          array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHPR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.REAL(ZERO))) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(J))
+                      K = KK
+                      DO 10 I = 1,J - 1
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   10                 CONTINUE
+                      AP(KK+J-1) = REAL(AP(KK+J-1)) + REAL(X(J)*TEMP)
+                  ELSE
+                      AP(KK+J-1) = REAL(AP(KK+J-1))
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(JX))
+                      IX = KX
+                      DO 30 K = KK,KK + J - 2
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                      AP(KK+J-1) = REAL(AP(KK+J-1)) + REAL(X(JX)*TEMP)
+                  ELSE
+                      AP(KK+J-1) = REAL(AP(KK+J-1))
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(J))
+                      AP(KK) = REAL(AP(KK)) + REAL(TEMP*X(J))
+                      K = KK + 1
+                      DO 50 I = J + 1,N
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   50                 CONTINUE
+                  ELSE
+                      AP(KK) = REAL(AP(KK))
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(JX))
+                      AP(KK) = REAL(AP(KK)) + REAL(TEMP*X(JX))
+                      IX = JX
+                      DO 70 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          AP(K) = AP(K) + X(IX)*TEMP
+   70                 CONTINUE
+                  ELSE
+                      AP(KK) = REAL(AP(KK))
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHPR  .
+*
+      END
Index: src/blas/srotg.f
===================================================================
--- src/blas/srotg.f	(revision 0)
+++ src/blas/srotg.f	(revision 1)
@@ -0,0 +1,38 @@
+      SUBROUTINE SROTG(SA,SB,C,S)
+*     .. Scalar Arguments ..
+      REAL C,S,SA,SB
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     construct givens plane rotation.
+*     jack dongarra, linpack, 3/11/78.
+*
+*
+*     .. Local Scalars ..
+      REAL R,ROE,SCALE,Z
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,SIGN,SQRT
+*     ..
+      ROE = SB
+      IF (ABS(SA).GT.ABS(SB)) ROE = SA
+      SCALE = ABS(SA) + ABS(SB)
+      IF (SCALE.NE.0.0) GO TO 10
+      C = 1.0
+      S = 0.0
+      R = 0.0
+      Z = 0.0
+      GO TO 20
+   10 R = SCALE*SQRT((SA/SCALE)**2+ (SB/SCALE)**2)
+      R = SIGN(1.0,ROE)*R
+      C = SA/R
+      S = SB/R
+      Z = 1.0
+      IF (ABS(SA).GT.ABS(SB)) Z = S
+      IF (ABS(SB).GE.ABS(SA) .AND. C.NE.0.0) Z = 1.0/C
+   20 SA = R
+      SB = Z
+      RETURN
+      END
Index: src/blas/ssyr.f
===================================================================
--- src/blas/ssyr.f	(revision 0)
+++ src/blas/ssyr.f	(revision 1)
@@ -0,0 +1,199 @@
+      SUBROUTINE SSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYR   performs the symmetric rank 1 operation
+*
+*     A := alpha*x*x' + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in upper triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      DO 10 I = 1,J
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   10                 CONTINUE
+                  END IF
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = KX
+                      DO 30 I = 1,J
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in lower triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      DO 50 I = J,N
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   50                 CONTINUE
+                  END IF
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = JX
+                      DO 70 I = J,N
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSYR  .
+*
+      END
Index: src/blas/idamax.f
===================================================================
--- src/blas/idamax.f	(revision 0)
+++ src/blas/idamax.f	(revision 1)
@@ -0,0 +1,53 @@
+      INTEGER FUNCTION IDAMAX(N,DX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     finds the index of element having max. absolute value.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DMAX
+      INTEGER I,IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DABS
+*     ..
+      IDAMAX = 0
+      IF (N.LT.1 .OR. INCX.LE.0) RETURN
+      IDAMAX = 1
+      IF (N.EQ.1) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      DMAX = DABS(DX(1))
+      IX = IX + INCX
+      DO 10 I = 2,N
+          IF (DABS(DX(IX)).LE.DMAX) GO TO 5
+          IDAMAX = I
+          DMAX = DABS(DX(IX))
+    5     IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DMAX = DABS(DX(1))
+      DO 30 I = 2,N
+          IF (DABS(DX(I)).LE.DMAX) GO TO 30
+          IDAMAX = I
+          DMAX = DABS(DX(I))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dzasum.f
===================================================================
--- src/blas/dzasum.f	(revision 0)
+++ src/blas/dzasum.f	(revision 1)
@@ -0,0 +1,48 @@
+      DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     takes the sum of the absolute values.
+*     jack dongarra, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION STEMP
+      INTEGER I,IX
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION DCABS1
+      EXTERNAL DCABS1
+*     ..
+      DZASUM = 0.0d0
+      STEMP = 0.0d0
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      DO 10 I = 1,N
+          STEMP = STEMP + DCABS1(ZX(IX))
+          IX = IX + INCX
+   10 CONTINUE
+      DZASUM = STEMP
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          STEMP = STEMP + DCABS1(ZX(I))
+   30 CONTINUE
+      DZASUM = STEMP
+      RETURN
+      END
Index: src/blas/zswap.f
===================================================================
--- src/blas/zswap.f	(revision 0)
+++ src/blas/zswap.f	(revision 1)
@@ -0,0 +1,47 @@
+      SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*),ZY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     interchanges two vectors.
+*     jack dongarra, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE COMPLEX ZTEMP
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          ZTEMP = ZX(IX)
+          ZX(IX) = ZY(IY)
+          ZY(IY) = ZTEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+   20 DO 30 I = 1,N
+          ZTEMP = ZX(I)
+          ZX(I) = ZY(I)
+          ZY(I) = ZTEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/zdotu.f
===================================================================
--- src/blas/zdotu.f	(revision 0)
+++ src/blas/zdotu.f	(revision 1)
@@ -0,0 +1,51 @@
+      DOUBLE COMPLEX FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*),ZY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     ZDOTU forms the dot product of two vectors.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      DOUBLE COMPLEX ZTEMP
+      INTEGER I,IX,IY
+*     ..
+      ZTEMP = (0.0d0,0.0d0)
+      ZDOTU = (0.0d0,0.0d0)
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          ZTEMP = ZTEMP + ZX(IX)*ZY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      ZDOTU = ZTEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          ZTEMP = ZTEMP + ZX(I)*ZY(I)
+   30 CONTINUE
+      ZDOTU = ZTEMP
+      RETURN
+      END
Index: src/blas/ctbsv.f
===================================================================
--- src/blas/ctbsv.f	(revision 0)
+++ src/blas/ctbsv.f	(revision 1)
@@ -0,0 +1,367 @@
+      SUBROUTINE CTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTBSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*  diagonals.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTBSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed by sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,MAX(1,J-K),-1
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 40 J = N,1,-1
+                      KX = KX - INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
+                          TEMP = X(JX)
+                          DO 30 I = J - 1,MAX(1,J-K),-1
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX - INCX
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          L = 1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(1,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,MIN(N,J+K)
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      KX = KX + INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = 1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
+                          TEMP = X(JX)
+                          DO 70 I = J + 1,MIN(N,J+K)
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX + INCX
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A') )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          DO 90 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - A(L+I,J)*X(I)
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      ELSE
+                          DO 100 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - CONJG(A(L+I,J))*X(I)
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(KPLUS1,J))
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          DO 120 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - A(L+I,J)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      ELSE
+                          DO 130 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - CONJG(A(L+I,J))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(KPLUS1,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          DO 150 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - A(L+I,J)*X(I)
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      ELSE
+                          DO 160 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - CONJG(A(L+I,J))*X(I)
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(1,J))
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          DO 180 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - A(L+I,J)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      ELSE
+                          DO 190 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - CONJG(A(L+I,J))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(1,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTBSV .
+*
+      END
Index: src/blas/zhemv.f
===================================================================
--- src/blas/zhemv.f	(revision 0)
+++ src/blas/zhemv.f	(revision 1)
@@ -0,0 +1,266 @@
+      SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHEMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 5
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when A is stored in upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(I,J))*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*DBLE(A(J,J)) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 I = 1,J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(I,J))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*DBLE(A(J,J)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when A is stored in lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*DBLE(A(J,J))
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(I,J))*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*DBLE(A(J,J))
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,N
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(I,J))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHEMV .
+*
+      END
Index: src/blas/zgeru.f
===================================================================
--- src/blas/zgeru.f	(revision 0)
+++ src/blas/zgeru.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZGERU  performs the rank 1 operation
+*
+*     A := alpha*x*y' + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZGERU ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of ZGERU .
+*
+      END
Index: src/blas/cdotc.f
===================================================================
--- src/blas/cdotc.f	(revision 0)
+++ src/blas/cdotc.f	(revision 1)
@@ -0,0 +1,55 @@
+      COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*),CY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     forms the dot product of two vectors, conjugating the first
+*     vector.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, linpack,  3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      COMPLEX CTEMP
+      INTEGER I,IX,IY
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG
+*     ..
+      CTEMP = (0.0,0.0)
+      CDOTC = (0.0,0.0)
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      CDOTC = CTEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          CTEMP = CTEMP + CONJG(CX(I))*CY(I)
+   30 CONTINUE
+      CDOTC = CTEMP
+      RETURN
+      END
Index: src/blas/dcabs1.f
===================================================================
--- src/blas/dcabs1.f	(revision 0)
+++ src/blas/dcabs1.f	(revision 1)
@@ -0,0 +1,16 @@
+      DOUBLE PRECISION FUNCTION DCABS1(Z)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX Z
+*     ..
+*     ..
+*  Purpose
+*  =======
+*
+*  DCABS1 computes absolute value of a double complex number 
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,DBLE,DIMAG
+*
+      DCABS1 = ABS(DBLE(Z)) + ABS(DIMAG(Z))
+      RETURN
+      END
Index: src/blas/ctpsv.f
===================================================================
--- src/blas/ctpsv.f	(revision 0)
+++ src/blas/ctpsv.f	(revision 1)
@@ -0,0 +1,329 @@
+      SUBROUTINE CTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTPSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX          array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTPSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK - 1
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K - 1
+   10                     CONTINUE
+                      END IF
+                      KK = KK - J
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK + 1
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K + 1
+   50                     CONTINUE
+                      END IF
+                      KK = KK + (N-J+1)
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A' ) )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      K = KK
+                      IF (NOCONJ) THEN
+                          DO 90 I = 1,J - 1
+                              TEMP = TEMP - AP(K)*X(I)
+                              K = K + 1
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      ELSE
+                          DO 100 I = 1,J - 1
+                              TEMP = TEMP - CONJG(AP(K))*X(I)
+                              K = K + 1
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(AP(KK+J-1))
+                      END IF
+                      X(J) = TEMP
+                      KK = KK + J
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      IF (NOCONJ) THEN
+                          DO 120 K = KK,KK + J - 2
+                              TEMP = TEMP - AP(K)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      ELSE
+                          DO 130 K = KK,KK + J - 2
+                              TEMP = TEMP - CONJG(AP(K))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(AP(KK+J-1))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + J
+  140             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK
+                      IF (NOCONJ) THEN
+                          DO 150 I = N,J + 1,-1
+                              TEMP = TEMP - AP(K)*X(I)
+                              K = K - 1
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      ELSE
+                          DO 160 I = N,J + 1,-1
+                              TEMP = TEMP - CONJG(AP(K))*X(I)
+                              K = K - 1
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(AP(KK-N+J))
+                      END IF
+                      X(J) = TEMP
+                      KK = KK - (N-J+1)
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      IF (NOCONJ) THEN
+                          DO 180 K = KK,KK - (N- (J+1)),-1
+                              TEMP = TEMP - AP(K)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      ELSE
+                          DO 190 K = KK,KK - (N- (J+1)),-1
+                              TEMP = TEMP - CONJG(AP(K))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(AP(KK-N+J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTPSV .
+*
+      END
Index: src/blas/ctrsv.f
===================================================================
--- src/blas/ctrsv.f	(revision 0)
+++ src/blas/ctrsv.f	(revision 1)
@@ -0,0 +1,312 @@
+      SUBROUTINE CTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTRSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTRSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*A(I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 I = J - 1,1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*A(I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 I = J + 1,N
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A' ) )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          DO 90 I = 1,J - 1
+                              TEMP = TEMP - A(I,J)*X(I)
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 100 I = 1,J - 1
+                              TEMP = TEMP - CONJG(A(I,J))*X(I)
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(J,J))
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      IX = KX
+                      TEMP = X(JX)
+                      IF (NOCONJ) THEN
+                          DO 120 I = 1,J - 1
+                              TEMP = TEMP - A(I,J)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 130 I = 1,J - 1
+                              TEMP = TEMP - CONJG(A(I,J))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(J,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          DO 150 I = N,J + 1,-1
+                              TEMP = TEMP - A(I,J)*X(I)
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 160 I = N,J + 1,-1
+                              TEMP = TEMP - CONJG(A(I,J))*X(I)
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(J,J))
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      IX = KX
+                      TEMP = X(JX)
+                      IF (NOCONJ) THEN
+                          DO 180 I = N,J + 1,-1
+                              TEMP = TEMP - A(I,J)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 190 I = N,J + 1,-1
+                              TEMP = TEMP - CONJG(A(I,J))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/CONJG(A(J,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTRSV .
+*
+      END
Index: src/blas/cgemv.f
===================================================================
--- src/blas/cgemv.f	(revision 0)
+++ src/blas/cgemv.f	(revision 1)
@@ -0,0 +1,281 @@
+      SUBROUTINE CGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CGEMV performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,   or
+*
+*     y := alpha*conjg( A' )*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*conjg( A' )*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry with BETA non-zero, the incremented array Y
+*           must contain the vector y. On exit, Y is overwritten by the
+*           updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY
+      LOGICAL NOCONJ
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CGEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      DO 50 I = 1,M
+                          Y(I) = Y(I) + TEMP*A(I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      DO 70 I = 1,M
+                          Y(IY) = Y(IY) + TEMP*A(I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y  or  y := alpha*conjg( A' )*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 110 J = 1,N
+                  TEMP = ZERO
+                  IF (NOCONJ) THEN
+                      DO 90 I = 1,M
+                          TEMP = TEMP + A(I,J)*X(I)
+   90                 CONTINUE
+                  ELSE
+                      DO 100 I = 1,M
+                          TEMP = TEMP + CONJG(A(I,J))*X(I)
+  100                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  110         CONTINUE
+          ELSE
+              DO 140 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  IF (NOCONJ) THEN
+                      DO 120 I = 1,M
+                          TEMP = TEMP + A(I,J)*X(IX)
+                          IX = IX + INCX
+  120                 CONTINUE
+                  ELSE
+                      DO 130 I = 1,M
+                          TEMP = TEMP + CONJG(A(I,J))*X(IX)
+                          IX = IX + INCX
+  130                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  140         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CGEMV .
+*
+      END
Index: src/blas/stbsv.f
===================================================================
--- src/blas/stbsv.f	(revision 0)
+++ src/blas/stbsv.f	(revision 1)
@@ -0,0 +1,336 @@
+      SUBROUTINE STBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STBSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*  diagonals.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STBSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed by sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,MAX(1,J-K),-1
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 40 J = N,1,-1
+                      KX = KX - INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
+                          TEMP = X(JX)
+                          DO 30 I = J - 1,MAX(1,J-K),-1
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX - INCX
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          L = 1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(1,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,MIN(N,J+K)
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      KX = KX + INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = 1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
+                          TEMP = X(JX)
+                          DO 70 I = J + 1,MIN(N,J+K)
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX + INCX
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A')*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      DO 90 I = MAX(1,J-K),J - 1
+                          TEMP = TEMP - A(L+I,J)*X(I)
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      L = KPLUS1 - J
+                      DO 110 I = MAX(1,J-K),J - 1
+                          TEMP = TEMP - A(L+I,J)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      L = 1 - J
+                      DO 130 I = MIN(N,J+K),J + 1,-1
+                          TEMP = TEMP - A(L+I,J)*X(I)
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      L = 1 - J
+                      DO 150 I = MIN(N,J+K),J + 1,-1
+                          TEMP = TEMP - A(L+I,J)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STBSV .
+*
+      END
Index: src/blas/lsame.f
===================================================================
--- src/blas/lsame.f	(revision 0)
+++ src/blas/lsame.f	(revision 1)
@@ -0,0 +1,85 @@
+      LOGICAL FUNCTION LSAME(CA,CB)
+*
+*  -- LAPACK auxiliary routine (version 3.1) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER CA,CB
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
+*  case.
+*
+*  Arguments
+*  =========
+*
+*  CA      (input) CHARACTER*1
+*
+*  CB      (input) CHARACTER*1
+*          CA and CB specify the single characters to be compared.
+*
+* =====================================================================
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC ICHAR
+*     ..
+*     .. Local Scalars ..
+      INTEGER INTA,INTB,ZCODE
+*     ..
+*
+*     Test if the characters are equal
+*
+      LSAME = CA .EQ. CB
+      IF (LSAME) RETURN
+*
+*     Now test for equivalence if both characters are alphabetic.
+*
+      ZCODE = ICHAR('Z')
+*
+*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+*     machines, on which ICHAR returns a value with bit 8 set.
+*     ICHAR('A') on Prime machines returns 193 which is the same as
+*     ICHAR('A') on an EBCDIC machine.
+*
+      INTA = ICHAR(CA)
+      INTB = ICHAR(CB)
+*
+      IF (ZCODE.EQ.90 .OR. ZCODE.EQ.122) THEN
+*
+*        ASCII is assumed - ZCODE is the ASCII code of either lower or
+*        upper case 'Z'.
+*
+          IF (INTA.GE.97 .AND. INTA.LE.122) INTA = INTA - 32
+          IF (INTB.GE.97 .AND. INTB.LE.122) INTB = INTB - 32
+*
+      ELSE IF (ZCODE.EQ.233 .OR. ZCODE.EQ.169) THEN
+*
+*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+*        upper case 'Z'.
+*
+          IF (INTA.GE.129 .AND. INTA.LE.137 .OR.
+     +        INTA.GE.145 .AND. INTA.LE.153 .OR.
+     +        INTA.GE.162 .AND. INTA.LE.169) INTA = INTA + 64
+          IF (INTB.GE.129 .AND. INTB.LE.137 .OR.
+     +        INTB.GE.145 .AND. INTB.LE.153 .OR.
+     +        INTB.GE.162 .AND. INTB.LE.169) INTB = INTB + 64
+*
+      ELSE IF (ZCODE.EQ.218 .OR. ZCODE.EQ.250) THEN
+*
+*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+*        plus 128 of either lower or upper case 'Z'.
+*
+          IF (INTA.GE.225 .AND. INTA.LE.250) INTA = INTA - 32
+          IF (INTB.GE.225 .AND. INTB.LE.250) INTB = INTB - 32
+      END IF
+      LSAME = INTA .EQ. INTB
+*
+*     RETURN
+*
+*     End of LSAME
+*
+      END
Index: src/blas/ztbmv.f
===================================================================
--- src/blas/ztbmv.f	(revision 0)
+++ src/blas/ztbmv.f	(revision 1)
@@ -0,0 +1,363 @@
+      SUBROUTINE ZTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTBMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX   too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*         Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = KPLUS1 - J
+                          DO 10 I = MAX(1,J-K),J - 1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = KPLUS1 - J
+                          DO 30 I = MAX(1,J-K),J - 1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
+                      END IF
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = 1 - J
+                          DO 50 I = MIN(N,J+K),J + 1,-1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(1,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = 1 - J
+                          DO 70 I = MIN(N,J+K),J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(1,J)
+                      END IF
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                          DO 90 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + A(L+I,J)*X(I)
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(KPLUS1,J))
+                          DO 100 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + DCONJG(A(L+I,J))*X(I)
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      KX = KX - INCX
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                          DO 120 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + A(L+I,J)*X(IX)
+                              IX = IX - INCX
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(KPLUS1,J))
+                          DO 130 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + DCONJG(A(L+I,J))*X(IX)
+                              IX = IX - INCX
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(1,J)
+                          DO 150 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + A(L+I,J)*X(I)
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(1,J))
+                          DO 160 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + DCONJG(A(L+I,J))*X(I)
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      KX = KX + INCX
+                      IX = KX
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(1,J)
+                          DO 180 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + A(L+I,J)*X(IX)
+                              IX = IX + INCX
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(1,J))
+                          DO 190 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + DCONJG(A(L+I,J))*X(IX)
+                              IX = IX + INCX
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTBMV .
+*
+      END
Index: src/blas/dsyr2.f
===================================================================
--- src/blas/dsyr2.f	(revision 0)
+++ src/blas/dsyr2.f	(revision 1)
@@ -0,0 +1,230 @@
+      SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYR2  performs the symmetric rank 2 operation
+*
+*     A := alpha*x*y' + alpha*y*x' + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an n
+*  by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      DO 10 I = 1,J
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   10                 CONTINUE
+                  END IF
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = KX
+                      IY = KY
+                      DO 30 I = 1,J
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      DO 50 I = J,N
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   50                 CONTINUE
+                  END IF
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = JX
+                      IY = JY
+                      DO 70 I = J,N
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSYR2 .
+*
+      END
Index: src/blas/dspr.f
===================================================================
--- src/blas/dspr.f	(revision 0)
+++ src/blas/dspr.f	(revision 1)
@@ -0,0 +1,199 @@
+      SUBROUTINE DSPR(UPLO,N,ALPHA,X,INCX,AP)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSPR    performs the symmetric rank 1 operation
+*
+*     A := alpha*x*x' + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - DOUBLE PRECISION array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSPR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      K = KK
+                      DO 10 I = 1,J
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   10                 CONTINUE
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = KX
+                      DO 30 K = KK,KK + J - 1
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      K = KK
+                      DO 50 I = J,N
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   50                 CONTINUE
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = JX
+                      DO 70 K = KK,KK + N - J
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSPR  .
+*
+      END
Index: src/blas/sdot.f
===================================================================
--- src/blas/sdot.f	(revision 0)
+++ src/blas/sdot.f	(revision 1)
@@ -0,0 +1,64 @@
+      REAL FUNCTION SDOT(N,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     forms the dot product of two vectors.
+*     uses unrolled loops for increments equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+
+*     .. Local Scalars ..
+      REAL STEMP
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      STEMP = 0.0e0
+      SDOT = 0.0e0
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          STEMP = STEMP + SX(IX)*SY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      SDOT = STEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,5)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          STEMP = STEMP + SX(I)*SY(I)
+   30 CONTINUE
+      IF (N.LT.5) GO TO 60
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,5
+          STEMP = STEMP + SX(I)*SY(I) + SX(I+1)*SY(I+1) +
+     +            SX(I+2)*SY(I+2) + SX(I+3)*SY(I+3) + SX(I+4)*SY(I+4)
+   50 CONTINUE
+   60 SDOT = STEMP
+      RETURN
+      END
Index: src/blas/zaxpy.f
===================================================================
--- src/blas/zaxpy.f	(revision 0)
+++ src/blas/zaxpy.f	(revision 1)
@@ -0,0 +1,49 @@
+      SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ZA
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*),ZY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     constant times a vector plus a vector.
+*     jack dongarra, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+
+*     .. Local Scalars ..
+      INTEGER I,IX,IY
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION DCABS1
+      EXTERNAL DCABS1
+*     ..
+      IF (N.LE.0) RETURN
+      IF (DCABS1(ZA).EQ.0.0d0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          ZY(IY) = ZY(IY) + ZA*ZX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          ZY(I) = ZY(I) + ZA*ZX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dsdot.f
===================================================================
--- src/blas/dsdot.f	(revision 0)
+++ src/blas/dsdot.f	(revision 1)
@@ -0,0 +1,96 @@
+      DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  AUTHORS
+*  =======
+*  Lawson, C. L., (JPL), Hanson, R. J., (SNLA), 
+*  Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
+*
+*  Purpose
+*  =======
+*  Compute the inner product of two vectors with extended
+*  precision accumulation and result.
+*
+*  Returns D.P. dot product accumulated in D.P., for S.P. SX and SY
+*  DSDOT = sum for I = 0 to N-1 of  SX(LX+I*INCX) * SY(LY+I*INCY),
+*  where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+*  defined in a similar way using INCY.
+*
+*  Arguments
+*  =========
+*
+*  N      (input) INTEGER
+*         number of elements in input vector(s)
+*
+*  SX     (input) REAL array, dimension(N)
+*         single precision vector with N elements
+*
+*  INCX   (input) INTEGER
+*          storage spacing between elements of SX
+*
+*  SY     (input) REAL array, dimension(N)
+*         single precision vector with N elements
+*
+*  INCY   (input) INTEGER
+*         storage spacing between elements of SY
+*
+*  DSDOT  (output) DOUBLE PRECISION
+*         DSDOT  double precision dot product (zero if N.LE.0)
+*
+*  REFERENCES
+*  ==========
+*      
+*  C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+*  Krogh, Basic linear algebra subprograms for Fortran
+*  usage, Algorithm No. 539, Transactions on Mathematical
+*  Software 5, 3 (September 1979), pp. 308-323.
+*
+*  REVISION HISTORY  (YYMMDD)
+*  ==========================
+*
+*  791001  DATE WRITTEN
+*  890831  Modified array declarations.  (WRB)
+*  890831  REVISION DATE from Version 3.2
+*  891214  Prologue converted to Version 4.0 format.  (BAB)
+*  920310  Corrected definition of LX in DESCRIPTION.  (WRB)
+*  920501  Reformatted the REFERENCES section.  (WRB)
+*  070118  Reformat to LAPACK style (JL)
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER I,KX,KY,NS
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE
+*     ..
+      DSDOT = 0.0D0
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 20
+*
+*     Code for unequal or nonpositive increments.
+*
+      KX = 1
+      KY = 1
+      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+      DO 10 I = 1,N
+          DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+          KX = KX + INCX
+          KY = KY + INCY
+   10 CONTINUE
+      RETURN
+*
+*     Code for equal, positive, non-unit increments.
+*
+   20 NS = N*INCX
+      DO 30 I = 1,NS,INCX
+          DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/ztrsm.f
===================================================================
--- src/blas/ztrsm.f	(revision 0)
+++ src/blas/ztrsm.f	(revision 1)
@@ -0,0 +1,407 @@
+      SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTRSM  solves one of the matrix equations
+*
+*     op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
+*
+*  where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'   or   op( A ) = conjg( A' ).
+*
+*  The matrix X is overwritten on B.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry, SIDE specifies whether op( A ) appears on the left
+*           or right of X as follows:
+*
+*              SIDE = 'L' or 'l'   op( A )*X = alpha*B.
+*
+*              SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain  the  right-hand  side  matrix  B,  and  on exit  is
+*           overwritten by the solution matrix  X.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOCONJ = LSAME(TRANSA,'T')
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTRSM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*inv( A )*B.
+*
+              IF (UPPER) THEN
+                  DO 60 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 30 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   30                     CONTINUE
+                      END IF
+                      DO 50 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 40 I = 1,K - 1
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   40                         CONTINUE
+                          END IF
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 100 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 70 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   70                     CONTINUE
+                      END IF
+                      DO 90 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 80 I = K + 1,M
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   80                         CONTINUE
+                          END IF
+   90                 CONTINUE
+  100             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*inv( A' )*B
+*           or    B := alpha*inv( conjg( A' ) )*B.
+*
+              IF (UPPER) THEN
+                  DO 140 J = 1,N
+                      DO 130 I = 1,M
+                          TEMP = ALPHA*B(I,J)
+                          IF (NOCONJ) THEN
+                              DO 110 K = 1,I - 1
+                                  TEMP = TEMP - A(K,I)*B(K,J)
+  110                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          ELSE
+                              DO 120 K = 1,I - 1
+                                  TEMP = TEMP - DCONJG(A(K,I))*B(K,J)
+  120                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/DCONJG(A(I,I))
+                          END IF
+                          B(I,J) = TEMP
+  130                 CONTINUE
+  140             CONTINUE
+              ELSE
+                  DO 180 J = 1,N
+                      DO 170 I = M,1,-1
+                          TEMP = ALPHA*B(I,J)
+                          IF (NOCONJ) THEN
+                              DO 150 K = I + 1,M
+                                  TEMP = TEMP - A(K,I)*B(K,J)
+  150                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          ELSE
+                              DO 160 K = I + 1,M
+                                  TEMP = TEMP - DCONJG(A(K,I))*B(K,J)
+  160                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/DCONJG(A(I,I))
+                          END IF
+                          B(I,J) = TEMP
+  170                 CONTINUE
+  180             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*inv( A ).
+*
+              IF (UPPER) THEN
+                  DO 230 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 190 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  190                     CONTINUE
+                      END IF
+                      DO 210 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 200 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  200                         CONTINUE
+                          END IF
+  210                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 220 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  220                     CONTINUE
+                      END IF
+  230             CONTINUE
+              ELSE
+                  DO 280 J = N,1,-1
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 240 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  240                     CONTINUE
+                      END IF
+                      DO 260 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 250 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  250                         CONTINUE
+                          END IF
+  260                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 270 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  270                     CONTINUE
+                      END IF
+  280             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*inv( A' )
+*           or    B := alpha*B*inv( conjg( A' ) ).
+*
+              IF (UPPER) THEN
+                  DO 330 K = N,1,-1
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = ONE/A(K,K)
+                          ELSE
+                              TEMP = ONE/DCONJG(A(K,K))
+                          END IF
+                          DO 290 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  290                     CONTINUE
+                      END IF
+                      DO 310 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = A(J,K)
+                              ELSE
+                                  TEMP = DCONJG(A(J,K))
+                              END IF
+                              DO 300 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  300                         CONTINUE
+                          END IF
+  310                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 320 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  320                     CONTINUE
+                      END IF
+  330             CONTINUE
+              ELSE
+                  DO 380 K = 1,N
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = ONE/A(K,K)
+                          ELSE
+                              TEMP = ONE/DCONJG(A(K,K))
+                          END IF
+                          DO 340 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  340                     CONTINUE
+                      END IF
+                      DO 360 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = A(J,K)
+                              ELSE
+                                  TEMP = DCONJG(A(J,K))
+                              END IF
+                              DO 350 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  350                         CONTINUE
+                          END IF
+  360                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 370 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  370                     CONTINUE
+                      END IF
+  380             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTRSM .
+*
+      END
Index: src/blas/stpsv.f
===================================================================
--- src/blas/stpsv.f	(revision 0)
+++ src/blas/stpsv.f	(revision 1)
@@ -0,0 +1,293 @@
+      SUBROUTINE STPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STPSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - REAL             array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STPSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK - 1
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K - 1
+   10                     CONTINUE
+                      END IF
+                      KK = KK - J
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK + 1
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K + 1
+   50                     CONTINUE
+                      END IF
+                      KK = KK + (N-J+1)
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      K = KK
+                      DO 90 I = 1,J - 1
+                          TEMP = TEMP - AP(K)*X(I)
+                          K = K + 1
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      X(J) = TEMP
+                      KK = KK + J
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 110 K = KK,KK + J - 2
+                          TEMP = TEMP - AP(K)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + J
+  120             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK
+                      DO 130 I = N,J + 1,-1
+                          TEMP = TEMP - AP(K)*X(I)
+                          K = K - 1
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      X(J) = TEMP
+                      KK = KK - (N-J+1)
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 150 K = KK,KK - (N- (J+1)),-1
+                          TEMP = TEMP - AP(K)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STPSV .
+*
+      END
Index: src/blas/zgemm.f
===================================================================
--- src/blas/zgemm.f	(revision 0)
+++ src/blas/zgemm.f	(revision 1)
@@ -0,0 +1,414 @@
+      SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,M,N
+      CHARACTER TRANSA,TRANSB
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZGEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*op( A )*op( B ) + beta*C,
+*
+*  where  op( X ) is one of
+*
+*     op( X ) = X   or   op( X ) = X'   or   op( X ) = conjg( X' ),
+*
+*  alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*  an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n',  op( A ) = A.
+*
+*              TRANSA = 'T' or 't',  op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c',  op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  TRANSB - CHARACTER*1.
+*           On entry, TRANSB specifies the form of op( B ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSB = 'N' or 'n',  op( B ) = B.
+*
+*              TRANSB = 'T' or 't',  op( B ) = B'.
+*
+*              TRANSB = 'C' or 'c',  op( B ) = conjg( B' ).
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies  the number  of rows  of the  matrix
+*           op( A )  and of the  matrix  C.  M  must  be at least  zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N  specifies the number  of columns of the matrix
+*           op( B ) and the number of columns of the matrix C. N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry,  K  specifies  the number of columns of the matrix
+*           op( A ) and the number of rows of the matrix op( B ). K must
+*           be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
+*           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by m  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. When  TRANSA = 'N' or 'n' then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, kb ), where kb is
+*           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
+*           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  n by k  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in the calling (sub) program. When  TRANSB = 'N' or 'n' then
+*           LDB must be at least  max( 1, k ), otherwise  LDB must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n  matrix
+*           ( alpha*op( A )*op( B ) + beta*C ).
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
+      LOGICAL CONJA,CONJB,NOTA,NOTB
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
+*     conjugated or transposed, set  CONJA and CONJB  as true if  A  and
+*     B  respectively are to be  transposed but  not conjugated  and set
+*     NROWA, NCOLA and  NROWB  as the number of rows and  columns  of  A
+*     and the number of rows of  B  respectively.
+*
+      NOTA = LSAME(TRANSA,'N')
+      NOTB = LSAME(TRANSB,'N')
+      CONJA = LSAME(TRANSA,'C')
+      CONJB = LSAME(TRANSB,'C')
+      IF (NOTA) THEN
+          NROWA = M
+          NCOLA = K
+      ELSE
+          NROWA = K
+          NCOLA = M
+      END IF
+      IF (NOTB) THEN
+          NROWB = K
+      ELSE
+          NROWB = N
+      END IF
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.NOTA) .AND. (.NOT.CONJA) .AND.
+     +    (.NOT.LSAME(TRANSA,'T'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.NOTB) .AND. (.NOT.CONJB) .AND.
+     +         (.NOT.LSAME(TRANSB,'T'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 8
+      ELSE IF (LDB.LT.MAX(1,NROWB)) THEN
+          INFO = 10
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZGEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (NOTB) THEN
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B + beta*C.
+*
+              DO 90 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 50 I = 1,M
+                          C(I,J) = ZERO
+   50                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 60 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+   60                 CONTINUE
+                  END IF
+                  DO 80 L = 1,K
+                      IF (B(L,J).NE.ZERO) THEN
+                          TEMP = ALPHA*B(L,J)
+                          DO 70 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+   70                     CONTINUE
+                      END IF
+   80             CONTINUE
+   90         CONTINUE
+          ELSE IF (CONJA) THEN
+*
+*           Form  C := alpha*conjg( A' )*B + beta*C.
+*
+              DO 120 J = 1,N
+                  DO 110 I = 1,M
+                      TEMP = ZERO
+                      DO 100 L = 1,K
+                          TEMP = TEMP + DCONJG(A(L,I))*B(L,J)
+  100                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  110             CONTINUE
+  120         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B + beta*C
+*
+              DO 150 J = 1,N
+                  DO 140 I = 1,M
+                      TEMP = ZERO
+                      DO 130 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(L,J)
+  130                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  140             CONTINUE
+  150         CONTINUE
+          END IF
+      ELSE IF (NOTA) THEN
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*A*conjg( B' ) + beta*C.
+*
+              DO 200 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 160 I = 1,M
+                          C(I,J) = ZERO
+  160                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 170 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  170                 CONTINUE
+                  END IF
+                  DO 190 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*DCONJG(B(J,L))
+                          DO 180 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  180                     CONTINUE
+                      END IF
+  190             CONTINUE
+  200         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A*B'          + beta*C
+*
+              DO 250 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 210 I = 1,M
+                          C(I,J) = ZERO
+  210                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 220 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  220                 CONTINUE
+                  END IF
+                  DO 240 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*B(J,L)
+                          DO 230 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  230                     CONTINUE
+                      END IF
+  240             CONTINUE
+  250         CONTINUE
+          END IF
+      ELSE IF (CONJA) THEN
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*conjg( A' )*conjg( B' ) + beta*C.
+*
+              DO 280 J = 1,N
+                  DO 270 I = 1,M
+                      TEMP = ZERO
+                      DO 260 L = 1,K
+                          TEMP = TEMP + DCONJG(A(L,I))*DCONJG(B(J,L))
+  260                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  270             CONTINUE
+  280         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*conjg( A' )*B' + beta*C
+*
+              DO 310 J = 1,N
+                  DO 300 I = 1,M
+                      TEMP = ZERO
+                      DO 290 L = 1,K
+                          TEMP = TEMP + DCONJG(A(L,I))*B(J,L)
+  290                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  300             CONTINUE
+  310         CONTINUE
+          END IF
+      ELSE
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*A'*conjg( B' ) + beta*C
+*
+              DO 340 J = 1,N
+                  DO 330 I = 1,M
+                      TEMP = ZERO
+                      DO 320 L = 1,K
+                          TEMP = TEMP + A(L,I)*DCONJG(B(J,L))
+  320                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  330             CONTINUE
+  340         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B' + beta*C
+*
+              DO 370 J = 1,N
+                  DO 360 I = 1,M
+                      TEMP = ZERO
+                      DO 350 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(J,L)
+  350                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  360             CONTINUE
+  370         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZGEMM .
+*
+      END
Index: src/blas/ztpmv.f
===================================================================
--- src/blas/ztpmv.f	(revision 0)
+++ src/blas/ztpmv.f	(revision 1)
@@ -0,0 +1,326 @@
+      SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTPMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX*16       array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x:= A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K + 1
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
+                      END IF
+                      KK = KK + J
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 K = KK,KK + J - 2
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K - 1
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
+                      END IF
+                      KK = KK - (N-J+1)
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 K = KK,KK - (N- (J+1)),-1
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK - 1
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 90 I = J - 1,1,-1
+                              TEMP = TEMP + AP(K)*X(I)
+                              K = K - 1
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK))
+                          DO 100 I = J - 1,1,-1
+                              TEMP = TEMP + DCONJG(AP(K))*X(I)
+                              K = K - 1
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+                      KK = KK - J
+  110             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 120 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + AP(K)*X(IX)
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK))
+                          DO 130 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + DCONJG(AP(K))*X(IX)
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - J
+  140             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      K = KK + 1
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 150 I = J + 1,N
+                              TEMP = TEMP + AP(K)*X(I)
+                              K = K + 1
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK))
+                          DO 160 I = J + 1,N
+                              TEMP = TEMP + DCONJG(AP(K))*X(I)
+                              K = K + 1
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+                      KK = KK + (N-J+1)
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 180 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              TEMP = TEMP + AP(K)*X(IX)
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK))
+                          DO 190 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              TEMP = TEMP + DCONJG(AP(K))*X(IX)
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTPMV .
+*
+      END
Index: src/blas/zdscal.f
===================================================================
--- src/blas/zdscal.f	(revision 0)
+++ src/blas/zdscal.f	(revision 1)
@@ -0,0 +1,43 @@
+      SUBROUTINE ZDSCAL(N,DA,ZX,INCX)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION DA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     scales a vector by a constant.
+*     jack dongarra, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCMPLX
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      DO 10 I = 1,N
+          ZX(IX) = DCMPLX(DA,0.0d0)*ZX(IX)
+          IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/sgemv.f
===================================================================
--- src/blas/sgemv.f	(revision 0)
+++ src/blas/sgemv.f	(revision 1)
@@ -0,0 +1,261 @@
+      SUBROUTINE SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER INCX,INCY,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SGEMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*A'*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry with BETA non-zero, the incremented array Y
+*           must contain the vector y. On exit, Y is overwritten by the
+*           updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SGEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      DO 50 I = 1,M
+                          Y(I) = Y(I) + TEMP*A(I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      DO 70 I = 1,M
+                          Y(IY) = Y(IY) + TEMP*A(I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 100 J = 1,N
+                  TEMP = ZERO
+                  DO 90 I = 1,M
+                      TEMP = TEMP + A(I,J)*X(I)
+   90             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  100         CONTINUE
+          ELSE
+              DO 120 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  DO 110 I = 1,M
+                      TEMP = TEMP + A(I,J)*X(IX)
+                      IX = IX + INCX
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SGEMV .
+*
+      END
Index: src/blas/strsv.f
===================================================================
--- src/blas/strsv.f	(revision 0)
+++ src/blas/strsv.f	(revision 1)
@@ -0,0 +1,281 @@
+      SUBROUTINE STRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STRSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STRSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*A(I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 I = J - 1,1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*A(I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 I = J + 1,N
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      DO 90 I = 1,J - 1
+                          TEMP = TEMP - A(I,J)*X(I)
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 110 I = 1,J - 1
+                          TEMP = TEMP - A(I,J)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      DO 130 I = N,J + 1,-1
+                          TEMP = TEMP - A(I,J)*X(I)
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 150 I = N,J + 1,-1
+                          TEMP = TEMP - A(I,J)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STRSV .
+*
+      END
Index: src/blas/ztrmv.f
===================================================================
--- src/blas/ztrmv.f	(revision 0)
+++ src/blas/ztrmv.f	(revision 1)
@@ -0,0 +1,309 @@
+      SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTRMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTRMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*A(I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 I = 1,J - 1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*A(I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 I = N,J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 90 I = J - 1,1,-1
+                              TEMP = TEMP + A(I,J)*X(I)
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J))
+                          DO 100 I = J - 1,1,-1
+                              TEMP = TEMP + DCONJG(A(I,J))*X(I)
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 120 I = J - 1,1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + A(I,J)*X(IX)
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J))
+                          DO 130 I = J - 1,1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + DCONJG(A(I,J))*X(IX)
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 150 I = J + 1,N
+                              TEMP = TEMP + A(I,J)*X(I)
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J))
+                          DO 160 I = J + 1,N
+                              TEMP = TEMP + DCONJG(A(I,J))*X(I)
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 180 I = J + 1,N
+                              IX = IX + INCX
+                              TEMP = TEMP + A(I,J)*X(IX)
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J))
+                          DO 190 I = J + 1,N
+                              IX = IX + INCX
+                              TEMP = TEMP + DCONJG(A(I,J))*X(IX)
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTRMV .
+*
+      END
Index: src/blas/zsyrk.f
===================================================================
--- src/blas/zsyrk.f	(revision 0)
+++ src/blas/zsyrk.f	(revision 1)
@@ -0,0 +1,294 @@
+      SUBROUTINE ZSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZSYRK  performs one of the symmetric rank k operations
+*
+*     C := alpha*A*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*A + beta*C,
+*
+*  where  alpha and beta  are scalars,  C is an  n by n symmetric matrix
+*  and  A  is an  n by k  matrix in the first case and a  k by n  matrix
+*  in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*A' + beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'T' or 't',  K  specifies  the number of rows of the
+*           matrix A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZSYRK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*A' + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP = ZERO
+                      DO 220 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZSYRK .
+*
+      END
Index: src/blas/cgerc.f
===================================================================
--- src/blas/cgerc.f	(revision 0)
+++ src/blas/cgerc.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE CGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CGERC  performs the rank 1 operation
+*
+*     A := alpha*x*conjg( y' ) + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CGERC ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*CONJG(Y(JY))
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*CONJG(Y(JY))
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of CGERC .
+*
+      END
Index: src/blas/zherk.f
===================================================================
--- src/blas/zherk.f	(revision 0)
+++ src/blas/zherk.f	(revision 1)
@@ -0,0 +1,327 @@
+      SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHERK  performs one of the hermitian rank k operations
+*
+*     C := alpha*A*conjg( A' ) + beta*C,
+*
+*  or
+*
+*     C := alpha*conjg( A' )*A + beta*C,
+*
+*  where  alpha and beta  are  real scalars,  C is an  n by n  hermitian
+*  matrix and  A  is an  n by k  matrix in the  first case and a  k by n
+*  matrix in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*conjg( A' ) + beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*conjg( A' )*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'C' or 'c',  K  specifies  the number of rows of the
+*           matrix A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  hermitian matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  hermitian matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set,  they are assumed to be zero,  and on exit they
+*           are set to zero.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*  -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+*     Ed Anderson, Cray Research Inc.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCMPLX,DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      DOUBLE PRECISION RTEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHERK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+                      C(J,J) = BETA*DBLE(C(J,J))
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      C(J,J) = BETA*DBLE(C(J,J))
+                      DO 70 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*conjg( A' ) + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                      C(J,J) = BETA*DBLE(C(J,J))
+                  ELSE
+                      C(J,J) = DBLE(C(J,J))
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.DCMPLX(ZERO)) THEN
+                          TEMP = ALPHA*DCONJG(A(J,L))
+                          DO 110 I = 1,J - 1
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                          C(J,J) = DBLE(C(J,J)) + DBLE(TEMP*A(I,L))
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      C(J,J) = BETA*DBLE(C(J,J))
+                      DO 150 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  ELSE
+                      C(J,J) = DBLE(C(J,J))
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.DCMPLX(ZERO)) THEN
+                          TEMP = ALPHA*DCONJG(A(J,L))
+                          C(J,J) = DBLE(C(J,J)) + DBLE(TEMP*A(J,L))
+                          DO 160 I = J + 1,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*conjg( A' )*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 220 J = 1,N
+                  DO 200 I = 1,J - 1
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + DCONJG(A(L,I))*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+                  RTEMP = ZERO
+                  DO 210 L = 1,K
+                      RTEMP = RTEMP + DCONJG(A(L,J))*A(L,J)
+  210             CONTINUE
+                  IF (BETA.EQ.ZERO) THEN
+                      C(J,J) = ALPHA*RTEMP
+                  ELSE
+                      C(J,J) = ALPHA*RTEMP + BETA*DBLE(C(J,J))
+                  END IF
+  220         CONTINUE
+          ELSE
+              DO 260 J = 1,N
+                  RTEMP = ZERO
+                  DO 230 L = 1,K
+                      RTEMP = RTEMP + DCONJG(A(L,J))*A(L,J)
+  230             CONTINUE
+                  IF (BETA.EQ.ZERO) THEN
+                      C(J,J) = ALPHA*RTEMP
+                  ELSE
+                      C(J,J) = ALPHA*RTEMP + BETA*DBLE(C(J,J))
+                  END IF
+                  DO 250 I = J + 1,N
+                      TEMP = ZERO
+                      DO 240 L = 1,K
+                          TEMP = TEMP + DCONJG(A(L,I))*A(L,J)
+  240                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  250             CONTINUE
+  260         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHERK .
+*
+      END
Index: src/blas/drotm.f
===================================================================
--- src/blas/drotm.f	(revision 0)
+++ src/blas/drotm.f	(revision 1)
@@ -0,0 +1,147 @@
+      SUBROUTINE DROTM(N,DX,INCX,DY,INCY,DPARAM)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DPARAM(5),DX(1),DY(1)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+*
+*     (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN
+*     (DY**T)
+*
+*     DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+*     LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY.
+*     WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*
+*     DFLAG=-1.D0     DFLAG=0.D0        DFLAG=1.D0     DFLAG=-2.D0
+*
+*       (DH11  DH12)    (1.D0  DH12)    (DH11  1.D0)    (1.D0  0.D0)
+*     H=(          )    (          )    (          )    (          )
+*       (DH21  DH22),   (DH21  1.D0),   (-1.D0 DH22),   (0.D0  1.D0).
+*     SEE DROTMG FOR A DESCRIPTION OF DATA STORAGE IN DPARAM.
+*
+*  Arguments
+*  =========
+*
+*  N      (input) INTEGER
+*         number of elements in input vector(s)
+*
+*  DX     (input/output) DOUBLE PRECISION array, dimension N
+*         double precision vector with 5 elements
+*
+*  INCX   (input) INTEGER
+*         storage spacing between elements of DX
+*
+*  DY     (input/output) DOUBLE PRECISION array, dimension N
+*         double precision vector with N elements
+*
+*  INCY   (input) INTEGER
+*         storage spacing between elements of DY
+*
+*  DPARAM (input/output)  DOUBLE PRECISION array, dimension 5 
+*     DPARAM(1)=DFLAG
+*     DPARAM(2)=DH11
+*     DPARAM(3)=DH21
+*     DPARAM(4)=DH12
+*     DPARAM(5)=DH22
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DFLAG,DH11,DH12,DH21,DH22,TWO,W,Z,ZERO
+      INTEGER I,KX,KY,NSTEPS
+*     ..
+*     .. Data statements ..
+      DATA ZERO,TWO/0.D0,2.D0/
+*     ..
+*
+      DFLAG = DPARAM(1)
+      IF (N.LE.0 .OR. (DFLAG+TWO.EQ.ZERO)) GO TO 140
+      IF (.NOT. (INCX.EQ.INCY.AND.INCX.GT.0)) GO TO 70
+*
+      NSTEPS = N*INCX
+      IF (DFLAG) 50,10,30
+   10 CONTINUE
+      DH12 = DPARAM(4)
+      DH21 = DPARAM(3)
+      DO 20 I = 1,NSTEPS,INCX
+          W = DX(I)
+          Z = DY(I)
+          DX(I) = W + Z*DH12
+          DY(I) = W*DH21 + Z
+   20 CONTINUE
+      GO TO 140
+   30 CONTINUE
+      DH11 = DPARAM(2)
+      DH22 = DPARAM(5)
+      DO 40 I = 1,NSTEPS,INCX
+          W = DX(I)
+          Z = DY(I)
+          DX(I) = W*DH11 + Z
+          DY(I) = -W + DH22*Z
+   40 CONTINUE
+      GO TO 140
+   50 CONTINUE
+      DH11 = DPARAM(2)
+      DH12 = DPARAM(4)
+      DH21 = DPARAM(3)
+      DH22 = DPARAM(5)
+      DO 60 I = 1,NSTEPS,INCX
+          W = DX(I)
+          Z = DY(I)
+          DX(I) = W*DH11 + Z*DH12
+          DY(I) = W*DH21 + Z*DH22
+   60 CONTINUE
+      GO TO 140
+   70 CONTINUE
+      KX = 1
+      KY = 1
+      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+*
+      IF (DFLAG) 120,80,100
+   80 CONTINUE
+      DH12 = DPARAM(4)
+      DH21 = DPARAM(3)
+      DO 90 I = 1,N
+          W = DX(KX)
+          Z = DY(KY)
+          DX(KX) = W + Z*DH12
+          DY(KY) = W*DH21 + Z
+          KX = KX + INCX
+          KY = KY + INCY
+   90 CONTINUE
+      GO TO 140
+  100 CONTINUE
+      DH11 = DPARAM(2)
+      DH22 = DPARAM(5)
+      DO 110 I = 1,N
+          W = DX(KX)
+          Z = DY(KY)
+          DX(KX) = W*DH11 + Z
+          DY(KY) = -W + DH22*Z
+          KX = KX + INCX
+          KY = KY + INCY
+  110 CONTINUE
+      GO TO 140
+  120 CONTINUE
+      DH11 = DPARAM(2)
+      DH12 = DPARAM(4)
+      DH21 = DPARAM(3)
+      DH22 = DPARAM(5)
+      DO 130 I = 1,N
+          W = DX(KX)
+          Z = DY(KY)
+          DX(KX) = W*DH11 + Z*DH12
+          DY(KY) = W*DH21 + Z*DH22
+          KX = KX + INCX
+          KY = KY + INCY
+  130 CONTINUE
+  140 CONTINUE
+      RETURN
+      END
Index: src/blas/srot.f
===================================================================
--- src/blas/srot.f	(revision 0)
+++ src/blas/srot.f	(revision 1)
@@ -0,0 +1,54 @@
+      SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
+*     .. Scalar Arguments ..
+      REAL C,S
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     applies a plane rotation.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+
+*     .. Local Scalars ..
+      REAL STEMP
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          STEMP = C*SX(IX) + S*SY(IY)
+          SY(IY) = C*SY(IY) - S*SX(IX)
+          SX(IX) = STEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          STEMP = C*SX(I) + S*SY(I)
+          SY(I) = C*SY(I) - S*SX(I)
+          SX(I) = STEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/sasum.f
===================================================================
--- src/blas/sasum.f	(revision 0)
+++ src/blas/sasum.f	(revision 1)
@@ -0,0 +1,59 @@
+      REAL FUNCTION SASUM(N,SX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     takes the sum of the absolute values.
+*     uses unrolled loops for increment equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+
+*     .. Local Scalars ..
+      REAL STEMP
+      INTEGER I,M,MP1,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,MOD
+*     ..
+      SASUM = 0.0e0
+      STEMP = 0.0e0
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          STEMP = STEMP + ABS(SX(I))
+   10 CONTINUE
+      SASUM = STEMP
+      RETURN
+*
+*        code for increment equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,6)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          STEMP = STEMP + ABS(SX(I))
+   30 CONTINUE
+      IF (N.LT.6) GO TO 60
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,6
+          STEMP = STEMP + ABS(SX(I)) + ABS(SX(I+1)) + ABS(SX(I+2)) +
+     +            ABS(SX(I+3)) + ABS(SX(I+4)) + ABS(SX(I+5))
+   50 CONTINUE
+   60 SASUM = STEMP
+      RETURN
+      END
Index: src/blas/dsymm.f
===================================================================
--- src/blas/dsymm.f	(revision 0)
+++ src/blas/dsymm.f	(revision 1)
@@ -0,0 +1,294 @@
+      SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where alpha and beta are scalars,  A is a symmetric matrix and  B and
+*  C are  m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  symmetric matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  symmetric  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is  n otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*A(J,J)
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*A(J,K)
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(J,K)
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of DSYMM .
+*
+      END
Index: src/blas/ssbmv.f
===================================================================
--- src/blas/ssbmv.f	(revision 0)
+++ src/blas/ssbmv.f	(revision 1)
@@ -0,0 +1,303 @@
+      SUBROUTINE SSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER INCX,INCY,K,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSBMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric band matrix, with k super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the band matrix A is being supplied as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  being supplied.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  being supplied.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry, K specifies the number of super-diagonals of the
+*           matrix A. K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the symmetric matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer the upper
+*           triangular part of a symmetric band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the symmetric matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer the lower
+*           triangular part of a symmetric band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KPLUS1,KX,KY,L
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (K.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array A
+*     are accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when upper triangle of A is stored.
+*
+          KPLUS1 = K + 1
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  L = KPLUS1 - J
+                  DO 50 I = MAX(1,J-K),J - 1
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*A(KPLUS1,J) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  L = KPLUS1 - J
+                  DO 70 I = MAX(1,J-K),J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*A(KPLUS1,J) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  IF (J.GT.K) THEN
+                      KX = KX + INCX
+                      KY = KY + INCY
+                  END IF
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when lower triangle of A is stored.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*A(1,J)
+                  L = 1 - J
+                  DO 90 I = J + 1,MIN(N,J+K)
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*A(1,J)
+                  L = 1 - J
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,MIN(N,J+K)
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSBMV .
+*
+      END
Index: src/blas/chbmv.f
===================================================================
--- src/blas/chbmv.f	(revision 0)
+++ src/blas/chbmv.f	(revision 1)
@@ -0,0 +1,307 @@
+      SUBROUTINE CHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,K,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHBMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian band matrix, with k super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the band matrix A is being supplied as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  being supplied.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  being supplied.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry, K specifies the number of super-diagonals of the
+*           matrix A. K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the hermitian matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer the upper
+*           triangular part of a hermitian band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the hermitian matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer the lower
+*           triangular part of a hermitian band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KPLUS1,KX,KY,L
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,MIN,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (K.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array A
+*     are accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when upper triangle of A is stored.
+*
+          KPLUS1 = K + 1
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  L = KPLUS1 - J
+                  DO 50 I = MAX(1,J-K),J - 1
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + CONJG(A(L+I,J))*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*REAL(A(KPLUS1,J)) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  L = KPLUS1 - J
+                  DO 70 I = MAX(1,J-K),J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + CONJG(A(L+I,J))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*REAL(A(KPLUS1,J)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  IF (J.GT.K) THEN
+                      KX = KX + INCX
+                      KY = KY + INCY
+                  END IF
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when lower triangle of A is stored.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*REAL(A(1,J))
+                  L = 1 - J
+                  DO 90 I = J + 1,MIN(N,J+K)
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + CONJG(A(L+I,J))*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*REAL(A(1,J))
+                  L = 1 - J
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,MIN(N,J+K)
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + CONJG(A(L+I,J))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHBMV .
+*
+      END
Index: src/blas/icamax.f
===================================================================
--- src/blas/icamax.f	(revision 0)
+++ src/blas/icamax.f	(revision 1)
@@ -0,0 +1,54 @@
+      INTEGER FUNCTION ICAMAX(N,CX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     finds the index of element having max. absolute value.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      REAL SMAX
+      INTEGER I,IX
+*     ..
+*     .. External Functions ..
+      REAL SCABS1
+      EXTERNAL SCABS1
+*     ..
+      ICAMAX = 0
+      IF (N.LT.1 .OR. INCX.LE.0) RETURN
+      ICAMAX = 1
+      IF (N.EQ.1) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      SMAX = SCABS1(CX(1))
+      IX = IX + INCX
+      DO 10 I = 2,N
+          IF (SCABS1(CX(IX)).LE.SMAX) GO TO 5
+          ICAMAX = I
+          SMAX = SCABS1(CX(IX))
+    5     IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 SMAX = SCABS1(CX(1))
+      DO 30 I = 2,N
+          IF (SCABS1(CX(I)).LE.SMAX) GO TO 30
+          ICAMAX = I
+          SMAX = SCABS1(CX(I))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/zhpr2.f
===================================================================
--- src/blas/zhpr2.f	(revision 0)
+++ src/blas/zhpr2.f	(revision 1)
@@ -0,0 +1,252 @@
+      SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHPR2  performs the hermitian rank 2 operation
+*
+*     A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an
+*  n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX*16       array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHPR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(J))
+                      TEMP2 = DCONJG(ALPHA*X(J))
+                      K = KK
+                      DO 10 I = 1,J - 1
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   10                 CONTINUE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1)) +
+     +                             DBLE(X(J)*TEMP1+Y(J)*TEMP2)
+                  ELSE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1))
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(JY))
+                      TEMP2 = DCONJG(ALPHA*X(JX))
+                      IX = KX
+                      IY = KY
+                      DO 30 K = KK,KK + J - 2
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1)) +
+     +                             DBLE(X(JX)*TEMP1+Y(JY)*TEMP2)
+                  ELSE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(J))
+                      TEMP2 = DCONJG(ALPHA*X(J))
+                      AP(KK) = DBLE(AP(KK)) +
+     +                         DBLE(X(J)*TEMP1+Y(J)*TEMP2)
+                      K = KK + 1
+                      DO 50 I = J + 1,N
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   50                 CONTINUE
+                  ELSE
+                      AP(KK) = DBLE(AP(KK))
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(JY))
+                      TEMP2 = DCONJG(ALPHA*X(JX))
+                      AP(KK) = DBLE(AP(KK)) +
+     +                         DBLE(X(JX)*TEMP1+Y(JY)*TEMP2)
+                      IX = JX
+                      IY = JY
+                      DO 70 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          IY = IY + INCY
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+   70                 CONTINUE
+                  ELSE
+                      AP(KK) = DBLE(AP(KK))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHPR2 .
+*
+      END
Index: src/blas/zrotg.f
===================================================================
--- src/blas/zrotg.f	(revision 0)
+++ src/blas/zrotg.f	(revision 1)
@@ -0,0 +1,34 @@
+      SUBROUTINE ZROTG(CA,CB,C,S)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX CA,CB,S
+      DOUBLE PRECISION C
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     determines a double complex Givens rotation.
+*
+*     .. Local Scalars ..
+      DOUBLE COMPLEX ALPHA
+      DOUBLE PRECISION NORM,SCALE
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CDABS,DCMPLX,DCONJG,DSQRT
+*     ..
+      IF (CDABS(CA).NE.0.0d0) GO TO 10
+      C = 0.0d0
+      S = (1.0d0,0.0d0)
+      CA = CB
+      GO TO 20
+   10 CONTINUE
+      SCALE = CDABS(CA) + CDABS(CB)
+      NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+
+     +       (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2)
+      ALPHA = CA/CDABS(CA)
+      C = CDABS(CA)/NORM
+      S = ALPHA*DCONJG(CB)/NORM
+      CA = ALPHA*NORM
+   20 CONTINUE
+      RETURN
+      END
Index: src/blas/csscal.f
===================================================================
--- src/blas/csscal.f	(revision 0)
+++ src/blas/csscal.f	(revision 1)
@@ -0,0 +1,42 @@
+      SUBROUTINE CSSCAL(N,SA,CX,INCX)
+*     .. Scalar Arguments ..
+      REAL SA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     scales a complex vector by a real constant.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC AIMAG,CMPLX,REAL
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/zher.f
===================================================================
--- src/blas/zher.f	(revision 0)
+++ src/blas/zher.f	(revision 1)
@@ -0,0 +1,214 @@
+      SUBROUTINE ZHER(UPLO,N,ALPHA,X,INCX,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHER   performs the hermitian rank 1 operation
+*
+*     A := alpha*x*conjg( x' ) + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHER  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.DBLE(ZERO))) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in upper triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(J))
+                      DO 10 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   10                 CONTINUE
+                      A(J,J) = DBLE(A(J,J)) + DBLE(X(J)*TEMP)
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(JX))
+                      IX = KX
+                      DO 30 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                      A(J,J) = DBLE(A(J,J)) + DBLE(X(JX)*TEMP)
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+                  JX = JX + INCX
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in lower triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(J))
+                      A(J,J) = DBLE(A(J,J)) + DBLE(TEMP*X(J))
+                      DO 50 I = J + 1,N
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   50                 CONTINUE
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(JX))
+                      A(J,J) = DBLE(A(J,J)) + DBLE(TEMP*X(JX))
+                      IX = JX
+                      DO 70 I = J + 1,N
+                          IX = IX + INCX
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+   70                 CONTINUE
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHER  .
+*
+      END
Index: src/blas/sspmv.f
===================================================================
--- src/blas/sspmv.f	(revision 0)
+++ src/blas/sspmv.f	(revision 1)
@@ -0,0 +1,262 @@
+      SUBROUTINE SSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSPMV  performs the matrix-vector operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  AP     - REAL             array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 6
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when AP contains the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  K = KK
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(I)
+                      K = K + 1
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2
+                  KK = KK + J
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 K = KK,KK + J - 2
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when AP contains the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*AP(KK)
+                  K = KK + 1
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(I)
+                      K = K + 1
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+                  KK = KK + (N-J+1)
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*AP(KK)
+                  IX = JX
+                  IY = JY
+                  DO 110 K = KK + 1,KK + N - J
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + AP(K)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + (N-J+1)
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSPMV .
+*
+      END
Index: src/blas/scabs1.f
===================================================================
--- src/blas/scabs1.f	(revision 0)
+++ src/blas/scabs1.f	(revision 1)
@@ -0,0 +1,16 @@
+      REAL FUNCTION SCABS1(Z)
+*     .. Scalar Arguments ..
+      COMPLEX Z
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SCABS1 computes absolute value of a complex number
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,AIMAG,REAL
+*     ..
+      SCABS1 = ABS(REAL(Z)) + ABS(AIMAG(Z))
+      RETURN
+      END
Index: src/blas/chpmv.f
===================================================================
--- src/blas/chpmv.f	(revision 0)
+++ src/blas/chpmv.f	(revision 1)
@@ -0,0 +1,269 @@
+      SUBROUTINE CHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHPMV  performs the matrix-vector operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX          array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 6
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when AP contains the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  K = KK
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + CONJG(AP(K))*X(I)
+                      K = K + 1
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*REAL(AP(KK+J-1)) + ALPHA*TEMP2
+                  KK = KK + J
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 K = KK,KK + J - 2
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + CONJG(AP(K))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*REAL(AP(KK+J-1)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when AP contains the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*REAL(AP(KK))
+                  K = KK + 1
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + CONJG(AP(K))*X(I)
+                      K = K + 1
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+                  KK = KK + (N-J+1)
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*REAL(AP(KK))
+                  IX = JX
+                  IY = JY
+                  DO 110 K = KK + 1,KK + N - J
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + CONJG(AP(K))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + (N-J+1)
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHPMV .
+*
+      END
Index: src/blas/dcopy.f
===================================================================
--- src/blas/dcopy.f	(revision 0)
+++ src/blas/dcopy.f	(revision 1)
@@ -0,0 +1,63 @@
+      SUBROUTINE DCOPY(N,DX,INCX,DY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*),DY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     copies a vector, x, to a vector, y.
+*     uses unrolled loops for increments equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          DY(IY) = DX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,7)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DY(I) = DX(I)
+   30 CONTINUE
+      IF (N.LT.7) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,7
+          DY(I) = DX(I)
+          DY(I+1) = DX(I+1)
+          DY(I+2) = DX(I+2)
+          DY(I+3) = DX(I+3)
+          DY(I+4) = DX(I+4)
+          DY(I+5) = DX(I+5)
+          DY(I+6) = DX(I+6)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/isamax.f
===================================================================
--- src/blas/isamax.f	(revision 0)
+++ src/blas/isamax.f	(revision 1)
@@ -0,0 +1,53 @@
+      INTEGER FUNCTION ISAMAX(N,SX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     finds the index of element having max. absolute value.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      REAL SMAX
+      INTEGER I,IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS
+*     ..
+      ISAMAX = 0
+      IF (N.LT.1 .OR. INCX.LE.0) RETURN
+      ISAMAX = 1
+      IF (N.EQ.1) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      SMAX = ABS(SX(1))
+      IX = IX + INCX
+      DO 10 I = 2,N
+          IF (ABS(SX(IX)).LE.SMAX) GO TO 5
+          ISAMAX = I
+          SMAX = ABS(SX(IX))
+    5     IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 SMAX = ABS(SX(1))
+      DO 30 I = 2,N
+          IF (ABS(SX(I)).LE.SMAX) GO TO 30
+          ISAMAX = I
+          SMAX = ABS(SX(I))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dtrmm.f
===================================================================
--- src/blas/dtrmm.f	(revision 0)
+++ src/blas/dtrmm.f	(revision 1)
@@ -0,0 +1,346 @@
+      SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTRMM  performs one of the matrix-matrix operations
+*
+*     B := alpha*op( A )*B,   or   B := alpha*B*op( A ),
+*
+*  where  alpha  is a scalar,  B  is an m by n matrix,  A  is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE specifies whether  op( A ) multiplies B from
+*           the left or right as follows:
+*
+*              SIDE = 'L' or 'l'   B := alpha*op( A )*B.
+*
+*              SIDE = 'R' or 'r'   B := alpha*B*op( A ).
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain the matrix  B,  and  on exit  is overwritten  by the
+*           transformed matrix.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTRMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*A*B.
+*
+              IF (UPPER) THEN
+                  DO 50 J = 1,N
+                      DO 40 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              DO 30 I = 1,K - 1
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   30                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP*A(K,K)
+                              B(K,J) = TEMP
+                          END IF
+   40                 CONTINUE
+   50             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              B(K,J) = TEMP
+                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
+                              DO 60 I = K + 1,M
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   60                         CONTINUE
+                          END IF
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*A'*B.
+*
+              IF (UPPER) THEN
+                  DO 110 J = 1,N
+                      DO 100 I = M,1,-1
+                          TEMP = B(I,J)
+                          IF (NOUNIT) TEMP = TEMP*A(I,I)
+                          DO 90 K = 1,I - 1
+                              TEMP = TEMP + A(K,I)*B(K,J)
+   90                     CONTINUE
+                          B(I,J) = ALPHA*TEMP
+  100                 CONTINUE
+  110             CONTINUE
+              ELSE
+                  DO 140 J = 1,N
+                      DO 130 I = 1,M
+                          TEMP = B(I,J)
+                          IF (NOUNIT) TEMP = TEMP*A(I,I)
+                          DO 120 K = I + 1,M
+                              TEMP = TEMP + A(K,I)*B(K,J)
+  120                     CONTINUE
+                          B(I,J) = ALPHA*TEMP
+  130                 CONTINUE
+  140             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*A.
+*
+              IF (UPPER) THEN
+                  DO 180 J = N,1,-1
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 150 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  150                 CONTINUE
+                      DO 170 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 160 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  160                         CONTINUE
+                          END IF
+  170                 CONTINUE
+  180             CONTINUE
+              ELSE
+                  DO 220 J = 1,N
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 190 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  190                 CONTINUE
+                      DO 210 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 200 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  200                         CONTINUE
+                          END IF
+  210                 CONTINUE
+  220             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*A'.
+*
+              IF (UPPER) THEN
+                  DO 260 K = 1,N
+                      DO 240 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = ALPHA*A(J,K)
+                              DO 230 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  230                         CONTINUE
+                          END IF
+  240                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(K,K)
+                      IF (TEMP.NE.ONE) THEN
+                          DO 250 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  250                     CONTINUE
+                      END IF
+  260             CONTINUE
+              ELSE
+                  DO 300 K = N,1,-1
+                      DO 280 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = ALPHA*A(J,K)
+                              DO 270 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  270                         CONTINUE
+                          END IF
+  280                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(K,K)
+                      IF (TEMP.NE.ONE) THEN
+                          DO 290 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  290                     CONTINUE
+                      END IF
+  300             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTRMM .
+*
+      END
Index: src/blas/dscal.f
===================================================================
--- src/blas/dscal.f	(revision 0)
+++ src/blas/dscal.f	(revision 1)
@@ -0,0 +1,57 @@
+      SUBROUTINE DSCAL(N,DA,DX,INCX)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION DA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*)
+*     ..
+*
+*  Purpose
+*  =======
+**
+*     scales a vector by a constant.
+*     uses unrolled loops for increment equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,M,MP1,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          DX(I) = DA*DX(I)
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,5)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DX(I) = DA*DX(I)
+   30 CONTINUE
+      IF (N.LT.5) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,5
+          DX(I) = DA*DX(I)
+          DX(I+1) = DA*DX(I+1)
+          DX(I+2) = DA*DX(I+2)
+          DX(I+3) = DA*DX(I+3)
+          DX(I+4) = DA*DX(I+4)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/dgbmv.f
===================================================================
--- src/blas/dgbmv.f	(revision 0)
+++ src/blas/dgbmv.f	(revision 1)
@@ -0,0 +1,297 @@
+      SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER INCX,INCY,KL,KU,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGBMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*A'*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  KL     - INTEGER.
+*           On entry, KL specifies the number of sub-diagonals of the
+*           matrix A. KL must satisfy  0 .le. KL.
+*           Unchanged on exit.
+*
+*  KU     - INTEGER.
+*           On entry, KU specifies the number of super-diagonals of the
+*           matrix A. KU must satisfy  0 .le. KU.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry, the leading ( kl + ku + 1 ) by n part of the
+*           array A must contain the matrix of coefficients, supplied
+*           column by column, with the leading diagonal of the matrix in
+*           row ( ku + 1 ) of the array, the first super-diagonal
+*           starting at position 2 in row ku, the first sub-diagonal
+*           starting at position 1 in row ( ku + 2 ), and so on.
+*           Elements in the array A that do not correspond to elements
+*           in the band matrix (such as the top left ku by ku triangle)
+*           are not referenced.
+*           The following program segment will transfer a band matrix
+*           from conventional full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    K = KU + 1 - J
+*                    DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+*                       A( K + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( kl + ku + 1 ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KUP1,KX,KY,LENX,LENY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (KL.LT.0) THEN
+          INFO = 4
+      ELSE IF (KU.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (KL+KU+1)) THEN
+          INFO = 8
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 10
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DGBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the band part of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KUP1 = KU + 1
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      K = KUP1 - J
+                      DO 50 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(I) = Y(I) + TEMP*A(K+I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      K = KUP1 - J
+                      DO 70 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(IY) = Y(IY) + TEMP*A(K+I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  IF (J.GT.KU) KY = KY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 100 J = 1,N
+                  TEMP = ZERO
+                  K = KUP1 - J
+                  DO 90 I = MAX(1,J-KU),MIN(M,J+KL)
+                      TEMP = TEMP + A(K+I,J)*X(I)
+   90             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  100         CONTINUE
+          ELSE
+              DO 120 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  K = KUP1 - J
+                  DO 110 I = MAX(1,J-KU),MIN(M,J+KL)
+                      TEMP = TEMP + A(K+I,J)*X(IX)
+                      IX = IX + INCX
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+                  IF (J.GT.KU) KX = KX + INCX
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DGBMV .
+*
+      END
Index: src/blas/sger.f
===================================================================
--- src/blas/sger.f	(revision 0)
+++ src/blas/sger.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE SGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SGER   performs the rank 1 operation
+*
+*     A := alpha*x*y' + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SGER  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of SGER  .
+*
+      END
Index: src/blas/zdrot.f
===================================================================
--- src/blas/zdrot.f	(revision 0)
+++ src/blas/zdrot.f	(revision 1)
@@ -0,0 +1,96 @@
+      SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )
+*
+*     .. Scalar Arguments ..
+      INTEGER            INCX, INCY, N
+      DOUBLE PRECISION   C, S
+*     ..
+*     .. Array Arguments ..
+      COMPLEX*16         CX( * ), CY( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  Applies a plane rotation, where the cos and sin (c and s) are real
+*  and the vectors cx and cy are complex.
+*  jack dongarra, linpack, 3/11/78.
+*
+*  Arguments
+*  ==========
+*
+*  N        (input) INTEGER
+*           On entry, N specifies the order of the vectors cx and cy.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  CX       (input) COMPLEX*16 array, dimension at least
+*           ( 1 + ( N - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array CX must contain the n
+*           element vector cx. On exit, CX is overwritten by the updated
+*           vector cx.
+*
+*  INCX     (input) INTEGER
+*           On entry, INCX specifies the increment for the elements of
+*           CX. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  CY       (input) COMPLEX*16 array, dimension at least
+*           ( 1 + ( N - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array CY must contain the n
+*           element vector cy. On exit, CY is overwritten by the updated
+*           vector cy.
+*
+*  INCY     (input) INTEGER
+*           On entry, INCY specifies the increment for the elements of
+*           CY. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  C        (input) DOUBLE PRECISION
+*           On entry, C specifies the cosine, cos.
+*           Unchanged on exit.
+*
+*  S        (input) DOUBLE PRECISION
+*           On entry, S specifies the sine, sin.
+*           Unchanged on exit.
+*
+* =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I, IX, IY
+      COMPLEX*16         CTEMP
+*     ..
+*     .. Executable Statements ..
+*
+      IF( N.LE.0 )
+     $   RETURN
+      IF( INCX.EQ.1 .AND. INCY.EQ.1 )
+     $   GO TO 20
+*
+*        code for unequal increments or equal increments not equal
+*          to 1
+*
+      IX = 1
+      IY = 1
+      IF( INCX.LT.0 )
+     $   IX = ( -N+1 )*INCX + 1
+      IF( INCY.LT.0 )
+     $   IY = ( -N+1 )*INCY + 1
+      DO 10 I = 1, N
+         CTEMP = C*CX( IX ) + S*CY( IY )
+         CY( IY ) = C*CY( IY ) - S*CX( IX )
+         CX( IX ) = CTEMP
+         IX = IX + INCX
+         IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 CONTINUE
+      DO 30 I = 1, N
+         CTEMP = C*CX( I ) + S*CY( I )
+         CY( I ) = C*CY( I ) - S*CX( I )
+         CX( I ) = CTEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/cher2.f
===================================================================
--- src/blas/cher2.f	(revision 0)
+++ src/blas/cher2.f	(revision 1)
@@ -0,0 +1,249 @@
+      SUBROUTINE CHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHER2  performs the hermitian rank 2 operation
+*
+*     A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an n
+*  by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHER2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(J))
+                      TEMP2 = CONJG(ALPHA*X(J))
+                      DO 10 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   10                 CONTINUE
+                      A(J,J) = REAL(A(J,J)) +
+     +                         REAL(X(J)*TEMP1+Y(J)*TEMP2)
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(JY))
+                      TEMP2 = CONJG(ALPHA*X(JX))
+                      IX = KX
+                      IY = KY
+                      DO 30 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                      A(J,J) = REAL(A(J,J)) +
+     +                         REAL(X(JX)*TEMP1+Y(JY)*TEMP2)
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(J))
+                      TEMP2 = CONJG(ALPHA*X(J))
+                      A(J,J) = REAL(A(J,J)) +
+     +                         REAL(X(J)*TEMP1+Y(J)*TEMP2)
+                      DO 50 I = J + 1,N
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   50                 CONTINUE
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(JY))
+                      TEMP2 = CONJG(ALPHA*X(JX))
+                      A(J,J) = REAL(A(J,J)) +
+     +                         REAL(X(JX)*TEMP1+Y(JY)*TEMP2)
+                      IX = JX
+                      IY = JY
+                      DO 70 I = J + 1,N
+                          IX = IX + INCX
+                          IY = IY + INCY
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+   70                 CONTINUE
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHER2 .
+*
+      END
Index: src/blas/ztbsv.f
===================================================================
--- src/blas/ztbsv.f	(revision 0)
+++ src/blas/ztbsv.f	(revision 1)
@@ -0,0 +1,367 @@
+      SUBROUTINE ZTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTBSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*  diagonals.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTBSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed by sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,MAX(1,J-K),-1
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 40 J = N,1,-1
+                      KX = KX - INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
+                          TEMP = X(JX)
+                          DO 30 I = J - 1,MAX(1,J-K),-1
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX - INCX
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          L = 1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(1,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,MIN(N,J+K)
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      KX = KX + INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = 1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
+                          TEMP = X(JX)
+                          DO 70 I = J + 1,MIN(N,J+K)
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX + INCX
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A') )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          DO 90 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - A(L+I,J)*X(I)
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      ELSE
+                          DO 100 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - DCONJG(A(L+I,J))*X(I)
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(KPLUS1,J))
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          DO 120 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - A(L+I,J)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      ELSE
+                          DO 130 I = MAX(1,J-K),J - 1
+                              TEMP = TEMP - DCONJG(A(L+I,J))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(KPLUS1,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          DO 150 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - A(L+I,J)*X(I)
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      ELSE
+                          DO 160 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - DCONJG(A(L+I,J))*X(I)
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(1,J))
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          DO 180 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - A(L+I,J)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      ELSE
+                          DO 190 I = MIN(N,J+K),J + 1,-1
+                              TEMP = TEMP - DCONJG(A(L+I,J))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(1,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTBSV .
+*
+      END
Index: src/blas/xerbla.f
===================================================================
--- src/blas/xerbla.f	(revision 0)
+++ src/blas/xerbla.f	(revision 1)
@@ -0,0 +1,42 @@
+      SUBROUTINE XERBLA(SRNAME,INFO)
+*
+*  -- LAPACK auxiliary routine (preliminary version) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER INFO
+      CHARACTER*6 SRNAME
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  XERBLA  is an error handler for the LAPACK routines.
+*  It is called by an LAPACK routine if an input parameter has an
+*  invalid value.  A message is printed and execution stops.
+*
+*  Installers may consider modifying the STOP statement in order to
+*  call system-specific exception-handling facilities.
+*
+*  Arguments
+*  =========
+*
+*  SRNAME  (input) CHARACTER*6
+*          The name of the routine which called XERBLA.
+*
+*  INFO    (input) INTEGER
+*          The position of the invalid parameter in the parameter list
+*          of the calling routine.
+*
+*
+      WRITE (*,FMT=9999) SRNAME,INFO
+*
+      STOP
+*
+ 9999 FORMAT (' ** On entry to ',A6,' parameter number ',I2,' had ',
+     +       'an illegal value')
+*
+*     End of XERBLA
+*
+      END
Index: src/blas/dsyr2k.f
===================================================================
--- src/blas/dsyr2k.f	(revision 0)
+++ src/blas/dsyr2k.f	(revision 1)
@@ -0,0 +1,326 @@
+      SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYR2K  performs one of the symmetric rank 2k operations
+*
+*     C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+*  where  alpha and beta  are scalars, C is an  n by n  symmetric matrix
+*  and  A and B  are  n by k  matrices  in the  first  case  and  k by n
+*  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*B' + alpha*B*A' +
+*                                        beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*B + alpha*B'*A +
+*                                        beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*A'*B + alpha*B'*A +
+*                                        beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'T' or 't' or 'C' or 'c',  K  specifies  the  number
+*           of rows of the matrices  A and B.  K must be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYR2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*B' + alpha*B*A' + C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*B + alpha*B'*A + C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSYR2K.
+*
+      END
Index: src/blas/dswap.f
===================================================================
--- src/blas/dswap.f	(revision 0)
+++ src/blas/dswap.f	(revision 1)
@@ -0,0 +1,70 @@
+      SUBROUTINE DSWAP(N,DX,INCX,DY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*),DY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     interchanges two vectors.
+*     uses unrolled loops for increments equal one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DTEMP
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          DTEMP = DX(IX)
+          DX(IX) = DY(IY)
+          DY(IY) = DTEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+*
+*
+*       clean-up loop
+*
+   20 M = MOD(N,3)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DTEMP = DX(I)
+          DX(I) = DY(I)
+          DY(I) = DTEMP
+   30 CONTINUE
+      IF (N.LT.3) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,3
+          DTEMP = DX(I)
+          DX(I) = DY(I)
+          DY(I) = DTEMP
+          DTEMP = DX(I+1)
+          DX(I+1) = DY(I+1)
+          DY(I+1) = DTEMP
+          DTEMP = DX(I+2)
+          DX(I+2) = DY(I+2)
+          DY(I+2) = DTEMP
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/ssyr2.f
===================================================================
--- src/blas/ssyr2.f	(revision 0)
+++ src/blas/ssyr2.f	(revision 1)
@@ -0,0 +1,230 @@
+      SUBROUTINE SSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYR2  performs the symmetric rank 2 operation
+*
+*     A := alpha*x*y' + alpha*y*x' + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an n
+*  by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      DO 10 I = 1,J
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   10                 CONTINUE
+                  END IF
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = KX
+                      IY = KY
+                      DO 30 I = 1,J
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      DO 50 I = J,N
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   50                 CONTINUE
+                  END IF
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = JX
+                      IY = JY
+                      DO 70 I = J,N
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSYR2 .
+*
+      END
Index: src/blas/zhpr.f
===================================================================
--- src/blas/zhpr.f	(revision 0)
+++ src/blas/zhpr.f	(revision 1)
@@ -0,0 +1,217 @@
+      SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHPR    performs the hermitian rank 1 operation
+*
+*     A := alpha*x*conjg( x' ) + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX*16       array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHPR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.DBLE(ZERO))) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(J))
+                      K = KK
+                      DO 10 I = 1,J - 1
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   10                 CONTINUE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1)) + DBLE(X(J)*TEMP)
+                  ELSE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1))
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(JX))
+                      IX = KX
+                      DO 30 K = KK,KK + J - 2
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1)) + DBLE(X(JX)*TEMP)
+                  ELSE
+                      AP(KK+J-1) = DBLE(AP(KK+J-1))
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(J))
+                      AP(KK) = DBLE(AP(KK)) + DBLE(TEMP*X(J))
+                      K = KK + 1
+                      DO 50 I = J + 1,N
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   50                 CONTINUE
+                  ELSE
+                      AP(KK) = DBLE(AP(KK))
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*DCONJG(X(JX))
+                      AP(KK) = DBLE(AP(KK)) + DBLE(TEMP*X(JX))
+                      IX = JX
+                      DO 70 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          AP(K) = AP(K) + X(IX)*TEMP
+   70                 CONTINUE
+                  ELSE
+                      AP(KK) = DBLE(AP(KK))
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHPR  .
+*
+      END
Index: src/blas/zdotc.f
===================================================================
--- src/blas/zdotc.f	(revision 0)
+++ src/blas/zdotc.f	(revision 1)
@@ -0,0 +1,54 @@
+      DOUBLE COMPLEX FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*),ZY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZDOTC forms the dot product of a vector.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      DOUBLE COMPLEX ZTEMP
+      INTEGER I,IX,IY
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG
+*     ..
+      ZTEMP = (0.0d0,0.0d0)
+      ZDOTC = (0.0d0,0.0d0)
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      ZDOTC = ZTEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I)
+   30 CONTINUE
+      ZDOTC = ZTEMP
+      RETURN
+      END
Index: src/blas/ztpsv.f
===================================================================
--- src/blas/ztpsv.f	(revision 0)
+++ src/blas/ztpsv.f	(revision 1)
@@ -0,0 +1,329 @@
+      SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTPSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX*16       array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTPSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK - 1
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K - 1
+   10                     CONTINUE
+                      END IF
+                      KK = KK - J
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK + 1
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K + 1
+   50                     CONTINUE
+                      END IF
+                      KK = KK + (N-J+1)
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A' ) )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      K = KK
+                      IF (NOCONJ) THEN
+                          DO 90 I = 1,J - 1
+                              TEMP = TEMP - AP(K)*X(I)
+                              K = K + 1
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      ELSE
+                          DO 100 I = 1,J - 1
+                              TEMP = TEMP - DCONJG(AP(K))*X(I)
+                              K = K + 1
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1))
+                      END IF
+                      X(J) = TEMP
+                      KK = KK + J
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      IF (NOCONJ) THEN
+                          DO 120 K = KK,KK + J - 2
+                              TEMP = TEMP - AP(K)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      ELSE
+                          DO 130 K = KK,KK + J - 2
+                              TEMP = TEMP - DCONJG(AP(K))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + J
+  140             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK
+                      IF (NOCONJ) THEN
+                          DO 150 I = N,J + 1,-1
+                              TEMP = TEMP - AP(K)*X(I)
+                              K = K - 1
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      ELSE
+                          DO 160 I = N,J + 1,-1
+                              TEMP = TEMP - DCONJG(AP(K))*X(I)
+                              K = K - 1
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J))
+                      END IF
+                      X(J) = TEMP
+                      KK = KK - (N-J+1)
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      IF (NOCONJ) THEN
+                          DO 180 K = KK,KK - (N- (J+1)),-1
+                              TEMP = TEMP - AP(K)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      ELSE
+                          DO 190 K = KK,KK - (N- (J+1)),-1
+                              TEMP = TEMP - DCONJG(AP(K))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTPSV .
+*
+      END
Index: src/blas/zgemv.f
===================================================================
--- src/blas/zgemv.f	(revision 0)
+++ src/blas/zgemv.f	(revision 1)
@@ -0,0 +1,281 @@
+      SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZGEMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,   or
+*
+*     y := alpha*conjg( A' )*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*conjg( A' )*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry with BETA non-zero, the incremented array Y
+*           must contain the vector y. On exit, Y is overwritten by the
+*           updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY
+      LOGICAL NOCONJ
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZGEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      DO 50 I = 1,M
+                          Y(I) = Y(I) + TEMP*A(I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      DO 70 I = 1,M
+                          Y(IY) = Y(IY) + TEMP*A(I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y  or  y := alpha*conjg( A' )*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 110 J = 1,N
+                  TEMP = ZERO
+                  IF (NOCONJ) THEN
+                      DO 90 I = 1,M
+                          TEMP = TEMP + A(I,J)*X(I)
+   90                 CONTINUE
+                  ELSE
+                      DO 100 I = 1,M
+                          TEMP = TEMP + DCONJG(A(I,J))*X(I)
+  100                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  110         CONTINUE
+          ELSE
+              DO 140 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  IF (NOCONJ) THEN
+                      DO 120 I = 1,M
+                          TEMP = TEMP + A(I,J)*X(IX)
+                          IX = IX + INCX
+  120                 CONTINUE
+                  ELSE
+                      DO 130 I = 1,M
+                          TEMP = TEMP + DCONJG(A(I,J))*X(IX)
+                          IX = IX + INCX
+  130                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  140         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZGEMV .
+*
+      END
Index: src/blas/csymm.f
===================================================================
--- src/blas/csymm.f	(revision 0)
+++ src/blas/csymm.f	(revision 1)
@@ -0,0 +1,296 @@
+      SUBROUTINE CSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CSYMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where  alpha and beta are scalars, A is a symmetric matrix and  B and
+*  C are m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  symmetric matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  symmetric  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is n  otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CSYMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*A(J,J)
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*A(J,K)
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(J,K)
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of CSYMM .
+*
+      END
Index: src/blas/ztrsv.f
===================================================================
--- src/blas/ztrsv.f	(revision 0)
+++ src/blas/ztrsv.f	(revision 1)
@@ -0,0 +1,312 @@
+      SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTRSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,   or   conjg( A' )*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   conjg( A' )*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTRSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*A(I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 I = J - 1,1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*A(I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 I = J + 1,N
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x  or  x := inv( conjg( A' ) )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = 1,N
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          DO 90 I = 1,J - 1
+                              TEMP = TEMP - A(I,J)*X(I)
+   90                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 100 I = 1,J - 1
+                              TEMP = TEMP - DCONJG(A(I,J))*X(I)
+  100                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J))
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 140 J = 1,N
+                      IX = KX
+                      TEMP = X(JX)
+                      IF (NOCONJ) THEN
+                          DO 120 I = 1,J - 1
+                              TEMP = TEMP - A(I,J)*X(IX)
+                              IX = IX + INCX
+  120                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 130 I = 1,J - 1
+                              TEMP = TEMP - DCONJG(A(I,J))*X(IX)
+                              IX = IX + INCX
+  130                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          DO 150 I = N,J + 1,-1
+                              TEMP = TEMP - A(I,J)*X(I)
+  150                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 160 I = N,J + 1,-1
+                              TEMP = TEMP - DCONJG(A(I,J))*X(I)
+  160                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J))
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 200 J = N,1,-1
+                      IX = KX
+                      TEMP = X(JX)
+                      IF (NOCONJ) THEN
+                          DO 180 I = N,J + 1,-1
+                              TEMP = TEMP - A(I,J)*X(IX)
+                              IX = IX - INCX
+  180                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      ELSE
+                          DO 190 I = N,J + 1,-1
+                              TEMP = TEMP - DCONJG(A(I,J))*X(IX)
+                              IX = IX - INCX
+  190                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J))
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTRSV .
+*
+      END
Index: src/blas/Makefile
===================================================================
--- src/blas/Makefile	(revision 0)
+++ src/blas/Makefile	(revision 1)
@@ -0,0 +1,171 @@
+include make.inc
+
+#######################################################################
+#  This is the makefile to create a library for the BLAS.
+#  The files are grouped as follows:
+#
+#       SBLAS1 -- Single precision real BLAS routines
+#       CBLAS1 -- Single precision complex BLAS routines
+#       DBLAS1 -- Double precision real BLAS routines
+#       ZBLAS1 -- Double precision complex BLAS routines
+#
+#       CB1AUX -- Real BLAS routines called by complex routines
+#       ZB1AUX -- D.P. real BLAS routines called by d.p. complex
+#                 routines
+#
+#      ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
+#
+#       SBLAS2 -- Single precision real BLAS2 routines
+#       CBLAS2 -- Single precision complex BLAS2 routines
+#       DBLAS2 -- Double precision real BLAS2 routines
+#       ZBLAS2 -- Double precision complex BLAS2 routines
+#
+#       SBLAS3 -- Single precision real BLAS3 routines
+#       CBLAS3 -- Single precision complex BLAS3 routines
+#       DBLAS3 -- Double precision real BLAS3 routines
+#       ZBLAS3 -- Double precision complex BLAS3 routines
+#
+#  The library can be set up to include routines for any combination
+#  of the four precisions.  To create or add to the library, enter make
+#  followed by one or more of the precisions desired.  Some examples:
+#       make single
+#       make single complex
+#       make single double complex complex16
+#  Note that these commands are not safe for parallel builds.
+#
+#  Alternatively, the commands
+#       make all
+#  or
+#       make
+#  without any arguments creates a library of all four precisions.
+#  The name of the library is held in BLASLIB, which is set in the
+#  make.inc
+#
+#  To remove the object files after the library is created, enter
+#       make clean
+#  To force the source files to be recompiled, enter, for example,
+#       make single FRC=FRC
+#
+#---------------------------------------------------------------------
+#
+#  Edward Anderson, University of Tennessee
+#  March 26, 1990
+#  Susan Ostrouchov,  September 30, 1994
+#  Julie Langou, March 2007
+#
+#######################################################################
+
+all: $(BLASLIB)
+ 
+#---------------------------------------------------------
+#  Comment out the next 6 definitions if you already have
+#  the Level 1 BLAS.
+#---------------------------------------------------------
+SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
+	srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
+$(SBLAS1): $(FRC)
+
+CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
+	cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
+$(CBLAS1): $(FRC)
+
+DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
+	drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o
+$(DBLAS1): $(FRC)
+
+ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
+	zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
+$(ZBLAS1): $(FRC)
+
+CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
+$(CB1AUX): $(FRC)
+
+ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
+$(ZB1AUX): $(FRC)
+
+#---------------------------------------------------------------------
+#  The following line defines auxiliary routines needed by both the
+#  Level 2 and Level 3 BLAS.  Comment it out only if you already have
+#  both the Level 2 and 3 BLAS.
+#---------------------------------------------------------------------
+ALLBLAS  = lsame.o xerbla.o
+$(ALLBLAS) : $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 2 BLAS.
+#---------------------------------------------------------
+SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
+	strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
+	sger.o ssyr.o sspr.o ssyr2.o sspr2.o
+$(SBLAS2): $(FRC)
+
+CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
+	ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
+	cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
+$(CBLAS2): $(FRC)
+
+DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
+	dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
+	dger.o dsyr.o dspr.o dsyr2.o dspr2.o
+$(DBLAS2): $(FRC)
+
+ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
+	ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
+	zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
+$(ZBLAS2): $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 3 BLAS.
+#---------------------------------------------------------
+SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o 
+$(SBLAS3): $(FRC)
+
+CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
+	chemm.o cherk.o cher2k.o
+$(CBLAS3): $(FRC)
+
+DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
+$(DBLAS3): $(FRC)
+
+ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
+	zhemm.o zherk.o zher2k.o
+$(ZBLAS3): $(FRC)
+
+ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3)	\
+	$(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) 	\
+	$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+
+$(BLASLIB): $(ALLOBJ)
+	$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
+	$(RANLIB) $@
+
+single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(SBLAS1) $(ALLBLAS) \
+	$(SBLAS2) $(SBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+double: $(DBLAS1) $(ALLBLAS) $(DBLAS2) $(DBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(DBLAS1) $(ALLBLAS) \
+	$(DBLAS2) $(DBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex: $(CBLAS1) $(CB1AUX) $(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(CBLAS1) $(CB1AUX) \
+	$(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex16: $(ZBLAS1) $(ZB1AUX) $(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(ZBLAS1) $(ZB1AUX) \
+	$(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+FRC:
+	@FRC=$(FRC)
+
+clean:
+	rm -f *.o
+
+.f.o: 
+	$(FORTRAN) $(OPTS) -c $< -o $@
Index: src/blas/chemm.f
===================================================================
--- src/blas/chemm.f	(revision 0)
+++ src/blas/chemm.f	(revision 1)
@@ -0,0 +1,298 @@
+      SUBROUTINE CHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where alpha and beta are scalars, A is an hermitian matrix and  B and
+*  C are m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  hermitian matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  hermitian  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  hermitian matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  hermitian matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is n  otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  hermitian matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  hermitian matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  hermitian
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  hermitian matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  hermitian matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  hermitian
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Note that the imaginary parts  of the diagonal elements need
+*           not be set, they are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,REAL
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*CONJG(A(K,I))
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*REAL(A(I,I)) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*REAL(A(I,I)) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*CONJG(A(K,I))
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*REAL(A(I,I)) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*REAL(A(I,I)) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*REAL(A(J,J))
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*CONJG(A(J,K))
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*CONJG(A(J,K))
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of CHEMM .
+*
+      END
Index: src/blas/csrot.f
===================================================================
--- src/blas/csrot.f	(revision 0)
+++ src/blas/csrot.f	(revision 1)
@@ -0,0 +1,95 @@
+      SUBROUTINE CSROT( N, CX, INCX, CY, INCY, C, S )
+*
+*     .. Scalar Arguments ..
+      INTEGER           INCX, INCY, N
+      REAL              C, S
+*     ..
+*     .. Array Arguments ..
+      COMPLEX           CX( * ), CY( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  Applies a plane rotation, where the cos and sin (c and s) are real
+*  and the vectors cx and cy are complex.
+*  jack dongarra, linpack, 3/11/78.
+*
+*  Arguments
+*  ==========
+*
+*  N        (input) INTEGER
+*           On entry, N specifies the order of the vectors cx and cy.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  CX       (input) COMPLEX array, dimension at least
+*           ( 1 + ( N - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array CX must contain the n
+*           element vector cx. On exit, CX is overwritten by the updated
+*           vector cx.
+*
+*  INCX     (input) INTEGER
+*           On entry, INCX specifies the increment for the elements of
+*           CX. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  CY       (input) COMPLEX array, dimension at least
+*           ( 1 + ( N - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array CY must contain the n
+*           element vector cy. On exit, CY is overwritten by the updated
+*           vector cy.
+*
+*  INCY     (input) INTEGER
+*           On entry, INCY specifies the increment for the elements of
+*           CY. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  C        (input) REAL
+*           On entry, C specifies the cosine, cos.
+*           Unchanged on exit.
+*
+*  S        (input) REAL
+*           On entry, S specifies the sine, sin.
+*           Unchanged on exit.
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER           I, IX, IY
+      COMPLEX           CTEMP
+*     ..
+*     .. Executable Statements ..
+*
+      IF( N.LE.0 )
+     $   RETURN
+      IF( INCX.EQ.1 .AND. INCY.EQ.1 )
+     $   GO TO 20
+*
+*        code for unequal increments or equal increments not equal
+*          to 1
+*
+      IX = 1
+      IY = 1
+      IF( INCX.LT.0 )
+     $   IX = ( -N+1 )*INCX + 1
+      IF( INCY.LT.0 )
+     $   IY = ( -N+1 )*INCY + 1
+      DO 10 I = 1, N
+         CTEMP = C*CX( IX ) + S*CY( IY )
+         CY( IY ) = C*CY( IY ) - S*CX( IX )
+         CX( IX ) = CTEMP
+         IX = IX + INCX
+         IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1, N
+         CTEMP = C*CX( I ) + S*CY( I )
+         CY( I ) = C*CY( I ) - S*CX( I )
+         CX( I ) = CTEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dsymv.f
===================================================================
--- src/blas/dsymv.f	(revision 0)
+++ src/blas/dsymv.f	(revision 1)
@@ -0,0 +1,262 @@
+      SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 5
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when A is stored in upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*A(J,J) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 I = 1,J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*A(J,J) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when A is stored in lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*A(J,J)
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*A(J,J)
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,N
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSYMV .
+*
+      END
Index: src/blas/scnrm2.f
===================================================================
--- src/blas/scnrm2.f	(revision 0)
+++ src/blas/scnrm2.f	(revision 1)
@@ -0,0 +1,72 @@
+      REAL FUNCTION SCNRM2(N,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SCNRM2 returns the euclidean norm of a vector via the function
+*  name, so that
+*
+*     SCNRM2 := sqrt( conjg( x' )*x )
+*
+*
+*
+*  -- This version written on 25-October-1982.
+*     Modified on 14-October-1993 to inline the call to CLASSQ.
+*     Sven Hammarling, Nag Ltd.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL NORM,SCALE,SSQ,TEMP
+      INTEGER IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,AIMAG,REAL,SQRT
+*     ..
+      IF (N.LT.1 .OR. INCX.LT.1) THEN
+          NORM = ZERO
+      ELSE
+          SCALE = ZERO
+          SSQ = ONE
+*        The following loop is equivalent to this call to the LAPACK
+*        auxiliary routine:
+*        CALL CLASSQ( N, X, INCX, SCALE, SSQ )
+*
+          DO 10 IX = 1,1 + (N-1)*INCX,INCX
+              IF (REAL(X(IX)).NE.ZERO) THEN
+                  TEMP = ABS(REAL(X(IX)))
+                  IF (SCALE.LT.TEMP) THEN
+                      SSQ = ONE + SSQ* (SCALE/TEMP)**2
+                      SCALE = TEMP
+                  ELSE
+                      SSQ = SSQ + (TEMP/SCALE)**2
+                  END IF
+              END IF
+              IF (AIMAG(X(IX)).NE.ZERO) THEN
+                  TEMP = ABS(AIMAG(X(IX)))
+                  IF (SCALE.LT.TEMP) THEN
+                      SSQ = ONE + SSQ* (SCALE/TEMP)**2
+                      SCALE = TEMP
+                  ELSE
+                      SSQ = SSQ + (TEMP/SCALE)**2
+                  END IF
+              END IF
+   10     CONTINUE
+          NORM = SCALE*SQRT(SSQ)
+      END IF
+*
+      SCNRM2 = NORM
+      RETURN
+*
+*     End of SCNRM2.
+*
+      END
Index: src/blas/srotm.f
===================================================================
--- src/blas/srotm.f	(revision 0)
+++ src/blas/srotm.f	(revision 1)
@@ -0,0 +1,148 @@
+      SUBROUTINE SROTM(N,SX,INCX,SY,INCY,SPARAM)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SPARAM(5),SX(1),SY(1)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+*
+*     (SX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF SX ARE IN
+*     (DX**T)
+*
+*     SX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+*     LX = (-INCX)*N, AND SIMILARLY FOR SY USING USING LY AND INCY.
+*     WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*
+*     SFLAG=-1.E0     SFLAG=0.E0        SFLAG=1.E0     SFLAG=-2.E0
+*
+*       (SH11  SH12)    (1.E0  SH12)    (SH11  1.E0)    (1.E0  0.E0)
+*     H=(          )    (          )    (          )    (          )
+*       (SH21  SH22),   (SH21  1.E0),   (-1.E0 SH22),   (0.E0  1.E0).
+*     SEE  SROTMG FOR A DESCRIPTION OF DATA STORAGE IN SPARAM.
+*
+*
+*  Arguments
+*  =========
+*
+*  N      (input) INTEGER
+*         number of elements in input vector(s)
+*
+*  SX     (input/output) REAL array, dimension N
+*         double precision vector with 5 elements
+*
+*  INCX   (input) INTEGER
+*         storage spacing between elements of SX
+*
+*  SY     (input/output) REAL array, dimension N
+*         double precision vector with N elements
+*
+*  INCY   (input) INTEGER
+*         storage spacing between elements of SY
+*
+*  SPARAM (input/output)  REAL array, dimension 5
+*     SPARAM(1)=SFLAG
+*     SPARAM(2)=SH11
+*     SPARAM(3)=SH21
+*     SPARAM(4)=SH12
+*     SPARAM(5)=SH22
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      REAL SFLAG,SH11,SH12,SH21,SH22,TWO,W,Z,ZERO
+      INTEGER I,KX,KY,NSTEPS
+*     ..
+*     .. Data statements ..
+      DATA ZERO,TWO/0.E0,2.E0/
+*     ..
+*
+      SFLAG = SPARAM(1)
+      IF (N.LE.0 .OR. (SFLAG+TWO.EQ.ZERO)) GO TO 140
+      IF (.NOT. (INCX.EQ.INCY.AND.INCX.GT.0)) GO TO 70
+*
+      NSTEPS = N*INCX
+      IF (SFLAG) 50,10,30
+   10 CONTINUE
+      SH12 = SPARAM(4)
+      SH21 = SPARAM(3)
+      DO 20 I = 1,NSTEPS,INCX
+          W = SX(I)
+          Z = SY(I)
+          SX(I) = W + Z*SH12
+          SY(I) = W*SH21 + Z
+   20 CONTINUE
+      GO TO 140
+   30 CONTINUE
+      SH11 = SPARAM(2)
+      SH22 = SPARAM(5)
+      DO 40 I = 1,NSTEPS,INCX
+          W = SX(I)
+          Z = SY(I)
+          SX(I) = W*SH11 + Z
+          SY(I) = -W + SH22*Z
+   40 CONTINUE
+      GO TO 140
+   50 CONTINUE
+      SH11 = SPARAM(2)
+      SH12 = SPARAM(4)
+      SH21 = SPARAM(3)
+      SH22 = SPARAM(5)
+      DO 60 I = 1,NSTEPS,INCX
+          W = SX(I)
+          Z = SY(I)
+          SX(I) = W*SH11 + Z*SH12
+          SY(I) = W*SH21 + Z*SH22
+   60 CONTINUE
+      GO TO 140
+   70 CONTINUE
+      KX = 1
+      KY = 1
+      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+*
+      IF (SFLAG) 120,80,100
+   80 CONTINUE
+      SH12 = SPARAM(4)
+      SH21 = SPARAM(3)
+      DO 90 I = 1,N
+          W = SX(KX)
+          Z = SY(KY)
+          SX(KX) = W + Z*SH12
+          SY(KY) = W*SH21 + Z
+          KX = KX + INCX
+          KY = KY + INCY
+   90 CONTINUE
+      GO TO 140
+  100 CONTINUE
+      SH11 = SPARAM(2)
+      SH22 = SPARAM(5)
+      DO 110 I = 1,N
+          W = SX(KX)
+          Z = SY(KY)
+          SX(KX) = W*SH11 + Z
+          SY(KY) = -W + SH22*Z
+          KX = KX + INCX
+          KY = KY + INCY
+  110 CONTINUE
+      GO TO 140
+  120 CONTINUE
+      SH11 = SPARAM(2)
+      SH12 = SPARAM(4)
+      SH21 = SPARAM(3)
+      SH22 = SPARAM(5)
+      DO 130 I = 1,N
+          W = SX(KX)
+          Z = SY(KY)
+          SX(KX) = W*SH11 + Z*SH12
+          SY(KY) = W*SH21 + Z*SH22
+          KX = KX + INCX
+          KY = KY + INCY
+  130 CONTINUE
+  140 CONTINUE
+      RETURN
+      END
Index: src/blas/ssymm.f
===================================================================
--- src/blas/ssymm.f	(revision 0)
+++ src/blas/ssymm.f	(revision 1)
@@ -0,0 +1,294 @@
+      SUBROUTINE SSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where alpha and beta are scalars,  A is a symmetric matrix and  B and
+*  C are  m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  symmetric matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  symmetric  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is  n otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - REAL             array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - REAL             array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*A(J,J)
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*A(J,K)
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(J,K)
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of SSYMM .
+*
+      END
Index: src/blas/zgerc.f
===================================================================
--- src/blas/zgerc.f	(revision 0)
+++ src/blas/zgerc.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZGERC  performs the rank 1 operation
+*
+*     A := alpha*x*conjg( y' ) + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZGERC ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*DCONJG(Y(JY))
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*DCONJG(Y(JY))
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of ZGERC .
+*
+      END
Index: src/blas/dtbmv.f
===================================================================
--- src/blas/dtbmv.f	(revision 0)
+++ src/blas/dtbmv.f	(revision 1)
@@ -0,0 +1,332 @@
+      SUBROUTINE DTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTBMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX   too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*         Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = KPLUS1 - J
+                          DO 10 I = MAX(1,J-K),J - 1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = KPLUS1 - J
+                          DO 30 I = MAX(1,J-K),J - 1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
+                      END IF
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = 1 - J
+                          DO 50 I = MIN(N,J+K),J + 1,-1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(1,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = 1 - J
+                          DO 70 I = MIN(N,J+K),J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(1,J)
+                      END IF
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                      DO 90 I = J - 1,MAX(1,J-K),-1
+                          TEMP = TEMP + A(L+I,J)*X(I)
+   90                 CONTINUE
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      KX = KX - INCX
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                      DO 110 I = J - 1,MAX(1,J-K),-1
+                          TEMP = TEMP + A(L+I,J)*X(IX)
+                          IX = IX - INCX
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(1,J)
+                      DO 130 I = J + 1,MIN(N,J+K)
+                          TEMP = TEMP + A(L+I,J)*X(I)
+  130                 CONTINUE
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      KX = KX + INCX
+                      IX = KX
+                      L = 1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(1,J)
+                      DO 150 I = J + 1,MIN(N,J+K)
+                          TEMP = TEMP + A(L+I,J)*X(IX)
+                          IX = IX + INCX
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTBMV .
+*
+      END
Index: src/blas/csyr2k.f
===================================================================
--- src/blas/csyr2k.f	(revision 0)
+++ src/blas/csyr2k.f	(revision 1)
@@ -0,0 +1,323 @@
+      SUBROUTINE CSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CSYR2K  performs one of the symmetric rank 2k operations
+*
+*     C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+*  where  alpha and beta  are scalars,  C is an  n by n symmetric matrix
+*  and  A and B  are  n by k  matrices  in the  first  case  and  k by n
+*  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'    C := alpha*A*B' + alpha*B*A' +
+*                                         beta*C.
+*
+*              TRANS = 'T' or 't'    C := alpha*A'*B + alpha*B'*A +
+*                                         beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'T' or 't',  K  specifies  the number of rows of the
+*           matrices  A and B.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CSYR2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*B' + alpha*B*A' + C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*B + alpha*B'*A + C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CSYR2K.
+*
+      END
Index: src/blas/ccopy.f
===================================================================
--- src/blas/ccopy.f	(revision 0)
+++ src/blas/ccopy.f	(revision 1)
@@ -0,0 +1,46 @@
+      SUBROUTINE CCOPY(N,CX,INCX,CY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*),CY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     CCOPY copies a vector x to a vector y.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          CY(IY) = CX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          CY(I) = CX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dsyr.f
===================================================================
--- src/blas/dsyr.f	(revision 0)
+++ src/blas/dsyr.f	(revision 1)
@@ -0,0 +1,199 @@
+      SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYR   performs the symmetric rank 1 operation
+*
+*     A := alpha*x*x' + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in upper triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      DO 10 I = 1,J
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   10                 CONTINUE
+                  END IF
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = KX
+                      DO 30 I = 1,J
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in lower triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      DO 50 I = J,N
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   50                 CONTINUE
+                  END IF
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = JX
+                      DO 70 I = J,N
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSYR  .
+*
+      END
Index: src/blas/dnrm2.f
===================================================================
--- src/blas/dnrm2.f	(revision 0)
+++ src/blas/dnrm2.f	(revision 1)
@@ -0,0 +1,64 @@
+      DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DNRM2 returns the euclidean norm of a vector via the function
+*  name, so that
+*
+*     DNRM2 := sqrt( x'*x )
+*
+*
+*  -- This version written on 25-October-1982.
+*     Modified on 14-October-1993 to inline the call to DLASSQ.
+*     Sven Hammarling, Nag Ltd.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ
+      INTEGER IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,SQRT
+*     ..
+      IF (N.LT.1 .OR. INCX.LT.1) THEN
+          NORM = ZERO
+      ELSE IF (N.EQ.1) THEN
+          NORM = ABS(X(1))
+      ELSE
+          SCALE = ZERO
+          SSQ = ONE
+*        The following loop is equivalent to this call to the LAPACK
+*        auxiliary routine:
+*        CALL DLASSQ( N, X, INCX, SCALE, SSQ )
+*
+          DO 10 IX = 1,1 + (N-1)*INCX,INCX
+              IF (X(IX).NE.ZERO) THEN
+                  ABSXI = ABS(X(IX))
+                  IF (SCALE.LT.ABSXI) THEN
+                      SSQ = ONE + SSQ* (SCALE/ABSXI)**2
+                      SCALE = ABSXI
+                  ELSE
+                      SSQ = SSQ + (ABSXI/SCALE)**2
+                  END IF
+              END IF
+   10     CONTINUE
+          NORM = SCALE*SQRT(SSQ)
+      END IF
+*
+      DNRM2 = NORM
+      RETURN
+*
+*     End of DNRM2.
+*
+      END
Index: src/blas/ctrmm.f
===================================================================
--- src/blas/ctrmm.f	(revision 0)
+++ src/blas/ctrmm.f	(revision 1)
@@ -0,0 +1,383 @@
+      SUBROUTINE CTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTRMM  performs one of the matrix-matrix operations
+*
+*     B := alpha*op( A )*B,   or   B := alpha*B*op( A )
+*
+*  where  alpha  is a scalar,  B  is an m by n matrix,  A  is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'   or   op( A ) = conjg( A' ).
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE specifies whether  op( A ) multiplies B from
+*           the left or right as follows:
+*
+*              SIDE = 'L' or 'l'   B := alpha*op( A )*B.
+*
+*              SIDE = 'R' or 'r'   B := alpha*B*op( A ).
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain the matrix  B,  and  on exit  is overwritten  by the
+*           transformed matrix.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOCONJ = LSAME(TRANSA,'T')
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTRMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*A*B.
+*
+              IF (UPPER) THEN
+                  DO 50 J = 1,N
+                      DO 40 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              DO 30 I = 1,K - 1
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   30                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP*A(K,K)
+                              B(K,J) = TEMP
+                          END IF
+   40                 CONTINUE
+   50             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              B(K,J) = TEMP
+                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
+                              DO 60 I = K + 1,M
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   60                         CONTINUE
+                          END IF
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*A'*B   or   B := alpha*conjg( A' )*B.
+*
+              IF (UPPER) THEN
+                  DO 120 J = 1,N
+                      DO 110 I = M,1,-1
+                          TEMP = B(I,J)
+                          IF (NOCONJ) THEN
+                              IF (NOUNIT) TEMP = TEMP*A(I,I)
+                              DO 90 K = 1,I - 1
+                                  TEMP = TEMP + A(K,I)*B(K,J)
+   90                         CONTINUE
+                          ELSE
+                              IF (NOUNIT) TEMP = TEMP*CONJG(A(I,I))
+                              DO 100 K = 1,I - 1
+                                  TEMP = TEMP + CONJG(A(K,I))*B(K,J)
+  100                         CONTINUE
+                          END IF
+                          B(I,J) = ALPHA*TEMP
+  110                 CONTINUE
+  120             CONTINUE
+              ELSE
+                  DO 160 J = 1,N
+                      DO 150 I = 1,M
+                          TEMP = B(I,J)
+                          IF (NOCONJ) THEN
+                              IF (NOUNIT) TEMP = TEMP*A(I,I)
+                              DO 130 K = I + 1,M
+                                  TEMP = TEMP + A(K,I)*B(K,J)
+  130                         CONTINUE
+                          ELSE
+                              IF (NOUNIT) TEMP = TEMP*CONJG(A(I,I))
+                              DO 140 K = I + 1,M
+                                  TEMP = TEMP + CONJG(A(K,I))*B(K,J)
+  140                         CONTINUE
+                          END IF
+                          B(I,J) = ALPHA*TEMP
+  150                 CONTINUE
+  160             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*A.
+*
+              IF (UPPER) THEN
+                  DO 200 J = N,1,-1
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 170 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  170                 CONTINUE
+                      DO 190 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 180 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  180                         CONTINUE
+                          END IF
+  190                 CONTINUE
+  200             CONTINUE
+              ELSE
+                  DO 240 J = 1,N
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 210 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  210                 CONTINUE
+                      DO 230 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 220 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  220                         CONTINUE
+                          END IF
+  230                 CONTINUE
+  240             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*A'   or   B := alpha*B*conjg( A' ).
+*
+              IF (UPPER) THEN
+                  DO 280 K = 1,N
+                      DO 260 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = ALPHA*A(J,K)
+                              ELSE
+                                  TEMP = ALPHA*CONJG(A(J,K))
+                              END IF
+                              DO 250 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  250                         CONTINUE
+                          END IF
+  260                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = TEMP*A(K,K)
+                          ELSE
+                              TEMP = TEMP*CONJG(A(K,K))
+                          END IF
+                      END IF
+                      IF (TEMP.NE.ONE) THEN
+                          DO 270 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  270                     CONTINUE
+                      END IF
+  280             CONTINUE
+              ELSE
+                  DO 320 K = N,1,-1
+                      DO 300 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = ALPHA*A(J,K)
+                              ELSE
+                                  TEMP = ALPHA*CONJG(A(J,K))
+                              END IF
+                              DO 290 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  290                         CONTINUE
+                          END IF
+  300                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = TEMP*A(K,K)
+                          ELSE
+                              TEMP = TEMP*CONJG(A(K,K))
+                          END IF
+                      END IF
+                      IF (TEMP.NE.ONE) THEN
+                          DO 310 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  310                     CONTINUE
+                      END IF
+  320             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTRMM .
+*
+      END
Index: src/blas/daxpy.f
===================================================================
--- src/blas/daxpy.f	(revision 0)
+++ src/blas/daxpy.f	(revision 1)
@@ -0,0 +1,62 @@
+      SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION DA
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*),DY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     constant times a vector plus a vector.
+*     uses unrolled loops for increments equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (DA.EQ.0.0d0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          DY(IY) = DY(IY) + DA*DX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,4)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DY(I) = DY(I) + DA*DX(I)
+   30 CONTINUE
+      IF (N.LT.4) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,4
+          DY(I) = DY(I) + DA*DX(I)
+          DY(I+1) = DY(I+1) + DA*DX(I+1)
+          DY(I+2) = DY(I+2) + DA*DX(I+2)
+          DY(I+3) = DY(I+3) + DA*DX(I+3)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/cscal.f
===================================================================
--- src/blas/cscal.f	(revision 0)
+++ src/blas/cscal.f	(revision 1)
@@ -0,0 +1,39 @@
+      SUBROUTINE CSCAL(N,CA,CX,INCX)
+*     .. Scalar Arguments ..
+      COMPLEX CA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     scales a vector by a constant.
+*     jack dongarra, linpack,  3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,NINCX
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          CX(I) = CA*CX(I)
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          CX(I) = CA*CX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/zhbmv.f
===================================================================
--- src/blas/zhbmv.f	(revision 0)
+++ src/blas/zhbmv.f	(revision 1)
@@ -0,0 +1,307 @@
+      SUBROUTINE ZHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,K,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHBMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian band matrix, with k super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the band matrix A is being supplied as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  being supplied.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  being supplied.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry, K specifies the number of super-diagonals of the
+*           matrix A. K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the hermitian matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer the upper
+*           triangular part of a hermitian band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the hermitian matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer the lower
+*           triangular part of a hermitian band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KPLUS1,KX,KY,L
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (K.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array A
+*     are accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when upper triangle of A is stored.
+*
+          KPLUS1 = K + 1
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  L = KPLUS1 - J
+                  DO 50 I = MAX(1,J-K),J - 1
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(L+I,J))*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*DBLE(A(KPLUS1,J)) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  L = KPLUS1 - J
+                  DO 70 I = MAX(1,J-K),J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(L+I,J))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*DBLE(A(KPLUS1,J)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  IF (J.GT.K) THEN
+                      KX = KX + INCX
+                      KY = KY + INCY
+                  END IF
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when lower triangle of A is stored.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*DBLE(A(1,J))
+                  L = 1 - J
+                  DO 90 I = J + 1,MIN(N,J+K)
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(L+I,J))*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*DBLE(A(1,J))
+                  L = 1 - J
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,MIN(N,J+K)
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + DCONJG(A(L+I,J))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHBMV .
+*
+      END
Index: src/blas/sspr.f
===================================================================
--- src/blas/sspr.f	(revision 0)
+++ src/blas/sspr.f	(revision 1)
@@ -0,0 +1,199 @@
+      SUBROUTINE SSPR(UPLO,N,ALPHA,X,INCX,AP)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSPR    performs the symmetric rank 1 operation
+*
+*     A := alpha*x*x' + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - REAL             array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSPR  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      K = KK
+                      DO 10 I = 1,J
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   10                 CONTINUE
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = KX
+                      DO 30 K = KK,KK + J - 1
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*X(J)
+                      K = KK
+                      DO 50 I = J,N
+                          AP(K) = AP(K) + X(I)*TEMP
+                          K = K + 1
+   50                 CONTINUE
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IX = JX
+                      DO 70 K = KK,KK + N - J
+                          AP(K) = AP(K) + X(IX)*TEMP
+                          IX = IX + INCX
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSPR  .
+*
+      END
Index: src/blas/izamax.f
===================================================================
--- src/blas/izamax.f	(revision 0)
+++ src/blas/izamax.f	(revision 1)
@@ -0,0 +1,54 @@
+      INTEGER FUNCTION IZAMAX(N,ZX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     finds the index of element having max. absolute value.
+*     jack dongarra, 1/15/85.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION SMAX
+      INTEGER I,IX
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION DCABS1
+      EXTERNAL DCABS1
+*     ..
+      IZAMAX = 0
+      IF (N.LT.1 .OR. INCX.LE.0) RETURN
+      IZAMAX = 1
+      IF (N.EQ.1) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      SMAX = DCABS1(ZX(1))
+      IX = IX + INCX
+      DO 10 I = 2,N
+          IF (DCABS1(ZX(IX)).LE.SMAX) GO TO 5
+          IZAMAX = I
+          SMAX = DCABS1(ZX(IX))
+    5     IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 SMAX = DCABS1(ZX(1))
+      DO 30 I = 2,N
+          IF (DCABS1(ZX(I)).LE.SMAX) GO TO 30
+          IZAMAX = I
+          SMAX = DCABS1(ZX(I))
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/dgemm.f
===================================================================
--- src/blas/dgemm.f	(revision 0)
+++ src/blas/dgemm.f	(revision 1)
@@ -0,0 +1,313 @@
+      SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,M,N
+      CHARACTER TRANSA,TRANSB
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*op( A )*op( B ) + beta*C,
+*
+*  where  op( X ) is one of
+*
+*     op( X ) = X   or   op( X ) = X',
+*
+*  alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*  an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n',  op( A ) = A.
+*
+*              TRANSA = 'T' or 't',  op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c',  op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  TRANSB - CHARACTER*1.
+*           On entry, TRANSB specifies the form of op( B ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSB = 'N' or 'n',  op( B ) = B.
+*
+*              TRANSB = 'T' or 't',  op( B ) = B'.
+*
+*              TRANSB = 'C' or 'c',  op( B ) = B'.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies  the number  of rows  of the  matrix
+*           op( A )  and of the  matrix  C.  M  must  be at least  zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N  specifies the number  of columns of the matrix
+*           op( B ) and the number of columns of the matrix C. N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry,  K  specifies  the number of columns of the matrix
+*           op( A ) and the number of rows of the matrix op( B ). K must
+*           be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
+*           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by m  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. When  TRANSA = 'N' or 'n' then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+*           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
+*           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  n by k  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in the calling (sub) program. When  TRANSB = 'N' or 'n' then
+*           LDB must be at least  max( 1, k ), otherwise  LDB must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n  matrix
+*           ( alpha*op( A )*op( B ) + beta*C ).
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
+      LOGICAL NOTA,NOTB
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
+*     transposed and set  NROWA, NCOLA and  NROWB  as the number of rows
+*     and  columns of  A  and the  number of  rows  of  B  respectively.
+*
+      NOTA = LSAME(TRANSA,'N')
+      NOTB = LSAME(TRANSB,'N')
+      IF (NOTA) THEN
+          NROWA = M
+          NCOLA = K
+      ELSE
+          NROWA = K
+          NCOLA = M
+      END IF
+      IF (NOTB) THEN
+          NROWB = K
+      ELSE
+          NROWB = N
+      END IF
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.NOTA) .AND. (.NOT.LSAME(TRANSA,'C')) .AND.
+     +    (.NOT.LSAME(TRANSA,'T'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.NOTB) .AND. (.NOT.LSAME(TRANSB,'C')) .AND.
+     +         (.NOT.LSAME(TRANSB,'T'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 8
+      ELSE IF (LDB.LT.MAX(1,NROWB)) THEN
+          INFO = 10
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DGEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And if  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (NOTB) THEN
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B + beta*C.
+*
+              DO 90 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 50 I = 1,M
+                          C(I,J) = ZERO
+   50                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 60 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+   60                 CONTINUE
+                  END IF
+                  DO 80 L = 1,K
+                      IF (B(L,J).NE.ZERO) THEN
+                          TEMP = ALPHA*B(L,J)
+                          DO 70 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+   70                     CONTINUE
+                      END IF
+   80             CONTINUE
+   90         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B + beta*C
+*
+              DO 120 J = 1,N
+                  DO 110 I = 1,M
+                      TEMP = ZERO
+                      DO 100 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(L,J)
+  100                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  110             CONTINUE
+  120         CONTINUE
+          END IF
+      ELSE
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B' + beta*C
+*
+              DO 170 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 130 I = 1,M
+                          C(I,J) = ZERO
+  130                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 140 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  140                 CONTINUE
+                  END IF
+                  DO 160 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*B(J,L)
+                          DO 150 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  150                     CONTINUE
+                      END IF
+  160             CONTINUE
+  170         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B' + beta*C
+*
+              DO 200 J = 1,N
+                  DO 190 I = 1,M
+                      TEMP = ZERO
+                      DO 180 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(J,L)
+  180                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  190             CONTINUE
+  200         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DGEMM .
+*
+      END
Index: src/blas/dtrsm.f
===================================================================
--- src/blas/dtrsm.f	(revision 0)
+++ src/blas/dtrsm.f	(revision 1)
@@ -0,0 +1,373 @@
+      SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTRSM  solves one of the matrix equations
+*
+*     op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
+*
+*  where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'.
+*
+*  The matrix X is overwritten on B.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry, SIDE specifies whether op( A ) appears on the left
+*           or right of X as follows:
+*
+*              SIDE = 'L' or 'l'   op( A )*X = alpha*B.
+*
+*              SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain  the  right-hand  side  matrix  B,  and  on exit  is
+*           overwritten by the solution matrix  X.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTRSM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*inv( A )*B.
+*
+              IF (UPPER) THEN
+                  DO 60 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 30 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   30                     CONTINUE
+                      END IF
+                      DO 50 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 40 I = 1,K - 1
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   40                         CONTINUE
+                          END IF
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 100 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 70 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   70                     CONTINUE
+                      END IF
+                      DO 90 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 80 I = K + 1,M
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   80                         CONTINUE
+                          END IF
+   90                 CONTINUE
+  100             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*inv( A' )*B.
+*
+              IF (UPPER) THEN
+                  DO 130 J = 1,N
+                      DO 120 I = 1,M
+                          TEMP = ALPHA*B(I,J)
+                          DO 110 K = 1,I - 1
+                              TEMP = TEMP - A(K,I)*B(K,J)
+  110                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          B(I,J) = TEMP
+  120                 CONTINUE
+  130             CONTINUE
+              ELSE
+                  DO 160 J = 1,N
+                      DO 150 I = M,1,-1
+                          TEMP = ALPHA*B(I,J)
+                          DO 140 K = I + 1,M
+                              TEMP = TEMP - A(K,I)*B(K,J)
+  140                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          B(I,J) = TEMP
+  150                 CONTINUE
+  160             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*inv( A ).
+*
+              IF (UPPER) THEN
+                  DO 210 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 170 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  170                     CONTINUE
+                      END IF
+                      DO 190 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 180 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  180                         CONTINUE
+                          END IF
+  190                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 200 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  200                     CONTINUE
+                      END IF
+  210             CONTINUE
+              ELSE
+                  DO 260 J = N,1,-1
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 220 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  220                     CONTINUE
+                      END IF
+                      DO 240 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 230 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  230                         CONTINUE
+                          END IF
+  240                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 250 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  250                     CONTINUE
+                      END IF
+  260             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*inv( A' ).
+*
+              IF (UPPER) THEN
+                  DO 310 K = N,1,-1
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(K,K)
+                          DO 270 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  270                     CONTINUE
+                      END IF
+                      DO 290 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = A(J,K)
+                              DO 280 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  280                         CONTINUE
+                          END IF
+  290                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 300 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  300                     CONTINUE
+                      END IF
+  310             CONTINUE
+              ELSE
+                  DO 360 K = 1,N
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(K,K)
+                          DO 320 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  320                     CONTINUE
+                      END IF
+                      DO 340 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = A(J,K)
+                              DO 330 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  330                         CONTINUE
+                          END IF
+  340                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 350 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  350                     CONTINUE
+                      END IF
+  360             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTRSM .
+*
+      END
Index: src/blas/dspr2.f
===================================================================
--- src/blas/dspr2.f	(revision 0)
+++ src/blas/dspr2.f	(revision 1)
@@ -0,0 +1,230 @@
+      SUBROUTINE DSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSPR2  performs the symmetric rank 2 operation
+*
+*     A := alpha*x*y' + alpha*y*x' + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an
+*  n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - DOUBLE PRECISION array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSPR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      K = KK
+                      DO 10 I = 1,J
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   10                 CONTINUE
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = KX
+                      IY = KY
+                      DO 30 K = KK,KK + J - 1
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      K = KK
+                      DO 50 I = J,N
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   50                 CONTINUE
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = JX
+                      IY = JY
+                      DO 70 K = KK,KK + N - J
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSPR2 .
+*
+      END
Index: src/blas/dtpmv.f
===================================================================
--- src/blas/dtpmv.f	(revision 0)
+++ src/blas/dtpmv.f	(revision 1)
@@ -0,0 +1,290 @@
+      SUBROUTINE DTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTPMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - DOUBLE PRECISION array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x:= A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K + 1
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
+                      END IF
+                      KK = KK + J
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 K = KK,KK + J - 2
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K - 1
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
+                      END IF
+                      KK = KK - (N-J+1)
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 K = KK,KK - (N- (J+1)),-1
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      K = KK - 1
+                      DO 90 I = J - 1,1,-1
+                          TEMP = TEMP + AP(K)*X(I)
+                          K = K - 1
+   90                 CONTINUE
+                      X(J) = TEMP
+                      KK = KK - J
+  100             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      DO 110 K = KK - 1,KK - J + 1,-1
+                          IX = IX - INCX
+                          TEMP = TEMP + AP(K)*X(IX)
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - J
+  120             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      K = KK + 1
+                      DO 130 I = J + 1,N
+                          TEMP = TEMP + AP(K)*X(I)
+                          K = K + 1
+  130                 CONTINUE
+                      X(J) = TEMP
+                      KK = KK + (N-J+1)
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      DO 150 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          TEMP = TEMP + AP(K)*X(IX)
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTPMV .
+*
+      END
Index: src/blas/dsyrk.f
===================================================================
--- src/blas/dsyrk.f	(revision 0)
+++ src/blas/dsyrk.f	(revision 1)
@@ -0,0 +1,295 @@
+      SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSYRK  performs one of the symmetric rank k operations
+*
+*     C := alpha*A*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*A + beta*C,
+*
+*  where  alpha and beta  are scalars, C is an  n by n  symmetric matrix
+*  and  A  is an  n by k  matrix in the first case and a  k by n  matrix
+*  in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*A' + beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*A + beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*A'*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'T' or 't' or 'C' or 'c',  K  specifies  the  number
+*           of rows of the matrix  A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSYRK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*A' + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP = ZERO
+                      DO 220 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSYRK .
+*
+      END
Index: src/blas/dtrmv.f
===================================================================
--- src/blas/dtrmv.f	(revision 0)
+++ src/blas/dtrmv.f	(revision 1)
@@ -0,0 +1,278 @@
+      SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTRMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTRMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*A(I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 I = 1,J - 1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*A(I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 I = N,J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 90 I = J - 1,1,-1
+                          TEMP = TEMP + A(I,J)*X(I)
+   90                 CONTINUE
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 110 I = J - 1,1,-1
+                          IX = IX - INCX
+                          TEMP = TEMP + A(I,J)*X(IX)
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 130 I = J + 1,N
+                          TEMP = TEMP + A(I,J)*X(I)
+  130                 CONTINUE
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 150 I = J + 1,N
+                          IX = IX + INCX
+                          TEMP = TEMP + A(I,J)*X(IX)
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTRMV .
+*
+      END
Index: src/blas/ssyr2k.f
===================================================================
--- src/blas/ssyr2k.f	(revision 0)
+++ src/blas/ssyr2k.f	(revision 1)
@@ -0,0 +1,326 @@
+      SUBROUTINE SSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYR2K  performs one of the symmetric rank 2k operations
+*
+*     C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+*  where  alpha and beta  are scalars, C is an  n by n  symmetric matrix
+*  and  A and B  are  n by k  matrices  in the  first  case  and  k by n
+*  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*B' + alpha*B*A' +
+*                                        beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*B + alpha*B'*A +
+*                                        beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*A'*B + alpha*B'*A +
+*                                        beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'T' or 't' or 'C' or 'c',  K  specifies  the  number
+*           of rows of the matrices  A and B.  K must be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - REAL             array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - REAL             array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYR2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*B' + alpha*B*A' + C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*B + alpha*B'*A + C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSYR2K.
+*
+      END
Index: src/blas/scopy.f
===================================================================
--- src/blas/scopy.f	(revision 0)
+++ src/blas/scopy.f	(revision 1)
@@ -0,0 +1,63 @@
+      SUBROUTINE SCOPY(N,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     copies a vector, x, to a vector, y.
+*     uses unrolled loops for increments equal to 1.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          SY(IY) = SX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,7)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          SY(I) = SX(I)
+   30 CONTINUE
+      IF (N.LT.7) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,7
+          SY(I) = SX(I)
+          SY(I+1) = SX(I+1)
+          SY(I+2) = SX(I+2)
+          SY(I+3) = SX(I+3)
+          SY(I+4) = SX(I+4)
+          SY(I+5) = SX(I+5)
+          SY(I+6) = SX(I+6)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/cgbmv.f
===================================================================
--- src/blas/cgbmv.f	(revision 0)
+++ src/blas/cgbmv.f	(revision 1)
@@ -0,0 +1,319 @@
+      SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,KL,KU,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CGBMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,   or
+*
+*     y := alpha*conjg( A' )*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*conjg( A' )*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  KL     - INTEGER.
+*           On entry, KL specifies the number of sub-diagonals of the
+*           matrix A. KL must satisfy  0 .le. KL.
+*           Unchanged on exit.
+*
+*  KU     - INTEGER.
+*           On entry, KU specifies the number of super-diagonals of the
+*           matrix A. KU must satisfy  0 .le. KU.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry, the leading ( kl + ku + 1 ) by n part of the
+*           array A must contain the matrix of coefficients, supplied
+*           column by column, with the leading diagonal of the matrix in
+*           row ( ku + 1 ) of the array, the first super-diagonal
+*           starting at position 2 in row ku, the first sub-diagonal
+*           starting at position 1 in row ( ku + 2 ), and so on.
+*           Elements in the array A that do not correspond to elements
+*           in the band matrix (such as the top left ku by ku triangle)
+*           are not referenced.
+*           The following program segment will transfer a band matrix
+*           from conventional full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    K = KU + 1 - J
+*                    DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+*                       A( K + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( kl + ku + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KUP1,KX,KY,LENX,LENY
+      LOGICAL NOCONJ
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (KL.LT.0) THEN
+          INFO = 4
+      ELSE IF (KU.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (KL+KU+1)) THEN
+          INFO = 8
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 10
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CGBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the band part of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KUP1 = KU + 1
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      K = KUP1 - J
+                      DO 50 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(I) = Y(I) + TEMP*A(K+I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      K = KUP1 - J
+                      DO 70 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(IY) = Y(IY) + TEMP*A(K+I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  IF (J.GT.KU) KY = KY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y  or  y := alpha*conjg( A' )*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 110 J = 1,N
+                  TEMP = ZERO
+                  K = KUP1 - J
+                  IF (NOCONJ) THEN
+                      DO 90 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + A(K+I,J)*X(I)
+   90                 CONTINUE
+                  ELSE
+                      DO 100 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + CONJG(A(K+I,J))*X(I)
+  100                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  110         CONTINUE
+          ELSE
+              DO 140 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  K = KUP1 - J
+                  IF (NOCONJ) THEN
+                      DO 120 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + A(K+I,J)*X(IX)
+                          IX = IX + INCX
+  120                 CONTINUE
+                  ELSE
+                      DO 130 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + CONJG(A(K+I,J))*X(IX)
+                          IX = IX + INCX
+  130                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+                  IF (J.GT.KU) KX = KX + INCX
+  140         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CGBMV .
+*
+      END
Index: src/blas/make.inc
===================================================================
--- src/blas/make.inc	(revision 0)
+++ src/blas/make.inc	(revision 1)
@@ -0,0 +1,34 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /bin/sh
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT = _LINUX
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = g77 
+OPTS     = -O3
+DRVOPTS  = $(OPTS)
+NOOPT    =
+LOADER   = g77
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB      = blas$(PLAT).a
Index: src/blas/strmm.f
===================================================================
--- src/blas/strmm.f	(revision 0)
+++ src/blas/strmm.f	(revision 1)
@@ -0,0 +1,346 @@
+      SUBROUTINE STRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STRMM  performs one of the matrix-matrix operations
+*
+*     B := alpha*op( A )*B,   or   B := alpha*B*op( A ),
+*
+*  where  alpha  is a scalar,  B  is an m by n matrix,  A  is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE specifies whether  op( A ) multiplies B from
+*           the left or right as follows:
+*
+*              SIDE = 'L' or 'l'   B := alpha*op( A )*B.
+*
+*              SIDE = 'R' or 'r'   B := alpha*B*op( A ).
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - REAL             array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain the matrix  B,  and  on exit  is overwritten  by the
+*           transformed matrix.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STRMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*A*B.
+*
+              IF (UPPER) THEN
+                  DO 50 J = 1,N
+                      DO 40 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              DO 30 I = 1,K - 1
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   30                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP*A(K,K)
+                              B(K,J) = TEMP
+                          END IF
+   40                 CONTINUE
+   50             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              B(K,J) = TEMP
+                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
+                              DO 60 I = K + 1,M
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   60                         CONTINUE
+                          END IF
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*A'*B.
+*
+              IF (UPPER) THEN
+                  DO 110 J = 1,N
+                      DO 100 I = M,1,-1
+                          TEMP = B(I,J)
+                          IF (NOUNIT) TEMP = TEMP*A(I,I)
+                          DO 90 K = 1,I - 1
+                              TEMP = TEMP + A(K,I)*B(K,J)
+   90                     CONTINUE
+                          B(I,J) = ALPHA*TEMP
+  100                 CONTINUE
+  110             CONTINUE
+              ELSE
+                  DO 140 J = 1,N
+                      DO 130 I = 1,M
+                          TEMP = B(I,J)
+                          IF (NOUNIT) TEMP = TEMP*A(I,I)
+                          DO 120 K = I + 1,M
+                              TEMP = TEMP + A(K,I)*B(K,J)
+  120                     CONTINUE
+                          B(I,J) = ALPHA*TEMP
+  130                 CONTINUE
+  140             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*A.
+*
+              IF (UPPER) THEN
+                  DO 180 J = N,1,-1
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 150 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  150                 CONTINUE
+                      DO 170 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 160 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  160                         CONTINUE
+                          END IF
+  170                 CONTINUE
+  180             CONTINUE
+              ELSE
+                  DO 220 J = 1,N
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 190 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  190                 CONTINUE
+                      DO 210 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 200 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  200                         CONTINUE
+                          END IF
+  210                 CONTINUE
+  220             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*A'.
+*
+              IF (UPPER) THEN
+                  DO 260 K = 1,N
+                      DO 240 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = ALPHA*A(J,K)
+                              DO 230 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  230                         CONTINUE
+                          END IF
+  240                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(K,K)
+                      IF (TEMP.NE.ONE) THEN
+                          DO 250 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  250                     CONTINUE
+                      END IF
+  260             CONTINUE
+              ELSE
+                  DO 300 K = N,1,-1
+                      DO 280 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = ALPHA*A(J,K)
+                              DO 270 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  270                         CONTINUE
+                          END IF
+  280                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(K,K)
+                      IF (TEMP.NE.ONE) THEN
+                          DO 290 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  290                     CONTINUE
+                      END IF
+  300             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STRMM .
+*
+      END
Index: src/blas/zhpmv.f
===================================================================
--- src/blas/zhpmv.f	(revision 0)
+++ src/blas/zhpmv.f	(revision 1)
@@ -0,0 +1,269 @@
+      SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHPMV  performs the matrix-vector operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX*16       array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 6
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when AP contains the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  K = KK
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + DCONJG(AP(K))*X(I)
+                      K = K + 1
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*DBLE(AP(KK+J-1)) + ALPHA*TEMP2
+                  KK = KK + J
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 K = KK,KK + J - 2
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + DCONJG(AP(K))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*DBLE(AP(KK+J-1)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when AP contains the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*DBLE(AP(KK))
+                  K = KK + 1
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + DCONJG(AP(K))*X(I)
+                      K = K + 1
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+                  KK = KK + (N-J+1)
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*DBLE(AP(KK))
+                  IX = JX
+                  IY = JY
+                  DO 110 K = KK + 1,KK + N - J
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*AP(K)
+                      TEMP2 = TEMP2 + DCONJG(AP(K))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + (N-J+1)
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHPMV .
+*
+      END
Index: src/blas/sscal.f
===================================================================
--- src/blas/sscal.f	(revision 0)
+++ src/blas/sscal.f	(revision 1)
@@ -0,0 +1,57 @@
+      SUBROUTINE SSCAL(N,SA,SX,INCX)
+*     .. Scalar Arguments ..
+      REAL SA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     scales a vector by a constant.
+*     uses unrolled loops for increment equal to 1.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,M,MP1,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          SX(I) = SA*SX(I)
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,5)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          SX(I) = SA*SX(I)
+   30 CONTINUE
+      IF (N.LT.5) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,5
+          SX(I) = SA*SX(I)
+          SX(I+1) = SA*SX(I+1)
+          SX(I+2) = SA*SX(I+2)
+          SX(I+3) = SA*SX(I+3)
+          SX(I+4) = SA*SX(I+4)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/dznrm2.f
===================================================================
--- src/blas/dznrm2.f	(revision 0)
+++ src/blas/dznrm2.f	(revision 1)
@@ -0,0 +1,71 @@
+      DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DZNRM2 returns the euclidean norm of a vector via the function
+*  name, so that
+*
+*     DZNRM2 := sqrt( conjg( x' )*x )
+*
+*
+*  -- This version written on 25-October-1982.
+*     Modified on 14-October-1993 to inline the call to ZLASSQ.
+*     Sven Hammarling, Nag Ltd.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION NORM,SCALE,SSQ,TEMP
+      INTEGER IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,DBLE,DIMAG,SQRT
+*     ..
+      IF (N.LT.1 .OR. INCX.LT.1) THEN
+          NORM = ZERO
+      ELSE
+          SCALE = ZERO
+          SSQ = ONE
+*        The following loop is equivalent to this call to the LAPACK
+*        auxiliary routine:
+*        CALL ZLASSQ( N, X, INCX, SCALE, SSQ )
+*
+          DO 10 IX = 1,1 + (N-1)*INCX,INCX
+              IF (DBLE(X(IX)).NE.ZERO) THEN
+                  TEMP = ABS(DBLE(X(IX)))
+                  IF (SCALE.LT.TEMP) THEN
+                      SSQ = ONE + SSQ* (SCALE/TEMP)**2
+                      SCALE = TEMP
+                  ELSE
+                      SSQ = SSQ + (TEMP/SCALE)**2
+                  END IF
+              END IF
+              IF (DIMAG(X(IX)).NE.ZERO) THEN
+                  TEMP = ABS(DIMAG(X(IX)))
+                  IF (SCALE.LT.TEMP) THEN
+                      SSQ = ONE + SSQ* (SCALE/TEMP)**2
+                      SCALE = TEMP
+                  ELSE
+                      SSQ = SSQ + (TEMP/SCALE)**2
+                  END IF
+              END IF
+   10     CONTINUE
+          NORM = SCALE*SQRT(SSQ)
+      END IF
+*
+      DZNRM2 = NORM
+      RETURN
+*
+*     End of DZNRM2.
+*
+      END
Index: src/blas/cswap.f
===================================================================
--- src/blas/cswap.f	(revision 0)
+++ src/blas/cswap.f	(revision 1)
@@ -0,0 +1,47 @@
+      SUBROUTINE CSWAP(N,CX,INCX,CY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*),CY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     interchanges two vectors.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      COMPLEX CTEMP
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          CTEMP = CX(IX)
+          CX(IX) = CY(IY)
+          CY(IY) = CTEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+   20 DO 30 I = 1,N
+          CTEMP = CX(I)
+          CX(I) = CY(I)
+          CY(I) = CTEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/cdotu.f
===================================================================
--- src/blas/cdotu.f	(revision 0)
+++ src/blas/cdotu.f	(revision 1)
@@ -0,0 +1,51 @@
+      COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*),CY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     CDOTU forms the dot product of two vectors.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      COMPLEX CTEMP
+      INTEGER I,IX,IY
+*     ..
+      CTEMP = (0.0,0.0)
+      CDOTU = (0.0,0.0)
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          CTEMP = CTEMP + CX(IX)*CY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      CDOTU = CTEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          CTEMP = CTEMP + CX(I)*CY(I)
+   30 CONTINUE
+      CDOTU = CTEMP
+      RETURN
+      END
Index: src/blas/sgbmv.f
===================================================================
--- src/blas/sgbmv.f	(revision 0)
+++ src/blas/sgbmv.f	(revision 1)
@@ -0,0 +1,297 @@
+      SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER INCX,INCY,KL,KU,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SGBMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*A'*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  KL     - INTEGER.
+*           On entry, KL specifies the number of sub-diagonals of the
+*           matrix A. KL must satisfy  0 .le. KL.
+*           Unchanged on exit.
+*
+*  KU     - INTEGER.
+*           On entry, KU specifies the number of super-diagonals of the
+*           matrix A. KU must satisfy  0 .le. KU.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry, the leading ( kl + ku + 1 ) by n part of the
+*           array A must contain the matrix of coefficients, supplied
+*           column by column, with the leading diagonal of the matrix in
+*           row ( ku + 1 ) of the array, the first super-diagonal
+*           starting at position 2 in row ku, the first sub-diagonal
+*           starting at position 1 in row ( ku + 2 ), and so on.
+*           Elements in the array A that do not correspond to elements
+*           in the band matrix (such as the top left ku by ku triangle)
+*           are not referenced.
+*           The following program segment will transfer a band matrix
+*           from conventional full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    K = KU + 1 - J
+*                    DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+*                       A( K + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( kl + ku + 1 ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KUP1,KX,KY,LENX,LENY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (KL.LT.0) THEN
+          INFO = 4
+      ELSE IF (KU.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (KL+KU+1)) THEN
+          INFO = 8
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 10
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SGBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the band part of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KUP1 = KU + 1
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      K = KUP1 - J
+                      DO 50 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(I) = Y(I) + TEMP*A(K+I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      K = KUP1 - J
+                      DO 70 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(IY) = Y(IY) + TEMP*A(K+I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  IF (J.GT.KU) KY = KY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 100 J = 1,N
+                  TEMP = ZERO
+                  K = KUP1 - J
+                  DO 90 I = MAX(1,J-KU),MIN(M,J+KL)
+                      TEMP = TEMP + A(K+I,J)*X(I)
+   90             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  100         CONTINUE
+          ELSE
+              DO 120 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  K = KUP1 - J
+                  DO 110 I = MAX(1,J-KU),MIN(M,J+KL)
+                      TEMP = TEMP + A(K+I,J)*X(IX)
+                      IX = IX + INCX
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+                  IF (J.GT.KU) KX = KX + INCX
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SGBMV .
+*
+      END
Index: src/blas/cher2k.f
===================================================================
--- src/blas/cher2k.f	(revision 0)
+++ src/blas/cher2k.f	(revision 1)
@@ -0,0 +1,368 @@
+      SUBROUTINE CHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      REAL BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHER2K  performs one of the hermitian rank 2k operations
+*
+*     C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) + beta*C,
+*
+*  or
+*
+*     C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A + beta*C,
+*
+*  where  alpha and beta  are scalars with  beta  real,  C is an  n by n
+*  hermitian matrix and  A and B  are  n by k matrices in the first case
+*  and  k by n  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'    C := alpha*A*conjg( B' )          +
+*                                         conjg( alpha )*B*conjg( A' ) +
+*                                         beta*C.
+*
+*              TRANS = 'C' or 'c'    C := alpha*conjg( A' )*B          +
+*                                         conjg( alpha )*conjg( B' )*A +
+*                                         beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'C' or 'c',  K  specifies  the number of rows of the
+*           matrices  A and B.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  hermitian matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  hermitian matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set,  they are assumed to be zero,  and on exit they
+*           are set to zero.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*  -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
+*     Ed Anderson, Cray Research Inc.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,REAL
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE
+      PARAMETER (ONE=1.0E+0)
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHER2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.REAL(ZERO)) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+                      C(J,J) = BETA*REAL(C(J,J))
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.REAL(ZERO)) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      C(J,J) = BETA*REAL(C(J,J))
+                      DO 70 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) +
+*                   C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.REAL(ZERO)) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                      C(J,J) = BETA*REAL(C(J,J))
+                  ELSE
+                      C(J,J) = REAL(C(J,J))
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*CONJG(B(J,L))
+                          TEMP2 = CONJG(ALPHA*A(J,L))
+                          DO 110 I = 1,J - 1
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                          C(J,J) = REAL(C(J,J)) +
+     +                             REAL(A(J,L)*TEMP1+B(J,L)*TEMP2)
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.REAL(ZERO)) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                      C(J,J) = BETA*REAL(C(J,J))
+                  ELSE
+                      C(J,J) = REAL(C(J,J))
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*CONJG(B(J,L))
+                          TEMP2 = CONJG(ALPHA*A(J,L))
+                          DO 160 I = J + 1,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                          C(J,J) = REAL(C(J,J)) +
+     +                             REAL(A(J,L)*TEMP1+B(J,L)*TEMP2)
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A +
+*                   C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + CONJG(A(L,I))*B(L,J)
+                          TEMP2 = TEMP2 + CONJG(B(L,I))*A(L,J)
+  190                 CONTINUE
+                      IF (I.EQ.J) THEN
+                          IF (BETA.EQ.REAL(ZERO)) THEN
+                              C(J,J) = REAL(ALPHA*TEMP1+
+     +                                 CONJG(ALPHA)*TEMP2)
+                          ELSE
+                              C(J,J) = BETA*REAL(C(J,J)) +
+     +                                 REAL(ALPHA*TEMP1+
+     +                                 CONJG(ALPHA)*TEMP2)
+                          END IF
+                      ELSE
+                          IF (BETA.EQ.REAL(ZERO)) THEN
+                              C(I,J) = ALPHA*TEMP1 + CONJG(ALPHA)*TEMP2
+                          ELSE
+                              C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                                 CONJG(ALPHA)*TEMP2
+                          END IF
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + CONJG(A(L,I))*B(L,J)
+                          TEMP2 = TEMP2 + CONJG(B(L,I))*A(L,J)
+  220                 CONTINUE
+                      IF (I.EQ.J) THEN
+                          IF (BETA.EQ.REAL(ZERO)) THEN
+                              C(J,J) = REAL(ALPHA*TEMP1+
+     +                                 CONJG(ALPHA)*TEMP2)
+                          ELSE
+                              C(J,J) = BETA*REAL(C(J,J)) +
+     +                                 REAL(ALPHA*TEMP1+
+     +                                 CONJG(ALPHA)*TEMP2)
+                          END IF
+                      ELSE
+                          IF (BETA.EQ.REAL(ZERO)) THEN
+                              C(I,J) = ALPHA*TEMP1 + CONJG(ALPHA)*TEMP2
+                          ELSE
+                              C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                                 CONJG(ALPHA)*TEMP2
+                          END IF
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHER2K.
+*
+      END
Index: src/blas/drotg.f
===================================================================
--- src/blas/drotg.f	(revision 0)
+++ src/blas/drotg.f	(revision 1)
@@ -0,0 +1,38 @@
+      SUBROUTINE DROTG(DA,DB,C,S)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION C,DA,DB,S
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     construct givens plane rotation.
+*     jack dongarra, linpack, 3/11/78.
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION R,ROE,SCALE,Z
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DABS,DSIGN,DSQRT
+*     ..
+      ROE = DB
+      IF (DABS(DA).GT.DABS(DB)) ROE = DA
+      SCALE = DABS(DA) + DABS(DB)
+      IF (SCALE.NE.0.0d0) GO TO 10
+      C = 1.0d0
+      S = 0.0d0
+      R = 0.0d0
+      Z = 0.0d0
+      GO TO 20
+   10 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
+      R = DSIGN(1.0d0,ROE)*R
+      C = DA/R
+      S = DB/R
+      Z = 1.0d0
+      IF (DABS(DA).GT.DABS(DB)) Z = S
+      IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
+   20 DA = R
+      DB = Z
+      RETURN
+      END
Index: src/blas/zher2.f
===================================================================
--- src/blas/zher2.f	(revision 0)
+++ src/blas/zher2.f	(revision 1)
@@ -0,0 +1,249 @@
+      SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHER2  performs the hermitian rank 2 operation
+*
+*     A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an n
+*  by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHER2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in the upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(J))
+                      TEMP2 = DCONJG(ALPHA*X(J))
+                      DO 10 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   10                 CONTINUE
+                      A(J,J) = DBLE(A(J,J)) +
+     +                         DBLE(X(J)*TEMP1+Y(J)*TEMP2)
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(JY))
+                      TEMP2 = DCONJG(ALPHA*X(JX))
+                      IX = KX
+                      IY = KY
+                      DO 30 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                      A(J,J) = DBLE(A(J,J)) +
+     +                         DBLE(X(JX)*TEMP1+Y(JY)*TEMP2)
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in the lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(J))
+                      TEMP2 = DCONJG(ALPHA*X(J))
+                      A(J,J) = DBLE(A(J,J)) +
+     +                         DBLE(X(J)*TEMP1+Y(J)*TEMP2)
+                      DO 50 I = J + 1,N
+                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
+   50                 CONTINUE
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*DCONJG(Y(JY))
+                      TEMP2 = DCONJG(ALPHA*X(JX))
+                      A(J,J) = DBLE(A(J,J)) +
+     +                         DBLE(X(JX)*TEMP1+Y(JY)*TEMP2)
+                      IX = JX
+                      IY = JY
+                      DO 70 I = J + 1,N
+                          IX = IX + INCX
+                          IY = IY + INCY
+                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
+   70                 CONTINUE
+                  ELSE
+                      A(J,J) = DBLE(A(J,J))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHER2 .
+*
+      END
Index: src/blas/ddot.f
===================================================================
--- src/blas/ddot.f	(revision 0)
+++ src/blas/ddot.f	(revision 1)
@@ -0,0 +1,63 @@
+      DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*),DY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     forms the dot product of two vectors.
+*     uses unrolled loops for increments equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DTEMP
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      DDOT = 0.0d0
+      DTEMP = 0.0d0
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          DTEMP = DTEMP + DX(IX)*DY(IY)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      DDOT = DTEMP
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,5)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DTEMP = DTEMP + DX(I)*DY(I)
+   30 CONTINUE
+      IF (N.LT.5) GO TO 60
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,5
+          DTEMP = DTEMP + DX(I)*DY(I) + DX(I+1)*DY(I+1) +
+     +            DX(I+2)*DY(I+2) + DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4)
+   50 CONTINUE
+   60 DDOT = DTEMP
+      RETURN
+      END
Index: src/blas/drotmg.f
===================================================================
--- src/blas/drotmg.f	(revision 0)
+++ src/blas/drotmg.f	(revision 1)
@@ -0,0 +1,206 @@
+      SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION DD1,DD2,DX1,DY1
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DPARAM(5)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+*     THE SECOND COMPONENT OF THE 2-VECTOR  (DSQRT(DD1)*DX1,DSQRT(DD2)*
+*     DY2)**T.
+*     WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*
+*     DFLAG=-1.D0     DFLAG=0.D0        DFLAG=1.D0     DFLAG=-2.D0
+*
+*       (DH11  DH12)    (1.D0  DH12)    (DH11  1.D0)    (1.D0  0.D0)
+*     H=(          )    (          )    (          )    (          )
+*       (DH21  DH22),   (DH21  1.D0),   (-1.D0 DH22),   (0.D0  1.D0).
+*     LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22
+*     RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE
+*     VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.)
+*
+*     THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+*     INEXACT.  THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+*     OF DD1 AND DD2.  ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+*
+*
+*  Arguments
+*  =========
+*
+*  DD1    (input/output) DOUBLE PRECISION
+*
+*  DD2    (input/output) DOUBLE PRECISION 
+*
+*  DX1    (input/output) DOUBLE PRECISION 
+*
+*  DY1    (input) DOUBLE PRECISION
+*
+*  DPARAM (input/output)  DOUBLE PRECISION array, dimension 5
+*     DPARAM(1)=DFLAG
+*     DPARAM(2)=DH11
+*     DPARAM(3)=DH21
+*     DPARAM(4)=DH12
+*     DPARAM(5)=DH22
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DFLAG,DH11,DH12,DH21,DH22,DP1,DP2,DQ1,DQ2,DTEMP,
+     +                 DU,GAM,GAMSQ,ONE,RGAMSQ,TWO,ZERO
+      INTEGER IGO
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DABS
+*     ..
+*     .. Data statements ..
+*
+      DATA ZERO,ONE,TWO/0.D0,1.D0,2.D0/
+      DATA GAM,GAMSQ,RGAMSQ/4096.D0,16777216.D0,5.9604645D-8/
+*     ..
+
+      IF (.NOT.DD1.LT.ZERO) GO TO 10
+*       GO ZERO-H-D-AND-DX1..
+      GO TO 60
+   10 CONTINUE
+*     CASE-DD1-NONNEGATIVE
+      DP2 = DD2*DY1
+      IF (.NOT.DP2.EQ.ZERO) GO TO 20
+      DFLAG = -TWO
+      GO TO 260
+*     REGULAR-CASE..
+   20 CONTINUE
+      DP1 = DD1*DX1
+      DQ2 = DP2*DY1
+      DQ1 = DP1*DX1
+*
+      IF (.NOT.DABS(DQ1).GT.DABS(DQ2)) GO TO 40
+      DH21 = -DY1/DX1
+      DH12 = DP2/DP1
+*
+      DU = ONE - DH12*DH21
+*
+      IF (.NOT.DU.LE.ZERO) GO TO 30
+*         GO ZERO-H-D-AND-DX1..
+      GO TO 60
+   30 CONTINUE
+      DFLAG = ZERO
+      DD1 = DD1/DU
+      DD2 = DD2/DU
+      DX1 = DX1*DU
+*         GO SCALE-CHECK..
+      GO TO 100
+   40 CONTINUE
+      IF (.NOT.DQ2.LT.ZERO) GO TO 50
+*         GO ZERO-H-D-AND-DX1..
+      GO TO 60
+   50 CONTINUE
+      DFLAG = ONE
+      DH11 = DP1/DP2
+      DH22 = DX1/DY1
+      DU = ONE + DH11*DH22
+      DTEMP = DD2/DU
+      DD2 = DD1/DU
+      DD1 = DTEMP
+      DX1 = DY1*DU
+*         GO SCALE-CHECK
+      GO TO 100
+*     PROCEDURE..ZERO-H-D-AND-DX1..
+   60 CONTINUE
+      DFLAG = -ONE
+      DH11 = ZERO
+      DH12 = ZERO
+      DH21 = ZERO
+      DH22 = ZERO
+*
+      DD1 = ZERO
+      DD2 = ZERO
+      DX1 = ZERO
+*         RETURN..
+      GO TO 220
+*     PROCEDURE..FIX-H..
+   70 CONTINUE
+      IF (.NOT.DFLAG.GE.ZERO) GO TO 90
+*
+      IF (.NOT.DFLAG.EQ.ZERO) GO TO 80
+      DH11 = ONE
+      DH22 = ONE
+      DFLAG = -ONE
+      GO TO 90
+   80 CONTINUE
+      DH21 = -ONE
+      DH12 = ONE
+      DFLAG = -ONE
+   90 CONTINUE
+      GO TO IGO(120,150,180,210)
+*     PROCEDURE..SCALE-CHECK
+  100 CONTINUE
+  110 CONTINUE
+      IF (.NOT.DD1.LE.RGAMSQ) GO TO 130
+      IF (DD1.EQ.ZERO) GO TO 160
+      ASSIGN 120 TO IGO
+*              FIX-H..
+      GO TO 70
+  120 CONTINUE
+      DD1 = DD1*GAM**2
+      DX1 = DX1/GAM
+      DH11 = DH11/GAM
+      DH12 = DH12/GAM
+      GO TO 110
+  130 CONTINUE
+  140 CONTINUE
+      IF (.NOT.DD1.GE.GAMSQ) GO TO 160
+      ASSIGN 150 TO IGO
+*              FIX-H..
+      GO TO 70
+  150 CONTINUE
+      DD1 = DD1/GAM**2
+      DX1 = DX1*GAM
+      DH11 = DH11*GAM
+      DH12 = DH12*GAM
+      GO TO 140
+  160 CONTINUE
+  170 CONTINUE
+      IF (.NOT.DABS(DD2).LE.RGAMSQ) GO TO 190
+      IF (DD2.EQ.ZERO) GO TO 220
+      ASSIGN 180 TO IGO
+*              FIX-H..
+      GO TO 70
+  180 CONTINUE
+      DD2 = DD2*GAM**2
+      DH21 = DH21/GAM
+      DH22 = DH22/GAM
+      GO TO 170
+  190 CONTINUE
+  200 CONTINUE
+      IF (.NOT.DABS(DD2).GE.GAMSQ) GO TO 220
+      ASSIGN 210 TO IGO
+*              FIX-H..
+      GO TO 70
+  210 CONTINUE
+      DD2 = DD2/GAM**2
+      DH21 = DH21*GAM
+      DH22 = DH22*GAM
+      GO TO 200
+  220 CONTINUE
+      IF (DFLAG) 250,230,240
+  230 CONTINUE
+      DPARAM(3) = DH21
+      DPARAM(4) = DH12
+      GO TO 260
+  240 CONTINUE
+      DPARAM(2) = DH11
+      DPARAM(5) = DH22
+      GO TO 260
+  250 CONTINUE
+      DPARAM(2) = DH11
+      DPARAM(3) = DH21
+      DPARAM(4) = DH12
+      DPARAM(5) = DH22
+  260 CONTINUE
+      DPARAM(1) = DFLAG
+      RETURN
+      END
Index: src/blas/sswap.f
===================================================================
--- src/blas/sswap.f	(revision 0)
+++ src/blas/sswap.f	(revision 1)
@@ -0,0 +1,70 @@
+      SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     interchanges two vectors.
+*     uses unrolled loops for increments equal to 1.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      REAL STEMP
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          STEMP = SX(IX)
+          SX(IX) = SY(IY)
+          SY(IY) = STEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+*
+*
+*       clean-up loop
+*
+   20 M = MOD(N,3)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          STEMP = SX(I)
+          SX(I) = SY(I)
+          SY(I) = STEMP
+   30 CONTINUE
+      IF (N.LT.3) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,3
+          STEMP = SX(I)
+          SX(I) = SY(I)
+          SY(I) = STEMP
+          STEMP = SX(I+1)
+          SX(I+1) = SY(I+1)
+          SY(I+1) = STEMP
+          STEMP = SX(I+2)
+          SX(I+2) = SY(I+2)
+          SY(I+2) = STEMP
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/chemv.f
===================================================================
--- src/blas/chemv.f	(revision 0)
+++ src/blas/chemv.f	(revision 1)
@@ -0,0 +1,266 @@
+      SUBROUTINE CHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHEMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set and are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 5
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when A is stored in upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + CONJG(A(I,J))*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*REAL(A(J,J)) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 I = 1,J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + CONJG(A(I,J))*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*REAL(A(J,J)) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when A is stored in lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*REAL(A(J,J))
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + CONJG(A(I,J))*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*REAL(A(J,J))
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,N
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + CONJG(A(I,J))*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHEMV .
+*
+      END
Index: src/blas/zsyr2k.f
===================================================================
--- src/blas/zsyr2k.f	(revision 0)
+++ src/blas/zsyr2k.f	(revision 1)
@@ -0,0 +1,323 @@
+      SUBROUTINE ZSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZSYR2K  performs one of the symmetric rank 2k operations
+*
+*     C := alpha*A*B' + alpha*B*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*B + alpha*B'*A + beta*C,
+*
+*  where  alpha and beta  are scalars,  C is an  n by n symmetric matrix
+*  and  A and B  are  n by k  matrices  in the  first  case  and  k by n
+*  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'    C := alpha*A*B' + alpha*B*A' +
+*                                         beta*C.
+*
+*              TRANS = 'T' or 't'    C := alpha*A'*B + alpha*B'*A +
+*                                         beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'T' or 't',  K  specifies  the number of rows of the
+*           matrices  A and B.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZSYR2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*B' + alpha*B*A' + C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*B(J,L)
+                          TEMP2 = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*B + alpha*B'*A + C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + A(L,I)*B(L,J)
+                          TEMP2 = TEMP2 + B(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                             ALPHA*TEMP2
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZSYR2K.
+*
+      END
Index: src/blas/cgeru.f
===================================================================
--- src/blas/cgeru.f	(revision 0)
+++ src/blas/cgeru.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE CGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CGERU  performs the rank 1 operation
+*
+*     A := alpha*x*y' + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CGERU ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of CGERU .
+*
+      END
Index: src/blas/drot.f
===================================================================
--- src/blas/drot.f	(revision 0)
+++ src/blas/drot.f	(revision 1)
@@ -0,0 +1,49 @@
+      SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION C,S
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*),DY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     applies a plane rotation.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DTEMP
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          DTEMP = C*DX(IX) + S*DY(IY)
+          DY(IY) = C*DY(IY) - S*DX(IX)
+          DX(IX) = DTEMP
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*       code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          DTEMP = C*DX(I) + S*DY(I)
+          DY(I) = C*DY(I) - S*DX(I)
+          DX(I) = DTEMP
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/ctbmv.f
===================================================================
--- src/blas/ctbmv.f	(revision 0)
+++ src/blas/ctbmv.f	(revision 1)
@@ -0,0 +1,363 @@
+      SUBROUTINE CTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTBMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX   too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*         Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = KPLUS1 - J
+                          DO 10 I = MAX(1,J-K),J - 1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = KPLUS1 - J
+                          DO 30 I = MAX(1,J-K),J - 1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
+                      END IF
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = 1 - J
+                          DO 50 I = MIN(N,J+K),J + 1,-1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(1,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = 1 - J
+                          DO 70 I = MIN(N,J+K),J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(1,J)
+                      END IF
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                          DO 90 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + A(L+I,J)*X(I)
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(KPLUS1,J))
+                          DO 100 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + CONJG(A(L+I,J))*X(I)
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      KX = KX - INCX
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                          DO 120 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + A(L+I,J)*X(IX)
+                              IX = IX - INCX
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(KPLUS1,J))
+                          DO 130 I = J - 1,MAX(1,J-K),-1
+                              TEMP = TEMP + CONJG(A(L+I,J))*X(IX)
+                              IX = IX - INCX
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(1,J)
+                          DO 150 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + A(L+I,J)*X(I)
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(1,J))
+                          DO 160 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + CONJG(A(L+I,J))*X(I)
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      KX = KX + INCX
+                      IX = KX
+                      L = 1 - J
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(1,J)
+                          DO 180 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + A(L+I,J)*X(IX)
+                              IX = IX + INCX
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(1,J))
+                          DO 190 I = J + 1,MIN(N,J+K)
+                              TEMP = TEMP + CONJG(A(L+I,J))*X(IX)
+                              IX = IX + INCX
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTBMV .
+*
+      END
Index: src/blas/zsymm.f
===================================================================
--- src/blas/zsymm.f	(revision 0)
+++ src/blas/zsymm.f	(revision 1)
@@ -0,0 +1,296 @@
+      SUBROUTINE ZSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZSYMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where  alpha and beta are scalars, A is a symmetric matrix and  B and
+*  C are m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  symmetric matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  symmetric  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  symmetric matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is n  otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  symmetric matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  symmetric matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  symmetric
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZSYMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*A(K,I)
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*A(J,J)
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*A(J,K)
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(J,K)
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of ZSYMM .
+*
+      END
Index: src/blas/zhemm.f
===================================================================
--- src/blas/zhemm.f	(revision 0)
+++ src/blas/zhemm.f	(revision 1)
@@ -0,0 +1,298 @@
+      SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER LDA,LDB,LDC,M,N
+      CHARACTER SIDE,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*A*B + beta*C,
+*
+*  or
+*
+*     C := alpha*B*A + beta*C,
+*
+*  where alpha and beta are scalars, A is an hermitian matrix and  B and
+*  C are m by n matrices.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE  specifies whether  the  hermitian matrix  A
+*           appears on the  left or right  in the  operation as follows:
+*
+*              SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
+*
+*              SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of  the  hermitian  matrix   A  is  to  be
+*           referenced as follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of the
+*                                  hermitian matrix is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of the
+*                                  hermitian matrix is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies the number of rows of the matrix  C.
+*           M  must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix C.
+*           N  must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           m  when  SIDE = 'L' or 'l'  and is n  otherwise.
+*           Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
+*           the array  A  must contain the  hermitian matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading m by m upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  hermitian matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  m by m  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  hermitian
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
+*           the array  A  must contain the  hermitian matrix,  such that
+*           when  UPLO = 'U' or 'u', the leading n by n upper triangular
+*           part of the array  A  must contain the upper triangular part
+*           of the  hermitian matrix and the  strictly  lower triangular
+*           part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
+*           the leading  n by n  lower triangular part  of the  array  A
+*           must  contain  the  lower triangular part  of the  hermitian
+*           matrix and the  strictly upper triangular part of  A  is not
+*           referenced.
+*           Note that the imaginary parts  of the diagonal elements need
+*           not be set, they are assumed to be zero.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, n ).
+*           Before entry, the leading  m by n part of the array  B  must
+*           contain the matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16       array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n updated
+*           matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Set NROWA as the number of rows of A.
+*
+      IF (LSAME(SIDE,'L')) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(SIDE,'L')) THEN
+*
+*        Form  C := alpha*A*B + beta*C.
+*
+          IF (UPPER) THEN
+              DO 70 J = 1,N
+                  DO 60 I = 1,M
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 50 K = 1,I - 1
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*DCONJG(A(K,I))
+   50                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*DBLE(A(I,I)) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*DBLE(A(I,I)) +
+     +                             ALPHA*TEMP2
+                      END IF
+   60             CONTINUE
+   70         CONTINUE
+          ELSE
+              DO 100 J = 1,N
+                  DO 90 I = M,1,-1
+                      TEMP1 = ALPHA*B(I,J)
+                      TEMP2 = ZERO
+                      DO 80 K = I + 1,M
+                          C(K,J) = C(K,J) + TEMP1*A(K,I)
+                          TEMP2 = TEMP2 + B(K,J)*DCONJG(A(K,I))
+   80                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = TEMP1*DBLE(A(I,I)) + ALPHA*TEMP2
+                      ELSE
+                          C(I,J) = BETA*C(I,J) + TEMP1*DBLE(A(I,I)) +
+     +                             ALPHA*TEMP2
+                      END IF
+   90             CONTINUE
+  100         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*B*A + beta*C.
+*
+          DO 170 J = 1,N
+              TEMP1 = ALPHA*DBLE(A(J,J))
+              IF (BETA.EQ.ZERO) THEN
+                  DO 110 I = 1,M
+                      C(I,J) = TEMP1*B(I,J)
+  110             CONTINUE
+              ELSE
+                  DO 120 I = 1,M
+                      C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
+  120             CONTINUE
+              END IF
+              DO 140 K = 1,J - 1
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*A(K,J)
+                  ELSE
+                      TEMP1 = ALPHA*DCONJG(A(J,K))
+                  END IF
+                  DO 130 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  130             CONTINUE
+  140         CONTINUE
+              DO 160 K = J + 1,N
+                  IF (UPPER) THEN
+                      TEMP1 = ALPHA*DCONJG(A(J,K))
+                  ELSE
+                      TEMP1 = ALPHA*A(K,J)
+                  END IF
+                  DO 150 I = 1,M
+                      C(I,J) = C(I,J) + TEMP1*B(I,K)
+  150             CONTINUE
+  160         CONTINUE
+  170     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of ZHEMM .
+*
+      END
Index: src/blas/ssymv.f
===================================================================
--- src/blas/ssymv.f	(revision 0)
+++ src/blas/ssymv.f	(revision 1)
@@ -0,0 +1,262 @@
+      SUBROUTINE SSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER INCX,INCY,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the symmetric matrix and the strictly
+*           lower triangular part of A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the symmetric matrix and the strictly
+*           upper triangular part of A is not referenced.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y. On exit, Y is overwritten by the updated
+*           vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 5
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when A is stored in upper triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  DO 50 I = 1,J - 1
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*A(J,J) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  DO 70 I = 1,J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*A(J,J) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when A is stored in lower triangle.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*A(J,J)
+                  DO 90 I = J + 1,N
+                      Y(I) = Y(I) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*A(J,J)
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,N
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(I,J)
+                      TEMP2 = TEMP2 + A(I,J)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSYMV .
+*
+      END
Index: src/blas/cher.f
===================================================================
--- src/blas/cher.f	(revision 0)
+++ src/blas/cher.f	(revision 1)
@@ -0,0 +1,214 @@
+      SUBROUTINE CHER(UPLO,N,ALPHA,X,INCX,A,LDA)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHER   performs the hermitian rank 1 operation
+*
+*     A := alpha*x*conjg( x' ) + A,
+*
+*  where alpha is a real scalar, x is an n element vector and A is an
+*  n by n hermitian matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the array A is to be referenced as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the upper triangular part of A
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the lower triangular part of A
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular part of the hermitian matrix and the strictly
+*           lower triangular part of A is not referenced. On exit, the
+*           upper triangular part of the array A is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular part of the hermitian matrix and the strictly
+*           upper triangular part of A is not referenced. On exit, the
+*           lower triangular part of the array A is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHER  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.REAL(ZERO))) RETURN
+*
+*     Set the start point in X if the increment is not unity.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the triangular part
+*     of A.
+*
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when A is stored in upper triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 20 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(J))
+                      DO 10 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   10                 CONTINUE
+                      A(J,J) = REAL(A(J,J)) + REAL(X(J)*TEMP)
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+   20         CONTINUE
+          ELSE
+              JX = KX
+              DO 40 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(JX))
+                      IX = KX
+                      DO 30 I = 1,J - 1
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+                          IX = IX + INCX
+   30                 CONTINUE
+                      A(J,J) = REAL(A(J,J)) + REAL(X(JX)*TEMP)
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+                  JX = JX + INCX
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when A is stored in lower triangle.
+*
+          IF (INCX.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(J).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(J))
+                      A(J,J) = REAL(A(J,J)) + REAL(TEMP*X(J))
+                      DO 50 I = J + 1,N
+                          A(I,J) = A(I,J) + X(I)*TEMP
+   50                 CONTINUE
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+   60         CONTINUE
+          ELSE
+              JX = KX
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*CONJG(X(JX))
+                      A(J,J) = REAL(A(J,J)) + REAL(TEMP*X(JX))
+                      IX = JX
+                      DO 70 I = J + 1,N
+                          IX = IX + INCX
+                          A(I,J) = A(I,J) + X(IX)*TEMP
+   70                 CONTINUE
+                  ELSE
+                      A(J,J) = REAL(A(J,J))
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHER  .
+*
+      END
Index: src/blas/dtbsv.f
===================================================================
--- src/blas/dtbsv.f	(revision 0)
+++ src/blas/dtbsv.f	(revision 1)
@@ -0,0 +1,336 @@
+      SUBROUTINE DTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTBSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*  diagonals.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTBSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed by sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,MAX(1,J-K),-1
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 40 J = N,1,-1
+                      KX = KX - INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = KPLUS1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
+                          TEMP = X(JX)
+                          DO 30 I = J - 1,MAX(1,J-K),-1
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX - INCX
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          L = 1 - J
+                          IF (NOUNIT) X(J) = X(J)/A(1,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,MIN(N,J+K)
+                              X(I) = X(I) - TEMP*A(L+I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      KX = KX + INCX
+                      IF (X(JX).NE.ZERO) THEN
+                          IX = KX
+                          L = 1 - J
+                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
+                          TEMP = X(JX)
+                          DO 70 I = J + 1,MIN(N,J+K)
+                              X(IX) = X(IX) - TEMP*A(L+I,J)
+                              IX = IX + INCX
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A')*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      DO 90 I = MAX(1,J-K),J - 1
+                          TEMP = TEMP - A(L+I,J)*X(I)
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      L = KPLUS1 - J
+                      DO 110 I = MAX(1,J-K),J - 1
+                          TEMP = TEMP - A(L+I,J)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(KPLUS1,J)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      L = 1 - J
+                      DO 130 I = MIN(N,J+K),J + 1,-1
+                          TEMP = TEMP - A(L+I,J)*X(I)
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      L = 1 - J
+                      DO 150 I = MIN(N,J+K),J + 1,-1
+                          TEMP = TEMP - A(L+I,J)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(1,J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTBSV .
+*
+      END
Index: src/blas/caxpy.f
===================================================================
--- src/blas/caxpy.f	(revision 0)
+++ src/blas/caxpy.f	(revision 1)
@@ -0,0 +1,52 @@
+      SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
+*     .. Scalar Arguments ..
+      COMPLEX CA
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*),CY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     CAXPY constant times a vector plus a vector.
+*
+*  Further Details
+*  ===============
+*
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY
+*     ..
+*     .. External Functions ..
+      REAL SCABS1
+      EXTERNAL SCABS1
+*     ..
+      IF (N.LE.0) RETURN
+      IF (SCABS1(CA).EQ.0.0E+0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          CY(IY) = CY(IY) + CA*CX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          CY(I) = CY(I) + CA*CX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/ctrsm.f
===================================================================
--- src/blas/ctrsm.f	(revision 0)
+++ src/blas/ctrsm.f	(revision 1)
@@ -0,0 +1,407 @@
+      SUBROUTINE CTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTRSM  solves one of the matrix equations
+*
+*     op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
+*
+*  where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'   or   op( A ) = conjg( A' ).
+*
+*  The matrix X is overwritten on B.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry, SIDE specifies whether op( A ) appears on the left
+*           or right of X as follows:
+*
+*              SIDE = 'L' or 'l'   op( A )*X = alpha*B.
+*
+*              SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain  the  right-hand  side  matrix  B,  and  on exit  is
+*           overwritten by the solution matrix  X.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOCONJ = LSAME(TRANSA,'T')
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTRSM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*inv( A )*B.
+*
+              IF (UPPER) THEN
+                  DO 60 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 30 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   30                     CONTINUE
+                      END IF
+                      DO 50 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 40 I = 1,K - 1
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   40                         CONTINUE
+                          END IF
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 100 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 70 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   70                     CONTINUE
+                      END IF
+                      DO 90 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 80 I = K + 1,M
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   80                         CONTINUE
+                          END IF
+   90                 CONTINUE
+  100             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*inv( A' )*B
+*           or    B := alpha*inv( conjg( A' ) )*B.
+*
+              IF (UPPER) THEN
+                  DO 140 J = 1,N
+                      DO 130 I = 1,M
+                          TEMP = ALPHA*B(I,J)
+                          IF (NOCONJ) THEN
+                              DO 110 K = 1,I - 1
+                                  TEMP = TEMP - A(K,I)*B(K,J)
+  110                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          ELSE
+                              DO 120 K = 1,I - 1
+                                  TEMP = TEMP - CONJG(A(K,I))*B(K,J)
+  120                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/CONJG(A(I,I))
+                          END IF
+                          B(I,J) = TEMP
+  130                 CONTINUE
+  140             CONTINUE
+              ELSE
+                  DO 180 J = 1,N
+                      DO 170 I = M,1,-1
+                          TEMP = ALPHA*B(I,J)
+                          IF (NOCONJ) THEN
+                              DO 150 K = I + 1,M
+                                  TEMP = TEMP - A(K,I)*B(K,J)
+  150                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          ELSE
+                              DO 160 K = I + 1,M
+                                  TEMP = TEMP - CONJG(A(K,I))*B(K,J)
+  160                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP/CONJG(A(I,I))
+                          END IF
+                          B(I,J) = TEMP
+  170                 CONTINUE
+  180             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*inv( A ).
+*
+              IF (UPPER) THEN
+                  DO 230 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 190 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  190                     CONTINUE
+                      END IF
+                      DO 210 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 200 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  200                         CONTINUE
+                          END IF
+  210                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 220 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  220                     CONTINUE
+                      END IF
+  230             CONTINUE
+              ELSE
+                  DO 280 J = N,1,-1
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 240 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  240                     CONTINUE
+                      END IF
+                      DO 260 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 250 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  250                         CONTINUE
+                          END IF
+  260                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 270 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  270                     CONTINUE
+                      END IF
+  280             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*inv( A' )
+*           or    B := alpha*B*inv( conjg( A' ) ).
+*
+              IF (UPPER) THEN
+                  DO 330 K = N,1,-1
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = ONE/A(K,K)
+                          ELSE
+                              TEMP = ONE/CONJG(A(K,K))
+                          END IF
+                          DO 290 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  290                     CONTINUE
+                      END IF
+                      DO 310 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = A(J,K)
+                              ELSE
+                                  TEMP = CONJG(A(J,K))
+                              END IF
+                              DO 300 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  300                         CONTINUE
+                          END IF
+  310                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 320 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  320                     CONTINUE
+                      END IF
+  330             CONTINUE
+              ELSE
+                  DO 380 K = 1,N
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = ONE/A(K,K)
+                          ELSE
+                              TEMP = ONE/CONJG(A(K,K))
+                          END IF
+                          DO 340 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  340                     CONTINUE
+                      END IF
+                      DO 360 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = A(J,K)
+                              ELSE
+                                  TEMP = CONJG(A(J,K))
+                              END IF
+                              DO 350 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  350                         CONTINUE
+                          END IF
+  360                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 370 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  370                     CONTINUE
+                      END IF
+  380             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTRSM .
+*
+      END
Index: src/blas/cgemm.f
===================================================================
--- src/blas/cgemm.f	(revision 0)
+++ src/blas/cgemm.f	(revision 1)
@@ -0,0 +1,414 @@
+      SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,M,N
+      CHARACTER TRANSA,TRANSB
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CGEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*op( A )*op( B ) + beta*C,
+*
+*  where  op( X ) is one of
+*
+*     op( X ) = X   or   op( X ) = X'   or   op( X ) = conjg( X' ),
+*
+*  alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*  an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n',  op( A ) = A.
+*
+*              TRANSA = 'T' or 't',  op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c',  op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  TRANSB - CHARACTER*1.
+*           On entry, TRANSB specifies the form of op( B ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSB = 'N' or 'n',  op( B ) = B.
+*
+*              TRANSB = 'T' or 't',  op( B ) = B'.
+*
+*              TRANSB = 'C' or 'c',  op( B ) = conjg( B' ).
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies  the number  of rows  of the  matrix
+*           op( A )  and of the  matrix  C.  M  must  be at least  zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N  specifies the number  of columns of the matrix
+*           op( B ) and the number of columns of the matrix C. N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry,  K  specifies  the number of columns of the matrix
+*           op( A ) and the number of rows of the matrix op( B ). K must
+*           be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
+*           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by m  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. When  TRANSA = 'N' or 'n' then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX          array of DIMENSION ( LDB, kb ), where kb is
+*           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
+*           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  n by k  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in the calling (sub) program. When  TRANSB = 'N' or 'n' then
+*           LDB must be at least  max( 1, k ), otherwise  LDB must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n  matrix
+*           ( alpha*op( A )*op( B ) + beta*C ).
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
+      LOGICAL CONJA,CONJB,NOTA,NOTB
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
+*     conjugated or transposed, set  CONJA and CONJB  as true if  A  and
+*     B  respectively are to be  transposed but  not conjugated  and set
+*     NROWA, NCOLA and  NROWB  as the number of rows and  columns  of  A
+*     and the number of rows of  B  respectively.
+*
+      NOTA = LSAME(TRANSA,'N')
+      NOTB = LSAME(TRANSB,'N')
+      CONJA = LSAME(TRANSA,'C')
+      CONJB = LSAME(TRANSB,'C')
+      IF (NOTA) THEN
+          NROWA = M
+          NCOLA = K
+      ELSE
+          NROWA = K
+          NCOLA = M
+      END IF
+      IF (NOTB) THEN
+          NROWB = K
+      ELSE
+          NROWB = N
+      END IF
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.NOTA) .AND. (.NOT.CONJA) .AND.
+     +    (.NOT.LSAME(TRANSA,'T'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.NOTB) .AND. (.NOT.CONJB) .AND.
+     +         (.NOT.LSAME(TRANSB,'T'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 8
+      ELSE IF (LDB.LT.MAX(1,NROWB)) THEN
+          INFO = 10
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CGEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (NOTB) THEN
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B + beta*C.
+*
+              DO 90 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 50 I = 1,M
+                          C(I,J) = ZERO
+   50                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 60 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+   60                 CONTINUE
+                  END IF
+                  DO 80 L = 1,K
+                      IF (B(L,J).NE.ZERO) THEN
+                          TEMP = ALPHA*B(L,J)
+                          DO 70 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+   70                     CONTINUE
+                      END IF
+   80             CONTINUE
+   90         CONTINUE
+          ELSE IF (CONJA) THEN
+*
+*           Form  C := alpha*conjg( A' )*B + beta*C.
+*
+              DO 120 J = 1,N
+                  DO 110 I = 1,M
+                      TEMP = ZERO
+                      DO 100 L = 1,K
+                          TEMP = TEMP + CONJG(A(L,I))*B(L,J)
+  100                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  110             CONTINUE
+  120         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B + beta*C
+*
+              DO 150 J = 1,N
+                  DO 140 I = 1,M
+                      TEMP = ZERO
+                      DO 130 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(L,J)
+  130                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  140             CONTINUE
+  150         CONTINUE
+          END IF
+      ELSE IF (NOTA) THEN
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*A*conjg( B' ) + beta*C.
+*
+              DO 200 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 160 I = 1,M
+                          C(I,J) = ZERO
+  160                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 170 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  170                 CONTINUE
+                  END IF
+                  DO 190 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*CONJG(B(J,L))
+                          DO 180 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  180                     CONTINUE
+                      END IF
+  190             CONTINUE
+  200         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A*B'          + beta*C
+*
+              DO 250 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 210 I = 1,M
+                          C(I,J) = ZERO
+  210                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 220 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  220                 CONTINUE
+                  END IF
+                  DO 240 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*B(J,L)
+                          DO 230 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  230                     CONTINUE
+                      END IF
+  240             CONTINUE
+  250         CONTINUE
+          END IF
+      ELSE IF (CONJA) THEN
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*conjg( A' )*conjg( B' ) + beta*C.
+*
+              DO 280 J = 1,N
+                  DO 270 I = 1,M
+                      TEMP = ZERO
+                      DO 260 L = 1,K
+                          TEMP = TEMP + CONJG(A(L,I))*CONJG(B(J,L))
+  260                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  270             CONTINUE
+  280         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*conjg( A' )*B' + beta*C
+*
+              DO 310 J = 1,N
+                  DO 300 I = 1,M
+                      TEMP = ZERO
+                      DO 290 L = 1,K
+                          TEMP = TEMP + CONJG(A(L,I))*B(J,L)
+  290                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  300             CONTINUE
+  310         CONTINUE
+          END IF
+      ELSE
+          IF (CONJB) THEN
+*
+*           Form  C := alpha*A'*conjg( B' ) + beta*C
+*
+              DO 340 J = 1,N
+                  DO 330 I = 1,M
+                      TEMP = ZERO
+                      DO 320 L = 1,K
+                          TEMP = TEMP + A(L,I)*CONJG(B(J,L))
+  320                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  330             CONTINUE
+  340         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B' + beta*C
+*
+              DO 370 J = 1,N
+                  DO 360 I = 1,M
+                      TEMP = ZERO
+                      DO 350 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(J,L)
+  350                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  360             CONTINUE
+  370         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CGEMM .
+*
+      END
Index: src/blas/ctpmv.f
===================================================================
--- src/blas/ctpmv.f	(revision 0)
+++ src/blas/ctpmv.f	(revision 1)
@@ -0,0 +1,326 @@
+      SUBROUTINE CTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTPMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX          array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x:= A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K + 1
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
+                      END IF
+                      KK = KK + J
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 K = KK,KK + J - 2
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K - 1
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
+                      END IF
+                      KK = KK - (N-J+1)
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 K = KK,KK - (N- (J+1)),-1
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK - 1
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 90 I = J - 1,1,-1
+                              TEMP = TEMP + AP(K)*X(I)
+                              K = K - 1
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(AP(KK))
+                          DO 100 I = J - 1,1,-1
+                              TEMP = TEMP + CONJG(AP(K))*X(I)
+                              K = K - 1
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+                      KK = KK - J
+  110             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 120 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + AP(K)*X(IX)
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(AP(KK))
+                          DO 130 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + CONJG(AP(K))*X(IX)
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - J
+  140             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      K = KK + 1
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 150 I = J + 1,N
+                              TEMP = TEMP + AP(K)*X(I)
+                              K = K + 1
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(AP(KK))
+                          DO 160 I = J + 1,N
+                              TEMP = TEMP + CONJG(AP(K))*X(I)
+                              K = K + 1
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+                      KK = KK + (N-J+1)
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*AP(KK)
+                          DO 180 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              TEMP = TEMP + AP(K)*X(IX)
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(AP(KK))
+                          DO 190 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              TEMP = TEMP + CONJG(AP(K))*X(IX)
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTPMV .
+*
+      END
Index: src/blas/ctrmv.f
===================================================================
--- src/blas/ctrmv.f	(revision 0)
+++ src/blas/ctrmv.f	(revision 1)
@@ -0,0 +1,309 @@
+      SUBROUTINE CTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CTRMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,   or   x := conjg( A' )*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := conjg( A' )*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOCONJ,NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CTRMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*A(I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 I = 1,J - 1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*A(I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 I = N,J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x  or  x := conjg( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 110 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 90 I = J - 1,1,-1
+                              TEMP = TEMP + A(I,J)*X(I)
+   90                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(J,J))
+                          DO 100 I = J - 1,1,-1
+                              TEMP = TEMP + CONJG(A(I,J))*X(I)
+  100                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  110             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 140 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 120 I = J - 1,1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + A(I,J)*X(IX)
+  120                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(J,J))
+                          DO 130 I = J - 1,1,-1
+                              IX = IX - INCX
+                              TEMP = TEMP + CONJG(A(I,J))*X(IX)
+  130                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  140             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 170 J = 1,N
+                      TEMP = X(J)
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 150 I = J + 1,N
+                              TEMP = TEMP + A(I,J)*X(I)
+  150                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(J,J))
+                          DO 160 I = J + 1,N
+                              TEMP = TEMP + CONJG(A(I,J))*X(I)
+  160                     CONTINUE
+                      END IF
+                      X(J) = TEMP
+  170             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 200 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOCONJ) THEN
+                          IF (NOUNIT) TEMP = TEMP*A(J,J)
+                          DO 180 I = J + 1,N
+                              IX = IX + INCX
+                              TEMP = TEMP + A(I,J)*X(IX)
+  180                     CONTINUE
+                      ELSE
+                          IF (NOUNIT) TEMP = TEMP*CONJG(A(J,J))
+                          DO 190 I = J + 1,N
+                              IX = IX + INCX
+                              TEMP = TEMP + CONJG(A(I,J))*X(IX)
+  190                     CONTINUE
+                      END IF
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  200             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CTRMV .
+*
+      END
Index: src/blas/csyrk.f
===================================================================
--- src/blas/csyrk.f	(revision 0)
+++ src/blas/csyrk.f	(revision 1)
@@ -0,0 +1,294 @@
+      SUBROUTINE CSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CSYRK  performs one of the symmetric rank k operations
+*
+*     C := alpha*A*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*A + beta*C,
+*
+*  where  alpha and beta  are scalars,  C is an  n by n symmetric matrix
+*  and  A  is an  n by k  matrix in the first case and a  k by n  matrix
+*  in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*A' + beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'T' or 't',  K  specifies  the number of rows of the
+*           matrix A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX         .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      COMPLEX ONE
+      PARAMETER (ONE= (1.0E+0,0.0E+0))
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CSYRK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*A' + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP = ZERO
+                      DO 220 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CSYRK .
+*
+      END
Index: src/blas/stbmv.f
===================================================================
--- src/blas/stbmv.f	(revision 0)
+++ src/blas/stbmv.f	(revision 1)
@@ -0,0 +1,332 @@
+      SUBROUTINE STBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,K,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STBMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with UPLO = 'U' or 'u', K specifies the number of
+*           super-diagonals of the matrix A.
+*           On entry with UPLO = 'L' or 'l', K specifies the number of
+*           sub-diagonals of the matrix A.
+*           K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer an upper
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the matrix of coefficients, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer a lower
+*           triangular band matrix from conventional full matrix storage
+*           to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Note that when DIAG = 'U' or 'u' the elements of the array A
+*           corresponding to the diagonal elements of the matrix are not
+*           referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 7
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX   too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*         Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = KPLUS1 - J
+                          DO 10 I = MAX(1,J-K),J - 1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = KPLUS1 - J
+                          DO 30 I = MAX(1,J-K),J - 1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
+                      END IF
+                      JX = JX + INCX
+                      IF (J.GT.K) KX = KX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          L = 1 - J
+                          DO 50 I = MIN(N,J+K),J + 1,-1
+                              X(I) = X(I) + TEMP*A(L+I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(1,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          L = 1 - J
+                          DO 70 I = MIN(N,J+K),J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(L+I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(1,J)
+                      END IF
+                      JX = JX - INCX
+                      IF ((N-J).GE.K) KX = KX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KPLUS1 = K + 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      L = KPLUS1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                      DO 90 I = J - 1,MAX(1,J-K),-1
+                          TEMP = TEMP + A(L+I,J)*X(I)
+   90                 CONTINUE
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      KX = KX - INCX
+                      IX = KX
+                      L = KPLUS1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(KPLUS1,J)
+                      DO 110 I = J - 1,MAX(1,J-K),-1
+                          TEMP = TEMP + A(L+I,J)*X(IX)
+                          IX = IX - INCX
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      L = 1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(1,J)
+                      DO 130 I = J + 1,MIN(N,J+K)
+                          TEMP = TEMP + A(L+I,J)*X(I)
+  130                 CONTINUE
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      KX = KX + INCX
+                      IX = KX
+                      L = 1 - J
+                      IF (NOUNIT) TEMP = TEMP*A(1,J)
+                      DO 150 I = J + 1,MIN(N,J+K)
+                          TEMP = TEMP + A(L+I,J)*X(IX)
+                          IX = IX + INCX
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STBMV .
+*
+      END
Index: src/blas/scasum.f
===================================================================
--- src/blas/scasum.f	(revision 0)
+++ src/blas/scasum.f	(revision 1)
@@ -0,0 +1,47 @@
+      REAL FUNCTION SCASUM(N,CX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      COMPLEX CX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     takes the sum of the absolute values of a complex vector and
+*     returns a single precision result.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      REAL STEMP
+      INTEGER I,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,AIMAG,REAL
+*     ..
+      SCASUM = 0.0e0
+      STEMP = 0.0e0
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
+   10 CONTINUE
+      SCASUM = STEMP
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
+   30 CONTINUE
+      SCASUM = STEMP
+      RETURN
+      END
Index: src/blas/cherk.f
===================================================================
--- src/blas/cherk.f	(revision 0)
+++ src/blas/cherk.f	(revision 1)
@@ -0,0 +1,327 @@
+      SUBROUTINE CHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHERK  performs one of the hermitian rank k operations
+*
+*     C := alpha*A*conjg( A' ) + beta*C,
+*
+*  or
+*
+*     C := alpha*conjg( A' )*A + beta*C,
+*
+*  where  alpha and beta  are  real scalars,  C is an  n by n  hermitian
+*  matrix and  A  is an  n by k  matrix in the  first case and a  k by n
+*  matrix in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*conjg( A' ) + beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*conjg( A' )*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'C' or 'c',  K  specifies  the number of rows of the
+*           matrix A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX          array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  hermitian matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  hermitian matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set,  they are assumed to be zero,  and on exit they
+*           are set to zero.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*  -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
+*     Ed Anderson, Cray Research Inc.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CMPLX,CONJG,MAX,REAL
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP
+      REAL RTEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHERK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+                      C(J,J) = BETA*REAL(C(J,J))
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      C(J,J) = BETA*REAL(C(J,J))
+                      DO 70 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*conjg( A' ) + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                      C(J,J) = BETA*REAL(C(J,J))
+                  ELSE
+                      C(J,J) = REAL(C(J,J))
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.CMPLX(ZERO)) THEN
+                          TEMP = ALPHA*CONJG(A(J,L))
+                          DO 110 I = 1,J - 1
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                          C(J,J) = REAL(C(J,J)) + REAL(TEMP*A(I,L))
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      C(J,J) = BETA*REAL(C(J,J))
+                      DO 150 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  ELSE
+                      C(J,J) = REAL(C(J,J))
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.CMPLX(ZERO)) THEN
+                          TEMP = ALPHA*CONJG(A(J,L))
+                          C(J,J) = REAL(C(J,J)) + REAL(TEMP*A(J,L))
+                          DO 160 I = J + 1,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*conjg( A' )*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 220 J = 1,N
+                  DO 200 I = 1,J - 1
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + CONJG(A(L,I))*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+                  RTEMP = ZERO
+                  DO 210 L = 1,K
+                      RTEMP = RTEMP + CONJG(A(L,J))*A(L,J)
+  210             CONTINUE
+                  IF (BETA.EQ.ZERO) THEN
+                      C(J,J) = ALPHA*RTEMP
+                  ELSE
+                      C(J,J) = ALPHA*RTEMP + BETA*REAL(C(J,J))
+                  END IF
+  220         CONTINUE
+          ELSE
+              DO 260 J = 1,N
+                  RTEMP = ZERO
+                  DO 230 L = 1,K
+                      RTEMP = RTEMP + CONJG(A(L,J))*A(L,J)
+  230             CONTINUE
+                  IF (BETA.EQ.ZERO) THEN
+                      C(J,J) = ALPHA*RTEMP
+                  ELSE
+                      C(J,J) = ALPHA*RTEMP + BETA*REAL(C(J,J))
+                  END IF
+                  DO 250 I = J + 1,N
+                      TEMP = ZERO
+                      DO 240 L = 1,K
+                          TEMP = TEMP + CONJG(A(L,I))*A(L,J)
+  240                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  250             CONTINUE
+  260         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHERK .
+*
+      END
Index: src/blas/dtpsv.f
===================================================================
--- src/blas/dtpsv.f	(revision 0)
+++ src/blas/dtpsv.f	(revision 1)
@@ -0,0 +1,293 @@
+      SUBROUTINE DTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTPSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix, supplied in packed form.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - DOUBLE PRECISION array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTPSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK - 1
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K - 1
+   10                     CONTINUE
+                      END IF
+                      KK = KK - J
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 K = KK - 1,KK - J + 1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/AP(KK)
+                          TEMP = X(J)
+                          K = KK + 1
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*AP(K)
+                              K = K + 1
+   50                     CONTINUE
+                      END IF
+                      KK = KK + (N-J+1)
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 K = KK + 1,KK + N - J
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*AP(K)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      K = KK
+                      DO 90 I = 1,J - 1
+                          TEMP = TEMP - AP(K)*X(I)
+                          K = K + 1
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      X(J) = TEMP
+                      KK = KK + J
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 110 K = KK,KK + J - 2
+                          TEMP = TEMP - AP(K)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK+J-1)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + J
+  120             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      K = KK
+                      DO 130 I = N,J + 1,-1
+                          TEMP = TEMP - AP(K)*X(I)
+                          K = K - 1
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      X(J) = TEMP
+                      KK = KK - (N-J+1)
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 150 K = KK,KK - (N- (J+1)),-1
+                          TEMP = TEMP - AP(K)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/AP(KK-N+J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTPSV .
+*
+      END
Index: src/blas/sdsdot.f
===================================================================
--- src/blas/sdsdot.f	(revision 0)
+++ src/blas/sdsdot.f	(revision 1)
@@ -0,0 +1,105 @@
+      REAL FUNCTION SDSDOT(N,SB,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      REAL SB
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  PURPOSE
+*  =======
+*
+*  Compute the inner product of two vectors with extended
+*  precision accumulation.
+*
+*  Returns S.P. result with dot product accumulated in D.P.
+*  SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+I*INCX)*SY(LY+I*INCY),
+*  where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+*  defined in a similar way using INCY.
+*
+*  AUTHOR
+*  ======
+*  Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
+*  Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
+*
+*  ARGUMENTS 
+*  =========
+*
+*  N      (input) INTEGER
+*         number of elements in input vector(s)
+*
+*  SB     (input) REAL
+*         single precision scalar to be added to inner product
+*
+*  SX     (input) REAL array, dimension (N)
+*         single precision vector with N elements
+*
+*  INCX   (input) INTEGER
+*         storage spacing between elements of SX
+*
+*  SY     (input) REAL array, dimension (N)
+*         single precision vector with N elements
+*
+*  INCY   (input) INTEGER
+*         storage spacing between elements of SY
+*
+*  SDSDOT (output) REAL
+*         single precision dot product (SB if N .LE. 0)
+*
+*  REFERENCES
+*  ==========
+*
+*  C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+*  Krogh, Basic linear algebra subprograms for Fortran
+*  usage, Algorithm No. 539, Transactions on Mathematical
+*  Software 5, 3 (September 1979), pp. 308-323.
+*
+*  REVISION HISTORY  (YYMMDD)
+*  ==========================
+*      
+*  791001  DATE WRITTEN
+*  890531  Changed all specific intrinsics to generic.  (WRB)
+*  890831  Modified array declarations.  (WRB)
+*  890831  REVISION DATE from Version 3.2
+*  891214  Prologue converted to Version 4.0 format.  (BAB)
+*  920310  Corrected definition of LX in DESCRIPTION.  (WRB)
+*  920501  Reformatted the REFERENCES section.  (WRB)
+*  070118  Reformat to LAPACK coding style
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DSDOT
+      INTEGER I,KX,KY,NS
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE
+*     ..
+      DSDOT = SB
+      IF (N.LE.0) GO TO 30
+      IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 40
+*
+*     Code for unequal or nonpositive increments.
+*
+      KX = 1
+      KY = 1
+      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+      DO 10 I = 1,N
+          DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+          KX = KX + INCX
+          KY = KY + INCY
+   10 CONTINUE
+   30 SDSDOT = DSDOT
+      RETURN
+*
+*     Code for equal and positive increments.
+*
+   40 NS = N*INCX
+      DO 50 I = 1,NS,INCX
+          DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+   50 CONTINUE
+      SDSDOT = DSDOT
+      RETURN
+      END
Index: src/blas/snrm2.f
===================================================================
--- src/blas/snrm2.f	(revision 0)
+++ src/blas/snrm2.f	(revision 1)
@@ -0,0 +1,66 @@
+      REAL FUNCTION SNRM2(N,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      REAL X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SNRM2 returns the euclidean norm of a vector via the function
+*  name, so that
+*
+*     SNRM2 := sqrt( x'*x ).
+*
+*  Further Details
+*  ===============
+*
+*  -- This version written on 25-October-1982.
+*     Modified on 14-October-1993 to inline the call to SLASSQ.
+*     Sven Hammarling, Nag Ltd.
+*
+*
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL ABSXI,NORM,SCALE,SSQ
+      INTEGER IX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS,SQRT
+*     ..
+      IF (N.LT.1 .OR. INCX.LT.1) THEN
+          NORM = ZERO
+      ELSE IF (N.EQ.1) THEN
+          NORM = ABS(X(1))
+      ELSE
+          SCALE = ZERO
+          SSQ = ONE
+*        The following loop is equivalent to this call to the LAPACK
+*        auxiliary routine:
+*        CALL SLASSQ( N, X, INCX, SCALE, SSQ )
+*
+          DO 10 IX = 1,1 + (N-1)*INCX,INCX
+              IF (X(IX).NE.ZERO) THEN
+                  ABSXI = ABS(X(IX))
+                  IF (SCALE.LT.ABSXI) THEN
+                      SSQ = ONE + SSQ* (SCALE/ABSXI)**2
+                      SCALE = ABSXI
+                  ELSE
+                      SSQ = SSQ + (ABSXI/SCALE)**2
+                  END IF
+              END IF
+   10     CONTINUE
+          NORM = SCALE*SQRT(SSQ)
+      END IF
+*
+      SNRM2 = NORM
+      RETURN
+*
+*     End of SNRM2.
+*
+      END
Index: src/blas/dtrsv.f
===================================================================
--- src/blas/dtrsv.f	(revision 0)
+++ src/blas/dtrsv.f	(revision 1)
@@ -0,0 +1,281 @@
+      SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTRSV  solves one of the systems of equations
+*
+*     A*x = b,   or   A'*x = b,
+*
+*  where b and x are n element vectors and A is an n by n unit, or
+*  non-unit, upper or lower triangular matrix.
+*
+*  No test for singularity or near-singularity is included in this
+*  routine. Such tests must be performed before calling this routine.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the equations to be solved as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   A*x = b.
+*
+*              TRANS = 'T' or 't'   A'*x = b.
+*
+*              TRANS = 'C' or 'c'   A'*x = b.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element right-hand side vector b. On exit, X is overwritten
+*           with the solution vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DTRSV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := inv( A )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 10 I = J - 1,1,-1
+                              X(I) = X(I) - TEMP*A(I,J)
+   10                     CONTINUE
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 40 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 30 I = J - 1,1,-1
+                              IX = IX - INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   30                     CONTINUE
+                      END IF
+                      JX = JX - INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          IF (NOUNIT) X(J) = X(J)/A(J,J)
+                          TEMP = X(J)
+                          DO 50 I = J + 1,N
+                              X(I) = X(I) - TEMP*A(I,J)
+   50                     CONTINUE
+                      END IF
+   60             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 80 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
+                          TEMP = X(JX)
+                          IX = JX
+                          DO 70 I = J + 1,N
+                              IX = IX + INCX
+                              X(IX) = X(IX) - TEMP*A(I,J)
+   70                     CONTINUE
+                      END IF
+                      JX = JX + INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := inv( A' )*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = 1,N
+                      TEMP = X(J)
+                      DO 90 I = 1,J - 1
+                          TEMP = TEMP - A(I,J)*X(I)
+   90                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 120 J = 1,N
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 110 I = 1,J - 1
+                          TEMP = TEMP - A(I,J)*X(IX)
+                          IX = IX + INCX
+  110                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = N,1,-1
+                      TEMP = X(J)
+                      DO 130 I = N,J + 1,-1
+                          TEMP = TEMP - A(I,J)*X(I)
+  130                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 160 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = KX
+                      DO 150 I = N,J + 1,-1
+                          TEMP = TEMP - A(I,J)*X(IX)
+                          IX = IX - INCX
+  150                 CONTINUE
+                      IF (NOUNIT) TEMP = TEMP/A(J,J)
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DTRSV .
+*
+      END
Index: src/blas/dgemv.f
===================================================================
--- src/blas/dgemv.f	(revision 0)
+++ src/blas/dgemv.f	(revision 1)
@@ -0,0 +1,261 @@
+      SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER INCX,INCY,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*A'*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry with BETA non-zero, the incremented array Y
+*           must contain the vector y. On exit, Y is overwritten by the
+*           updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DGEMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      DO 50 I = 1,M
+                          Y(I) = Y(I) + TEMP*A(I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      DO 70 I = 1,M
+                          Y(IY) = Y(IY) + TEMP*A(I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 100 J = 1,N
+                  TEMP = ZERO
+                  DO 90 I = 1,M
+                      TEMP = TEMP + A(I,J)*X(I)
+   90             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  100         CONTINUE
+          ELSE
+              DO 120 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  DO 110 I = 1,M
+                      TEMP = TEMP + A(I,J)*X(IX)
+                      IX = IX + INCX
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DGEMV .
+*
+      END
Index: src/blas/zcopy.f
===================================================================
--- src/blas/zcopy.f	(revision 0)
+++ src/blas/zcopy.f	(revision 1)
@@ -0,0 +1,43 @@
+      SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY)
+*     .. Scalar Arguments ..
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*),ZY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     copies a vector, x, to a vector, y.
+*     jack dongarra, linpack, 4/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY
+*     ..
+      IF (N.LE.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          ZY(IY) = ZX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+   20 DO 30 I = 1,N
+          ZY(I) = ZX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/saxpy.f
===================================================================
--- src/blas/saxpy.f	(revision 0)
+++ src/blas/saxpy.f	(revision 1)
@@ -0,0 +1,62 @@
+      SUBROUTINE SAXPY(N,SA,SX,INCX,SY,INCY)
+*     .. Scalar Arguments ..
+      REAL SA
+      INTEGER INCX,INCY,N
+*     ..
+*     .. Array Arguments ..
+      REAL SX(*),SY(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     SAXPY constant times a vector plus a vector.
+*     uses unrolled loop for increments equal to one.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX,IY,M,MP1
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MOD
+*     ..
+      IF (N.LE.0) RETURN
+      IF (SA.EQ.0.0) RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+      IX = 1
+      IY = 1
+      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+      DO 10 I = 1,N
+          SY(IY) = SY(IY) + SA*SX(IX)
+          IX = IX + INCX
+          IY = IY + INCY
+   10 CONTINUE
+      RETURN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,4)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          SY(I) = SY(I) + SA*SX(I)
+   30 CONTINUE
+      IF (N.LT.4) RETURN
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,4
+          SY(I) = SY(I) + SA*SX(I)
+          SY(I+1) = SY(I+1) + SA*SX(I+1)
+          SY(I+2) = SY(I+2) + SA*SX(I+2)
+          SY(I+3) = SY(I+3) + SA*SX(I+3)
+   50 CONTINUE
+      RETURN
+      END
Index: src/blas/zher2k.f
===================================================================
--- src/blas/zher2k.f	(revision 0)
+++ src/blas/zher2k.f	(revision 1)
@@ -0,0 +1,368 @@
+      SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      DOUBLE PRECISION BETA
+      INTEGER K,LDA,LDB,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZHER2K  performs one of the hermitian rank 2k operations
+*
+*     C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) + beta*C,
+*
+*  or
+*
+*     C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A + beta*C,
+*
+*  where  alpha and beta  are scalars with  beta  real,  C is an  n by n
+*  hermitian matrix and  A and B  are  n by k matrices in the first case
+*  and  k by n  matrices in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'    C := alpha*A*conjg( B' )          +
+*                                         conjg( alpha )*B*conjg( A' ) +
+*                                         beta*C.
+*
+*              TRANS = 'C' or 'c'    C := alpha*conjg( A' )*B          +
+*                                         conjg( alpha )*conjg( B' )*A +
+*                                         beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns  of the  matrices  A and B,  and on  entry  with
+*           TRANS = 'C' or 'c',  K  specifies  the number of rows of the
+*           matrices  A and B.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, kb ), where kb is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  k by n  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDB must be at least  max( 1, n ), otherwise  LDB must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - COMPLEX*16          array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  hermitian matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  hermitian matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set,  they are assumed to be zero,  and on exit they
+*           are set to zero.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*  -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+*     Ed Anderson, Cray Research Inc.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DBLE,DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE PRECISION ONE
+      PARAMETER (ONE=1.0D+0)
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDB.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 12
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZHER2K',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.DBLE(ZERO)) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+                      C(J,J) = BETA*DBLE(C(J,J))
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.DBLE(ZERO)) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      C(J,J) = BETA*DBLE(C(J,J))
+                      DO 70 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) +
+*                   C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.DBLE(ZERO)) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J - 1
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                      C(J,J) = BETA*DBLE(C(J,J))
+                  ELSE
+                      C(J,J) = DBLE(C(J,J))
+                  END IF
+                  DO 120 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*DCONJG(B(J,L))
+                          TEMP2 = DCONJG(ALPHA*A(J,L))
+                          DO 110 I = 1,J - 1
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  110                     CONTINUE
+                          C(J,J) = DBLE(C(J,J)) +
+     +                             DBLE(A(J,L)*TEMP1+B(J,L)*TEMP2)
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.DBLE(ZERO)) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J + 1,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                      C(J,J) = BETA*DBLE(C(J,J))
+                  ELSE
+                      C(J,J) = DBLE(C(J,J))
+                  END IF
+                  DO 170 L = 1,K
+                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
+                          TEMP1 = ALPHA*DCONJG(B(J,L))
+                          TEMP2 = DCONJG(ALPHA*A(J,L))
+                          DO 160 I = J + 1,N
+                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
+     +                                 B(I,L)*TEMP2
+  160                     CONTINUE
+                          C(J,J) = DBLE(C(J,J)) +
+     +                             DBLE(A(J,L)*TEMP1+B(J,L)*TEMP2)
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A +
+*                   C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 190 L = 1,K
+                          TEMP1 = TEMP1 + DCONJG(A(L,I))*B(L,J)
+                          TEMP2 = TEMP2 + DCONJG(B(L,I))*A(L,J)
+  190                 CONTINUE
+                      IF (I.EQ.J) THEN
+                          IF (BETA.EQ.DBLE(ZERO)) THEN
+                              C(J,J) = DBLE(ALPHA*TEMP1+
+     +                                 DCONJG(ALPHA)*TEMP2)
+                          ELSE
+                              C(J,J) = BETA*DBLE(C(J,J)) +
+     +                                 DBLE(ALPHA*TEMP1+
+     +                                 DCONJG(ALPHA)*TEMP2)
+                          END IF
+                      ELSE
+                          IF (BETA.EQ.DBLE(ZERO)) THEN
+                              C(I,J) = ALPHA*TEMP1 + DCONJG(ALPHA)*TEMP2
+                          ELSE
+                              C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                                 DCONJG(ALPHA)*TEMP2
+                          END IF
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP1 = ZERO
+                      TEMP2 = ZERO
+                      DO 220 L = 1,K
+                          TEMP1 = TEMP1 + DCONJG(A(L,I))*B(L,J)
+                          TEMP2 = TEMP2 + DCONJG(B(L,I))*A(L,J)
+  220                 CONTINUE
+                      IF (I.EQ.J) THEN
+                          IF (BETA.EQ.DBLE(ZERO)) THEN
+                              C(J,J) = DBLE(ALPHA*TEMP1+
+     +                                 DCONJG(ALPHA)*TEMP2)
+                          ELSE
+                              C(J,J) = BETA*DBLE(C(J,J)) +
+     +                                 DBLE(ALPHA*TEMP1+
+     +                                 DCONJG(ALPHA)*TEMP2)
+                          END IF
+                      ELSE
+                          IF (BETA.EQ.DBLE(ZERO)) THEN
+                              C(I,J) = ALPHA*TEMP1 + DCONJG(ALPHA)*TEMP2
+                          ELSE
+                              C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 +
+     +                                 DCONJG(ALPHA)*TEMP2
+                          END IF
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZHER2K.
+*
+      END
Index: src/blas/strsm.f
===================================================================
--- src/blas/strsm.f	(revision 0)
+++ src/blas/strsm.f	(revision 1)
@@ -0,0 +1,373 @@
+      SUBROUTINE STRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STRSM  solves one of the matrix equations
+*
+*     op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
+*
+*  where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'.
+*
+*  The matrix X is overwritten on B.
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry, SIDE specifies whether op( A ) appears on the left
+*           or right of X as follows:
+*
+*              SIDE = 'L' or 'l'   op( A )*X = alpha*B.
+*
+*              SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - REAL             array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain  the  right-hand  side  matrix  B,  and  on exit  is
+*           overwritten by the solution matrix  X.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STRSM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*inv( A )*B.
+*
+              IF (UPPER) THEN
+                  DO 60 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 30 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   30                     CONTINUE
+                      END IF
+                      DO 50 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 40 I = 1,K - 1
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   40                         CONTINUE
+                          END IF
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 100 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 70 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+   70                     CONTINUE
+                      END IF
+                      DO 90 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
+                              DO 80 I = K + 1,M
+                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
+   80                         CONTINUE
+                          END IF
+   90                 CONTINUE
+  100             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*inv( A' )*B.
+*
+              IF (UPPER) THEN
+                  DO 130 J = 1,N
+                      DO 120 I = 1,M
+                          TEMP = ALPHA*B(I,J)
+                          DO 110 K = 1,I - 1
+                              TEMP = TEMP - A(K,I)*B(K,J)
+  110                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          B(I,J) = TEMP
+  120                 CONTINUE
+  130             CONTINUE
+              ELSE
+                  DO 160 J = 1,N
+                      DO 150 I = M,1,-1
+                          TEMP = ALPHA*B(I,J)
+                          DO 140 K = I + 1,M
+                              TEMP = TEMP - A(K,I)*B(K,J)
+  140                     CONTINUE
+                          IF (NOUNIT) TEMP = TEMP/A(I,I)
+                          B(I,J) = TEMP
+  150                 CONTINUE
+  160             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*inv( A ).
+*
+              IF (UPPER) THEN
+                  DO 210 J = 1,N
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 170 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  170                     CONTINUE
+                      END IF
+                      DO 190 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 180 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  180                         CONTINUE
+                          END IF
+  190                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 200 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  200                     CONTINUE
+                      END IF
+  210             CONTINUE
+              ELSE
+                  DO 260 J = N,1,-1
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 220 I = 1,M
+                              B(I,J) = ALPHA*B(I,J)
+  220                     CONTINUE
+                      END IF
+                      DO 240 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              DO 230 I = 1,M
+                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
+  230                         CONTINUE
+                          END IF
+  240                 CONTINUE
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(J,J)
+                          DO 250 I = 1,M
+                              B(I,J) = TEMP*B(I,J)
+  250                     CONTINUE
+                      END IF
+  260             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*inv( A' ).
+*
+              IF (UPPER) THEN
+                  DO 310 K = N,1,-1
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(K,K)
+                          DO 270 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  270                     CONTINUE
+                      END IF
+                      DO 290 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = A(J,K)
+                              DO 280 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  280                         CONTINUE
+                          END IF
+  290                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 300 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  300                     CONTINUE
+                      END IF
+  310             CONTINUE
+              ELSE
+                  DO 360 K = 1,N
+                      IF (NOUNIT) THEN
+                          TEMP = ONE/A(K,K)
+                          DO 320 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  320                     CONTINUE
+                      END IF
+                      DO 340 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              TEMP = A(J,K)
+                              DO 330 I = 1,M
+                                  B(I,J) = B(I,J) - TEMP*B(I,K)
+  330                         CONTINUE
+                          END IF
+  340                 CONTINUE
+                      IF (ALPHA.NE.ONE) THEN
+                          DO 350 I = 1,M
+                              B(I,K) = ALPHA*B(I,K)
+  350                     CONTINUE
+                      END IF
+  360             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STRSM .
+*
+      END
Index: src/blas/sgemm.f
===================================================================
--- src/blas/sgemm.f	(revision 0)
+++ src/blas/sgemm.f	(revision 1)
@@ -0,0 +1,313 @@
+      SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER K,LDA,LDB,LDC,M,N
+      CHARACTER TRANSA,TRANSB
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),B(LDB,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SGEMM  performs one of the matrix-matrix operations
+*
+*     C := alpha*op( A )*op( B ) + beta*C,
+*
+*  where  op( X ) is one of
+*
+*     op( X ) = X   or   op( X ) = X',
+*
+*  alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*  an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n',  op( A ) = A.
+*
+*              TRANSA = 'T' or 't',  op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c',  op( A ) = A'.
+*
+*           Unchanged on exit.
+*
+*  TRANSB - CHARACTER*1.
+*           On entry, TRANSB specifies the form of op( B ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSB = 'N' or 'n',  op( B ) = B.
+*
+*              TRANSB = 'T' or 't',  op( B ) = B'.
+*
+*              TRANSB = 'C' or 'c',  op( B ) = B'.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry,  M  specifies  the number  of rows  of the  matrix
+*           op( A )  and of the  matrix  C.  M  must  be at least  zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N  specifies the number  of columns of the matrix
+*           op( B ) and the number of columns of the matrix C. N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry,  K  specifies  the number of columns of the matrix
+*           op( A ) and the number of rows of the matrix op( B ). K must
+*           be at least  zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
+*           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by m  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. When  TRANSA = 'N' or 'n' then
+*           LDA must be at least  max( 1, m ), otherwise  LDA must be at
+*           least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  B      - REAL             array of DIMENSION ( LDB, kb ), where kb is
+*           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
+*           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
+*           part of the array  B  must contain the matrix  B,  otherwise
+*           the leading  n by k  part of the array  B  must contain  the
+*           matrix B.
+*           Unchanged on exit.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in the calling (sub) program. When  TRANSB = 'N' or 'n' then
+*           LDB must be at least  max( 1, k ), otherwise  LDB must be at
+*           least  max( 1, n ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
+*           supplied as zero then C need not be set on input.
+*           Unchanged on exit.
+*
+*  C      - REAL             array of DIMENSION ( LDC, n ).
+*           Before entry, the leading  m by n  part of the array  C must
+*           contain the matrix  C,  except when  beta  is zero, in which
+*           case C need not be set on entry.
+*           On exit, the array  C  is overwritten by the  m by n  matrix
+*           ( alpha*op( A )*op( B ) + beta*C ).
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
+      LOGICAL NOTA,NOTB
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
+*     transposed and set  NROWA, NCOLA and  NROWB  as the number of rows
+*     and  columns of  A  and the  number of  rows  of  B  respectively.
+*
+      NOTA = LSAME(TRANSA,'N')
+      NOTB = LSAME(TRANSB,'N')
+      IF (NOTA) THEN
+          NROWA = M
+          NCOLA = K
+      ELSE
+          NROWA = K
+          NCOLA = M
+      END IF
+      IF (NOTB) THEN
+          NROWB = K
+      ELSE
+          NROWB = N
+      END IF
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF ((.NOT.NOTA) .AND. (.NOT.LSAME(TRANSA,'C')) .AND.
+     +    (.NOT.LSAME(TRANSA,'T'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.NOTB) .AND. (.NOT.LSAME(TRANSB,'C')) .AND.
+     +         (.NOT.LSAME(TRANSB,'T'))) THEN
+          INFO = 2
+      ELSE IF (M.LT.0) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (K.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 8
+      ELSE IF (LDB.LT.MAX(1,NROWB)) THEN
+          INFO = 10
+      ELSE IF (LDC.LT.MAX(1,M)) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SGEMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And if  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (BETA.EQ.ZERO) THEN
+              DO 20 J = 1,N
+                  DO 10 I = 1,M
+                      C(I,J) = ZERO
+   10             CONTINUE
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  DO 30 I = 1,M
+                      C(I,J) = BETA*C(I,J)
+   30             CONTINUE
+   40         CONTINUE
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (NOTB) THEN
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B + beta*C.
+*
+              DO 90 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 50 I = 1,M
+                          C(I,J) = ZERO
+   50                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 60 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+   60                 CONTINUE
+                  END IF
+                  DO 80 L = 1,K
+                      IF (B(L,J).NE.ZERO) THEN
+                          TEMP = ALPHA*B(L,J)
+                          DO 70 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+   70                     CONTINUE
+                      END IF
+   80             CONTINUE
+   90         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B + beta*C
+*
+              DO 120 J = 1,N
+                  DO 110 I = 1,M
+                      TEMP = ZERO
+                      DO 100 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(L,J)
+  100                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  110             CONTINUE
+  120         CONTINUE
+          END IF
+      ELSE
+          IF (NOTA) THEN
+*
+*           Form  C := alpha*A*B' + beta*C
+*
+              DO 170 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 130 I = 1,M
+                          C(I,J) = ZERO
+  130                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 140 I = 1,M
+                          C(I,J) = BETA*C(I,J)
+  140                 CONTINUE
+                  END IF
+                  DO 160 L = 1,K
+                      IF (B(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*B(J,L)
+                          DO 150 I = 1,M
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  150                     CONTINUE
+                      END IF
+  160             CONTINUE
+  170         CONTINUE
+          ELSE
+*
+*           Form  C := alpha*A'*B' + beta*C
+*
+              DO 200 J = 1,N
+                  DO 190 I = 1,M
+                      TEMP = ZERO
+                      DO 180 L = 1,K
+                          TEMP = TEMP + A(L,I)*B(J,L)
+  180                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  190             CONTINUE
+  200         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SGEMM .
+*
+      END
Index: src/blas/stpmv.f
===================================================================
--- src/blas/stpmv.f	(revision 0)
+++ src/blas/stpmv.f	(revision 1)
@@ -0,0 +1,290 @@
+      SUBROUTINE STPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL AP(*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STPMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  AP     - REAL             array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*           respectively, and so on.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular matrix packed sequentially,
+*           column by column, so that AP( 1 ) contains a( 1, 1 ),
+*           AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*           respectively, and so on.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,K,KK,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STPMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of AP are
+*     accessed sequentially with one pass through AP.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x:= A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K + 1
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
+                      END IF
+                      KK = KK + J
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 K = KK,KK + J - 2
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
+                      END IF
+                      JX = JX + INCX
+                      KK = KK + J
+   40             CONTINUE
+              END IF
+          ELSE
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          K = KK
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*AP(K)
+                              K = K - 1
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
+                      END IF
+                      KK = KK - (N-J+1)
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 K = KK,KK - (N- (J+1)),-1
+                              X(IX) = X(IX) + TEMP*AP(K)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
+                      END IF
+                      JX = JX - INCX
+                      KK = KK - (N-J+1)
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              KK = (N* (N+1))/2
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      K = KK - 1
+                      DO 90 I = J - 1,1,-1
+                          TEMP = TEMP + AP(K)*X(I)
+                          K = K - 1
+   90                 CONTINUE
+                      X(J) = TEMP
+                      KK = KK - J
+  100             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      DO 110 K = KK - 1,KK - J + 1,-1
+                          IX = IX - INCX
+                          TEMP = TEMP + AP(K)*X(IX)
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+                      KK = KK - J
+  120             CONTINUE
+              END IF
+          ELSE
+              KK = 1
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      K = KK + 1
+                      DO 130 I = J + 1,N
+                          TEMP = TEMP + AP(K)*X(I)
+                          K = K + 1
+  130                 CONTINUE
+                      X(J) = TEMP
+                      KK = KK + (N-J+1)
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*AP(KK)
+                      DO 150 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          TEMP = TEMP + AP(K)*X(IX)
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+                      KK = KK + (N-J+1)
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STPMV .
+*
+      END
Index: src/blas/sspr2.f
===================================================================
--- src/blas/sspr2.f	(revision 0)
+++ src/blas/sspr2.f	(revision 1)
@@ -0,0 +1,230 @@
+      SUBROUTINE SSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*     .. Scalar Arguments ..
+      REAL ALPHA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSPR2  performs the symmetric rank 2 operation
+*
+*     A := alpha*x*y' + alpha*y*x' + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an
+*  n by n symmetric matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - REAL             array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the symmetric matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSPR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      K = KK
+                      DO 10 I = 1,J
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   10                 CONTINUE
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = KX
+                      IY = KY
+                      DO 30 K = KK,KK + J - 1
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(J)
+                      TEMP2 = ALPHA*X(J)
+                      K = KK
+                      DO 50 I = J,N
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   50                 CONTINUE
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*Y(JY)
+                      TEMP2 = ALPHA*X(JX)
+                      IX = JX
+                      IY = JY
+                      DO 70 K = KK,KK + N - J
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSPR2 .
+*
+      END
Index: src/blas/dasum.f
===================================================================
--- src/blas/dasum.f	(revision 0)
+++ src/blas/dasum.f	(revision 1)
@@ -0,0 +1,57 @@
+      DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION DX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     takes the sum of the absolute values.
+*     jack dongarra, linpack, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      DOUBLE PRECISION DTEMP
+      INTEGER I,M,MP1,NINCX
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DABS,MOD
+*     ..
+      DASUM = 0.0d0
+      DTEMP = 0.0d0
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      NINCX = N*INCX
+      DO 10 I = 1,NINCX,INCX
+          DTEMP = DTEMP + DABS(DX(I))
+   10 CONTINUE
+      DASUM = DTEMP
+      RETURN
+*
+*        code for increment equal to 1
+*
+*
+*        clean-up loop
+*
+   20 M = MOD(N,6)
+      IF (M.EQ.0) GO TO 40
+      DO 30 I = 1,M
+          DTEMP = DTEMP + DABS(DX(I))
+   30 CONTINUE
+      IF (N.LT.6) GO TO 60
+   40 MP1 = M + 1
+      DO 50 I = MP1,N,6
+          DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) + DABS(DX(I+2)) +
+     +            DABS(DX(I+3)) + DABS(DX(I+4)) + DABS(DX(I+5))
+   50 CONTINUE
+   60 DASUM = DTEMP
+      RETURN
+      END
Index: src/blas/ztrmm.f
===================================================================
--- src/blas/ztrmm.f	(revision 0)
+++ src/blas/ztrmm.f	(revision 1)
@@ -0,0 +1,383 @@
+      SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA
+      INTEGER LDA,LDB,M,N
+      CHARACTER DIAG,SIDE,TRANSA,UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),B(LDB,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZTRMM  performs one of the matrix-matrix operations
+*
+*     B := alpha*op( A )*B,   or   B := alpha*B*op( A )
+*
+*  where  alpha  is a scalar,  B  is an m by n matrix,  A  is a unit, or
+*  non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
+*
+*     op( A ) = A   or   op( A ) = A'   or   op( A ) = conjg( A' ).
+*
+*  Arguments
+*  ==========
+*
+*  SIDE   - CHARACTER*1.
+*           On entry,  SIDE specifies whether  op( A ) multiplies B from
+*           the left or right as follows:
+*
+*              SIDE = 'L' or 'l'   B := alpha*op( A )*B.
+*
+*              SIDE = 'R' or 'r'   B := alpha*B*op( A ).
+*
+*           Unchanged on exit.
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix A is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANSA - CHARACTER*1.
+*           On entry, TRANSA specifies the form of op( A ) to be used in
+*           the matrix multiplication as follows:
+*
+*              TRANSA = 'N' or 'n'   op( A ) = A.
+*
+*              TRANSA = 'T' or 't'   op( A ) = A'.
+*
+*              TRANSA = 'C' or 'c'   op( A ) = conjg( A' ).
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit triangular
+*           as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of B. M must be at
+*           least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of B.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry,  ALPHA specifies the scalar  alpha. When  alpha is
+*           zero then  A is not referenced and  B need not be set before
+*           entry.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, k ), where k is m
+*           when  SIDE = 'L' or 'l'  and is  n  when  SIDE = 'R' or 'r'.
+*           Before entry  with  UPLO = 'U' or 'u',  the  leading  k by k
+*           upper triangular part of the array  A must contain the upper
+*           triangular matrix  and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry  with  UPLO = 'L' or 'l',  the  leading  k by k
+*           lower triangular part of the array  A must contain the lower
+*           triangular matrix  and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u',  the diagonal elements of
+*           A  are not referenced either,  but are assumed to be  unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program.  When  SIDE = 'L' or 'l'  then
+*           LDA  must be at least  max( 1, m ),  when  SIDE = 'R' or 'r'
+*           then LDA must be at least max( 1, n ).
+*           Unchanged on exit.
+*
+*  B      - COMPLEX*16       array of DIMENSION ( LDB, n ).
+*           Before entry,  the leading  m by n part of the array  B must
+*           contain the matrix  B,  and  on exit  is overwritten  by the
+*           transformed matrix.
+*
+*  LDB    - INTEGER.
+*           On entry, LDB specifies the first dimension of B as declared
+*           in  the  calling  (sub)  program.   LDB  must  be  at  least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,J,K,NROWA
+      LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
+*     ..
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*
+*     Test the input parameters.
+*
+      LSIDE = LSAME(SIDE,'L')
+      IF (LSIDE) THEN
+          NROWA = M
+      ELSE
+          NROWA = N
+      END IF
+      NOCONJ = LSAME(TRANSA,'T')
+      NOUNIT = LSAME(DIAG,'N')
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 2
+      ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND.
+     +         (.NOT.LSAME(TRANSA,'T')) .AND.
+     +         (.NOT.LSAME(TRANSA,'C'))) THEN
+          INFO = 3
+      ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN
+          INFO = 4
+      ELSE IF (M.LT.0) THEN
+          INFO = 5
+      ELSE IF (N.LT.0) THEN
+          INFO = 6
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 9
+      ELSE IF (LDB.LT.MAX(1,M)) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZTRMM ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (M.EQ.0 .OR. N.EQ.0) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          DO 20 J = 1,N
+              DO 10 I = 1,M
+                  B(I,J) = ZERO
+   10         CONTINUE
+   20     CONTINUE
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSIDE) THEN
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*A*B.
+*
+              IF (UPPER) THEN
+                  DO 50 J = 1,N
+                      DO 40 K = 1,M
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              DO 30 I = 1,K - 1
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   30                         CONTINUE
+                              IF (NOUNIT) TEMP = TEMP*A(K,K)
+                              B(K,J) = TEMP
+                          END IF
+   40                 CONTINUE
+   50             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 K = M,1,-1
+                          IF (B(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*B(K,J)
+                              B(K,J) = TEMP
+                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
+                              DO 60 I = K + 1,M
+                                  B(I,J) = B(I,J) + TEMP*A(I,K)
+   60                         CONTINUE
+                          END IF
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*A'*B   or   B := alpha*conjg( A' )*B.
+*
+              IF (UPPER) THEN
+                  DO 120 J = 1,N
+                      DO 110 I = M,1,-1
+                          TEMP = B(I,J)
+                          IF (NOCONJ) THEN
+                              IF (NOUNIT) TEMP = TEMP*A(I,I)
+                              DO 90 K = 1,I - 1
+                                  TEMP = TEMP + A(K,I)*B(K,J)
+   90                         CONTINUE
+                          ELSE
+                              IF (NOUNIT) TEMP = TEMP*DCONJG(A(I,I))
+                              DO 100 K = 1,I - 1
+                                  TEMP = TEMP + DCONJG(A(K,I))*B(K,J)
+  100                         CONTINUE
+                          END IF
+                          B(I,J) = ALPHA*TEMP
+  110                 CONTINUE
+  120             CONTINUE
+              ELSE
+                  DO 160 J = 1,N
+                      DO 150 I = 1,M
+                          TEMP = B(I,J)
+                          IF (NOCONJ) THEN
+                              IF (NOUNIT) TEMP = TEMP*A(I,I)
+                              DO 130 K = I + 1,M
+                                  TEMP = TEMP + A(K,I)*B(K,J)
+  130                         CONTINUE
+                          ELSE
+                              IF (NOUNIT) TEMP = TEMP*DCONJG(A(I,I))
+                              DO 140 K = I + 1,M
+                                  TEMP = TEMP + DCONJG(A(K,I))*B(K,J)
+  140                         CONTINUE
+                          END IF
+                          B(I,J) = ALPHA*TEMP
+  150                 CONTINUE
+  160             CONTINUE
+              END IF
+          END IF
+      ELSE
+          IF (LSAME(TRANSA,'N')) THEN
+*
+*           Form  B := alpha*B*A.
+*
+              IF (UPPER) THEN
+                  DO 200 J = N,1,-1
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 170 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  170                 CONTINUE
+                      DO 190 K = 1,J - 1
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 180 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  180                         CONTINUE
+                          END IF
+  190                 CONTINUE
+  200             CONTINUE
+              ELSE
+                  DO 240 J = 1,N
+                      TEMP = ALPHA
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 210 I = 1,M
+                          B(I,J) = TEMP*B(I,J)
+  210                 CONTINUE
+                      DO 230 K = J + 1,N
+                          IF (A(K,J).NE.ZERO) THEN
+                              TEMP = ALPHA*A(K,J)
+                              DO 220 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  220                         CONTINUE
+                          END IF
+  230                 CONTINUE
+  240             CONTINUE
+              END IF
+          ELSE
+*
+*           Form  B := alpha*B*A'   or   B := alpha*B*conjg( A' ).
+*
+              IF (UPPER) THEN
+                  DO 280 K = 1,N
+                      DO 260 J = 1,K - 1
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = ALPHA*A(J,K)
+                              ELSE
+                                  TEMP = ALPHA*DCONJG(A(J,K))
+                              END IF
+                              DO 250 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  250                         CONTINUE
+                          END IF
+  260                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = TEMP*A(K,K)
+                          ELSE
+                              TEMP = TEMP*DCONJG(A(K,K))
+                          END IF
+                      END IF
+                      IF (TEMP.NE.ONE) THEN
+                          DO 270 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  270                     CONTINUE
+                      END IF
+  280             CONTINUE
+              ELSE
+                  DO 320 K = N,1,-1
+                      DO 300 J = K + 1,N
+                          IF (A(J,K).NE.ZERO) THEN
+                              IF (NOCONJ) THEN
+                                  TEMP = ALPHA*A(J,K)
+                              ELSE
+                                  TEMP = ALPHA*DCONJG(A(J,K))
+                              END IF
+                              DO 290 I = 1,M
+                                  B(I,J) = B(I,J) + TEMP*B(I,K)
+  290                         CONTINUE
+                          END IF
+  300                 CONTINUE
+                      TEMP = ALPHA
+                      IF (NOUNIT) THEN
+                          IF (NOCONJ) THEN
+                              TEMP = TEMP*A(K,K)
+                          ELSE
+                              TEMP = TEMP*DCONJG(A(K,K))
+                          END IF
+                      END IF
+                      IF (TEMP.NE.ONE) THEN
+                          DO 310 I = 1,M
+                              B(I,K) = TEMP*B(I,K)
+  310                     CONTINUE
+                      END IF
+  320             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZTRMM .
+*
+      END
Index: src/blas/srotmg.f
===================================================================
--- src/blas/srotmg.f	(revision 0)
+++ src/blas/srotmg.f	(revision 1)
@@ -0,0 +1,208 @@
+      SUBROUTINE SROTMG(SD1,SD2,SX1,SY1,SPARAM)
+*     .. Scalar Arguments ..
+      REAL SD1,SD2,SX1,SY1
+*     ..
+*     .. Array Arguments ..
+      REAL SPARAM(5)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+*     THE SECOND COMPONENT OF THE 2-VECTOR  (SQRT(SD1)*SX1,SQRT(SD2)*
+*     SY2)**T.
+*     WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*
+*     SFLAG=-1.E0     SFLAG=0.E0        SFLAG=1.E0     SFLAG=-2.E0
+*
+*       (SH11  SH12)    (1.E0  SH12)    (SH11  1.E0)    (1.E0  0.E0)
+*     H=(          )    (          )    (          )    (          )
+*       (SH21  SH22),   (SH21  1.E0),   (-1.E0 SH22),   (0.E0  1.E0).
+*     LOCATIONS 2-4 OF SPARAM CONTAIN SH11,SH21,SH12, AND SH22
+*     RESPECTIVELY. (VALUES OF 1.E0, -1.E0, OR 0.E0 IMPLIED BY THE
+*     VALUE OF SPARAM(1) ARE NOT STORED IN SPARAM.)
+*
+*     THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+*     INEXACT.  THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+*     OF SD1 AND SD2.  ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+*
+*
+*  Arguments
+*  =========
+*
+*
+*  SD1    (input/output) REAL
+*
+*  SD2    (input/output) REAL
+*
+*  SX1    (input/output) REAL
+*
+*  SY1    (input) REAL
+*
+*
+*  SPARAM (input/output)  REAL array, dimension 5
+*     SPARAM(1)=SFLAG
+*     SPARAM(2)=SH11
+*     SPARAM(3)=SH21
+*     SPARAM(4)=SH12
+*     SPARAM(5)=SH22
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      REAL GAM,GAMSQ,ONE,RGAMSQ,SFLAG,SH11,SH12,SH21,SH22,SP1,SP2,SQ1,
+     +     SQ2,STEMP,SU,TWO,ZERO
+      INTEGER IGO
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC ABS
+*     ..
+*     .. Data statements ..
+*
+      DATA ZERO,ONE,TWO/0.E0,1.E0,2.E0/
+      DATA GAM,GAMSQ,RGAMSQ/4096.E0,1.67772E7,5.96046E-8/
+*     ..
+
+      IF (.NOT.SD1.LT.ZERO) GO TO 10
+*       GO ZERO-H-D-AND-SX1..
+      GO TO 60
+   10 CONTINUE
+*     CASE-SD1-NONNEGATIVE
+      SP2 = SD2*SY1
+      IF (.NOT.SP2.EQ.ZERO) GO TO 20
+      SFLAG = -TWO
+      GO TO 260
+*     REGULAR-CASE..
+   20 CONTINUE
+      SP1 = SD1*SX1
+      SQ2 = SP2*SY1
+      SQ1 = SP1*SX1
+*
+      IF (.NOT.ABS(SQ1).GT.ABS(SQ2)) GO TO 40
+      SH21 = -SY1/SX1
+      SH12 = SP2/SP1
+*
+      SU = ONE - SH12*SH21
+*
+      IF (.NOT.SU.LE.ZERO) GO TO 30
+*         GO ZERO-H-D-AND-SX1..
+      GO TO 60
+   30 CONTINUE
+      SFLAG = ZERO
+      SD1 = SD1/SU
+      SD2 = SD2/SU
+      SX1 = SX1*SU
+*         GO SCALE-CHECK..
+      GO TO 100
+   40 CONTINUE
+      IF (.NOT.SQ2.LT.ZERO) GO TO 50
+*         GO ZERO-H-D-AND-SX1..
+      GO TO 60
+   50 CONTINUE
+      SFLAG = ONE
+      SH11 = SP1/SP2
+      SH22 = SX1/SY1
+      SU = ONE + SH11*SH22
+      STEMP = SD2/SU
+      SD2 = SD1/SU
+      SD1 = STEMP
+      SX1 = SY1*SU
+*         GO SCALE-CHECK
+      GO TO 100
+*     PROCEDURE..ZERO-H-D-AND-SX1..
+   60 CONTINUE
+      SFLAG = -ONE
+      SH11 = ZERO
+      SH12 = ZERO
+      SH21 = ZERO
+      SH22 = ZERO
+*
+      SD1 = ZERO
+      SD2 = ZERO
+      SX1 = ZERO
+*         RETURN..
+      GO TO 220
+*     PROCEDURE..FIX-H..
+   70 CONTINUE
+      IF (.NOT.SFLAG.GE.ZERO) GO TO 90
+*
+      IF (.NOT.SFLAG.EQ.ZERO) GO TO 80
+      SH11 = ONE
+      SH22 = ONE
+      SFLAG = -ONE
+      GO TO 90
+   80 CONTINUE
+      SH21 = -ONE
+      SH12 = ONE
+      SFLAG = -ONE
+   90 CONTINUE
+      GO TO IGO(120,150,180,210)
+*     PROCEDURE..SCALE-CHECK
+  100 CONTINUE
+  110 CONTINUE
+      IF (.NOT.SD1.LE.RGAMSQ) GO TO 130
+      IF (SD1.EQ.ZERO) GO TO 160
+      ASSIGN 120 TO IGO
+*              FIX-H..
+      GO TO 70
+  120 CONTINUE
+      SD1 = SD1*GAM**2
+      SX1 = SX1/GAM
+      SH11 = SH11/GAM
+      SH12 = SH12/GAM
+      GO TO 110
+  130 CONTINUE
+  140 CONTINUE
+      IF (.NOT.SD1.GE.GAMSQ) GO TO 160
+      ASSIGN 150 TO IGO
+*              FIX-H..
+      GO TO 70
+  150 CONTINUE
+      SD1 = SD1/GAM**2
+      SX1 = SX1*GAM
+      SH11 = SH11*GAM
+      SH12 = SH12*GAM
+      GO TO 140
+  160 CONTINUE
+  170 CONTINUE
+      IF (.NOT.ABS(SD2).LE.RGAMSQ) GO TO 190
+      IF (SD2.EQ.ZERO) GO TO 220
+      ASSIGN 180 TO IGO
+*              FIX-H..
+      GO TO 70
+  180 CONTINUE
+      SD2 = SD2*GAM**2
+      SH21 = SH21/GAM
+      SH22 = SH22/GAM
+      GO TO 170
+  190 CONTINUE
+  200 CONTINUE
+      IF (.NOT.ABS(SD2).GE.GAMSQ) GO TO 220
+      ASSIGN 210 TO IGO
+*              FIX-H..
+      GO TO 70
+  210 CONTINUE
+      SD2 = SD2/GAM**2
+      SH21 = SH21*GAM
+      SH22 = SH22*GAM
+      GO TO 200
+  220 CONTINUE
+      IF (SFLAG) 250,230,240
+  230 CONTINUE
+      SPARAM(3) = SH21
+      SPARAM(4) = SH12
+      GO TO 260
+  240 CONTINUE
+      SPARAM(2) = SH11
+      SPARAM(5) = SH22
+      GO TO 260
+  250 CONTINUE
+      SPARAM(2) = SH11
+      SPARAM(3) = SH21
+      SPARAM(4) = SH12
+      SPARAM(5) = SH22
+  260 CONTINUE
+      SPARAM(1) = SFLAG
+      RETURN
+      END
Index: src/blas/strmv.f
===================================================================
--- src/blas/strmv.f	(revision 0)
+++ src/blas/strmv.f	(revision 1)
@@ -0,0 +1,278 @@
+      SUBROUTINE STRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*     .. Scalar Arguments ..
+      INTEGER INCX,LDA,N
+      CHARACTER DIAG,TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),X(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  STRMV  performs one of the matrix-vector operations
+*
+*     x := A*x,   or   x := A'*x,
+*
+*  where x is an n element vector and  A is an n by n unit, or non-unit,
+*  upper or lower triangular matrix.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the matrix is an upper or
+*           lower triangular matrix as follows:
+*
+*              UPLO = 'U' or 'u'   A is an upper triangular matrix.
+*
+*              UPLO = 'L' or 'l'   A is a lower triangular matrix.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   x := A*x.
+*
+*              TRANS = 'T' or 't'   x := A'*x.
+*
+*              TRANS = 'C' or 'c'   x := A'*x.
+*
+*           Unchanged on exit.
+*
+*  DIAG   - CHARACTER*1.
+*           On entry, DIAG specifies whether or not A is unit
+*           triangular as follows:
+*
+*              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
+*
+*              DIAG = 'N' or 'n'   A is not assumed to be unit
+*                                  triangular.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, n ).
+*           Before entry with  UPLO = 'U' or 'u', the leading n by n
+*           upper triangular part of the array A must contain the upper
+*           triangular matrix and the strictly lower triangular part of
+*           A is not referenced.
+*           Before entry with UPLO = 'L' or 'l', the leading n by n
+*           lower triangular part of the array A must contain the lower
+*           triangular matrix and the strictly upper triangular part of
+*           A is not referenced.
+*           Note that when  DIAG = 'U' or 'u', the diagonal elements of
+*           A are not referenced either, but are assumed to be unity.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*  X      - REAL             array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x. On exit, X is overwritten with the
+*           tranformed vector x.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      REAL ZERO
+      PARAMETER (ZERO=0.0E+0)
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,IX,J,JX,KX
+      LOGICAL NOUNIT
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +         .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 2
+      ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN
+          INFO = 3
+      ELSE IF (N.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,N)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('STRMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF (N.EQ.0) RETURN
+*
+      NOUNIT = LSAME(DIAG,'N')
+*
+*     Set up the start point in X if the increment is not unity. This
+*     will be  ( N - 1 )*INCX  too small for descending loops.
+*
+      IF (INCX.LE.0) THEN
+          KX = 1 - (N-1)*INCX
+      ELSE IF (INCX.NE.1) THEN
+          KX = 1
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  x := A*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 20 J = 1,N
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 10 I = 1,J - 1
+                              X(I) = X(I) + TEMP*A(I,J)
+   10                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   20             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 40 J = 1,N
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 30 I = 1,J - 1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX + INCX
+   30                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX + INCX
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 60 J = N,1,-1
+                      IF (X(J).NE.ZERO) THEN
+                          TEMP = X(J)
+                          DO 50 I = N,J + 1,-1
+                              X(I) = X(I) + TEMP*A(I,J)
+   50                     CONTINUE
+                          IF (NOUNIT) X(J) = X(J)*A(J,J)
+                      END IF
+   60             CONTINUE
+              ELSE
+                  KX = KX + (N-1)*INCX
+                  JX = KX
+                  DO 80 J = N,1,-1
+                      IF (X(JX).NE.ZERO) THEN
+                          TEMP = X(JX)
+                          IX = KX
+                          DO 70 I = N,J + 1,-1
+                              X(IX) = X(IX) + TEMP*A(I,J)
+                              IX = IX - INCX
+   70                     CONTINUE
+                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
+                      END IF
+                      JX = JX - INCX
+   80             CONTINUE
+              END IF
+          END IF
+      ELSE
+*
+*        Form  x := A'*x.
+*
+          IF (LSAME(UPLO,'U')) THEN
+              IF (INCX.EQ.1) THEN
+                  DO 100 J = N,1,-1
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 90 I = J - 1,1,-1
+                          TEMP = TEMP + A(I,J)*X(I)
+   90                 CONTINUE
+                      X(J) = TEMP
+  100             CONTINUE
+              ELSE
+                  JX = KX + (N-1)*INCX
+                  DO 120 J = N,1,-1
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 110 I = J - 1,1,-1
+                          IX = IX - INCX
+                          TEMP = TEMP + A(I,J)*X(IX)
+  110                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX - INCX
+  120             CONTINUE
+              END IF
+          ELSE
+              IF (INCX.EQ.1) THEN
+                  DO 140 J = 1,N
+                      TEMP = X(J)
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 130 I = J + 1,N
+                          TEMP = TEMP + A(I,J)*X(I)
+  130                 CONTINUE
+                      X(J) = TEMP
+  140             CONTINUE
+              ELSE
+                  JX = KX
+                  DO 160 J = 1,N
+                      TEMP = X(JX)
+                      IX = JX
+                      IF (NOUNIT) TEMP = TEMP*A(J,J)
+                      DO 150 I = J + 1,N
+                          IX = IX + INCX
+                          TEMP = TEMP + A(I,J)*X(IX)
+  150                 CONTINUE
+                      X(JX) = TEMP
+                      JX = JX + INCX
+  160             CONTINUE
+              END IF
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of STRMV .
+*
+      END
Index: src/blas/ssyrk.f
===================================================================
--- src/blas/ssyrk.f	(revision 0)
+++ src/blas/ssyrk.f	(revision 1)
@@ -0,0 +1,295 @@
+      SUBROUTINE SSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*     .. Scalar Arguments ..
+      REAL ALPHA,BETA
+      INTEGER K,LDA,LDC,N
+      CHARACTER TRANS,UPLO
+*     ..
+*     .. Array Arguments ..
+      REAL A(LDA,*),C(LDC,*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  SSYRK  performs one of the symmetric rank k operations
+*
+*     C := alpha*A*A' + beta*C,
+*
+*  or
+*
+*     C := alpha*A'*A + beta*C,
+*
+*  where  alpha and beta  are scalars, C is an  n by n  symmetric matrix
+*  and  A  is an  n by k  matrix in the first case and a  k by n  matrix
+*  in the second case.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On  entry,   UPLO  specifies  whether  the  upper  or  lower
+*           triangular  part  of the  array  C  is to be  referenced  as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   Only the  upper triangular part of  C
+*                                  is to be referenced.
+*
+*              UPLO = 'L' or 'l'   Only the  lower triangular part of  C
+*                                  is to be referenced.
+*
+*           Unchanged on exit.
+*
+*  TRANS  - CHARACTER*1.
+*           On entry,  TRANS  specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   C := alpha*A*A' + beta*C.
+*
+*              TRANS = 'T' or 't'   C := alpha*A'*A + beta*C.
+*
+*              TRANS = 'C' or 'c'   C := alpha*A'*A + beta*C.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry,  N specifies the order of the matrix C.  N must be
+*           at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry with  TRANS = 'N' or 'n',  K  specifies  the number
+*           of  columns   of  the   matrix   A,   and  on   entry   with
+*           TRANS = 'T' or 't' or 'C' or 'c',  K  specifies  the  number
+*           of rows of the matrix  A.  K must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - REAL            .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - REAL             array of DIMENSION ( LDA, ka ), where ka is
+*           k  when  TRANS = 'N' or 'n',  and is  n  otherwise.
+*           Before entry with  TRANS = 'N' or 'n',  the  leading  n by k
+*           part of the array  A  must contain the matrix  A,  otherwise
+*           the leading  k by n  part of the array  A  must contain  the
+*           matrix A.
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in  the  calling  (sub)  program.   When  TRANS = 'N' or 'n'
+*           then  LDA must be at least  max( 1, n ), otherwise  LDA must
+*           be at least  max( 1, k ).
+*           Unchanged on exit.
+*
+*  BETA   - REAL            .
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  C      - REAL             array of DIMENSION ( LDC, n ).
+*           Before entry  with  UPLO = 'U' or 'u',  the leading  n by n
+*           upper triangular part of the array C must contain the upper
+*           triangular part  of the  symmetric matrix  and the strictly
+*           lower triangular part of C is not referenced.  On exit, the
+*           upper triangular part of the array  C is overwritten by the
+*           upper triangular part of the updated matrix.
+*           Before entry  with  UPLO = 'L' or 'l',  the leading  n by n
+*           lower triangular part of the array C must contain the lower
+*           triangular part  of the  symmetric matrix  and the strictly
+*           upper triangular part of C is not referenced.  On exit, the
+*           lower triangular part of the array  C is overwritten by the
+*           lower triangular part of the updated matrix.
+*
+*  LDC    - INTEGER.
+*           On entry, LDC specifies the first dimension of C as declared
+*           in  the  calling  (sub)  program.   LDC  must  be  at  least
+*           max( 1, n ).
+*           Unchanged on exit.
+*
+*
+*  Level 3 Blas routine.
+*
+*  -- Written on 8-February-1989.
+*     Jack Dongarra, Argonne National Laboratory.
+*     Iain Duff, AERE Harwell.
+*     Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*     Sven Hammarling, Numerical Algorithms Group Ltd.
+*
+*
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*     .. Local Scalars ..
+      REAL TEMP
+      INTEGER I,INFO,J,L,NROWA
+      LOGICAL UPPER
+*     ..
+*     .. Parameters ..
+      REAL ONE,ZERO
+      PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
+*     ..
+*
+*     Test the input parameters.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          NROWA = N
+      ELSE
+          NROWA = K
+      END IF
+      UPPER = LSAME(UPLO,'U')
+*
+      INFO = 0
+      IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
+          INFO = 1
+      ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND.
+     +         (.NOT.LSAME(TRANS,'T')) .AND.
+     +         (.NOT.LSAME(TRANS,'C'))) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (K.LT.0) THEN
+          INFO = 4
+      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
+          INFO = 7
+      ELSE IF (LDC.LT.MAX(1,N)) THEN
+          INFO = 10
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('SSYRK ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR.
+     +    (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN
+*
+*     And when  alpha.eq.zero.
+*
+      IF (ALPHA.EQ.ZERO) THEN
+          IF (UPPER) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 20 J = 1,N
+                      DO 10 I = 1,J
+                          C(I,J) = ZERO
+   10                 CONTINUE
+   20             CONTINUE
+              ELSE
+                  DO 40 J = 1,N
+                      DO 30 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+   30                 CONTINUE
+   40             CONTINUE
+              END IF
+          ELSE
+              IF (BETA.EQ.ZERO) THEN
+                  DO 60 J = 1,N
+                      DO 50 I = J,N
+                          C(I,J) = ZERO
+   50                 CONTINUE
+   60             CONTINUE
+              ELSE
+                  DO 80 J = 1,N
+                      DO 70 I = J,N
+                          C(I,J) = BETA*C(I,J)
+   70                 CONTINUE
+   80             CONTINUE
+              END IF
+          END IF
+          RETURN
+      END IF
+*
+*     Start the operations.
+*
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  C := alpha*A*A' + beta*C.
+*
+          IF (UPPER) THEN
+              DO 130 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 90 I = 1,J
+                          C(I,J) = ZERO
+   90                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 100 I = 1,J
+                          C(I,J) = BETA*C(I,J)
+  100                 CONTINUE
+                  END IF
+                  DO 120 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 110 I = 1,J
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  110                     CONTINUE
+                      END IF
+  120             CONTINUE
+  130         CONTINUE
+          ELSE
+              DO 180 J = 1,N
+                  IF (BETA.EQ.ZERO) THEN
+                      DO 140 I = J,N
+                          C(I,J) = ZERO
+  140                 CONTINUE
+                  ELSE IF (BETA.NE.ONE) THEN
+                      DO 150 I = J,N
+                          C(I,J) = BETA*C(I,J)
+  150                 CONTINUE
+                  END IF
+                  DO 170 L = 1,K
+                      IF (A(J,L).NE.ZERO) THEN
+                          TEMP = ALPHA*A(J,L)
+                          DO 160 I = J,N
+                              C(I,J) = C(I,J) + TEMP*A(I,L)
+  160                     CONTINUE
+                      END IF
+  170             CONTINUE
+  180         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  C := alpha*A'*A + beta*C.
+*
+          IF (UPPER) THEN
+              DO 210 J = 1,N
+                  DO 200 I = 1,J
+                      TEMP = ZERO
+                      DO 190 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  190                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  200             CONTINUE
+  210         CONTINUE
+          ELSE
+              DO 240 J = 1,N
+                  DO 230 I = J,N
+                      TEMP = ZERO
+                      DO 220 L = 1,K
+                          TEMP = TEMP + A(L,I)*A(L,J)
+  220                 CONTINUE
+                      IF (BETA.EQ.ZERO) THEN
+                          C(I,J) = ALPHA*TEMP
+                      ELSE
+                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
+                      END IF
+  230             CONTINUE
+  240         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of SSYRK .
+*
+      END
Index: src/blas/dsbmv.f
===================================================================
--- src/blas/dsbmv.f	(revision 0)
+++ src/blas/dsbmv.f	(revision 1)
@@ -0,0 +1,303 @@
+      SUBROUTINE DSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA,BETA
+      INTEGER INCX,INCY,K,LDA,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DSBMV  performs the matrix-vector  operation
+*
+*     y := alpha*A*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are n element vectors and
+*  A is an n by n symmetric band matrix, with k super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the band matrix A is being supplied as
+*           follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  being supplied.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  being supplied.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  K      - INTEGER.
+*           On entry, K specifies the number of super-diagonals of the
+*           matrix A. K must satisfy  0 .le. K.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*           by n part of the array A must contain the upper triangular
+*           band part of the symmetric matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row
+*           ( k + 1 ) of the array, the first super-diagonal starting at
+*           position 2 in row k, and so on. The top left k by k triangle
+*           of the array A is not referenced.
+*           The following program segment will transfer the upper
+*           triangular part of a symmetric band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = K + 1 - J
+*                    DO 10, I = MAX( 1, J - K ), J
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
+*           by n part of the array A must contain the lower triangular
+*           band part of the symmetric matrix, supplied column by
+*           column, with the leading diagonal of the matrix in row 1 of
+*           the array, the first sub-diagonal starting at position 1 in
+*           row 2, and so on. The bottom right k by k triangle of the
+*           array A is not referenced.
+*           The following program segment will transfer the lower
+*           triangular part of a symmetric band matrix from conventional
+*           full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    M = 1 - J
+*                    DO 10, I = J, MIN( N, J + K )
+*                       A( M + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( k + 1 ).
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - DOUBLE PRECISION.
+*           On entry, BETA specifies the scalar beta.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ONE,ZERO
+      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,KPLUS1,KX,KY,L
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (K.LT.0) THEN
+          INFO = 3
+      ELSE IF (LDA.LT. (K+1)) THEN
+          INFO = 6
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 8
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 11
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DSBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+*     Set up the start points in  X  and  Y.
+*
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (N-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (N-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of the array A
+*     are accessed sequentially with one pass through A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,N
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,N
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,N
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,N
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  y  when upper triangle of A is stored.
+*
+          KPLUS1 = K + 1
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  L = KPLUS1 - J
+                  DO 50 I = MAX(1,J-K),J - 1
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(I)
+   50             CONTINUE
+                  Y(J) = Y(J) + TEMP1*A(KPLUS1,J) + ALPHA*TEMP2
+   60         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 80 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  IX = KX
+                  IY = KY
+                  L = KPLUS1 - J
+                  DO 70 I = MAX(1,J-K),J - 1
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(IX)
+                      IX = IX + INCX
+                      IY = IY + INCY
+   70             CONTINUE
+                  Y(JY) = Y(JY) + TEMP1*A(KPLUS1,J) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  IF (J.GT.K) THEN
+                      KX = KX + INCX
+                      KY = KY + INCY
+                  END IF
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y  when lower triangle of A is stored.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 100 J = 1,N
+                  TEMP1 = ALPHA*X(J)
+                  TEMP2 = ZERO
+                  Y(J) = Y(J) + TEMP1*A(1,J)
+                  L = 1 - J
+                  DO 90 I = J + 1,MIN(N,J+K)
+                      Y(I) = Y(I) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(I)
+   90             CONTINUE
+                  Y(J) = Y(J) + ALPHA*TEMP2
+  100         CONTINUE
+          ELSE
+              JX = KX
+              JY = KY
+              DO 120 J = 1,N
+                  TEMP1 = ALPHA*X(JX)
+                  TEMP2 = ZERO
+                  Y(JY) = Y(JY) + TEMP1*A(1,J)
+                  L = 1 - J
+                  IX = JX
+                  IY = JY
+                  DO 110 I = J + 1,MIN(N,J+K)
+                      IX = IX + INCX
+                      IY = IY + INCY
+                      Y(IY) = Y(IY) + TEMP1*A(L+I,J)
+                      TEMP2 = TEMP2 + A(L+I,J)*X(IX)
+  110             CONTINUE
+                  Y(JY) = Y(JY) + ALPHA*TEMP2
+                  JX = JX + INCX
+                  JY = JY + INCY
+  120         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of DSBMV .
+*
+      END
Index: src/blas/zscal.f
===================================================================
--- src/blas/zscal.f	(revision 0)
+++ src/blas/zscal.f	(revision 1)
@@ -0,0 +1,40 @@
+      SUBROUTINE ZSCAL(N,ZA,ZX,INCX)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ZA
+      INTEGER INCX,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX ZX(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*     scales a vector by a constant.
+*     jack dongarra, 3/11/78.
+*     modified 3/93 to return if incx .le. 0.
+*     modified 12/3/93, array(1) declarations changed to array(*)
+*
+*
+*     .. Local Scalars ..
+      INTEGER I,IX
+*     ..
+      IF (N.LE.0 .OR. INCX.LE.0) RETURN
+      IF (INCX.EQ.1) GO TO 20
+*
+*        code for increment not equal to 1
+*
+      IX = 1
+      DO 10 I = 1,N
+          ZX(IX) = ZA*ZX(IX)
+          IX = IX + INCX
+   10 CONTINUE
+      RETURN
+*
+*        code for increment equal to 1
+*
+   20 DO 30 I = 1,N
+          ZX(I) = ZA*ZX(I)
+   30 CONTINUE
+      RETURN
+      END
Index: src/blas/crotg.f
===================================================================
--- src/blas/crotg.f	(revision 0)
+++ src/blas/crotg.f	(revision 1)
@@ -0,0 +1,33 @@
+      SUBROUTINE CROTG(CA,CB,C,S)
+*     .. Scalar Arguments ..
+      COMPLEX CA,CB,S
+      REAL C
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CROTG determines a complex Givens rotation.
+*
+*     .. Local Scalars ..
+      COMPLEX ALPHA
+      REAL NORM,SCALE
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CABS,CONJG,SQRT
+*     ..
+      IF (CABS(CA).NE.0.) GO TO 10
+      C = 0.
+      S = (1.,0.)
+      CA = CB
+      GO TO 20
+   10 CONTINUE
+      SCALE = CABS(CA) + CABS(CB)
+      NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
+      ALPHA = CA/CABS(CA)
+      C = CABS(CA)/NORM
+      S = ALPHA*CONJG(CB)/NORM
+      CA = ALPHA*NORM
+   20 CONTINUE
+      RETURN
+      END
Index: src/blas/chpr2.f
===================================================================
--- src/blas/chpr2.f	(revision 0)
+++ src/blas/chpr2.f	(revision 1)
@@ -0,0 +1,252 @@
+      SUBROUTINE CHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*     .. Scalar Arguments ..
+      COMPLEX ALPHA
+      INTEGER INCX,INCY,N
+      CHARACTER UPLO
+*     ..
+*     .. Array Arguments ..
+      COMPLEX AP(*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  CHPR2  performs the hermitian rank 2 operation
+*
+*     A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,
+*
+*  where alpha is a scalar, x and y are n element vectors and A is an
+*  n by n hermitian matrix, supplied in packed form.
+*
+*  Arguments
+*  ==========
+*
+*  UPLO   - CHARACTER*1.
+*           On entry, UPLO specifies whether the upper or lower
+*           triangular part of the matrix A is supplied in the packed
+*           array AP as follows:
+*
+*              UPLO = 'U' or 'u'   The upper triangular part of A is
+*                                  supplied in AP.
+*
+*              UPLO = 'L' or 'l'   The lower triangular part of A is
+*                                  supplied in AP.
+*
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the order of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX         .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the n
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX          array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  AP     - COMPLEX          array of DIMENSION at least
+*           ( ( n*( n + 1 ) )/2 ).
+*           Before entry with  UPLO = 'U' or 'u', the array AP must
+*           contain the upper triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*           and a( 2, 2 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the upper triangular part of the
+*           updated matrix.
+*           Before entry with UPLO = 'L' or 'l', the array AP must
+*           contain the lower triangular part of the hermitian matrix
+*           packed sequentially, column by column, so that AP( 1 )
+*           contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*           and a( 3, 1 ) respectively, and so on. On exit, the array
+*           AP is overwritten by the lower triangular part of the
+*           updated matrix.
+*           Note that the imaginary parts of the diagonal elements need
+*           not be set, they are assumed to be zero, and on exit they
+*           are set to zero.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      COMPLEX ZERO
+      PARAMETER (ZERO= (0.0E+0,0.0E+0))
+*     ..
+*     .. Local Scalars ..
+      COMPLEX TEMP1,TEMP2
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC CONJG,REAL
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('CHPR2 ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Set up the start points in X and Y if the increments are not both
+*     unity.
+*
+      IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (N-1)*INCX
+          END IF
+          IF (INCY.GT.0) THEN
+              KY = 1
+          ELSE
+              KY = 1 - (N-1)*INCY
+          END IF
+          JX = KX
+          JY = KY
+      END IF
+*
+*     Start the operations. In this version the elements of the array AP
+*     are accessed sequentially with one pass through AP.
+*
+      KK = 1
+      IF (LSAME(UPLO,'U')) THEN
+*
+*        Form  A  when upper triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 20 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(J))
+                      TEMP2 = CONJG(ALPHA*X(J))
+                      K = KK
+                      DO 10 I = 1,J - 1
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   10                 CONTINUE
+                      AP(KK+J-1) = REAL(AP(KK+J-1)) +
+     +                             REAL(X(J)*TEMP1+Y(J)*TEMP2)
+                  ELSE
+                      AP(KK+J-1) = REAL(AP(KK+J-1))
+                  END IF
+                  KK = KK + J
+   20         CONTINUE
+          ELSE
+              DO 40 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(JY))
+                      TEMP2 = CONJG(ALPHA*X(JX))
+                      IX = KX
+                      IY = KY
+                      DO 30 K = KK,KK + J - 2
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+                          IX = IX + INCX
+                          IY = IY + INCY
+   30                 CONTINUE
+                      AP(KK+J-1) = REAL(AP(KK+J-1)) +
+     +                             REAL(X(JX)*TEMP1+Y(JY)*TEMP2)
+                  ELSE
+                      AP(KK+J-1) = REAL(AP(KK+J-1))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + J
+   40         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  A  when lower triangle is stored in AP.
+*
+          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
+              DO 60 J = 1,N
+                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(J))
+                      TEMP2 = CONJG(ALPHA*X(J))
+                      AP(KK) = REAL(AP(KK)) +
+     +                         REAL(X(J)*TEMP1+Y(J)*TEMP2)
+                      K = KK + 1
+                      DO 50 I = J + 1,N
+                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
+                          K = K + 1
+   50                 CONTINUE
+                  ELSE
+                      AP(KK) = REAL(AP(KK))
+                  END IF
+                  KK = KK + N - J + 1
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
+                      TEMP1 = ALPHA*CONJG(Y(JY))
+                      TEMP2 = CONJG(ALPHA*X(JX))
+                      AP(KK) = REAL(AP(KK)) +
+     +                         REAL(X(JX)*TEMP1+Y(JY)*TEMP2)
+                      IX = JX
+                      IY = JY
+                      DO 70 K = KK + 1,KK + N - J
+                          IX = IX + INCX
+                          IY = IY + INCY
+                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
+   70                 CONTINUE
+                  ELSE
+                      AP(KK) = REAL(AP(KK))
+                  END IF
+                  JX = JX + INCX
+                  JY = JY + INCY
+                  KK = KK + N - J + 1
+   80         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of CHPR2 .
+*
+      END
Index: src/blas/dger.f
===================================================================
--- src/blas/dger.f	(revision 0)
+++ src/blas/dger.f	(revision 1)
@@ -0,0 +1,159 @@
+      SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION ALPHA
+      INTEGER INCX,INCY,LDA,M,N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGER   performs the rank 1 operation
+*
+*     A := alpha*x*y' + A,
+*
+*  where alpha is a scalar, x is an m element vector, y is an n element
+*  vector and A is an m by n matrix.
+*
+*  Arguments
+*  ==========
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  ALPHA  - DOUBLE PRECISION.
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  X      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ).
+*           Before entry, the incremented array X must contain the m
+*           element vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  Y      - DOUBLE PRECISION array of dimension at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ).
+*           Before entry, the incremented array Y must contain the n
+*           element vector y.
+*           Unchanged on exit.
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*  A      - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*           Before entry, the leading m by n part of the array A must
+*           contain the matrix of coefficients. On exit, A is
+*           overwritten by the updated matrix.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           max( 1, m ).
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER (ZERO=0.0D+0)
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION TEMP
+      INTEGER I,INFO,IX,J,JY,KX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC MAX
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (M.LT.0) THEN
+          INFO = 1
+      ELSE IF (N.LT.0) THEN
+          INFO = 2
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 5
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 7
+      ELSE IF (LDA.LT.MAX(1,M)) THEN
+          INFO = 9
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('DGER  ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through A.
+*
+      IF (INCY.GT.0) THEN
+          JY = 1
+      ELSE
+          JY = 1 - (N-1)*INCY
+      END IF
+      IF (INCX.EQ.1) THEN
+          DO 20 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  DO 10 I = 1,M
+                      A(I,J) = A(I,J) + X(I)*TEMP
+   10             CONTINUE
+              END IF
+              JY = JY + INCY
+   20     CONTINUE
+      ELSE
+          IF (INCX.GT.0) THEN
+              KX = 1
+          ELSE
+              KX = 1 - (M-1)*INCX
+          END IF
+          DO 40 J = 1,N
+              IF (Y(JY).NE.ZERO) THEN
+                  TEMP = ALPHA*Y(JY)
+                  IX = KX
+                  DO 30 I = 1,M
+                      A(I,J) = A(I,J) + X(IX)*TEMP
+                      IX = IX + INCX
+   30             CONTINUE
+              END IF
+              JY = JY + INCY
+   40     CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of DGER  .
+*
+      END
Index: src/blas/zgbmv.f
===================================================================
--- src/blas/zgbmv.f	(revision 0)
+++ src/blas/zgbmv.f	(revision 1)
@@ -0,0 +1,319 @@
+      SUBROUTINE ZGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*     .. Scalar Arguments ..
+      DOUBLE COMPLEX ALPHA,BETA
+      INTEGER INCX,INCY,KL,KU,LDA,M,N
+      CHARACTER TRANS
+*     ..
+*     .. Array Arguments ..
+      DOUBLE COMPLEX A(LDA,*),X(*),Y(*)
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ZGBMV  performs one of the matrix-vector operations
+*
+*     y := alpha*A*x + beta*y,   or   y := alpha*A'*x + beta*y,   or
+*
+*     y := alpha*conjg( A' )*x + beta*y,
+*
+*  where alpha and beta are scalars, x and y are vectors and A is an
+*  m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*
+*  Arguments
+*  ==========
+*
+*  TRANS  - CHARACTER*1.
+*           On entry, TRANS specifies the operation to be performed as
+*           follows:
+*
+*              TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
+*
+*              TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.
+*
+*              TRANS = 'C' or 'c'   y := alpha*conjg( A' )*x + beta*y.
+*
+*           Unchanged on exit.
+*
+*  M      - INTEGER.
+*           On entry, M specifies the number of rows of the matrix A.
+*           M must be at least zero.
+*           Unchanged on exit.
+*
+*  N      - INTEGER.
+*           On entry, N specifies the number of columns of the matrix A.
+*           N must be at least zero.
+*           Unchanged on exit.
+*
+*  KL     - INTEGER.
+*           On entry, KL specifies the number of sub-diagonals of the
+*           matrix A. KL must satisfy  0 .le. KL.
+*           Unchanged on exit.
+*
+*  KU     - INTEGER.
+*           On entry, KU specifies the number of super-diagonals of the
+*           matrix A. KU must satisfy  0 .le. KU.
+*           Unchanged on exit.
+*
+*  ALPHA  - COMPLEX*16      .
+*           On entry, ALPHA specifies the scalar alpha.
+*           Unchanged on exit.
+*
+*  A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
+*           Before entry, the leading ( kl + ku + 1 ) by n part of the
+*           array A must contain the matrix of coefficients, supplied
+*           column by column, with the leading diagonal of the matrix in
+*           row ( ku + 1 ) of the array, the first super-diagonal
+*           starting at position 2 in row ku, the first sub-diagonal
+*           starting at position 1 in row ( ku + 2 ), and so on.
+*           Elements in the array A that do not correspond to elements
+*           in the band matrix (such as the top left ku by ku triangle)
+*           are not referenced.
+*           The following program segment will transfer a band matrix
+*           from conventional full matrix storage to band storage:
+*
+*                 DO 20, J = 1, N
+*                    K = KU + 1 - J
+*                    DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
+*                       A( K + I, J ) = matrix( I, J )
+*              10    CONTINUE
+*              20 CONTINUE
+*
+*           Unchanged on exit.
+*
+*  LDA    - INTEGER.
+*           On entry, LDA specifies the first dimension of A as declared
+*           in the calling (sub) program. LDA must be at least
+*           ( kl + ku + 1 ).
+*           Unchanged on exit.
+*
+*  X      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*           Before entry, the incremented array X must contain the
+*           vector x.
+*           Unchanged on exit.
+*
+*  INCX   - INTEGER.
+*           On entry, INCX specifies the increment for the elements of
+*           X. INCX must not be zero.
+*           Unchanged on exit.
+*
+*  BETA   - COMPLEX*16      .
+*           On entry, BETA specifies the scalar beta. When BETA is
+*           supplied as zero then Y need not be set on input.
+*           Unchanged on exit.
+*
+*  Y      - COMPLEX*16       array of DIMENSION at least
+*           ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*           and at least
+*           ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*           Before entry, the incremented array Y must contain the
+*           vector y. On exit, Y is overwritten by the updated vector y.
+*
+*
+*  INCY   - INTEGER.
+*           On entry, INCY specifies the increment for the elements of
+*           Y. INCY must not be zero.
+*           Unchanged on exit.
+*
+*
+*  Level 2 Blas routine.
+*
+*  -- Written on 22-October-1986.
+*     Jack Dongarra, Argonne National Lab.
+*     Jeremy Du Croz, Nag Central Office.
+*     Sven Hammarling, Nag Central Office.
+*     Richard Hanson, Sandia National Labs.
+*
+*
+*     .. Parameters ..
+      DOUBLE COMPLEX ONE
+      PARAMETER (ONE= (1.0D+0,0.0D+0))
+      DOUBLE COMPLEX ZERO
+      PARAMETER (ZERO= (0.0D+0,0.0D+0))
+*     ..
+*     .. Local Scalars ..
+      DOUBLE COMPLEX TEMP
+      INTEGER I,INFO,IX,IY,J,JX,JY,K,KUP1,KX,KY,LENX,LENY
+      LOGICAL NOCONJ
+*     ..
+*     .. External Functions ..
+      LOGICAL LSAME
+      EXTERNAL LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC DCONJG,MAX,MIN
+*     ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND.
+     +    .NOT.LSAME(TRANS,'C')) THEN
+          INFO = 1
+      ELSE IF (M.LT.0) THEN
+          INFO = 2
+      ELSE IF (N.LT.0) THEN
+          INFO = 3
+      ELSE IF (KL.LT.0) THEN
+          INFO = 4
+      ELSE IF (KU.LT.0) THEN
+          INFO = 5
+      ELSE IF (LDA.LT. (KL+KU+1)) THEN
+          INFO = 8
+      ELSE IF (INCX.EQ.0) THEN
+          INFO = 10
+      ELSE IF (INCY.EQ.0) THEN
+          INFO = 13
+      END IF
+      IF (INFO.NE.0) THEN
+          CALL XERBLA('ZGBMV ',INFO)
+          RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
+     +    ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
+*
+      NOCONJ = LSAME(TRANS,'T')
+*
+*     Set  LENX  and  LENY, the lengths of the vectors x and y, and set
+*     up the start points in  X  and  Y.
+*
+      IF (LSAME(TRANS,'N')) THEN
+          LENX = N
+          LENY = M
+      ELSE
+          LENX = M
+          LENY = N
+      END IF
+      IF (INCX.GT.0) THEN
+          KX = 1
+      ELSE
+          KX = 1 - (LENX-1)*INCX
+      END IF
+      IF (INCY.GT.0) THEN
+          KY = 1
+      ELSE
+          KY = 1 - (LENY-1)*INCY
+      END IF
+*
+*     Start the operations. In this version the elements of A are
+*     accessed sequentially with one pass through the band part of A.
+*
+*     First form  y := beta*y.
+*
+      IF (BETA.NE.ONE) THEN
+          IF (INCY.EQ.1) THEN
+              IF (BETA.EQ.ZERO) THEN
+                  DO 10 I = 1,LENY
+                      Y(I) = ZERO
+   10             CONTINUE
+              ELSE
+                  DO 20 I = 1,LENY
+                      Y(I) = BETA*Y(I)
+   20             CONTINUE
+              END IF
+          ELSE
+              IY = KY
+              IF (BETA.EQ.ZERO) THEN
+                  DO 30 I = 1,LENY
+                      Y(IY) = ZERO
+                      IY = IY + INCY
+   30             CONTINUE
+              ELSE
+                  DO 40 I = 1,LENY
+                      Y(IY) = BETA*Y(IY)
+                      IY = IY + INCY
+   40             CONTINUE
+              END IF
+          END IF
+      END IF
+      IF (ALPHA.EQ.ZERO) RETURN
+      KUP1 = KU + 1
+      IF (LSAME(TRANS,'N')) THEN
+*
+*        Form  y := alpha*A*x + y.
+*
+          JX = KX
+          IF (INCY.EQ.1) THEN
+              DO 60 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      K = KUP1 - J
+                      DO 50 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(I) = Y(I) + TEMP*A(K+I,J)
+   50                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+   60         CONTINUE
+          ELSE
+              DO 80 J = 1,N
+                  IF (X(JX).NE.ZERO) THEN
+                      TEMP = ALPHA*X(JX)
+                      IY = KY
+                      K = KUP1 - J
+                      DO 70 I = MAX(1,J-KU),MIN(M,J+KL)
+                          Y(IY) = Y(IY) + TEMP*A(K+I,J)
+                          IY = IY + INCY
+   70                 CONTINUE
+                  END IF
+                  JX = JX + INCX
+                  IF (J.GT.KU) KY = KY + INCY
+   80         CONTINUE
+          END IF
+      ELSE
+*
+*        Form  y := alpha*A'*x + y  or  y := alpha*conjg( A' )*x + y.
+*
+          JY = KY
+          IF (INCX.EQ.1) THEN
+              DO 110 J = 1,N
+                  TEMP = ZERO
+                  K = KUP1 - J
+                  IF (NOCONJ) THEN
+                      DO 90 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + A(K+I,J)*X(I)
+   90                 CONTINUE
+                  ELSE
+                      DO 100 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + DCONJG(A(K+I,J))*X(I)
+  100                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+  110         CONTINUE
+          ELSE
+              DO 140 J = 1,N
+                  TEMP = ZERO
+                  IX = KX
+                  K = KUP1 - J
+                  IF (NOCONJ) THEN
+                      DO 120 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + A(K+I,J)*X(IX)
+                          IX = IX + INCX
+  120                 CONTINUE
+                  ELSE
+                      DO 130 I = MAX(1,J-KU),MIN(M,J+KL)
+                          TEMP = TEMP + DCONJG(A(K+I,J))*X(IX)
+                          IX = IX + INCX
+  130                 CONTINUE
+                  END IF
+                  Y(JY) = Y(JY) + ALPHA*TEMP
+                  JY = JY + INCY
+                  IF (J.GT.KU) KX = KX + INCX
+  140         CONTINUE
+          END IF
+      END IF
+*
+      RETURN
+*
+*     End of ZGBMV .
+*
+      END
Index: src/Step_GEDIIS_All.f90
===================================================================
--- src/Step_GEDIIS_All.f90	(revision 0)
+++ src/Step_GEDIIS_All.f90	(revision 1)
@@ -0,0 +1,571 @@
+     ! Geom = input parameter vector (Geometry), Grad = input gradient vector, HEAT is Energy(Geom)
+      SUBROUTINE Step_GEDIIS_All(NGeomF,IGeom,Step,Geom,Grad,HEAT,Hess,NCoord,allocation_flag,Tangent)
+      !SUBROUTINE Step_GEDIIS(Geom_new,Geom,Grad,HEAT,Hess,NCoord,FRST)
+	  use Io_module
+	  use Path_module, only : Nom, Atome, OrderInv, indzmat, Pi, Nat, Vfree
+      IMPLICIT NONE
+
+      INTEGER(KINT) :: NGeomF,IGeom
+      INTEGER(KINT), INTENT(IN) :: NCoord
+      REAL(KREAL) :: Geom(NCoord), Grad(NCoord), Hess(NCoord*NCoord), Step(NCoord), Geom_new(NCoord)
+	  REAL(KREAL) :: HEAT ! HEAT= Energy
+	  LOGICAL :: allocation_flag
+	  REAL(KREAL), INTENT(INOUT) :: Tangent(Ncoord)
+	  
+      ! MRESET = maximum number of iterations.
+      INTEGER(KINT), PARAMETER :: MRESET=15, M2=(MRESET+1)*(MRESET+1) !M2 = 256
+      REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet(:,:), GradSet(:,:) ! NGeomF,MRESET*NCoord
+      REAL(KREAL), ALLOCATABLE, SAVE :: GSAVE(:,:) !NGeomF,NCoord
+	  REAL(KREAL), ALLOCATABLE, SAVE :: ESET(:,:)
+	  REAL(KREAL) :: ESET_tmp(MRESET), B(M2), BS(M2), BST(M2), B_tmp(M2) ! M2=256
+      LOGICAL :: DEBUG, PRINT, ci_lt_zero
+      INTEGER(KINT), ALLOCATABLE, SAVE :: MSET(:) ! mth Iteration
+	  LOGICAL, ALLOCATABLE, SAVE :: FRST(:)
+	  REAL(KREAL) :: ci(MRESET), ci_tmp(MRESET) ! MRESET = maximum number of iterations.
+      INTEGER(KINT) :: NGEDIIS, MPLUS, INV, ITERA, MM, cis_zero, IXX, JXX, MSET_minus_cis_zero
+      INTEGER(KINT) :: I,J,K, JJ, KJ, JNV, II, IONE, IJ, INK,ITmp, IX, JX, KX, MSET_C_cis_zero
+	  INTEGER(KINT) :: current_size_B_mat, MyPointer, Iat, Isch, NFree, Idx
+      REAL(KREAL) :: XMax, XNorm, S, DET, THRES, tmp, ER_star, ER_star_tmp, Norm
+	  REAL(KREAL), PARAMETER :: eps=1e-12
+      REAL(KREAL), PARAMETER :: crit=1e-8
+	  REAL(KREAL), ALLOCATABLE :: Tanf(:) ! NCoord
+	  REAL(KREAL), ALLOCATABLE :: HFree(:) ! NFree*NFree
+	  REAL(KREAL), ALLOCATABLE :: Htmp(:,:) ! NCoord,NFree
+	  REAL(KREAL), ALLOCATABLE :: Grad_free(:), Step_free(:) ! NFree
+	  REAL(KREAL), ALLOCATABLE :: Geom_free(:), Geom_new_free(:) ! NFree
+	  REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet_free(:,:), GradSet_free(:,:)
+
+      DEBUG=.TRUE.
+      PRINT=.FALSE.
+	  
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN Step_GEDIIS_ALL   '')')
+	  
+      ! Initialization
+      IF (allocation_flag) THEN
+      ! allocation_flag will be set to False in SPACE_GEDIIS, so no need to modify it here
+         IF (ALLOCATED(GeomSet)) THEN
+            IF (PRINT)  WRITE(*,'(/,''    In allocation_flag, GEDIIS_ALL  Dealloc  '')')
+            DEALLOCATE(GeomSet,GradSet,GSave,GeomSet_free,GradSet_free)
+            RETURN
+         ELSE
+            IF (PRINT)  WRITE(*,'(/,''     In allocation_flag,  GEDIIS_ALL  Alloc  '')')
+            ALLOCATE(GeomSet(NGeomF,MRESET*NCoord),GradSet(NGeomF,MRESET*NCoord),GSAVE(NGeomF,NCoord))
+			ALLOCATE(GeomSet_free(NGeomF,MRESET*NCoord),GradSet_free(NGeomF,MRESET*NCoord))
+			ALLOCATE(MSET(NGeomF),FRST(NGeomF),ESET(NGeomF,MRESET))
+			DO I=1,NGeomF
+			   FRST(I) = .TRUE.
+			   GeomSet(I,:) = 0.d0
+			   GradSet(I,:) = 0.d0
+			   GSAVE(I,:)=0.d0
+			   GeomSet_free(I,:) = 0.d0
+			   GradSet_free(I,:) = 0.d0
+			END DO
+			MSET(:)=0			
+         END IF
+		 allocation_flag = .FALSE.
+      END IF ! IF (allocation_flag) THEN
+	  
+	  ! ADDED FROM HERE:
+	  Call FreeMv(NCoord,Vfree) ! VFree(Ncoord,Ncoord), as of now, an Identity matrix.
+      ! we orthogonalize Vfree to the tangent vector of this geom only if Tangent/=0.d0
+      Norm=sqrt(dot_product(Tangent,Tangent))
+      IF (Norm.GT.eps) THEN
+         ALLOCATE(Tanf(NCoord))
+
+         ! We normalize Tangent
+         Tangent=Tangent/Norm
+
+         ! We convert Tangent into Vfree only displacements. This is useless for now (2007.Apr.23)
+		 ! as Vfree=Id matrix but it will be usefull as soon as we introduce constraints.
+         DO I=1,NCoord
+            Tanf(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Tangent)
+         END DO
+         Tangent=0.d0
+         DO I=1,NCoord
+            Tangent=Tangent+Tanf(I)*Vfree(:,I)
+         END DO
+         ! first we subtract Tangent from vfree
+         DO I=1,NCoord
+            Norm=dot_product(reshape(vfree(:,I),(/NCoord/)),Tangent)
+            Vfree(:,I)=Vfree(:,I)-Norm*Tangent
+		 END DO
+
+         Idx=0.
+         ! Schmidt orthogonalization of the Vfree vectors
+         DO I=1,NCoord
+            ! We subtract the first vectors, we do it twice as the Schmidt procedure is not numerically stable.
+            DO Isch=1,2
+               DO J=1,Idx
+                  Norm=dot_product(reshape(Vfree(:,I),(/NCoord/)),reshape(Vfree(:,J),(/NCoord/)))
+                  Vfree(:,I)=Vfree(:,I)-Norm*Vfree(:,J)
+               END DO
+            END DO
+            Norm=dot_product(reshape(Vfree(:,I),(/NCoord/)),reshape(Vfree(:,I),(/NCoord/)))
+            IF (Norm.GE.crit) THEN
+               Idx=Idx+1
+               Vfree(:,Idx)=Vfree(:,I)/sqrt(Norm)
+            END IF
+         END DO
+		   
+         IF (Idx/= NCoord-1) THEN
+            WRITE(*,*) "Pb in orthogonalizing Vfree to tangent for geom",IGeom
+            WRITE(IOOut,*) "Pb in orthogonalizing Vfree to tangent for geom",IGeom
+            STOP
+         END IF
+     
+         DEALLOCATE(Tanf)
+         NFree=Idx
+      ELSE ! Tangent =0, matches IF (Norm.GT.eps) THEN
+         if (debug) WRITE(*,*) "Tangent=0, using full displacement"
+         NFree=NCoord
+      END IF !IF (Norm.GT.eps) THEN
+  
+      if (debug) WRITE(*,*) 'DBG Step_GEDIIS_All, IGeom, NFree=', IGeom, NFree
+
+      ! We now calculate the new step
+      ! we project the hessian onto the free vectors
+      ALLOCATE(HFree(NFree*NFree),Htmp(NCoord,NFree),Grad_free(NFree))
+	  ALLOCATE(Geom_free(NFree),Step_free(NFree),Geom_new_free(NFree))
+      DO J=1,NFree
+        DO I=1,NCoord
+           Htmp(I,J)=0.d0
+           DO K=1,NCoord
+              Htmp(I,J)=Htmp(I,J)+Hess(((I-1)*NCoord)+K)*Vfree(K,J)
+           END DO
+        END DO
+      END DO
+      DO J=1,NFree
+        DO I=1,NFree
+		   HFree(I+((J-1)*NFree))=0.d0
+           DO K=1,NCoord
+			  HFree(I+((J-1)*NFree))=HFree(I+((J-1)*NFree))+Vfree(K,I)*Htmp(K,J)
+           END DO
+        END DO
+      END DO
+
+      DO I=1,NFree
+         Grad_free(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Grad)
+		 Geom_free(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Geom)
+      END DO
+      !ADDED ENDS HERE.***********************************************
+	  
+      ! SPACE_GEDIIS SIMPLY LOADS THE CURRENT VALUES OF Geom AND Grad INTO THE ARRAYS GeomSet
+      ! AND GradSet, MSET is set to zero and then 1 in SPACE_GEDIIS_All at first iteration.
+      CALL SPACE_GEDIIS_All(NGeomF,IGeom,MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+      IF (PRINT)  WRITE(*,'(/,''       GEDIIS after SPACE_GEDIIS_ALL   '')')
+	  
+	  DO J=1,MSet(IGeom)
+         DO K=1,NFree
+            GradSet_free(IGeom,((J-1)*NFree)+K)=dot_product(reshape(Vfree(:,K),(/NCoord/)),&
+	     			  GradSet(IGeom,((J-1)*NCoord)+1:((J-1)*NCoord)+NCoord))
+		    GeomSet_free(IGeom,((J-1)*NFree)+K)=dot_product(reshape(Vfree(:,K),(/NCoord/)),&
+			          GeomSet(IGeom,((J-1)*NCoord)+1:((J-1)*NCoord)+NCoord))
+         END DO
+	  END DO
+
+      ! INITIALIZE SOME VARIABLES AND CONSTANTS:
+      NGEDIIS = MSET(IGeom) !MSET=mth iteration
+      MPLUS = MSET(IGeom) + 1
+      MM = MPLUS * MPLUS
+
+      ! CONSTRUCT THE GEDIIS MATRIX:
+      ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>
+      JJ=0
+      INV=-NFree
+      DO I=1,MSET(IGeom)
+         INV=INV+NFree
+         JNV=-NFree
+         DO J=1,MSET(IGeom)
+            JNV=JNV+NFree
+            JJ = JJ + 1
+            B(JJ)=0.D0
+			DO K=1, NFree
+			   B(JJ) = B(JJ) + (((GradSet_free(IGeom,INV+K)-GradSet_free(IGeom,JNV+K))* &
+			           (GeomSet_free(IGeom,INV+K)-GeomSet_free(IGeom,JNV+K)))/2.D0)
+			END DO
+         END DO
+      END DO
+
+     ! The following shifting is required to correct indices of B_ij elements in the GEDIIS matrix.
+	 ! The correction is needed because the last coloumn of the matrix contains all 1 and one zero.
+      DO I=MSET(IGeom)-1,1,-1
+         DO J=MSET(IGeom),1,-1
+            B(I*MSET(IGeom)+J+I) = B(I*MSET(IGeom)+J) 
+         END DO
+	  END DO
+   
+      ! For the last row and last column of GEDIIS matrix:
+      DO I=1,MPLUS
+         B(MPLUS*I) = 1.D0
+         B(MPLUS*MSET(IGeom)+I) = 1.D0
+      END DO
+      B(MM) = 0.D0
+	  
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.4))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  	  
+      ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+   80 CONTINUE
+      DO I=1,MM !MM = (MSET(IGeom)+1) * (MSET(IGeom)+1)
+         BS(I) = B(I) !just a copy of the original B (GEDIIS) matrix
+      END DO
+	  
+      IF (NGEDIIS .NE. MSET(IGeom)) THEN
+        DO II=1,MSET(IGeom)-NGEDIIS
+           XMAX = -1.D10
+           ITERA = 0
+           DO I=1,MSET(IGeom)
+              XNORM = 0.D0
+              INV = (I-1) * MPLUS
+              DO J=1,MSET(IGeom)
+                 XNORM = XNORM + ABS(B(INV + J))
+              END DO
+              IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+                 XMAX = XNORM
+                 ITERA = I
+                 IONE = INV + I
+              ENDIF
+           END DO
+		 
+           DO I=1,MPLUS
+              INV = (I-1) * MPLUS
+              DO J=1,MPLUS
+                 JNV = (J-1) * MPLUS
+                 IF (J.EQ.ITERA) B(INV + J) = 0.D0
+                 B(JNV + I) = B(INV + J)
+              END DO
+		   END DO
+           B(IONE) = 1.0D0
+        END DO
+	  END IF ! matches IF (NGEDIIS .NE. MSET(IGeom)) THEN
+	  
+      ! SCALE GEDIIS MATRIX BEFORE INVERSION:
+      DO I=1,MPLUS
+         II = MPLUS * (I-1) + I ! B(II)=diagonal elements of B matrix
+         GSAVE(IGeom,I) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+		 !Print *, 'GSAVE(',IGeom,',',I,')=', GSAVE(IGeom,I) 
+      END DO
+      GSAVE(IGeom,MPLUS) = 1.D0
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(IGeom,I) * GSAVE(IGeom,J)
+         END DO
+      END DO
+  
+     ! INVERT THE GEDIIS MATRIX B:
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.4))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  	  
+      CALL MINV(B,MPLUS,DET) ! matrix inversion.
+	  
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.16))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(IGeom,I) * GSAVE(IGeom,J)
+         END DO
+      END DO
+	  
+      ! COMPUTE THE NEW INTERPOLATED PARAMETER VECTOR (Geometry):	  
+	  ci=0.d0
+	  ci_tmp=0.d0
+	
+	  ci_lt_zero= .FALSE.
+	  DO I=1, MSET(IGeom)
+		 DO J=1, MSET(IGeom) ! B matrix is read column-wise
+		    ci(I)=ci(I)+B((J-1)*(MPLUS)+I)*ESET(IGeom,J) !ESET is energy set.														
+		 END DO
+		 ci(I)=ci(I)+B((MPLUS-1)*(MPLUS)+I)
+		 !Print *, 'NO ci < 0 yet, c(',I,')=', ci(I)
+		 IF((ci(I) .LT. 0.0D0) .OR. (ci(I) .GT. 1.0D0)) THEN
+		   ci_lt_zero=.TRUE.
+		   EXIT
+		 END IF
+      END DO !matches DO I=1, MSET(IGeom)
+	  
+	  IF (ci_lt_zero) Then
+	  	 cis_zero = 0
+         ER_star = 0.D0
+		 ER_star_tmp = 1e32
+		 
+		 ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>, Full B matrix created first and then rows and columns are removed. 
+         JJ=0
+         INV=-NFree
+         DO IX=1,MSET(IGeom)
+            INV=INV+NFree
+            JNV=-NFree
+            DO JX=1,MSET(IGeom)
+               JNV=JNV+NFree
+               JJ = JJ + 1
+               BST(JJ)=0.D0
+		       DO KX=1, NFree
+		          BST(JJ) = BST(JJ) + (((GradSet_free(IGeom,INV+KX)-GradSet_free(IGeom,JNV+KX))* &
+				            (GeomSet_free(IGeom,INV+KX)-GeomSet_free(IGeom,JNV+KX)))/2.D0)
+		       END DO
+            END DO
+	     END DO  
+		
+		 DO I=1, (2**MSET(IGeom))-2 ! all (2**MSET(IGeom))-2 combinations of cis, except the one where all cis are .GT. 0 and .LT. 1
+		     !Print *, 'Entering into DO I=1, (2**MSET(IGeom))-2  loop, MSET(IGeom)=', MSET(IGeom), ', I=', I
+		     ci(:)=1.D0
+		     ! find out which cis are zero in I:
+			 DO IX=1, MSET(IGeom)
+			    JJ=IAND(I, 2**(IX-1))
+				IF(JJ .EQ. 0) Then
+				  ci(IX)=0.D0
+			    END IF
+			 END DO
+			 
+			 ci_lt_zero = .FALSE.
+			 ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>, Full B matrix created first and then rows and columns are removed. 
+			 DO IX=1, MSET(IGeom)*MSET(IGeom)
+                B(IX) = BST(IX) !just a copy of the original B (GEDIIS) matrix
+             END DO
+			 
+             ! Removal of KXth row and KXth column in order to accomodate cI to be zero:
+			 current_size_B_mat=MSET(IGeom)
+			 cis_zero = 0
+			 ! The bits of I (index of the upper loop 'DO I=1, (2**MSET(IGeom))-2'), gives which cis are zero.
+			 DO KX=1, MSET(IGeom) ! searching for each bit of I (index of the upper loop 'DO I=1, (2**MSET(IGeom))-2')
+			    IF (ci(KX) .EQ. 0.D0) Then !remove KXth row and KXth column
+				   cis_zero = cis_zero + 1
+				   
+			       ! First row removal: (B matrix is read column-wise)
+			       JJ=0
+                   DO IX=1,current_size_B_mat ! columns reading
+                      DO JX=1,current_size_B_mat ! rows reading
+				         IF (JX .NE. KX) Then
+				             JJ = JJ + 1
+				             B_tmp(JJ) = B((IX-1)*current_size_B_mat+JX)
+				         END IF
+				      END DO   
+			       END DO
+			 
+			       DO IX=1,current_size_B_mat*(current_size_B_mat-1)
+			          B(IX) = B_tmp(IX)
+			       END DO
+			 
+			       ! Now column removal:
+			       JJ=0	 
+                   DO IX=1,KX-1 ! columns reading
+                      DO JX=1,current_size_B_mat-1 ! rows reading
+				         JJ = JJ + 1
+				         B_tmp(JJ) = B(JJ)
+				      END DO
+			       END DO				
+			  
+                   DO IX=KX+1,current_size_B_mat
+                      DO JX=1,current_size_B_mat-1
+				         JJ = JJ + 1
+			   	         B_tmp(JJ) = B(JJ+current_size_B_mat-1)
+				      END DO
+			       END DO
+			 			 
+			       DO IX=1,(current_size_B_mat-1)*(current_size_B_mat-1)
+			          B(IX) = B_tmp(IX)
+			       END DO
+				   current_size_B_mat = current_size_B_mat - 1
+				END IF ! matches IF (ci(KX) .EQ. 0.D0) Then !remove
+	         END DO ! matches DO KX=1, MSET(IGeom)
+
+			 ! The following shifting is required to correct indices of B_ij elements in the GEDIIS matrix.
+			 ! The correction is needed because the last coloumn and row of the matrix contains all 1 and one zero.
+			 DO IX=MSET(IGeom)-cis_zero-1,1,-1
+				DO JX=MSET(IGeom)-cis_zero,1,-1
+				   B(IX*(MSET(IGeom)-cis_zero)+JX+IX) = B(IX*(MSET(IGeom)-cis_zero)+JX) 
+				END DO
+			 END DO
+			 
+			 ! for last row and last column of GEDIIS matrix 
+			 DO IX=1,MPLUS-cis_zero
+				B((MPLUS-cis_zero)*IX) = 1.D0
+				B((MPLUS-cis_zero)*(MSET(IGeom)-cis_zero)+IX) = 1.D0
+			 END DO
+			 B((MPLUS-cis_zero) * (MPLUS-cis_zero)) = 0.D0
+	       
+	         DO IX=1, MPLUS
+	            !WRITE(*,'(10(1X,F20.4))') B((IX-1)*MPLUS+1:IX*(MPLUS))
+	         END DO
+		   		   
+			 ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+             IF (NGEDIIS .NE. MSET(IGeom)) THEN
+			    JX = min(MSET(IGeom)-NGEDIIS,MSET(IGeom)-cis_zero-1)
+                DO II=1,JX
+                   XMAX = -1.D10
+                   ITERA = 0
+                   DO IX=1,MSET(IGeom)-cis_zero
+                      XNORM = 0.D0
+                      INV = (IX-1) * (MPLUS-cis_zero)
+                      DO J=1,MSET(IGeom)-cis_zero
+                         XNORM = XNORM + ABS(B(INV + J))
+                      END DO
+                      IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+                         XMAX = XNORM
+                         ITERA = IX
+                         IONE = INV + IX
+                      ENDIF
+				   END DO
+		 
+                   DO IX=1,MPLUS-cis_zero
+                      INV = (IX-1) * (MPLUS-cis_zero)
+                      DO J=1,MPLUS-cis_zero
+                         JNV = (J-1) * (MPLUS-cis_zero)
+                         IF (J.EQ.ITERA) B(INV + J) = 0.D0
+                         B(JNV + IX) = B(INV + J)
+					  END DO
+		           END DO
+                   B(IONE) = 1.0D0
+			    END DO
+	         END IF ! matches IF (NGEDIIS .NE. MSET(IGeom)) THEN
+
+			 ! SCALE GEDIIS MATRIX BEFORE INVERSION:
+			 DO IX=1,MPLUS-cis_zero
+				II = (MPLUS-cis_zero) * (IX-1) + IX ! B(II)=diagonal elements of B matrix
+				GSAVE(IGeom,IX) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+			 END DO
+			 GSAVE(IGeom,MPLUS-cis_zero) = 1.D0
+			 DO IX=1,MPLUS-cis_zero
+				DO JX=1,MPLUS-cis_zero
+				   IJ = (MPLUS-cis_zero) * (IX-1) + JX
+				   B(IJ) = B(IJ) * GSAVE(IGeom,IX) * GSAVE(IGeom,JX)
+				END DO
+			 END DO
+
+			 ! INVERT THE GEDIIS MATRIX B:
+			 CALL MINV(B,MPLUS-cis_zero,DET) ! matrix inversion.
+	  
+			 DO IX=1,MPLUS-cis_zero
+				DO JX=1,MPLUS-cis_zero
+				   IJ = (MPLUS-cis_zero) * (IX-1) + JX
+				   B(IJ) = B(IJ) * GSAVE(IGeom,IX) * GSAVE(IGeom,JX)
+				END DO
+			 END DO
+			 
+	         DO IX=1, MPLUS
+	            !WRITE(*,'(10(1X,F20.4))') B((IX-1)*MPLUS+1:IX*(MPLUS))
+	         END DO
+			 			 
+             ! ESET is rearranged to handle zero cis and stored in ESET_tmp:
+			 JJ=0
+			 DO IX=1, MSET(IGeom)
+				IF (ci(IX) .NE. 0) Then
+				   JJ=JJ+1
+				   ESET_tmp(JJ) = ESET(IGeom,IX)
+				END IF
+			 END DO
+			 
+			 ! DETERMINATION OF nonzero cis:
+			 MyPointer=1
+     	     DO IX=1, MSET(IGeom)-cis_zero
+			    tmp = 0.D0
+		        DO J=1, MSET(IGeom)-cis_zero ! B matrix is read column-wise
+				   tmp=tmp+B((J-1)*(MPLUS-cis_zero)+IX)*ESET_tmp(J)
+				END DO
+		        tmp=tmp+B((MPLUS-cis_zero-1)*(MPLUS-cis_zero)+IX)
+		        IF((tmp .LT. 0.0D0) .OR. (tmp .GT. 1.0D0)) THEN
+		           ci_lt_zero=.TRUE.
+		           EXIT
+				ELSE
+				   DO JX=MyPointer,MSET(IGeom)
+				      IF (ci(JX) .NE. 0) Then
+				         ci(JX) = tmp
+					     MyPointer=JX+1
+					     EXIT
+					  END IF
+				   END DO
+		        END IF
+             END DO !matches DO I=1, MSET(IGeom)-cis_zero
+	         !Print *, 'Local set of cis, first 10:, MSET(IGeom)=', MSET(IGeom), ', I of (2**MSET(IGeom))-2=', I
+			 !WRITE(*,'(10(1X,F20.4))') ci(1:MSET(IGeom))
+	         !Print *, 'Local set of cis ends:****************************************'
+
+             ! new set of cis determined based on the lower energy (ER_star):
+			 IF (.NOT. ci_lt_zero) Then
+                Call Energy_GEDIIS(MRESET,MSET(IGeom),ci,GeomSet_free(IGeom,:),GradSet_free(IGeom,:),ESET(IGeom,:),NFree,ER_star)
+				IF (ER_star .LT. ER_star_tmp) Then
+				   ci_tmp=ci
+				   ER_star_tmp = ER_star
+				END IF
+             END IF ! matches IF (.NOT. ci_lt_zero) Then
+          END DO !matches DO I=1, (2**K)-2 ! all (2**K)-2 combinations of cis, except the one where all cis are .GT. 0 and .LT. 1 
+		  ci = ci_tmp
+	  END IF! matches IF (ci_lt_zero) Then
+	  
+	  Print *, 'Final set of cis, first 10:***********************************'
+	  WRITE(*,'(10(1X,F20.4))') ci(1:MSET(IGeom))
+	  Print *, 'Final set of cis ends:****************************************'
+	  Geom_new_free(:) = 0.D0
+	  DO I=1, MSET(IGeom)	  
+         Geom_new_free(:) = Geom_new_free(:) + (ci(I)*GeomSet_free(IGeom,(I-1)*NFree+1:I*NFree)) !MPLUS=MSET(IGeom)+1
+		 ! R_(N+1)=R*+DeltaR:
+		 DO J=1, NFree
+			tmp=0.D0
+			DO K=1,NFree
+			   ! this can be commented:
+			   !tmp=tmp+HFree((J-1)*NFree+K)*GradSet_free(IGeom,(I-1)*NFree+K) ! If Hinv=.False., then we need to invert Hess
+			END DO
+			Geom_new_free(J) = Geom_new_free(J) - (ci(I)*tmp)
+		 END DO
+	  END DO
+	  
+	  Step_free(:) =  Geom_new_free(:) - Geom_free(:)
+	  
+      XNORM = SQRT(DOT_PRODUCT(Step_free,Step_free))
+      IF (PRINT) THEN
+         WRITE (6,'(/10X,''DEVIATION IN X '',F10.4,8X,''DETERMINANT '',G9.3)') XNORM, DET
+         !WRITE(*,'(10X,''GEDIIS COEFFICIENTS'')')
+         !WRITE(*,'(10X,5F12.5)') (B(MPLUS*MSET(IGeom)+I),I=1,MSET(IGeom))
+      ENDIF
+
+      ! THE FOLLOWING TOLERENCES FOR XNORM AND DET ARE SOMEWHAT ARBITRARY!
+      THRES = MAX(10.D0**(-NFree), 1.D-25)
+      IF (XNORM.GT.2.D0 .OR. DABS(DET) .LT. THRES) THEN
+         IF (PRINT)THEN
+            WRITE(*,*) "THE GEDIIS MATRIX IS ILL CONDITIONED"     
+            WRITE(*,*) " - PROBABLY, VECTORS ARE LINEARLY DEPENDENT - "
+            WRITE(*,*) "THE GEDIIS STEP WILL BE REPEATED WITH A SMALLER SPACE"
+         END IF
+         DO K=1,MM
+			B(K) = BS(K) ! why this is reverted? Because "IF (NGEDIIS .GT. 0) GO TO 80", see below
+         END DO
+         NGEDIIS = NGEDIIS - 1
+         IF (NGEDIIS .GT. 0) GO TO 80
+         IF (PRINT) WRITE(*,'(10X,''NEWTON-RAPHSON STEP TAKEN'')')
+         Geom_new_free(:) = Geom_free(:) ! Geom_new is set to original Geom, thus Step = Geom(:) - Geom_new(:)=zero, the whole 
+		                       ! new update to Geom_new is discarded, since XNORM.GT.2.D0 .OR. DABS(DET) .LT. THRES
+      END IF ! matches IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+	  
+	  !******************************************************************************************************************
+	  Geom_new_free(:) = 0.D0
+	  DO I=1, MSET(IGeom)	  
+         Geom_new_free(:) = Geom_new_free(:) + (ci(I)*GeomSet_free(IGeom,(I-1)*NFree+1:I*NFree)) !MPLUS=MSET(IGeom)+1
+		 ! R_(N+1)=R*+DeltaR:
+		 DO J=1, NFree
+			tmp=0.D0
+			DO K=1,NFree
+			   tmp=tmp+HFree((J-1)*NFree+K)*GradSet_free(IGeom,(I-1)*NFree+K) ! If Hinv=.False., then we need to invert Hess
+			END DO
+			Geom_new_free(J) = Geom_new_free(J) - (ci(I)*tmp)
+		 END DO
+	  END DO
+	  
+	  Step_free(:) =  Geom_new_free(:) - Geom_free(:)
+	 !******************************************************************************************************************
+	  Step = 0.d0
+      DO I=1,NFree
+		 Step = Step + Step_free(I)*Vfree(:,I)
+      END DO	  
+	  
+      DEALLOCATE(Hfree,Htmp,Grad_free,Step_free,Geom_free,Geom_new_free)
+	  
+      IF (PRINT)  WRITE(*,'(/,''       END Step_GEDIIS_ALL   '',/)')
+
+      END SUBROUTINE Step_GEDIIS_All
+

Property changes on: src/Step_GEDIIS_All.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/ConvertBakerInternal_cart.f90
===================================================================
--- src/ConvertBakerInternal_cart.f90	(revision 0)
+++ src/ConvertBakerInternal_cart.f90	(revision 1)
@@ -0,0 +1,734 @@
+SUBROUTINE ConvertBakerInternal_cart(IntCoord_k,IntCoord,x_k,y_k,z_k,x,y,z,XPrim,XPrimRef)
+
+!================================================================
+! Converts the positions in Baker Coordinates to cartesian coordinates
+!================================================================
+!
+! Input:
+!    Incoord_k(NCoord) REAL: Starting internal coordinates
+!    IntCoord(NCoord) REAL: Coordinate to convert to cartesian coordinates
+!    x_k,y_k,z_k(Nat) REAL: Starting cartesian geometry
+!    XPrimRef(NPrim) REAL: Reference values for Primitives coordinates (mainly for dihedral)
+!
+! Output:
+!    x,y,z(Nat) REAL: Cartesian coordinates corresponding to IntCoord
+!    XPrim(NPrim) REAL: Primitives for the cartesian coordinates. (This is a by-product)
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+! BTransInv,UMat should be passed as arguments of this subroutine.
+
+
+  ! IdxGeom: geometry index.
+  ! Internal coordinates IntCoord(NCoord) is to be converted
+  ! into Cartesian coordinates x(Nat),y(Nat),z(Nat).
+
+  use Path_module, only : Nat,AtName,IntCoordI,XyzGeomI,BMat_BakerT,NPrim,&
+       BTransInv,BBT,BBT_inv,BprimT,a0,ScanCoord,Coordinate,&
+       Xprimitive,Pi,NGeomI,IntCoordF,BTransInv_local,Xprimitive_t,&
+       Symmetry_elimination,NCoord,UMat_local
+  ! UMat_local is allocated in Calc_baker.f90
+  ! XyzGeomI(NGeomI,3,Nat),BMat_BakerT(3*Nat,NCoord),a0=0.529177249d0
+
+  Use Io_Module
+  use VarTypes
+  IMPLICIT NONE
+
+  REAL(KREAL), INTENT(OUT) :: x(Nat),y(Nat),z(Nat)
+  REAL(KREAL), INTENT(IN) :: x_k(Nat),y_k(Nat),z_k(Nat)
+  REAL(KREAL), INTENT(IN) :: IntCoord(NCoord)
+  REAL(KREAL), INTENT(INOUT) ::  IntCoord_k(NCoord)
+  REAL(KREAL), INTENT(IN) :: XPrimRef(NPrim)
+  REAL(KREAL), INTENT(OUT) :: XPrim(NPrim)
+
+
+  ! IdxGeom: geometry index.
+  Integer(KINT) :: n1,n2,n3,I,J,K,Counter
+  REAL(KREAL) :: normDeltaX_int
+
+  REAL(KREAL), ALLOCATABLE :: DeltaX_int(:)  !DeltaX_int(NPrim,3*Nat-6), 3*Nat-6??
+  REAL(KREAL), ALLOCATABLE :: DeltaX_cart(:) !DeltaX_cart(3*Nat)
+  REAL(KREAL), ALLOCATABLE :: Geom(:,:) !(3,Nat)
+  REAL(KREAL), ALLOCATABLE :: X_cart_k(:,:) ! (3,Nat)
+  REAL(KREAL), ALLOCATABLE :: GMat(:,:) !(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: EigVec(:,:), EigVal(:) ! EigVec(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: UMat_tmp(:,:)
+  REAL(KREAL), ALLOCATABLE :: V(:,:) ! (NCoord,NCoord)
+
+  REAL(KREAL) ::  vx,vy,vz,dist,Norm
+  REAL(KREAL) :: vx1,vy1,vz1,norm1
+  REAL(KREAL) :: vx2,vy2,vz2,norm2
+  REAL(KREAL) :: vx3,vy3,vz3,norm3
+  REAL(KREAL) :: vx4,vy4,vz4,norm4
+  REAL(KREAL) :: vx5,vy5,vz5,norm5
+  REAL(KREAL) :: val,val_d, Q, T
+  REAL(KREAL) :: Angle, angle_d, tol,Delta,DiheTmp
+  REAL(KREAL) :: MRot(3,3), Rmsd
+  REAL(KREAL), PARAMETER :: Crit=1e-08
+
+  EXTERNAL Angle, angle_d
+  LOGICAL :: debug, FAIL
+
+  INTEGER(KINT), PARAMETER :: NbItMax=50
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+
+
+     SUBROUTINE Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive,XPrimRef)
+       !     
+       ! This subroutine uses the description of a list of Coordinates
+       ! to compute the values of the coordinates for a given geometry.
+       !
+!!!!!!!!!!
+       ! Input:
+       !   Na: INTEGER, Number of atoms
+       !  x,y,z(Na): REAL, cartesian coordinates of the considered geometry
+       ! Coordinate (Pointer(ListCoord)): description of the wanted coordiantes
+       ! NPrim, INTEGER: Number of coordinates to compute
+       !
+       ! Optional: XPrimRef(NPrim) REAL: array that contains coordinates values for
+       ! a former geometry. Useful for Dihedral angles evolution...
+
+!!!!!!!!!!!
+       ! Output:
+       ! XPrimimite(NPrim) REAL: array that will contain the values of the coordinates
+       !
+!!!!!!!!!
+
+       Use VarTypes
+       Use Io_module
+       Use Path_module, only : pi
+
+       IMPLICIT NONE
+
+       Type (ListCoord), POINTER :: Coordinate
+       INTEGER(KINT), INTENT(IN) :: Nat,NPrim
+       REAL(KREAL), INTENT(IN) :: x(Nat), y(Nat), z(Nat)
+       REAL(KREAL), INTENT(IN), OPTIONAL :: XPrimRef(NPrim) 
+       REAL(KREAL), INTENT(OUT) :: XPrimitive(NPrim)
+
+     END SUBROUTINE CALC_XPRIM
+  END INTERFACE
+
+
+  debug=valid('ConvertBakerInternal_cart')
+  if (debug) WRITE(*,*) '=======Entering ConvertBakerInternal_cart======='
+
+  FAIL = .FALSE.	   
+
+!!!!!!
+  ! Allocation phase
+
+  ALLOCATE(DeltaX_int(NCoord),DeltaX_cart(3*Nat))
+  ALLOCATE(UMat_tmp(NPrim,NCoord))
+  ALLOCATE(X_cart_k(3,Nat))
+  ALLOCATE(Geom(3,Nat),BprimT(3*Nat,NPrim))
+  ALLOCATE(BBT(NCoord,NCoord))
+  ALLOCATE(BBT_inv(NCoord,NCoord))
+  ALLOCATE(Gmat(NPrim,NPrim))
+  ALLOCATE(EigVal(NPrim),EigVec(NPrim,NPrim))
+
+
+  if (debug) THEN
+     WRITE(*,*) "Checking purposes...."
+     WRITE(*,*) "Trying ot convert Xint initial (IntCoord)"
+     WRITE(*,'(50(1X,F12.8))') IntCoord(:)
+     WRITE(*,*) "BTransInv_local"
+     DO J=1,3*Nat
+        WRITE(*,'(50(1X,F12.8))') BTransInv_local(:,J)
+     END DO
+     WRITE(*,*) "Xint initial (IntCoord_k)"
+     WRITE(*,'(50(1X,F12.8))') IntCoord_k(:)
+     WRITE(*,*) "Cartesian coordinates"
+     WRITE(*,*) Nat
+     WRITE(*,*) 'GeomCart in ConvertBakerInternal_cart'
+     DO I=1,Nat
+        WRITE(*,'(1X,A,I4,3(1X,F12.4))') AtName(I),I,X_k(I),Y_k(i),Z_k(i)
+     END DO
+     WRITE(*,*) "Calculating actual values using x_k,y_k,z_k"
+
+!     WRITE(*,*) "First, with Calc_XPrim"
+!     WRITE(*,*) "Coordinate:",associated(Coordinate)
+     Call Calc_Xprim(nat,x_k,y_k,z_k,Coordinate,NPrim,XPrimitive_t,XPrimRef)
+
+!      I=0 ! index for the NPrim (NPrim is the number of ! primitive coordinates).
+!      ScanCoord=>Coordinate
+!      DO WHILE (Associated(ScanCoord%next))
+!         I=I+1
+!         SELECT CASE (ScanCoord%Type)
+!         CASE ('BOND')
+!            Print *, I, ':',  ScanCoord%At1, '-', ScanCoord%At2, '=', Xprimitive_t(I)
+!         CASE ('ANGLE')		
+!            Print *, I, ':', ScanCoord%At1, '-', ScanCoord%At2,'-',ScanCoord%At3, '=', Xprimitive_t(I)*180./Pi
+!         CASE ('DIHEDRAL')
+!            Print *, I, ':',  ScanCoord%At1, '-',ScanCoord%At2,'-',ScanCoord%At3,'-',&
+!            ScanCoord%At4,'=',Xprimitive_t(I)*180./Pi
+!         END SELECT
+!         ScanCoord => ScanCoord%next
+!      END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+!      WRITE(*,*) "Second with normal proc"
+!      I=0 ! index for the NPrim (NPrim is the number of ! primitive coordinates).
+!      Xprimitive_t=0.d0
+!      ScanCoord=>Coordinate
+!      DO WHILE (Associated(ScanCoord%next))
+!         I=I+1
+!         SELECT CASE (ScanCoord%Type)
+!         CASE ('BOND')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x_k,y_k,z_k,vx2,vy2,vz2,Norm2)
+!            Xprimitive_t(I) = Norm2
+!            Print *, I, ':',  ScanCoord%At1, '-', ScanCoord%At2, '=', Xprimitive_t(I)
+!         CASE ('ANGLE')		
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x_k,y_k,z_k,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x_k,y_k,z_k,vx2,vy2,vz2,Norm2)
+!            Xprimitive_t(I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+!            Print *, I, ':', ScanCoord%At1, '-', ScanCoord%At2,'-',ScanCoord%At3, '=', Xprimitive_t(I)*180./Pi
+!         CASE ('DIHEDRAL')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x_k,y_k,z_k,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x_k,y_k,z_k,vx2,vy2,vz2,Norm2)
+!            Call vecteur(ScanCoord%At3,ScanCoord%At4,x_k,y_k,z_k,vx3,vy3,vz3,Norm3)
+!            Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2,vx5,vy5,vz5,norm5)
+!            Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2,vx4,vy4,vz4,norm4)
+! !!! PFL 28 Feb 2008 Test to be sure that angle does not change by more than Pi
+!            !           Xprimitive_t(I)=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5,vx2,vy2,vz2,norm2)*Pi/180.
+!            DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+!                 vx2,vy2,vz2,norm2)
+!            Xprimitive_t(I) = DiheTmp*Pi/180.
+!            ! We treat large dihedral angles differently as +180=-180 mathematically and physically
+!            ! but this causes lots of troubles when converting baker to cart.
+!            ! So we ensure that large dihedral angles always have the same sign
+!            if (abs(ScanCoord%SignDihedral).NE.1) THEN
+!               ScanCoord%SignDihedral=Int(Sign(1.,DiheTmp))
+!            ELSE
+!               If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN
+!                  Xprimitive_t(I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi
+!               END IF
+!            END IF
+
+!            IF (abs(Xprimitive_t(I)-XPrimRef(I)).GE.Pi) THEN
+!               if ((Xprimitive_t(I)-XPrimRef(I)).GE.Pi) THEN
+!                  Xprimitive_t(I)=Xprimitive_t(I)-2.d0*Pi
+!               ELSE
+!                  Xprimitive_t(I)=Xprimitive_t(I)+2.d0*Pi
+!               END IF
+!            END IF
+
+!            Print *, I, ':',  ScanCoord%At1, '-',ScanCoord%At2,'-',ScanCoord%At3,'-',&
+!            ScanCoord%At4,'=',Xprimitive_t(I)*180./Pi
+!         END SELECT
+!         ScanCoord => ScanCoord%next
+!      END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+     IntCoord_k=0.d0
+     DO I=1, NPrim
+        ! Transpose of UMat is needed below, that is why UMat(I,:).
+        IntCoord_k(:)=IntCoord_k(:)+UMat_local(I,:)*Xprimitive_t(I)		 
+     END DO
+     WRITE(*,*) "Xint (intCoord_k) cooresponding to x_k,y_k,z_k"
+     WRITE(*,'(50(1X,F12.8))') IntCoord_k(:)
+     WRITE(*,*) "UMat_local"
+     DO I=1, NPrim
+        WRITE(*,'(50(1X,F12.8))') UMat_local(I,:)
+     END DO
+
+     !     Geom(1,:)=X_k(1:Nat)/a0
+     !     Geom(2,:)=y_k(1:Nat)/a0
+     !     Geom(3,:)=z_k(1:Nat)/a0
+
+     Geom(1,:)=X_k(1:Nat)
+     Geom(2,:)=y_k(1:Nat)
+     Geom(3,:)=z_k(1:Nat)
+
+     ! Computing B^prim:
+     BprimT=0.d0
+     ScanCoord=>Coordinate
+     I=0
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND') 
+           CALL CONSTRAINTS_BONDLENGTH_DER(Nat,ScanCoord%at1,ScanCoord%AT2,Geom,BprimT(1,I))
+        CASE ('ANGLE')
+           CALL CONSTRAINTS_BONDANGLE_DER(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,Geom,BprimT(1,I))
+        CASE ('DIHEDRAL')
+           CALL CONSTRAINTS_TORSION_DER2(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,ScanCoord%At4,Geom,BprimT(1,I))
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO
+
+     !     if (debug) THEN
+     !        WRITE(*,*) "PFL DBG, I,NPrim,BPrimT",I,NPrim
+     !        DO I=1,NPrim
+     !           WRITE(*,'(50(1X,F12.6))') BPrimT(:,I)
+     !        END DO
+     !     END IF
+
+     BMat_BakerT = 0.d0
+     DO I=1,NCoord
+        DO J=1,NPrim
+           !BprimT is transpose of B^prim.
+           !B = UMat^T B^prim, B^T = (B^prim)^T UMat
+           BMat_BakerT(:,I)=BMat_BakerT(:,I)+BprimT(:,J)*UMat_local(J,I)
+        END DO
+     END DO
+
+     BBT = 0.d0
+     DO I=1,NCoord
+        DO J=1,3*Nat 	! BBT(:,I) forms BB^T
+           BBT(:,I) = BBT(:,I) + BMat_BakerT(J,:)*BMat_BakerT(J,I)
+        END DO
+     END DO
+
+     BBT_inv = 0.d0
+
+     !Print *, 'NCoord=', NCoord
+     !Print *, 'BBT='
+     DO J=1,NCoord
+        ! WRITE(*,'(50(1X,F12.6))') BBT(:,J)
+     END DO
+     !Print *, 'End of BBT'
+     ! GenInv is in Mat_util.f90
+     Call GenInv(NCoord,BBT,BBT_inv,NCoord)
+!     ALLOCATE(V(NCoord,NCoord))
+!     tol = 1e-12
+!     ! BBT is destroyed by GINVSE
+!     Call GINVSE(BBT,NCoord,NCoord,BBT_inv,NCoord,NCoord,NCoord,tol,V,NCoord,FAIL,IOOUT)
+!     DEALLOCATE(V)
+!     IF(Fail) Then
+!        WRITE (*,*) "Failed in generalized inverse, L220, ConvertBaker...f90"
+!        STOP
+!     END IF
+
+     !Print *, 'BBT_inv='
+     DO J=1,NCoord
+        ! WRITE(*,'(50(1X,F10.2))') BBT_inv(:,J)
+        ! Print *, BBT_inv(:,J)
+     END DO
+     !Print *, 'End of BBT_inv'
+
+     ! Calculation of (B^T)^-1 = (BB^T)^-1B:
+     BTransInv_local = 0.d0
+     DO I=1,3*Nat
+        DO J=1,NCoord
+           BTransInv_local(:,I)=BTransInv_local(:,I)+BBT_inv(:,J)*BMat_BakerT(I,J)
+        END DO
+     END DO
+
+     !Print *, 'BMat_BakerT='
+     DO J=1,3*Nat
+        !WRITE(*,'(50(1X,F12.8))') BMat_BakerT(:,J)
+     END DO
+     !Print *, 'End of BMat_BakerT'
+
+     WRITE(*,*) "BTransInv_local Trans corresponding to x_k,y_k,z_k"
+     DO J=1,3*Nat
+        WRITE(*,'(50(1X,F12.8))') BTransInv_local(:,J)
+     END DO
+
+
+  END IF
+
+  DeltaX_int(:) = IntCoord(:)-IntCoord_k(:)
+
+  X_cart_k(1,:) = x_k(:)
+  X_cart_k(2,:) = y_k(:)
+  X_cart_k(3,:) = z_k(:)
+
+  normDeltaX_int=0.d0 ! This is to be implemented.
+  DO I=1, NCoord
+     normDeltaX_int=normDeltaX_int+DeltaX_int(I)*DeltaX_int(I)
+  END DO
+  normDeltaX_int = sqrt(normDeltaX_int)
+  ! I just need initial value of normDeltaX_int to be .GT. 1d-11,
+  ! that is why it is initialized to 1.d0
+  !normDeltaX_int = 1.d0
+
+  if (debug) WRITE(*,*) "Entering the loop"
+  Counter = 0
+  DO While ((normDeltaX_int .GT. Crit) .AND. (Counter .LT. NbItMax))
+     !DO While (normDeltaX_int .GT. 1d-6)
+     Counter = Counter + 1 		  
+     DeltaX_cart = 0.d0
+!     if (normDeltaX_int.LE.1e-4) THEN
+!        DeltaX_int=DeltaX_int*1e4
+!     END IF 
+     DO I=1,NCoord
+        ! below BTransInv_local(I,:) is used because actually we need Transpose of BTransInv_local.
+        DeltaX_cart(:)=DeltaX_cart(:)+BTransInv_local(I,:)*DeltaX_int(I)
+     END DO
+!     if (normDeltaX_int.LE.1e-4) THEN
+!        DeltaX_int=DeltaX_int*1e-4
+!     DeltaX_cart=DeltaX_cart*1e-4
+!     END IF
+
+
+           if (debug) THEN
+              WRITE(*,*) "Info for iteration:",counter
+              Print *, 'DeltaX_int='
+              WRITE(*,'(50(1X,F12.8))') DeltaX_int
+              Print *, 'DeltaX_cart,norm',sqrt(dot_product(DeltaX_cart,DeltaX_cart))
+              DO J=1,Nat
+              WRITE(*,'(1X,A4,3(1X,F15.11),3(1X,D25.15))') AtName(J),DeltaX_cart(3*J-2:3*J),DeltaX_cart(3*J-2:3*J)
+              END DO
+              Print *, 'BTransInv_local Trans='
+              DO J=1,3*Nat
+                 WRITE(*,'(50(1X,F12.8))') BTransInv_local(:,J)
+              END DO
+              Print *, 'DeltaX_int='
+              WRITE(*,'(50(1X,F12.8))') DeltaX_int
+           END IF
+
+     ! Finite precision error correction step:
+!     DO I=1,3*Nat
+!        IF (DeltaX_cart(I) .NE. 0.d0) Then
+!           IF(abs(DeltaX_cart(I)) .LT. 1d-10) Then
+!              !Print *, 'Correcting DeltaX_cart(',I,')=', DeltaX_cart(I)
+!              DeltaX_cart(I) = 0.d0
+!           END IF
+!        END IF
+!     END DO
+
+     ! new cartesian coordinates:
+     DO I=1, Nat
+        X_cart_k(1,I) = X_cart_k(1,I) + DeltaX_cart(3*I-2)
+        X_cart_k(2,I) = X_cart_k(2,I) + DeltaX_cart(3*I-1)
+        X_cart_k(3,I) = X_cart_k(3,I) + DeltaX_cart(3*I)
+     END DO
+
+     !     Geom(1,:)=X_cart_k(1,1:Nat)/a0
+     !     Geom(2,:)=X_cart_k(2,1:Nat)/a0
+     !     Geom(3,:)=X_cart_k(3,1:Nat)/a0
+     Geom(1,:)=X_cart_k(1,1:Nat)
+     Geom(2,:)=X_cart_k(2,1:Nat)
+     Geom(3,:)=X_cart_k(3,1:Nat)
+
+     if (debug) THEN
+     WRITE(*,*) 'GeomCart used to compute BPrim'
+     DO I=1,Nat
+        WRITE(*,'(1X,A,I4,3(1X,F12.4))') AtName(I),I,Geom(1,I),Geom(2,i),Geom(3,i)
+     END DO
+     END IF
+
+     ! Computing B^prim:
+     BprimT=0.d0
+     ScanCoord=>Coordinate
+     I=0
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND') 
+           CALL CONSTRAINTS_BONDLENGTH_DER(Nat,ScanCoord%at1,ScanCoord%AT2,Geom,BprimT(1,I))
+        CASE ('ANGLE')
+           CALL CONSTRAINTS_BONDANGLE_DER(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,Geom,BprimT(1,I))
+        CASE ('DIHEDRAL')
+           CALL CONSTRAINTS_TORSION_DER2(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,ScanCoord%At4,Geom,BprimT(1,I))
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Bprim "
+        DO J=1,3*Nat
+           WRITE(*,'(50(1X,F12.6))') BprimT(J,:)
+        END DO
+     END IF
+
+
+     BMat_BakerT = 0.d0
+     DO I=1,NCoord
+        DO J=1,NPrim
+           !BprimT is transpose of B^prim.
+           !B = UMat^T B^prim, B^T = (B^prim)^T UMat
+           BMat_BakerT(:,I)=BMat_BakerT(:,I)+BprimT(:,J)*UMat_local(J,I)
+        END DO
+     END DO
+
+     ! ADDED FROM HERE:
+     ! We now compute G=B(BT) matrix
+     !IF (IOptt .EQ. 5000) Then
+     !GMat=0.d0
+     !DO I=1,NPrim
+     !  DO J=1,3*Nat
+     !    GMat(:,I)=Gmat(:,I)+BprimT(J,:)*BprimT(J,I) !*1.d0/mass(atome(int(K/3.d0)))
+     !END DO
+     !END DO
+
+     ! We diagonalize G
+     !Call Jacobi(GMat,NPrim,EigVal,EigVec,NPrim)
+     !Call Trie(NPrim,EigVal,EigVec,NPrim)
+
+     ! We construct the new DzDc(b=baker) matrix
+     ! UMat is nonredundant vector set, i.e. set of eigenvectors of
+     !  BB^T corresponding to eigenvalues > zero.
+
+     !UMat=0.d0
+     !UMat_tmp=0.d0
+     !BMat_BakerT = 0.d0
+     !J=0
+     !DO I=1,NPrim
+     !  IF (abs(eigval(I))>=1e-6) THEN
+     !   J=J+1
+     !  DO K=1,NPrim
+     ! BprimT is transpose of B^prim.
+     ! B = UMat^T B^prim, B^T = (B^prim)^T UMat
+     !BMat_BakerT(:,J)=BMat_BakerT(:,J)+BprimT(:,K)*Eigvec(K,I)
+     ! END DO
+     !IF(J .GT. 3*Nat-6) THEN
+     !WRITE(*,*) 'Number of vectors in Eigvec with eigval .GT. &
+     !	  1e-6 (=UMat) (=' ,J,') exceeded 3*Nat-6=',3*Nat-6, &
+     !    'Stopping the calculation.'
+     !	 STOP
+     !  END IF
+     ! UMat_tmp(:,J) =  Eigvec(:,I)
+     ! END IF
+     !END DO
+
+     ! THIS IS TO BE CORRECTED, A special case for debugging C2H3F case:
+     !J=0
+     !DO I=1, 3*Nat-6
+     ! IF ((I .NE. 6) .AND. (I .NE. 7) .AND. (I .NE. 9)) Then
+     !  J=J+1
+     ! Print *, 'J=', J, ' I=', I
+     !UMat(:,J) = UMat_tmp(:,I)
+     !     END IF
+     ! END DO
+     !BMat_BakerT=0.d0
+     !    DO I=1,NCoord
+     !      DO J=1,NPrim
+     ! B = UMat^T B^prim, B^T = (B^prim)^T UMat
+     !       BMat_BakerT(:,I)=BMat_BakerT(:,I)+BprimT(:,J)*UMat(J,I)
+     !    END DO
+     !END DO
+     ! TO BE CORRECTED, ENDS HERE.
+
+     !END IF
+     ! END of the new changes.
+
+     BBT = 0.d0
+     DO I=1,NCoord
+        DO J=1,3*Nat 	! BBT(:,I) forms BB^T
+           BBT(:,I) = BBT(:,I) + BMat_BakerT(J,:)*BMat_BakerT(J,I)
+        END DO
+     END DO
+
+     BBT_inv = 0.d0
+
+     !Print *, 'NCoord=', NCoord
+     !Print *, 'BBT='
+     DO J=1,NCoord
+        ! WRITE(*,'(50(1X,F12.6))') BBT(:,J)
+     END DO
+     !Print *, 'End of BBT'
+     ! GenInv is in Mat_util.f90
+     Call GenInv(NCoord,BBT,BBT_inv,NCoord)
+     !     if (debug) THEN
+     !        WRITE(*,*) 'BBT_inv by GenInv'
+     !        DO J=1,NCoord
+     !           WRITE(*,'(50(1X,F12.6))') BBT_inv(:,J)
+     !        END DO
+     !     END IF
+
+!    ALLOCATE(V(NCoord,NCoord))
+!    tol = 1e-12
+!    ! BBT is destroyed by GINVSE
+!    Call GINVSE(BBT,NCoord,NCoord,BBT_inv,NCoord,NCoord,NCoord,tol,V,NCoord,FAIL,IOOUT)
+!    DEALLOCATE(V)
+!    IF(Fail) Then
+!       WRITE (*,*) "Failed in generalized inverse, L220, ConvertBaker...f90"
+!       STOP
+!    END IF
+
+     !     if (debug) THEN
+     !        WRITE(*,*) 'BBT_inv by Genvse'
+     !        DO J=1,NCoord
+     !           WRITE(*,'(50(1X,F12.6))') BBT_inv(:,J)
+     !        END DO
+     !     END IF
+
+     !Print *, 'End of BBT_inv'
+
+     ! Calculation of (B^T)^-1 = (BB^T)^-1B:
+     BTransInv_local = 0.d0
+     DO I=1,3*Nat
+        DO J=1,NCoord
+           BTransInv_local(:,I)=BTransInv_local(:,I)+BBT_inv(:,J)*BMat_BakerT(I,J)
+        END DO
+     END DO
+
+     !     if (debug) THEN
+     !        Print *, 'BMat_BakerT='
+     !        DO J=1,3*Nat
+     !           WRITE(*,'(50(1X,F12.6))') BMat_BakerT(:,J)
+     !        END DO
+     !        Print *, 'End of BMat_BakerT'
+     !     END IF
+
+     !      if (debug) THEN
+     !         Print *, 'BTransInv_local Trans='
+     !         DO J=1,3*Nat
+     !            WRITE(*,'(50(1X,F16.6))') BTransInv_local(:,J)
+     !         END DO
+     !         Print *, 'End of BTransInv_local Trans'
+     !      END IF
+
+     ! New cartesian cooordinates:
+     x(:) = X_cart_k(1,:)
+     y(:) = X_cart_k(2,:)
+     z(:) = X_cart_k(3,:)
+
+
+     Call Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive_t,XPrimRef)
+
+!      I=0 ! index for the NPrim (NPrim is the number of 
+!      ! primitive coordinates).
+!      Xprimitive_t=0.d0
+!      ScanCoord=>Coordinate
+!      DO WHILE (Associated(ScanCoord%next))
+!         I=I+1
+!         SELECT CASE (ScanCoord%Type)
+!         CASE ('BOND')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!            Xprimitive_t(I) = Norm2
+!            !Print *, I, ':',  ScanCoord%At1, '-', ScanCoord%At2, '=', Xprimitive_t(I)
+!         CASE ('ANGLE')		
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!            Xprimitive_t(I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+!            !Print *, I, ':', ScanCoord%At1, '-', ScanCoord%At2,'-',ScanCoord%At3, '=', Xprimitive_t(I)*180./Pi
+!         CASE ('DIHEDRAL')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx2,vy2,vz2,Norm2)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3)
+!            Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2,vx5,vy5,vz5,norm5)
+!            Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2,vx4,vy4,vz4,norm4)
+! !!! PFL 28 Feb 2008 Test to be sure that angle does not change by more than Pi
+!            !           Xprimitive_t(I)=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5,vx2,vy2,vz2,norm2)*Pi/180.
+!            DiheTmp=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5,vx2,vy2,vz2,norm2)
+!            Xprimitive_t(I) = DiheTmp*Pi/180.
+!            ! We treat large dihedral angles differently as +180=-180 mathematically and physically
+!            ! but this causes lots of troubles when converting baker to cart.
+!            ! So we ensure that large dihedral angles always have the same sign
+!            if (abs(ScanCoord%SignDihedral).NE.1) THEN
+!               ScanCoord%SignDihedral=Int(Sign(1.d0,DiheTmp))
+!            ELSE
+!               If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN
+!                  Xprimitive_t(I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi
+!               END IF
+!            END IF
+
+
+
+!            !Print *, I, ':',  ScanCoord%At1, '-',ScanCoord%At2,'-',ScanCoord%At3,'-',&
+!            !ScanCoord%At4,'=',Xprimitive_t(I)*180./Pi
+!         END SELECT
+!         ScanCoord => ScanCoord%next
+!      END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+     !     if (debug) THEN
+     !        WRITE(*,*) "Xprimitive_t"
+     !        WRITE(*,'(50(1X,F12.6))') Xprimitive_t
+     !     END IF
+
+     IntCoord_k=0.d0
+     DO I=1, NPrim
+        ! Transpose of UMat is needed below, that is why UMat(I,:).
+        IntCoord_k(:)=IntCoord_k(:)+UMat_local(I,:)*Xprimitive_t(I)		 
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "New Xint (IntCoord_k)"
+        WRITE(*,'(50(1X,F12.8))') IntCoord_k
+        WRITE(*,*) "Target (IntCoord)"
+        WRITE(*,'(50(1X,F12.8))') IntCoord
+
+     END IF
+
+
+     ! Computing DeltaX_int
+
+     DeltaX_int(:) = IntCoord(:)-IntCoord_k(:)
+
+
+
+
+     ! norm2 of DeltaX_int is being calculated here:
+     normDeltaX_int=0.d0
+     DO I=1, NCoord
+        normDeltaX_int=normDeltaX_int+DeltaX_int(I)*DeltaX_int(I)
+     END DO
+     normDeltaX_int = sqrt(normDeltaX_int)
+
+          if (debug) THEN
+             WRITE(*,*) "New Delta_Xint (deltaX_int)"
+             WRITE(*,'(50(1X,F12.6))') DeltaX_int
+             WRITE(*,*) "Norm:",normDeltaX_int
+          END IF
+
+     !IF (Counter .GE. 400) THEN
+     !Print *, 'Counter=', Counter, 'normDeltaX_int=', normDeltaX_int
+     !Print *, 'DeltaX_int='
+     !WRITE(*,'(50(1X,F8.2))') DeltaX_int
+     !END IF
+
+     IF (Mod(Counter,1).EQ.0) THEN
+        !WRITE(*,*) Nat
+        !WRITE(*,*) 'GeomCart in ConvertBakerInternal_cart'
+        DO I=1,Nat
+           !	WRITE(*,'(1X,A,I4,3(1X,F12.4))') AtName(I),I,X_Cart_k(1:3,I)
+        END DO
+     END IF
+
+     !call two_norm(DeltaX_int,normDeltaX_int,3*Nat)
+  END DO !matches DO While (normDeltaX_int .GT. 1d-11)
+
+  IF (debug) THEN
+  WRITE(*,*) 'GeomCart in ConvertBakerInternal_cart'
+  DO I=1,Nat
+     WRITE(*,'(1X,A,I4,3(1X,F12.4))') AtName(I),I,X_Cart_k(1:3,I)
+  END DO
+  END IF
+
+  if (debug) THEN
+     WRITE(*,*) "Bmat_bakerT"
+     DO J=1,NCoord
+        WRITE(*,'(50(1X,F12.6))') BMat_BakerT(:,J)
+     END DO
+  END IF
+
+
+
+  !IF (IOptt .GE. 2) THEN
+  !   Print  *, 'Counter=', Counter
+  !END IF
+  IF (Counter .GE. NbItMax) Then
+     Print *, 'Counter GE 500, Stopping, normDeltaX_int=', normDeltaX_int
+     STOP
+  END IF
+
+
+     x(:) = X_cart_k(1,:)
+     y(:) = X_cart_k(2,:)
+     z(:) = X_cart_k(3,:)
+
+
+!  call CalcRmsd(Nat,x_k,y_k,z_k,x,y,z,MRot,rmsd,.TRUE.,.TRUE.)
+
+
+  if (debug) WRITE(*,*) "COnverted in ",counter," iterations"
+
+  DEALLOCATE(Geom,DeltaX_int,DeltaX_cart)
+  DEALLOCATE(BprimT,BBT,BBT_inv,UMat_tmp)
+  DEALLOCATE(X_cart_k)
+  DEALLOCATE(GMat,EigVal,EigVec)
+
+  XPrim=Xprimitive_t
+
+  if (debug) WRITE(*,*) '=====ConvertBakerInternal_cart Over====='
+
+END SUBROUTINE ConvertBakerInternal_cart

Property changes on: src/ConvertBakerInternal_cart.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Space.f90
===================================================================
--- src/Space.f90	(revision 0)
+++ src/Space.f90	(revision 1)
@@ -0,0 +1,74 @@
+!C
+!C  SPACE SIMPLY LOADS THE CURRENT VALUES OF Geom AND GRAD INTO
+!C  THE ARRAYS GeomSet AND GradSet
+!C
+      SUBROUTINE SPACE(MRESET,MSET,Geom,GRAD,HEAT,NVAR,GeomSet,GradSet,ESET,FRST)
+
+!      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+!      INCLUDE 'SIZES'
+
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+!      INCLUDE 'SIZES'
+
+ !MSET=mth iteration, NVAR=NCOORD, MRESET=Maximum no. of iterations. 
+      INTEGER(KINT) :: NVAR, MRESET, MSET 
+ !Geom=geometry with NVAR coordinates. GRAD=gradients.
+      REAL(KREAL) :: Geom(NVAR), GRAD(NVAR)
+      REAL(KREAL) :: Heat
+      LOGICAL :: FRST, Print=.TRUE.
+ ! GeomSet, GradSet : a long array to store
+      REAL(KREAL) :: GeomSet(MRESET*NVAR), GradSet(MRESET*NVAR), ESET(MRESET)
+        ! Geom and GRAD for all iterations.
+
+      INTEGER(KINT) :: I,J,K,NMK,MI,NI
+      INTEGER(KINT), SAVE :: NRESET
+!C
+!C     UPDATE PARAMETER AND GRADIENT SUBSPACE
+!C
+      IF (PRINT)  WRITE(*,'(/,''       BEGIN SPACE  '')')
+      IF(FRST)THEN
+         NRESET=MIN(NVAR/2,MRESET)
+             IF (NVAR .LT. 5 ) THEN ! This condition is imposed for small NVAR,
+             ! particularly if NVAR=NCOORD is equal to 2 or 3.
+                NRESET = NVAR-1
+           END IF
+         FRST=.FALSE.
+         MSET=0
+      ENDIF
+!C
+      !IF (PRINT)  WRITE(*,'(/,''       SPACE 1  '')')
+        ! purging the very first Geom and GRAD.
+        if (print) WRITE(*,*) "DBG Space MSET, NRESET",MSET,NRESET
+       IF (MSET .EQ. NRESET) THEN
+         DO 10 I=1,MSET-1
+            MI = NVAR*(I-1)
+            NI = NVAR*I
+            ESET(I)=ESET(I+1)
+            DO 10 K=1,NVAR
+               GeomSet(MI+K) = GeomSet(NI+K)
+   10    GradSet(MI+K) = GradSet(NI+K)
+            MSET=NRESET-1
+       ENDIF
+!C
+!C     STORE THE CURRENT POINT
+!C
+      !IF (PRINT)  WRITE(*,'(/,''       SPACE 2  '')')
+        ! NVAR =  NCOORD
+      DO  K=1,NVAR
+         NMK = NVAR*MSET+K ! MSET corresponds mth iteration.
+         IF (PRINT)  WRITE(*,*) 'K,NMK,MSET,NVAR',K,NMK,MSET,NVAR, &
+              SIZE(GeomSet), SIZE(GradSet),SIZE(Geom),SIZE(GRAD)
+         GeomSet(NMK) = Geom(K)
+         GradSet(NMK) = GRAD(K)
+      END DO
+      MSET=MSET+1
+      ESET(MSET)=HEAT
+
+      IF (PRINT) WRITE (*,*) "MSET=", MSET
+      IF (PRINT)  WRITE(*,'(/,''       END SPACE   '')')
+!C
+      RETURN
+      END

Property changes on: src/Space.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Ginvse.f90
===================================================================
--- src/Ginvse.f90	(revision 0)
+++ src/Ginvse.f90	(revision 1)
@@ -0,0 +1,262 @@
+
+SUBROUTINE GINVSE(A, MA, NA, AIN, NAIN, M, N, TOL, V, NV, FAIL, NOUT)
+
+  Use Io_module
+  ! INVERSE.OF.A = V * INVERSE.OF.S * TRANSPOSE.OF.U
+  ! VIA SINGULAR VALUE DECOMPOSITION USING ALGORITHMS 1 AND 2 OF
+  ! NASH J C, COMPACT NUMERICAL METHODS FOR COMPUTERS, 1979,
+  !    ADAM HILGER, BRISTOL OR HALSTED PRESS, N.Y.
+  !
+  !
+  ! CALLING SEQUENCE
+  !
+  !    CALL GINVSE (A,MA,NA,AIN,NAIN,M,N,TOL,V,NV,FAIL,NOUT)
+  !
+  ! A      = MATRIX OF SIZE M BY N TO BE 'INVERTED'
+  !          A IS DESTROYED BY THIS ROUTINE AND BECOMES THE
+  !          U MATRIX OF THE SINGULAR VALUE DECOMPOSITION
+  ! MA     = ROW DIMENSION OF ARRAY A
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! NA     = COLUMN DIMENSION OF ARRAY A
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! AIN    = COMPUTED 'INVERSE' (N ROWS BY M COLS.)
+  ! NAIN   = ROW DIMENSION OF ARRAY AIN
+  !          ( COLUMN DIMENSION ASSUMED TO BE AT LEAST M )
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! M      = NUMBER OF ROWS IN MATRIX A AND
+  !          THE NUMBER OF COLUMNS IN MATRIX AIN
+  ! N      = NUMBER OF COLUMNS IN MATRIX A AND
+  !          THE NUMBER OF ROWS IN MATRIX AIN
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! TOL    = MACHINE PRECISION FOR COMPUTING ENVIRONMENT
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! V      = WORK MATRIX WHICH BECOMES THE V MATRIX (N BY N)
+  !          OF THE SINGULAR VALUE DECOMPOSITION
+  ! NV     = DIMENSIONS OF V  (BOTH ROWS AND COLUMNS)
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  ! FAIL   = ERROR FLAG - .TRUE. IMPLIES FAILURE OF GINVSE
+  ! NOUT   = OUTPUT CHANNEL NUMBER
+  !          UNCHANGED BY THIS SUB-PROGRAM
+  !
+  ! NOTE.  THIS ROUTINE IS NOT DESIGNED TO PRODUCE A 'GOOD'
+  !     GENERALIZED INVERSE. IT IS MEANT ONLY TO FURNISH TEST
+  !     DATA FOR THE ROUTINES  GMATX, ZIELKE, AND PTST
+  !
+  INTEGER(KINT), INTENT(IN) :: MA, NA, NAIN,N, M,NV, NOUT
+  INTEGER(KINT) :: ICOUNT, NM1, I, J, JP1, K,SWEEP, LIMIT
+  LOGICAL, INTENT(INOUT) :: FAIL
+  REAL(KREAL), INTENT(IN) :: TOL
+  REAL(KREAL) :: P, Q, R, VV, C, S, TEMP
+  REAL(KREAL), INTENT(INOUT) :: V(NV,NV)
+  REAL(KREAL), INTENT(INOUT) :: AIN(NAIN,M)
+  REAL(KREAL), INTENT(INOUT) :: A(MA,NA)
+
+  LOGICAL :: debug
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+  debug=valid('Ginvse')
+  if (debug) WRITE(*,*) '=======Entering Ginvse======='
+
+  !Print *, 'A='
+  DO J=1,MA
+     !WRITE(*,'(50(1X,F10.2))') AIN(:,J)
+     !Print *, A(:,J)
+  END DO
+  !Print *, 'End of A'
+  !
+  ! INITIALLY SET FAIL=.FALSE. TO IMPLY CORRECT EXECUTION
+  !
+  FAIL = .FALSE.
+  !
+  ! TESTS ON VALIDITY OF DIMENSIONS
+  !
+  IF (M.LT.2 .OR. MA.LT.2 .OR. N.LT.2 .OR. NA.LT.2) GO TO 230
+  IF (N.GT.NA) GO TO 210
+  IF (M.GT.MA) GO TO 220
+  !
+  ! N MUST NOT EXCEED M, OTHERWISE GINVSE WILL FAIL
+  !
+  IF (N.GT.M) GO TO 200
+  !
+  ! SWEEP COUNTER  INITIALIZED TO ZERO
+  !
+  SWEEP = 0
+  !
+  ! SET SWEEP LIMIT
+  !
+  LIMIT = MAX0(N,6)
+  !
+  ! MAX0(N,6) WAS  CHOSEN FROM EXPERIENCE
+  !
+  !
+  ! V(I,J) INITIALLY N BY N IDENTITY
+  !
+  DO 20 I=1,N
+     DO 10 J=1,N
+        V(I,J) = 0.0
+10      CONTINUE
+        V(I,I) = 1.0
+20      CONTINUE
+        !
+        ! INITIALIZE ROTATION COUNTER (COUNTS DOWN TO 0)
+        !
+30      ICOUNT = N*(N-1)/2
+        !
+        ! COUNT SWEEP
+        !
+        SWEEP = SWEEP + 1
+        NM1 = N - 1
+        DO 110 J=1,NM1
+           JP1 = J + 1
+           DO 100 K=JP1,N
+              P = 0.
+              Q = 0.
+              R = 0.
+              DO 40 I=1,M
+                 !
+           ! TEST FOR AND AVOID UNDERFLOW
+           ! NOT NEEDED FOR MACHINES WHICH UNDERFLOW TO ZERO WITHOUT
+           ! ERROR MESSAGE
+           !
+           IF (ABS(A(I,J)).GE.TOL) Q = Q + A(I,J)*A(I,J)
+           !Print *, '1 Q=',Q
+           !Print *, 'A(',I,J,')=',A(I,J)
+           IF (ABS(A(I,K)).GE.TOL) R = R + A(I,K)*A(I,K)
+           IF (ABS(A(I,J)/TOL)*ABS(A(I,K)/TOL).GE.1.0) P = P + A(I,J)*A(I,K)
+40         CONTINUE
+           !Print *, '2 Q=',Q
+           IF (Q.GE.R) GO TO 50
+           C = 0.
+           S = 1.
+           GO TO 60
+50         IF (ABS(Q).LT.TOL .AND. ABS(R).LT.TOL) GO TO 90
+           IF (R.EQ.0.0) GO TO 90
+           IF ((P/Q)*(P/R).LT.TOL) GO TO 90
+           !
+           ! CALCULATE THE SINE AND COSINE OF THE ANGLE OF ROTATION
+           !
+           !Print *, '3 Q=',Q
+           !Print *, 'R=',R
+           Q = Q - R
+           VV = SQRT(4.*P*P+Q*Q)
+           !Print *, 'VV=',VV
+           !Print *, 'P=',P
+           !Print *, 'Q=',Q
+           C = SQRT((VV+Q)/(2.*VV))
+           !Print *, 'C=', C
+           S = P/(VV*C)
+           !Print *, 'S=', S
+           !
+           ! APPLY THE ROTATION TO A
+           !
+60         DO 70 I=1,M
+              R = A(I,J)
+              A(I,J) = R*C + A(I,K)*S
+              A(I,K) = -R*S + A(I,K)*C
+70            CONTINUE
+              !if (debug) WRITE(*,*) '=======After rotation of A======='
+              !
+              ! APPLY THE ROTATION TO V
+              !
+              DO 80 I=1,N
+                 R = V(I,J)
+                 V(I,J) = R*C + V(I,K)*S
+                 !Print *, 'V(I,J)=', V(I,J)
+                 !Print *, 'R=', R
+                 V(I,K) = -R*S + V(I,K)*C
+                 !Print *, 'V(I,K)=', V(I,K)
+80               CONTINUE
+                 GO TO 100
+90               ICOUNT = ICOUNT - 1
+100              CONTINUE
+110              CONTINUE
+                 !if (debug) WRITE(*,*) '=======After rotation of V======='
+                 !
+                 ! PRINT THE NUMBER OF SWEEPS AND ROTATIONS
+                 !
+                 IF (NOUT.GT.0) WRITE (NOUT,9997) SWEEP, ICOUNT
+                 !
+                 ! CHECK NUMBER OF SWEEPS AND ROTATIONS (TERMINATION TEST)
+                 !
+                 IF (ICOUNT.GT.0 .AND. SWEEP.LT.LIMIT) GO TO 30
+                 IF (SWEEP.GE.LIMIT .AND. NOUT.GT.0) WRITE (NOUT,9996)
+                 DO 160 J=1,N
+                    Q = 0.
+                    DO 120 I=1,M
+                       Q = Q + A(I,J)*A(I,J)
+120                    CONTINUE
+                       !
+                       ! ARBITRARY RANK DECISION
+                       !
+                       IF (J.EQ.1) VV = 1.0E-3*SQRT(Q)
+                       IF (SQRT(Q).LE.VV) GO TO 140
+                       DO 130 I=1,M
+                          A(I,J) = A(I,J)/Q
+130                       CONTINUE
+                          GO TO 160
+140                       DO 150 I=1,M
+                             A(I,J) = 0.0
+150                          CONTINUE
+160                          CONTINUE
+
+                                   !if (debug) WRITE(*,*) '=======After termination test======='
+
+                                   DO 190 I=1,N
+                                      DO 180 J=1,M
+                                         TEMP = 0.0
+                                         DO 170 K=1,N
+                                            TEMP = TEMP + V(I,K)*A(J,K)
+                                            !Print *, 'V(I,K)*A(J,K)=', V(I,K)*A(J,K)
+                                            !Print *, 'V(I,K)=', V(I,K)
+                                            !Print *, 'A(J,K)=', A(J,K)
+170    CONTINUE
+       AIN(I,J) = TEMP
+       !Print *, 'AIN(I,J)=', AIN(I,J)
+180    CONTINUE
+190    CONTINUE
+       RETURN
+
+       !Print *, 'AIN='
+       !DO J=1,NAIN
+       !WRITE(*,'(50(1X,F10.2))') AIN(:,J)
+       !Print *, AIN(:,J)
+       !END DO
+       !Print *, 'End of AIN'
+
+       !
+       ! IF AN ERROR OCCURED THE APPROPRIATE MESSAGE IS PRINTED
+       !    AND FAIL IS SET TO  .TRUE.
+       !
+200    IF (NOUT.GT.0) WRITE (NOUT,9995)
+       FAIL = .TRUE.
+       RETURN
+210    IF (NOUT.GT.0) WRITE (NOUT,9999) N, NA
+       FAIL = .TRUE.
+       RETURN
+220    IF (NOUT.GT.0) WRITE (NOUT,9998) M, MA
+       FAIL = .TRUE.
+       RETURN
+230    IF (NOUT.GT.0) WRITE (NOUT,9994) M, MA, N, NA
+       FAIL = .TRUE.
+       RETURN
+       !
+       ! * * * * * * * * * * * * * * * * * * *
+                                            !
+9999    FORMAT (11H0**ERROR** , I5, 24H EXCEEDS ALLOWABLE VALUE,23H FOR N IN GINVSE   NA= , I5, 5(/))
+9998        FORMAT (11H0**ERROR** , I5, 24H EXCEEDS ALLOWABLE VALUE,23H FOR M IN GINVSE   MA= , I5, 5(/))
+9997        FORMAT (8H SWEEP =, I4, 2H  , I4, 19H JACOBI ROTATIONS P,8HERFORMED)
+9996        FORMAT (21H SWEEP LIMIT REACHED )
+9995        FORMAT (38H0**ERROR** N GREATER THAN M IS INVALID,21H AND GINVSE WILL FAIL, 5(/))
+9994        FORMAT (46H0**ERROR** SOME DIMENSIONS ARE LESS THAN TWO I,8HN GINVSE &
+                 /10X, 3HM =, I5, 5H MA =,I5, 4H N =, I5,5H NA =, I5, 5(/))
+            !
+            ! * * * END OF SUBROUTINE GINVSE * * *
+            !
+          END SUBROUTINE GINVSE
+	
Index: src/CalcBMat_mixed.f90
===================================================================
--- src/CalcBMat_mixed.f90	(revision 0)
+++ src/CalcBMat_mixed.f90	(revision 1)
@@ -0,0 +1,117 @@
+subroutine CalcBMat_mixed (natoms, xyzatm, indzmat, dzdc, atmass,atome)
+
+  use Io_module
+  use Path_module, only : MW, NCart
+
+  IMPLICIT NONE
+
+
+  integer(KINT) :: natoms, indzmat(natoms,5),atome(natoms)
+  real(KREAL)   :: xyzatm(3,natoms), dzdc(3*natoms,3*natoms),atmass(natoms)
+
+
+!!!!!!!!!!!!!!!!!!!!!
+!
+! This routine computes the derivatives of the internal coordinates
+! with respect to the cartesian coordinates.
+! This is what is called the B matrix in Baker coordinates :
+! B(i,j)=dz_i/dx_j
+!
+! it uses the same routines as Calc_baker
+!
+! Here, it is used for mixed Cart+Z-mat system
+!
+!!!!!!!!!!!!!!!!!!!!!!
+!
+! Input:
+! natoms: number of atoms
+! xyzatm(3,natoms): cartesian geometry
+! indzmat(natoms,5): index of the Z-matrix definition
+! atmass(natoms): mass of the atoms
+! atome(natoms): ??
+!
+! Output:
+! dzdc(3*natoms,3*natoms): B matrix
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  LOGICAL :: debug
+  INTEGER(KINT) :: i,j,k,iat, istart
+  INTEGER(KINT) :: iat1, iat2, iat3, iat4
+
+
+
+  ! ======================================================================
+
+  debug=valid('CalcBMat').OR.valid('CalcBMat_mixed')
+
+  if (debug) Call Header('Entering CalcBMat_mixed')
+  if (debug) THEN
+     WRITE(*,*) 'DBG CalcBMat_mixed Xyzatm '
+     DO iat=1,natoms
+        write(*,'(1X,I5,3(1X,F15.6))') iat, xyzatm(1:3,iat)
+     END DO
+     WRITE(*,*) 'DBG CalcBMat_mixed IndZmat'
+     DO iat=1,natoms
+        write(*,'(6(1X,I5))') iat, indzmat(iat,1:4)
+     END DO
+  END IF
+
+  dzdc=0.d0
+  do i = 1, NCart
+     iat=indzmat(i,1)
+     do j=1,3
+        k=(iat-1)*3+j
+        dzdc(k,k)=1.d0
+     END DO
+  END DO
+
+    IF (NCart.EQ.1) THEN
+       if (natoms.ge.2) THEN
+          iat1=indzmat(2,1)
+          iat2=indzmat(2,2)
+          Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,4))
+         END IF
+    END IF
+    IF (NCart.LE.2) THEN
+       if (natoms.ge.3) THEN
+          iat1=indzmat(3,1)
+          iat2=indzmat(3,2)
+          iat3=indzmat(3,3)
+          Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,7))
+          CALL CONSTRAINTS_BONDANGLE_DER(Natoms,iAt1,iAT2,iAt3, xyzatm, dzdc(1,8))
+       END IF
+    END IF
+
+    IStart=max(NCart+1,4)
+    k=(IStart-1)*3+1
+  DO I=IStart, Natoms
+     iat1=indzmat(i,1)
+     iat2=indzmat(i,2)
+     iat3=indzmat(i,3)
+     iat4=indzmat(i,4)
+     Call CONSTRAINTS_BONDLENGTH_DER(Natoms,iat1,iAT2, xyzatm, dzdc(1,k))
+     k=k+1
+     CALL CONSTRAINTS_BONDANGLE_DER(Natoms,iAt1,iAT2,iAt3, xyzatm, dzdc(1,k))
+     k=k+1
+     CALL CONSTRAINTS_TORSION_DER2(Natoms,iat1,iat2,iat3,iat4, xyzatm, dzdc(1,k)) 
+     k=k+1
+  END DO
+             
+
+
+
+
+  if (debug) Call Header('CalcBMat_mixed over')
+
+  ! ======================================================================
+
+end subroutine CalcBMat_mixed
Index: src/gaussj.f90
===================================================================
--- src/gaussj.f90	(revision 0)
+++ src/gaussj.f90	(revision 1)
@@ -0,0 +1,82 @@
+
+      SUBROUTINE gaussj(a,n,np,b,m,mp)
+
+     IMPLICIT NONE
+
+     INTEGER, PARAMETER :: KINT=KIND(1)
+     INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+
+      INTEGER(KINT) :: m,mp,n,np,NMAX
+      REAL(KREAL) :: a(np,np),b(np,mp)
+      PARAMETER (NMAX=50)
+      INTEGER(KINT) :: i,icol,irow,j,k,l,ll,indxc(NMAX),indxr(NMAX),ipiv(NMAX)
+      REAL(KREAL) :: big,dum,pivinv
+      do 11 j=1,n
+        ipiv(j)=0
+11    continue
+      do 22 i=1,n
+        big=0.d0
+        do 13 j=1,n
+          if(ipiv(j).ne.1)then
+            do 12 k=1,n
+              if (ipiv(k).eq.0) then
+                if (abs(a(j,k)).ge.big)then
+                  big=abs(a(j,k))
+                  irow=j
+                  icol=k
+                endif
+              else if (ipiv(k).gt.1) then
+                pause 'singular matrix in gaussj'
+              endif
+12          continue
+          endif
+13      continue
+        ipiv(icol)=ipiv(icol)+1
+        if (irow.ne.icol) then
+          do 14 l=1,n
+            dum=a(irow,l)
+            a(irow,l)=a(icol,l)
+            a(icol,l)=dum
+14        continue
+          do 15 l=1,m
+            dum=b(irow,l)
+            b(irow,l)=b(icol,l)
+            b(icol,l)=dum
+15        continue
+        endif
+        indxr(i)=irow
+        indxc(i)=icol
+        if (a(icol,icol).eq.0.d0) pause 'singular matrix in gaussj'
+        pivinv=1.d0/a(icol,icol)
+        a(icol,icol)=1.d0
+        do 16 l=1,n
+          a(icol,l)=a(icol,l)*pivinv
+16      continue
+        do 17 l=1,m
+          b(icol,l)=b(icol,l)*pivinv
+17      continue
+        do 21 ll=1,n
+          if(ll.ne.icol)then
+            dum=a(ll,icol)
+            a(ll,icol)=0.d0
+            do 18 l=1,n
+              a(ll,l)=a(ll,l)-a(icol,l)*dum
+18          continue
+            do 19 l=1,m
+              b(ll,l)=b(ll,l)-b(icol,l)*dum
+19          continue
+          endif
+21      continue
+22    continue
+      do 24 l=n,1,-1
+        if(indxr(l).ne.indxc(l))then
+          do 23 k=1,n
+            dum=a(k,indxr(l))
+            a(k,indxr(l))=a(k,indxc(l))
+            a(k,indxc(l))=dum
+23        continue
+        endif
+24    continue
+      return
+      END
Index: src/PrintGeomVasp.f90
===================================================================
--- src/PrintGeomVasp.f90	(revision 0)
+++ src/PrintGeomVasp.f90	(revision 1)
@@ -0,0 +1,97 @@
+SUBROUTINE PrintGeomVasp(Title,geom,LatrLoc,FrozAt,IoUnit)
+
+! this subroutine prints a cartesian geometry in the VASP POSCAR format
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+  CHARACTER(*), INTENT(IN) :: TITLE
+  REAL(KREAL),INTENT(IN) :: LatrLoc(3,3),Geom(3*Nat)
+  LOGICAL, INTENT(IN) :: FrozAt(Nat)
+  INTEGER(KINT), INTENT(IN) :: IoUnit
+
+  INTEGER(KINT) :: IGeom, Idx, Iat, I,J
+  REAL(KREAL), ALLOCATABLE :: GeomTmpC2(:,:),GeomTmpC(:,:)
+  REAL(KREAL) :: MRot(3,3)
+
+  REAL(KREAL) :: X,Y,Z
+
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('printgeomvasp')
+ if (debug) WRITE(*,*) '================ Entering PrintGeomVasp ===================='
+
+  ALLOCATE(GeomTmpC2(Nat,3),GeomTmpC(3,Nat))
+
+  GeomTmpC=reshape(Geom,SHAPE=(/3,Nat/),ORDER=(/2,1/))
+
+     DO I=1,Nat
+        Iat=Order(I)
+!        if (debug) WRITE(*,*) "WriteVASP I,Order(I)",I,Iat
+        GeomTmpC2(I,1:3)=GeomTmpC(1:3,Iat)
+     END DO
+
+     if (debug) THEN
+        WRITe(*,*) Nat
+        WRITe(*,*) "Original"
+        DO I=1,Nat
+           WRITE(*,'(1X,A4,3(1X,F12.6))') AtName(I), &
+                x0_vasp(I),Y0_vasp(I),z0_vasp(I)
+        END DO
+        WRITE(*,*) Nat
+        WRITe(*,*) "Before align"
+        DO I=1,Nat
+           WRITE(*,'(1X,A4,3(1X,F12.6))') AtName(I), &
+                GeomTmpC2(I,1), GeomTmpC2(I,2), GeomTmpC2(I,3)
+        END DO
+     ENDIF
+
+
+     IF ((COORD.EQ.'ZMAT').AND.(Nat.GE.4)) THEN
+        Call  AlignPartial(Nat,x0_vasp,y0_vasp,z0_vasp,     &
+             GeomTmpC2(1,1),GeomTmpC2(1,2),GeomTMPC2(1,3),       &
+             FrozAt,MRot)
+        if (debug) THEN
+           WRITE(*,*) NAt
+           WRITe(*,*) "Aligned ?"
+           DO I=1,Nat
+              WRITE(*,'(1X,A4,3(1X,F12.6))') AtName(I), &
+                   GeomTmpC2(I,1), GeomTmpC2(I,2), GeomTmpC2(I,3)
+           END DO
+        ENDIF
+     END IF
+
+     ! We print the corresponding file
+     WRITE(IOUNIT,'(A)') Trim(Title)
+     WRITE(IOUNIT,'(1X,F18.14)') Vasp_Param
+     WRITE(IOUNIT,'(3(1X,F21.16))')  Lat_a(1)/Vasp_param,Lat_a(2)/Vasp_param,Lat_a(3)/Vasp_param
+     WRITE(IOUNIT,'(3(1X,F21.16))')  Lat_b(1)/Vasp_param,Lat_b(2)/Vasp_param,Lat_b(3)/Vasp_param
+     WRITE(IOUNIT,'(3(1X,F21.16))')  Lat_c(1)/Vasp_param,Lat_c(2)/Vasp_param,Lat_c(3)/Vasp_param
+     WRITE(IOUNIT,'(A)') TRIM(Vasp_Types)
+     WRITE(IOUNIT,'(A)') TRIM(Vasp_comment)
+     WRITE(IOUNIT,'(A)') TRIM(Vasp_direct)
+     DO I=1,Nat
+        X=0.
+        Y=0.
+        Z=0.
+        DO J=1,3
+           X=X+GeomTmpC2(I,J)*LatrLoc(1,J)
+           Y=Y+GeomTmpC2(I,J)*LatrLoc(2,J)
+           Z=Z+GeomTmpC2(I,J)*LatrLoc(3,J)
+        END DO
+        WRITE(IOUNIT,'(3F20.16,1X,3A4)') X,Y,Z,FFF(1:3,I)
+     END DO
+
+  DeALLOCATE(GeomTmpC2)
+ if (debug) WRITE(*,*) '================  PrintGeomVasp OVER ===================='
+
+END SUBROUTINE PrintGeomVasp
Index: src/valid.f90
===================================================================
--- src/valid.f90	(revision 0)
+++ src/valid.f90	(revision 1)
@@ -0,0 +1,118 @@
+! This function returns true or false depending on the string you give as a parameter
+! Its purpose is to centralize the debugging flags into only one external file
+! so that debugging can be turned on or off easily at runtime.
+! (basically as it was done in ADF...
+! except that my version is much more basic (much much much more !) )
+
+      function valid(string) result (isValid)
+
+      use Io_module
+
+      IMPLICIT NONE
+
+      interface
+         subroutine upcase(string)
+           character(*), intent(inout) :: string
+         end subroutine upcase
+      end interface
+
+      CHARACTER(*), intent(in) :: string
+      logical                  :: isValid
+      INTEGER(4), PARAMETER :: NMax=500
+
+      CHARACTER(64),save :: List(NMax)
+      LOGICAL,save       :: Value(NMax)
+      LOGICAL,save       :: TInit=.False.
+      CHARACTER(132) :: LINE, ValTMP, LString
+      LOGICAL       :: ValueTMP, Found
+      LOGICAL,SAVE       :: Tall=.False., FValidFile, ValAll
+      INTEGER(4) :: ios, i,j,k
+      INTEGER(4), SAVE ::  NEntries
+
+      IF (.not.TInit) THEN
+         NEntries=0
+         TInit=.TRUE.
+         INQUIRE(FILE=DebugFile,EXIST=FValidFile)
+         if (FValidFile) THEN
+            OPEN(IOTMP,File=DebugFile,IOSTAT=ios)
+
+! The file exists so we will read it !
+            DO While (ios==0)
+               READ(IOTMP,'(A)',ERR=999,END=999) LINE
+!               WRITE(*,*) 'LINE READ',trim(Line)
+               if (ios==0) THEN
+                  Line=AdjustL(Line)
+!               WRITE(*,*) 'LINE ADJ',trim(Line)
+                  call Upcase(Line)
+!               WRITE(*,*) 'LINE UP',trim(Line)
+                  if (Line(1:1)/='#') THEN
+! This is not a comment, we go on
+                     i=index(Line,' ')
+! We take the first word, it will be our value
+                     ValTMP=Line(1:i-1)
+                     j=len_trim(line)
+                     Line=adjustL((Line(i+1:j)))
+!                     WRITE(*,*) 'VALID INIT ',NEntries,trim(ValTMP),
+!     &   ' - ',trim(Line)
+                     if (ValTMP(1:1)=='.') ValTmp=ValTMP(2:)
+                     if (ValTMP(1:1)=='F') ValueTMP=.False.
+                     if (ValTMP(1:1)=='T') ValueTMP=.True.
+                     if (Line(1:1)=='*') THEN
+                        ValAll=ValueTMP
+                        TAll=.True.
+                     ELSE
+                        if (Tall) ValueTMP=ValAll
+                        NEntries=NEntries+1
+                        Value(NEntries)=ValueTMP
+                        Line=AdjustL(Line)
+                        List(NEntries)=Line(1:64)
+                     END IF
+                  END IF
+               END IF
+            END DO
+ 999     CONTINUE
+         CLOSE(IOTMP)
+!         WRITE(*,*) "DBG Valid, " // Trim(DebugFile) // "read, with "
+!    &    ,NEntries
+!         DO I=1,NEntries
+!            WRITE(*,*) List(I),Value(I)
+!         END DO
+       END IF
+      END IF
+
+      IF (.NOT.FValidFile) THEN
+         isValid=.FALSE.
+         Return
+      END IF
+
+! The INIT file has been read !
+      LString=trim(adjustL(String))
+      Call UPcase(LString)
+      Found=.false.
+      Do I=1,NEntries
+         if (trim(List(I)).eq.trim(LString)) THEN
+            Found=.TRUE.
+            isValid=Value(I)
+!            WRITE(*,*) 'zoeurezoiru'
+         END IF
+!         WRITE(*,*) I,' : ',trim(list(I)),' - ',trim(LSTRING),' *'
+      END DO
+
+!      WRITE(*,*) 'Found:',Found,'isval',isvalid
+!      WRITE(*,*) 'Debug is ',isvalid," for ",Trim(LString)
+
+      if (.NOT.Found) THEN
+         IF (Tall) THEN
+            WRITE(*,*) 'The option ',String, &
+                 ' is not recognized'
+            WRITE(*,*) 'Assigning value ',ValAll
+            isValid=ValAll
+         ELSE
+            isValid=.FALSE.
+         END IF
+         NEntries=Nentries+1
+         List(Nentries)=Trim(LString)
+         Value(Nentries)=Valall
+      END IF
+
+      END function valid

Property changes on: src/valid.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Add2indzmat.f90
===================================================================
--- src/Add2indzmat.f90	(revision 0)
+++ src/Add2indzmat.f90	(revision 1)
@@ -0,0 +1,74 @@
+SUBROUTINE  add2indzmat(na,izm,n1,n2,n3,n4,ind_zmat,x,y,z)
+  ! This subroutine adds the description of atom n1
+  ! into ind_zmat at position izm
+  ! it checks that atoms n1 n2 n3 are not aligned
+  ! and if so, it describes n1 as n1 n2 n4 n3 instead of n1 n2 n3 n4.
+  ! As n2 n3 n4 are not aligned, this is sufficient to ensure that the description
+  ! of n1 is ok.
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+
+  INTEGER(KINT), INTENT(IN) :: na,izm,n1,n2
+  INTEGER(KINT), INTENT(INOUT) :: n3,n4
+  INTEGER(KINT) :: ind_zmat(na,5),n0
+  REAL(KREAL) :: x(na), y(na), z(na)
+
+  real(KREAL) :: vx1,vy1,vz1,norm1
+  real(KREAL) :: vx2,vy2,vz2,norm2
+  real(KREAL) :: vx3,vy3,vz3,norm3
+  REAL(KREAL) :: pi
+
+  LOGICAL :: debug
+
+
+  REAL(KREAL) :: Ang123,Ang234,sangle
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+  END INTERFACE
+
+  debug=valid("add2indzmat")
+  pi=acos(-1.d0)
+
+  if (debug) WRITE(*,*) "Entering Add2IndZmat with izm,n1,n2,n3,n4",izm,n1,n2,n3,n4
+  Call vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+  Call vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+  Call vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+
+  Ang123=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)/180.*pi
+  Ang234=angle(vx2,vy2,vz2,norm2,vx3,vy3,vz3,norm3)/180.*pi
+
+  sangle=sin(ang123)
+  if (sangle.LE.0.09d0) THEN
+     sangle=sin(ang234) 
+     if (sangle.LE.0.09d0) THEN
+        WRITE(*,*) "ERROR in Add2IndZmat : all four atoms aligned"
+        WRITE(*,*) n1,n2,n3,n4
+        STOP
+     END IF
+     n0=n3
+     n3=n4
+     n4=n0
+  END IF
+  ind_zmat(izm,1)=n1
+  ind_zmat(izm,2)=n2
+  ind_zmat(izm,3)=n3
+  ind_zmat(izm,4)=n4
+
+  RETURN
+END SUBROUTINE add2indzmat
+
Index: src/PrintGeom.f90
===================================================================
--- src/PrintGeom.f90	(revision 0)
+++ src/PrintGeom.f90	(revision 1)
@@ -0,0 +1,114 @@
+! This subroutine prints a geometry
+SUBROUTINE PrintGeom(Title,Nat,NCoord,Geom,Coord,IOOUT,Atome,Order,OrderInv,IndZmat)
+
+  use Path_module, only : Renum,Nom,NCart,Pi
+
+  IMPLICIT NONE
+
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  CHARACTER(*), INTENT(IN) :: Title
+  INTEGER(KINT), INTENT(IN) :: Nat,NCoord,IoOut
+  INTEGER(KINT), INTENT(IN) :: Atome(Nat),Order(Nat), OrderInv(Nat),IndZmat(Nat,5)
+  CHARACTER(32), INTENT(IN) :: Coord
+  REAL(KREAL), INTENT(IN) :: Geom(NCoord)
+
+  INTEGER(KINT) :: Idx, Iat,I,IBeg
+  LOGICAL :: Debug=.FALSE.
+
+  SELECT CASE (COORD)
+  CASE ("ZMAT") 
+     WRITE(IOOUT,'(1X,A)') TRIM(AdjustL(Title))
+     WRITE(IOOUT,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+     WRITE(IOOUT,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+          Nom(Atome(OrderInv(indzmat(2,2)))),Geom(1)
+     WRITE(IOOUT,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+          Nom(Atome(OrderInv(indzmat(3,2)))),Geom(2), &
+          Nom(Atome(OrderInv(indzmat(3,3)))),Geom(3)*180./Pi
+     Idx=4
+     DO Iat=4,Nat
+        WRITE(IOOUT,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+             Nom(Atome(OrderInv(indzmat(iat,2)))),Geom(Idx), &
+             Nom(Atome(OrderInv(indzmat(iat,3)))),Geom(Idx+1)*180./Pi, &
+             Nom(Atome(OrderInv(indzmat(iat,4)))),Geom(Idx+2)*180./Pi
+        Idx=Idx+3
+     END DO
+
+
+     if (debug) THEN
+        WRITE(*,'(1X,A)') TRIM(AdjustL(Title))
+        WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+        WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+             Nom(Atome(OrderInv(indzmat(2,2)))),Geom(1)
+        WRITE(*,'(1X,A5,3(1X,A4,1X,F14.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+             Nom(Atome(OrderInv(indzmat(3,2)))),Geom(2), &
+             Nom(Atome(OrderInv(indzmat(3,3)))),Geom(3)*180./Pi
+        Idx=4
+        DO Iat=4,Nat
+           WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                Nom(Atome(OrderInv(indzmat(iat,2)))),Geom(Idx), &
+                Nom(Atome(OrderInv(indzmat(iat,3)))),Geom(Idx+1)*180./Pi, &
+                Nom(Atome(OrderInv(indzmat(iat,4)))),Geom(Idx+2)*180./Pi
+           Idx=Idx+3
+        END DO
+     END IF
+  CASE ("MIXED") 
+     !     WRITE(*,'(1X,A,12(1X,F10.5))') "IntCoordTmp:",Geom(1:NCoord)
+     WRITE(IOOUT,'(1X,A)') TRIM(AdjustL(Title))
+     DO I=1,NCart
+        WRITE(IOOUT,'(1X,A5,3(1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1)))) &
+             ,Geom(3*I-2:3*I)
+     END DO
+     Idx=3*NCart+1
+     SELECT CASE (NCart)
+     CASE (1)
+        I=2
+        WRITE(IOOUT,'(1X,A5,3(I5,F11.6))') Nom(Atome(OrderInv(Indzmat(I,1)))), &
+             IndZmat(I,2),Geom(Idx)
+        Idx=Idx+1
+        I=3
+        WRITE(IOOUT,'(1X,A5,3(I5,F11.6))') Nom(Atome(OrderInv(Indzmat(I,1)))), &
+             IndZmat(I,2),Geom(Idx),IndZmat(I,3),          &
+             Geom(Idx+1)*180./Pi
+        Idx=Idx+2
+        Ibeg=4
+     CASE (2)
+        I=3
+        WRITE(IOOUT,'(1X,A5,3(I5,F11.6))') Nom(Atome(OrderInv(Indzmat(I,1)))), &
+             IndZmat(I,2),Geom(Idx),IndZmat(I,3),          &
+             Geom(Idx+1)*180./Pi
+        Idx=Idx+2
+        Ibeg=4
+     CASE DEFAULT
+        IBeg=NCart+1
+     END SELECT
+     DO I=IBeg,Nat
+        WRITE(IOOUT,'(1X,A5,3(I5,F11.6))') Nom(Atome(OrderInv(Indzmat(I,1)))), &
+             IndZmat(I,2),Geom(Idx),IndZmat(I,3),          &
+             Geom(Idx+1)*180./Pi, &
+             IndZmat(I,4),Geom(Idx+2)*180./Pi
+        Idx=Idx+3
+     END DO
+  CASE ('CART','HYBRID')
+     WRITE(IOOUT,'(1X,I5)') Nat
+     WRITE(IOOUT,'(1X,A)') TRIM(AdjustL(Title))
+     DO I=1,Nat
+        Iat=I
+        If (renum) Iat=Order(I)
+!!! CAUTION : PFL 29.AUG.2008 ->
+        ! Old line:
+        !        WRITE(IOOUT,'(1X,A5,3(1X,F11.6))') Nom(Atome(i)), Geom(3*Iat-2:3*Iat)
+        ! uses implicitly that Geom is Geom(3,Nat) whereas it is in fact Geom(Nat,3) :-(
+        WRITE(IOOUT,'(1X,A5,3(1X,F11.6))') Nom(Atome(i)), Geom(Iat), Geom(Iat+Nat), Geom(Iat+2*Nat)
+
+     END DO
+  CASE ('BAKER')
+     !WRITE(IOOUT,*) "Baker coordinates are difficult to interpret. Therefore cartesian coordinates"
+     !WRITE(IOOUT,*) "Should be printed"
+     WRITE(*,*) "Baker coordinates are difficult to interpret. Therefore cartesian"
+     WRITE(*,*) "coordinates are printed above."
+  END SELECT
+
+END SUBROUTINE PRINTGEOM
Index: src/Extrapol_int.f90
===================================================================
--- src/Extrapol_int.f90	(revision 0)
+++ src/Extrapol_int.f90	(revision 1)
@@ -0,0 +1,515 @@
+SUBROUTINE Extrapol_int(iopt,s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+
+  ! This subroutine constructs the path, and if dist<>Infinity, it samples
+  ! the path to obtain geometries.
+  ! Basically, you call it twice: i) dist=infinity, it will calculate the length of the path
+  ! ii) dist finite, it will give you the images you want along the path.
+  !
+  ! For now, it gives equidistant geometries
+  !
+
+  ! Default value of FRot=.TRUE.
+  ! Default value of NMaxPtPath = 1000
+  ! IntCoordI(:,:) ! (NGeomI,3*Nat-6)
+  ! XyzGeomF(:,:,:) ! (NGeomF,3,Nat)
+  ! Default value of FAlign=.TRUE.
+  use Path_module, only : NMaxPtPath, IntCoordI, Pi, IndZmat, XyzGeomF, &
+       IntCoordF, IntTangent, Renum, Nom, Order, MassAt, SGeom, XyzGeomI, &
+       Atome, Nat, NGeomI, NCoord, NGeomF, OrderInv,NFroz,FrozAtoms
+  ! IndZmat(Nat,5)
+
+  use Io_module
+
+
+  IMPLICIT NONE
+
+
+  REAL(KREAL), INTENT(OUT) :: s
+  ! X0(Nat),Y0(Nat),Z0(Nat): reference geometry.
+  REAL(KREAL), INTENT(IN) :: dist,X0(Nat),Y0(Nat),Z0(Nat)
+  REAL(KREAL), INTENT(IN) :: Xgeom(NGeomI),Coef(NGeomI,NCoord)
+  ! Iopt: Number of the cycles for the optimization
+  INTEGER(KINT), INTENT(IN) :: Iopt
+  REAL(KREAL), INTENT(OUT) :: XGeomF(NGeomF)
+
+  INTEGER(KINT) :: IdxGeom, I, J, K, Idx
+  REAL(KREAL) :: Rmsd,MRot(3,3), ds, u, v
+  REAL(KREAL) :: a_val, d
+
+  REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3)
+  REAL(KREAL), ALLOCATABLE :: ValZmat(:,:),DerInt(:) ! (Nat,3)
+
+
+  LOGICAL ::  debug, print,printspline
+  LOGICAL, EXTERNAL :: valid
+
+  INTEGER(KINT) :: NSpline
+  CHARACTER(LCHARS) :: FileSpline,TmpChar
+
+
+  !	LOGICAL :: FAlign=.FALSE., FRot=.FALSE.
+
+  ! We will calculate the length of the path, in MW coordinates...
+  ! this is done is a stupid way: we interpolate the zmatrix values,
+  ! convert them into cartesian, weight the cartesian
+  ! and calculate the evolution of the distance ! 
+  ! We have to follow the same procedure for every geometry
+  ! so even for the first one, we have to convert it from zmat
+  ! to cartesian !
+
+  debug=valid("pathcreate")
+  print=valid("printgeom")
+  printspline=(valid("printspline").AND.(dist<=1e30))
+
+  if (debug) Call Header("Entering Extrapol_int")
+
+! We want 100 points along the interpolating path
+  NSpline=int(NMaxPtPath/100)
+  if (printspline) THEN
+     WRITE(TmpChar,'(I5)') Iopt
+     FileSpline=Trim(adjustL(PathName)) // '_spline.' // AdjustL(TRIM(TmpChar))
+     OPEN(IOTMP,FILE=FileSpline)
+
+  END IF
+
+  ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3),valzmat(Nat,3),DerInt(NCoord))
+  IdxGeom=1
+
+  XYZTmp2(1,1)=0.
+  XYZTmp2(1,2)=0.
+  XYZTmp2(1,3)=0.
+  XYZTmp2(2,2)=0.
+  XYZTmp2(2,3)=0.
+  XYZTmp2(3,3)=0.
+
+  valzmat=0.
+  valzmat(2,1)=IntCoordI(1,1)
+  valzmat(3,1)=IntCoordI(1,2)
+  valzmat(3,2)=IntCoordI(1,3)*180./Pi
+  Idx=4
+  DO I=4,Nat
+     ValZmat(I,1)=IntCoordI(1,Idx)
+     Idx=Idx+1
+     DO J=2,3
+        ValZmat(I,J)=IntCoordI(1,Idx)*180./Pi
+        Idx=Idx+1
+     END DO
+  END DO
+
+  XyzTmp2(2,1)=valzmat(2,1)
+  d=valzmat(3,1)
+  a_val=valzmat(3,2)/180.*Pi
+  !              write(*,*) "aval,pi",a_val,valzmat(3,2),pi
+  if (Nat.GE.3) THEN
+     if (IndZmat(3,2).EQ.1)  THEN
+        XyzTmp2(3,1)=XYzTmp2(1,1)+d*cos(a_val)
+     ELSE
+        XyzTmp2(3,1)=XyzTmp2(2,1)-d*cos(a_val)
+     ENDIF
+     XyzTmp2(3,2)=d*sin(a_val)
+  ENDIF
+  !              i=1
+  !                WRITE(*,*) 'TOTOCart:',i, (XYzTMP2(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+  !              i=2
+  !                WRITE(*,*) 'TOTOCart:',i, (XYzTMP2(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+  !              i=3
+  !                WRITE(*,*) 'TOTOCart:',i, (XYzTMP2(I,J),J=1,3)
+  !                WRITE(*,*) 'TOTOZma:',i, (valzmat(I,J),J=1,3)
+
+  DO i=4,Nat
+     call ConvertZmat_cart(i,IndZmat,valzmat,                &
+          XYzTMP2(1,1), XYzTMP2(1,2),XYzTMP2(1,3))
+     !                  WRITE(*,*) 'TOTOZma:',i,IndZmat(I,1),            &
+     !                        (IndZmat(I,J+1),valzmat(I,J),J=1,3)
+     !                   WRITE(*,*) 'TOTOCart:',i, (XYzTMP2(I,J),J=1,3)
+  END DO
+
+  ! We align this geometry with the original one
+  ! PFL 17/July/2006: only if we have more than 4 atoms.
+  IF (Nat.GE.4) THEN
+     ! The rotation matrix MRot has INTENT(OUT) in subroutine rotation_matrix(...),
+     ! which is called in the CalcRmsd(...).
+     ! PFL 24 Nov 2008 ->
+     ! If we have frozen atoms we align only those ones.
+     if (NFroz.GT.0) THEN
+        Call AlignPartial(Nat,x0,y0,z0,                     &
+             xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+             FrozAtoms,MRot)
+     ELSE
+        Call  CalcRmsd(Nat, x0,y0,z0,                              &
+             xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+             MRot,rmsd,.TRUE.,.TRUE.)
+     END IF
+     ! <- PFL 24 Nov 2008
+  END IF
+
+  XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+  IntCoordF(IdxGeom,:)=IntCoordI(1,:)
+
+  ! We calculate the first derivatives
+  u=0.d0
+  DO Idx=1,NCoord
+     call splintder(u,v,DerInt(iDX),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+  END DO
+  IntTangent(IdxGeom,:)=DerInt
+
+  if (print.AND.(Dist.LE.1e20)) THEN
+     WRITE(IOOUT,'(1X,I5)') Nat
+     WRITE(IOOUT,*) "# Cartesian Coordinates for geom",IdxGeom
+     DO i=1,Nat
+        If (Renum) THEN
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),      &
+                (XyzTmp2(Order(I),J),J=1,3)
+        ELSE
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),      &
+                (XyzTmp2(I,J),J=1,3)
+        END IF
+     END DO
+  END IF
+
+  ! We initialize the first geometry
+  ! PFL 26 Nov 2008 ->
+  ! Now, I copy XyzTmp2 into XyzTmp because XyzTmp2 has been aligned
+  ! with the reference geometry
+
+  XyzTmp=XyzTmp2
+
+  !   XyzTmp(1,1)=0.
+  !   XyzTmp(1,2)=0.
+  !   XyzTmp(1,3)=0.
+  !   XyzTmp(2,2)=0.
+  !   XyzTmp(2,3)=0.     
+  !   XyzTmp(3,3)=0.
+
+  !   XyzTmp(2,1)=valzmat(2,1)
+  !   d=valzmat(3,1)
+  !   a_val=valzmat(3,2)/180.*Pi
+
+  !   if (Nat.GE.3) THEN
+  !      if (IndZmat(3,2).EQ.1)  THEN
+  !         XyzTmp(3,1)=XYzTmp(1,1)+d*cos(a_val)
+  !      ELSE
+  !         XyzTmp(3,1)=XyzTmp(2,1)-d*cos(a_val)
+  !      ENDIF
+  !      XyzTmp(3,2)=d*sin(a_val)
+  !   ENDIF
+
+  !   DO i=4,Nat
+  !      call ConvertZmat_cart(i,IndZmat,valzmat,        &
+  !           XYzTMP(1,1), XYzTMP(1,2),XYzTMP(1,3))
+  !   END DO
+
+  ! <- PFL 26 Nov 2008
+
+  s=0.
+  if (printspline) THEN
+     SELECT CASE (Nat)
+     CASE(2)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1)
+     CASE (3)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2)
+     CASE(4:)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2),valzmat(4:Nat,1:3)
+     END SELECT
+  END IF
+  valzmat=0.d0
+
+  DO K=1,NMaxPtPath
+     u=real(K)/NMaxPtPath*(NGeomI-1.)
+
+     XYZTmp2(1,1)=0.
+     XYZTmp2(1,2)=0.
+     XYZTmp2(1,3)=0.
+     XYZTmp2(2,2)=0.
+     XYZTmp2(2,3)=0.
+     XYZTmp2(3,3)=0.
+
+     ! We generate the interpolated Zmatrix
+     call splintder(u,v,DerInt(1),NGeomI,xgeom(1),IntCoordI(1,1),Coef(1,1))
+     valzmat(2,1)=v
+     call splintder(u,v,DerInt(2),NGeomI,xgeom(1),IntCoordI(1,2),Coef(1,2))
+     valzmat(3,1)=v
+     call splintder(u,v,DerInt(3),NGeomI,xgeom(1),IntCoordI(1,3),Coef(1,3))
+     valzmat(3,2)=v*180./Pi
+     Idx=4
+     DO I=4,Nat
+        call splintder(u,v,DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+        valzmat(I,1)=v
+        Idx=Idx+1
+        DO J=2,3
+           call splintder(u,v,DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+           valzmat(I,J)=v*180./pi
+           Idx=Idx+1
+        END DO
+     END DO ! matches DO I=4,Nat
+
+     ! We convert it into Cartesian coordinates
+     XyzTmp2(2,1)=valzmat(2,1)
+     d=valzmat(3,1)
+     a_val=valzmat(3,2)/180.*Pi
+     if (Nat.GE.3) THEN
+        if (IndZmat(3,2).EQ.1)  THEN
+           XyzTmp2(3,1)=XYzTmp2(1,1)+d*cos(a_val)
+        ELSE
+           XyzTmp2(3,1)=XyzTmp2(2,1)-d*cos(a_val)
+        ENDIF
+        XyzTmp2(3,2)=d*sin(a_val)
+     ENDIF
+
+     DO I=4,Nat
+        call ConvertZmat_cart(I,IndZmat,valzmat,       &
+             XYzTMP2(1,1), XYzTMP2(1,2),XYzTMP2(1,3))
+     END DO
+
+     IF (Nat.GE.4) THEN
+        ! PFL 24 Nov 2008 ->
+        ! If we have frozen atoms we align only those ones.
+        if (NFroz.GT.0) THEN
+           Call AlignPartial(Nat,x0,y0,z0,                     &
+                xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                FrozAtoms,MRot)
+        ELSE
+           ! PFL 26 Nov 2008!
+           ! Note to myself: in Extrapol_cart we always align on x0,y0,z0 but here
+           ! we align on the previous geom... what is the best ? Is there a difference ?
+           Call  CalcRmsd(Nat, XyzTmp(1:Nat,1),XyzTmp(1:Nat,2),XyzTmp(1:Nat,3), &
+                xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                MRot,rmsd,.TRUE.,.TRUE.)
+        END IF
+        ! <- PFL 24 Nov 2008
+     END IF
+
+     ds=0.
+     DO I=1,Nat
+        DO J=1,3
+           ds=ds+MassAt(I)*(XYZTMp2(I,J)-XYZTmp(I,J))**2
+           XYZTmp(I,J)=XyzTMP2(I,J)
+        END DO
+     END DO
+
+
+     s=s+sqrt(ds)
+
+     if ((printspline).AND.(MOD(K,NSpline).EQ.0)) THEN
+        SELECT CASE (Nat)
+        CASE(2)
+           WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1)
+        CASE (3)
+           WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2)
+        CASE(4:)
+           WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2),valzmat(4:Nat,1:3)
+        END SELECT
+     END IF
+
+     !         if (debug) WRITE(*,*) "Debug u,s,dist",u,s,dist
+     if (s>=dist) THEN
+        if (debug) THEN
+           WRITE(*,*) "DBG Zmat",s
+           WRITE(*,'(1X,I5)') IndZmat(1,1)
+           WRITE(*,'(1X,I5,I5,1X,F10.4)') IndZmat(2,1),IndZmat(2,2),valzmat(2,1)
+           WRITE(*,'(1X,I5,2(I5,1X,F10.4))') IndZmat(3,1),IndZmat(3,2),valzmat(3,1)  &
+                ,IndZmat(3,3),valzmat(3,2)
+           DO I=4,Nat
+              WRITE(*,'(1X,I5,3(I5,1X,F10.4))') IndZmat(I,1),IndZmat(I,2),valzmat(I,1)  &
+                   ,IndZmat(I,3),valzmat(I,2),IndZmat(I,4),valzmat(I,3)
+           END DO
+        END IF ! matches if (debug) THEN
+
+        s=s-dist
+        IdxGeom=IdxGeom+1
+        SGeom(IdxGeom)=s+IdxGeom*dist
+        XgeomF(IdxGeom)=u
+        XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+        IntCoordF(IdxGeom,1)=valzmat(2,1)
+        IntCoordF(IdxGeom,2)=valzmat(3,1)
+        IntCoordF(IdxGeom,3)=valzmat(3,2)/180.*Pi
+        Idx=4
+        DO I=4,Nat
+           IntCoordF(IdxGeom,Idx)=valzmat(I,1)
+           IntCoordF(IdxGeom,Idx+1)=valzmat(I,2)/180.*Pi
+           IntCoordF(IdxGeom,Idx+2)=valzmat(I,3)/180.*Pi
+           Idx=Idx+3
+        END DO
+        IntTangent(IdxGeom,:)=DerInt
+
+        if (print) THEN
+           WRITE(IOOUT,'(1X,I5)') Nat
+           WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+           ! PFL 17/July/2006: only if we have more than 4 atoms.
+           IF (Nat.GE.4) THEN
+              ! PFL 24 Nov 2008 ->
+              ! If we have frozen atoms we align only those ones.
+              if (NFroz.GT.0) THEN
+                 Call AlignPartial(Nat,x0,y0,z0,                     &
+                      xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                      FrozAtoms,MRot)
+              ELSE
+                 Call  CalcRmsd(Nat, x0,y0,z0,                               &
+                      xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),   &
+                      MRot,rmsd,.TRUE.,.TRUE.)
+              END IF
+              ! <- PFL 24 Nov 2008
+
+           END IF
+
+           DO I=1,Nat
+              If (Renum) THEN
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),   &
+                      (XyzTmp2(Order(I),J),J=1,3)
+              ELSE
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),    &
+                      (XyzTmp2(I,J),J=1,3)
+              END IF
+           END DO
+
+        END IF ! matches if (print) THEN
+     END IF ! matches if (s>=dist) THEN
+  END DO ! matches DO K=1,NMaxPtPath, Is it correct??
+
+
+  if (printspline) THEN
+     SELECT CASE (Nat)
+     CASE(2)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1)
+     CASE (3)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2)
+     CASE(4:)
+        WRITE(IOTMP,'(15(1X,F10.5))') s,valzmat(2,1),valzmat(3,1:2),valzmat(4:Nat,1:3)
+     END SELECT
+  END IF
+
+  if (s>=0.9*dist) THEN
+     if (debug) WRITE(*,*) "DBG Extrapol_int L383: Adding last geom"
+     write(*,*) "Extrapol_int u,xgeom(NGeomI),s,dist,s-dist",u,xgeom(NGeomI),s,dist,s-dist
+!     u=xgeom(NGeomI)
+     s=s-dist
+
+
+!      ! We generate the interpolated Zmatrix
+!      call splintder(u,v,DerInt(1),NGeomI,xgeom(1),IntCoordI(1,1),Coef(1,1))
+!      valzmat(2,1)=v
+!      call splintder(u,v,DerInt(2),NGeomI,xgeom(1),IntCoordI(1,2),Coef(1,2))
+!      valzmat(3,1)=v
+!      call splintder(u,v,DerInt(3),NGeomI,xgeom(1),IntCoordI(1,3),Coef(1,3))
+!      valzmat(3,2)=v*180./Pi
+!      Idx=4
+!      DO I=4,Nat
+!         call splintder(u,v,DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+!         valzmat(I,1)=v
+!         Idx=Idx+1
+!         DO J=2,3
+!            call splintder(u,v,DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+!            valzmat(I,J)=v*180./pi
+!            Idx=Idx+1
+!         END DO
+!      END DO ! matches DO I=4,Nat
+
+!      ! We convert it into Cartesian coordinates
+!      XyzTmp2(2,1)=valzmat(2,1)
+!      d=valzmat(3,1)
+!      a_val=valzmat(3,2)/180.*Pi
+!      if (Nat.GE.3) THEN
+!         if (IndZmat(3,2).EQ.1)  THEN
+!            XyzTmp2(3,1)=XYzTmp2(1,1)+d*cos(a_val)
+!         ELSE
+!            XyzTmp2(3,1)=XyzTmp2(2,1)-d*cos(a_val)
+!         ENDIF
+!         XyzTmp2(3,2)=d*sin(a_val)
+!      ENDIF
+
+!      DO I=4,Nat
+!         call ConvertZmat_cart(I,IndZmat,valzmat,       &
+!              XYzTMP2(1,1), XYzTMP2(1,2),XYzTMP2(1,3))
+!      END DO
+
+!      IF (Nat.GE.4) THEN
+!         ! PFL 24 Nov 2008 ->
+!         ! If we have frozen atoms we align only those ones.
+!         if (NFroz.GT.0) THEN
+!            Call AlignPartial(Nat,x0,y0,z0,                     &
+!                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+!                 FrozAtoms,MRot)
+!         ELSE
+!            ! PFL 26 Nov 2008!
+!            ! Note to myself: in Extrapol_cart we always align on x0,y0,z0 but here
+!            ! we align on the previous geom... what is the best ? Is there a difference ?
+!            Call  CalcRmsd(Nat, XyzTmp(1:Nat,1),XyzTmp(1:Nat,2),XyzTmp(1:Nat,3), &
+!                 xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+!                 MRot,rmsd,.TRUE.,.TRUE.)
+!         END IF
+!         ! <- PFL 24 Nov 2008
+!      END IF
+
+     IdxGeom=IdxGeom+1
+
+
+
+     IF (IdxGeom.GT.NGeomF) THEN
+        WRITE(IOOUT,*) "!!! ERROR in Extrapol_int !!!!"
+        WRITE(IOOUT,*) "Too many structures. Increase NMaxPath"
+        WRITE(*,*) "** PathCreate ***"
+        WRITE(*,*) "Distribution of points along the path is wrong."
+        WRITE(*,*) "Increase value of NMaxPtPath in the input file"
+        WRITE(*,*) "Present value is:", NMaxPtPath
+        STOP
+     END IF
+
+     SGeom(IdxGeom)=s+IdxGeom*dist
+     XgeomF(IdxGeom)=min(u,NGeomI-1.d0)
+     XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+     !  XyzGeomF(IdxGeom,:,:)=XyzTmp2(:,:)
+     IntCoordF(IdxGeom,1)=valzmat(2,1)
+     IntCoordF(IdxGeom,2)=valzmat(3,1)
+     IntCoordF(IdxGeom,3)=valzmat(3,2)/180.*Pi
+     Idx=4
+     DO I=4,Nat
+        IntCoordF(IdxGeom,Idx)=valzmat(I,1)
+        IntCoordF(IdxGeom,Idx+1)=valzmat(I,2)/180.*Pi
+        IntCoordF(IdxGeom,Idx+2)=valzmat(I,3)/180.*Pi
+        Idx=Idx+3
+     END DO
+     IntTangent(IdxGeom,:)=DerInt     
+
+     if (print) THEN
+        WRITE(IOOUT,'(1X,I5)') Nat
+        WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+        ! PFL 17/July/2006: only if we have more than 4 atoms.
+        IF (Nat.GE.4) THEN
+           ! PFL 24 Nov 2008 ->
+           ! If we have frozen atoms we align only those ones.
+           if (NFroz.GT.0) THEN
+              Call AlignPartial(Nat,x0,y0,z0,                     &
+                   xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+                   FrozAtoms,MRot)
+           ELSE
+              Call  CalcRmsd(Nat, x0,y0,z0,                               &
+                   xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),   &
+                   MRot,rmsd,.TRUE.,.TRUE.)
+           END IF
+           ! <- PFL 24 Nov 2008
+        END IF
+
+        DO I=1,Nat
+           If (Renum) THEN
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),    &
+                   (XyzTmp2(Order(I),J),J=1,3)
+           ELSE
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),     &
+                   (XyzTmp2(I,J),J=1,3)
+           END IF
+        END DO ! matches DO I=1,Nat
+     END IF ! matches if (print) THEN
+  END IF ! matches if (s>=0.9*dist) THEN
+
+  if (debug) WRITE(*,*) 's final =',s
+
+  DEALLOCATE(XyzTmp,XyzTmp2,valzmat)
+
+  if (printspline) CLOSE(IOTMP)
+
+  if (debug) Call Header("Extrapol_int Over")
+
+
+END SUBROUTINE EXTRAPOL_INT
Index: src/ConvGrad_Cart2Int.f90
===================================================================
--- src/ConvGrad_Cart2Int.f90	(revision 0)
+++ src/ConvGrad_Cart2Int.f90	(revision 1)
@@ -0,0 +1,158 @@
+      SUBROUTINE ConvGrad_Cart2Int(n,BMat,indzmat,GradCart,GradInt)
+
+        use Io_module
+        use Path_module, only : atome
+
+        IMPLICIT NONE
+
+!
+        INTEGER(KINT), INTENT(IN) ::  n, indzmat(n,5)
+        REAL(KREAL), INTENT(IN)  :: BMat(3,n,3,n), GradCart(3,n)
+        REAL(KREAL), INTENT(INOUT)  :: GradInt(3,n)
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! This routines converts a gradient in cartesian coordinates into
+! the gradient in internal coordinates (either Zmat, Mixed or Baker)
+!
+! It uses a LAPACK subroutine (dgelsd) which purpose is:
+
+! *  DGELSD computes the minimum-norm solution to a real linear least
+! *  squares problem:
+! *      minimize 2-norm(| b - A*x |)
+! *  using the singular value decomposition (SVD) of A. A is an M-by-N
+! *  matrix which may be rank-deficient.
+
+! Variables:
+! input  : n, number of atoms
+!          BMat: the dZ/dx matrix
+!          GradCart: Gradient in cartesian coordinates
+!
+! output : GradInt: Gradient in internal coordintaes
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      logical    debug, init
+      REAL(KREAL), parameter :: zero = 0d0, tol = 1d-8,  eps = 1d-12
+ 
+      REAL(KREAL) , ALLOCATABLE :: AEigVec(:,:), AEigVal(:),ATA(:)
+      INTEGER(KINT) :: n3, iat, k
+      INTEGER(KINT) :: i
+!
+      save  debug, init
+      data  init /.false./
+
+!     .. Local Arrays  for LAPACK
+      INTEGER(KINT) :: Info, LWork, Rank
+      REAL(KREAL), ALLOCATABLE :: S(:), Work(:), GradCTmp(:,:)
+
+!     IWORK dimension should be at least 3*MIN(M,N)*NLVL + 11*MIN(M,N),
+!     where NLVL = MAX( 0, INT( LOG_2( MIN(M,N)/(SMLSIZ+1) ) )+1 )
+!     and SMLSIZ = 25 
+      INTEGER(KINT) :: LIWork, NLVL, SMLSIZ=12 ! We take smaller value just to be sure
+      INTEGER(KINT), ALLOCATABLE :: IWork(:) ! IWork
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     SUBROUTINE DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, &
+                        WORK, LWORK, IWORK, INFO )
+! *
+! *  -- LAPACK driver routine (version 3.2.2) --
+! *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+! *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+! *     June 2010
+! *
+! *     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+      DOUBLE PRECISION   RCOND
+!*     ..
+!*     .. Array Arguments ..
+      INTEGER            IWORK( * )
+      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), S( * ), WORK( * )
+
+    END SUBROUTINE DGELSD
+
+
+
+     
+  END INTERFACE
+
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+      if (.not.init) then
+        init = .true.
+        debug = valid ('GEOSTEP').OR.valid('ConvGrad')
+      endif
+
+!
+      Allocate(GradCTmp(3,n))
+
+      if (debug) WRITE(*,*) "================ Entering ConvGrad_Cart2Int ============="
+!
+      n3 = 3 * n
+!
+      
+      NLVL= MAX( 0, INT( LOG( n3*1.d0/(SMLSIZ+1))/LOG(2.d0) ) +1 )
+      LIWork=Max(1,3*n3*NLVL + 11*n3+1)
+
+      Allocate(IWork(LIWork),WOrk(1))
+
+      LWork=-1
+      GradInt=0.d0
+
+        call DGELSD( n3, n3, 1, BMat, n3, GradCart, n3, GradInt, Tol, RANK, &
+                        WORK, LWORK, IWORK, INFO )
+
+        LWork=Work(1)
+        if (debug) WRITE(*,*) "DEBUG CONVGRAD_CART2INT LWORK,N3=",LWORK,N3
+
+        DEALLOCATE(Work)
+        ALLOCATE(Work(LWork))
+
+        call DGELSD( n3, n3, 1, BMat, n3, GradCart, n3, GradInt, Tol, RANK, &
+                        WORK, LWORK, IWORK, INFO )
+
+        GradInt=GradCart
+      if (debug) then
+         WRITE(*,*) "DEBUG CONVGRAD_CART2INT -- GradInt after DGELSD"
+         WRITE(*,*) "INFO=",INFO
+         DO I=1,N
+            WRITE(*,'(1X,I5,3(1X,F13.6))') I, GradInt(1:3,I)
+         END DO
+      END IF
+
+
+! In case we used a Zmat, we might have dummy atoms.
+! We are extra cautious and put their gradient components to 0
+
+      do iat = 1, n
+        do k = 1, 3
+          if (atome(indzmat(iat,1)) == 0) then
+            GradInt(k,iat) = zero
+          endif
+        end do
+      end do
+
+      where (abs(GradInt)<=eps) GradInt=zero
+
+      if (debug) write (*,*) "DBG ConvGrad_Cart2Int GradInt=",GradInt
+
+      DEALLOCATE(IWork,Work,GradCTmp)
+!
+!
+      if (debug) WRITE(*,*) "================  ConvGrad_Cart2Int Over ============="
+      return
+! ======================================================================
+
+    end SUBROUTINE ConvGrad_Cart2Int

Property changes on: src/ConvGrad_Cart2Int.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/VectorPer.f90
===================================================================
--- src/VectorPer.f90	(revision 0)
+++ src/VectorPer.f90	(revision 1)
@@ -0,0 +1,47 @@
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! VectorPer
+!
+!!!!!!!!!!!!!!!!!!!!!!!
+!
+! This subroutine caclulates the vector defined by atom i and j
+! with j being displaced to a periodic image of the system.
+!
+! Input:
+!  i: (INTEGER) index of the first atom, in the central cell
+!  j: (INTEGER) index of the second atom, in a periodic image
+!  na,nb,nc: (INTEGER) number of displacement of j atom, in lattice vectors.
+!  x(Nat), y(nat), z(nat) : (REAL) Cartesian coordinates of the system.
+!
+! Output:
+! vx,vy,vz: (REAL) Vector i->j
+! Norm:     (REAL) Norm of the vector.
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Nat and Lattice vectors (lat_a, lat_b, lat_c) are taken from Path_Module
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      SUBROUTINE VectorPer(n1,n2,na,nb,nc,x,y,z,vx,vy,vz,norm)
+
+        use VarTypes
+        use Path_module, only : NAt,Lat_a,Lat_b,Lat_c
+
+        integer(KINT) :: n1,n2
+        INTEGER(KINT) :: na,nb,nc
+        real(KREAL) ::  x(Nat),y(Nat),z(Nat)
+        real(KREAL) ::  vx,vy,vz,norm
+
+        vx=x(n2)-x(n1)+na*Lat_a(1)+nb*Lat_b(1)+nc*Lat_c(1)
+        vy=y(n2)-y(n1)+na*Lat_a(2)+nb*Lat_b(2)+nc*Lat_c(2)
+        vz=z(n2)-z(n1)+na*Lat_a(3)+nb*Lat_b(3)+nc*Lat_c(3)
+
+        norm=dsqrt( vx*vx + vy*vy + vz*vz )
+
+!       write(6,*) "Dbg VectorPer : n1,n2, na,nb,nc :",n1,n2,na,nb,nc
+!       write(6,*) vx,vy,vz,norm
+!       write(6,*) 
+
+	RETURN
+      END SUBROUTINE VectorPer
Index: src/egrad_turbomole.f90
===================================================================
--- src/egrad_turbomole.f90	(revision 0)
+++ src/egrad_turbomole.f90	(revision 1)
@@ -0,0 +1,142 @@
+subroutine egrad_turbomole(e,geomcart,gradcart)
+
+  ! This routines calculates the energy and the gradient of 
+  ! a molecule, using TurboMole 
+
+  use Path_module, only : Nat, AtName, unit,ProgExe,renum,order,OrderInv
+  use Io_module
+
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: e
+  ! Nb degree of freedom
+  REAL(KREAL), INTENT (IN) :: geomcart(Nat,3)
+  ! Gradient calculated at Geom geometry
+  REAL(KREAL), INTENT (OUT) :: gradcart(3*NAt)
+
+  ! ======================================================================
+
+  character(LCHARS) :: LINE
+
+  logical           :: debug
+
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:)
+
+  REAL(KREAL) :: d, a_val, Pi
+
+  REAL(KREAL) :: coef,x
+  INTEGER(KINT) :: iat, jat, kat, i, j, k,n3at
+  INTEGER(KINT) :: ITmp1,ITmp2, Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  CHARACTER(132) :: FileIn, FileOut, FileChk
+
+  CHARACTER(3) :: SepIn=' ', SepOut=' '
+  CHARACTER(VLCHARS), SAVE ::  RunCommand
+
+  ! ======================================================================
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  ! ======================================================================
+
+  Pi=dacos(-1.0d0)
+  n3at=3*nat
+
+  debug=valid('EGRAD')
+  if (debug) WRITE(*,*) '================ Entering Egrad_TurboMole ===================='
+
+
+  gradcart=0.
+  E=0.
+
+  FileIn="coord"
+  FileOut="gradient"
+
+  RunCommand=Trim(ProgExe)
+
+  IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(RunCommand)
+
+  ! we create the input file
+
+  OPEN(IOTMP,File=FileIn)
+  WRITE(IOTMP,'(1X,A)') '$coord'
+  DO I=1,Nat
+     If (renum) THEN
+        Iat=Order(I)
+        WRITE(IOTMP,'(1X,3(1X,F15.8),A5)') GeomCart(Iat,:)*Unit,Trim(AtName(Iat))
+     ELSE
+        Iat=OrderInv(I)
+        WRITE(IOTMP,'(1X,3(1X,F15.8),A5)') GeomCart(I,:)*Unit,Trim(AtName(Iat))
+     END IF
+  END DO
+  WRITE(IOTMP,'(1X,A)') '$user-defined bonds'
+  WRITE(IOTMP,'(1X,A)') '$end'
+  CLOSE(IOTMP)
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG EGRAD ' //  Trim(FileIn)
+     call system('cat ' // Trim(FileIn))
+  END IF
+
+
+  call system(RunCommand)
+
+  if (debug) WRITE(*,*) 'DBG EGRAD, back from calculation'
+
+  ! Whatever the coordinate system, we read the cartesian gradient
+  ! and we convert it to Zmat or other if needed
+
+  OPEN(IOTMP,FILE=FileOut, STATUS='old')
+! We check that gradient file is ok
+  READ(IOTMP,'(A)') LINE 
+  Line=AdjustL(Line)
+  if (Line(1:5).NE.'$grad') THEN
+     WRITE(*,*) "Error with Turbomole, gradient file does not start with $grad"
+     STOP
+  END IF
+
+! we read the energy
+  READ(IOTMP,'(A)') LINE
+! energy is after the second = sign:
+!  cycle =      1    SCF energy =    -2889.2212497430   |dE/dxyz| =  0.064137
+  Idx=Index(Line,'=')
+  Line=Line(Idx+1:)
+  Idx=Index(Line,'=')
+  Line=Line(Idx+1:)
+ READ(Line,*) E
+
+! We skip the coordinates
+ DO I=1,Nat
+    READ(IOTMP,'(A)') LINE
+ END DO
+
+! We read the gradient
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     READ(IOTMP,*)  GradCart(3*Iat-2:3*Iat)
+     if (debug) WRITE(*,*) "I,Iat,GradCart:",I,Iat,GradCart(3*Iat-2:3*Iat)
+  END DO
+
+! TurboMole gives the Forces in au/a0, so we convert it into the 
+! gradient in ua/Angstrom 
+  gradCart=gradCart*unit
+
+  CLOSE(IOTMP)
+
+  if (debug) WRITE(*,*) '================  Egrad_TurboMole Over ===================='
+
+  RETURN
+
+999 CONTINUE
+  WRITE(*,*) 'We should not be here !!!!'
+  STOP
+  ! ======================================================================
+end subroutine egrad_TurboMole
Index: src/test_zmat.f90
===================================================================
--- src/test_zmat.f90	(revision 0)
+++ src/test_zmat.f90	(revision 1)
@@ -0,0 +1,52 @@
+!================================================================
+!       test si la z_matrice peut etre ecrite pour gaussian
+!          monstergauss exthuc
+!================================================================
+
+      FUNCTION test_zmat(na,ind_zmat)
+
+      use Path_module
+      use Io_module
+
+      IMPLICIT NONE
+
+      logical :: pos,test_zmat
+      integer(KINT) :: i,na,n
+      integer(KINT) :: ind_zmat(Na,5)
+      integer(KINT), ALLOCATABLE :: ind_pos(:)
+
+      ALLOCATE(ind_pos(Na))
+       pos=.true.
+
+      DO i=1,na
+       ind_pos(ind_zmat(i,1))=i
+      END DO
+
+      DO i=2,na
+        n=ind_zmat(i,2)
+        IF (ind_pos(n) .GE. i) THEN
+           pos=.false. .AND. pos
+           write(IOOUT,*) 'Bond:',n,ind_pos(n),i,pos
+        END IF
+      END DO
+
+      DO i=3,na
+        n=ind_zmat(i,3)
+        IF (ind_pos(n) .GE. i) THEN
+           pos=.false. .AND. pos
+           write(IOOUT,*) 'Angle:',n,ind_pos(n),i,pos
+        END IF
+      END DO
+
+      DO i=4,na
+        n=ind_zmat(i,4)
+        IF (ind_pos(n) .GE. i) THEN
+           pos=.false. .AND. pos
+           write(IOOUT,*) 'Dihedral:',n,ind_pos(n),i,pos
+        END IF
+      END DO
+
+      test_zmat=pos
+      DEALLOCATE(ind_pos)
+
+      END

Property changes on: src/test_zmat.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Energy_GEDIIS.f90
===================================================================
--- src/Energy_GEDIIS.f90	(revision 0)
+++ src/Energy_GEDIIS.f90	(revision 1)
@@ -0,0 +1,40 @@
+      SUBROUTINE Energy_GEDIIS(MRESET,MSET,ci,GeomSet,GradSet,ESET,NCoord,ER_star)
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+
+	  INTEGER(KINT) :: MRESET, MSET, NCoord
+	  REAL(KREAL) :: ci(MRESET), GeomSet(MRESET*NCoord), GradSet(MRESET*NCoord), ESET(MRESET)
+	  REAL(KREAL) :: ER_star, tmp
+	  
+	  INTEGER(KINT) :: I, J, IX, JX, INV, JNV, KX
+	  
+	  LOGICAL PRINT
+	  
+      PRINT=.FALSE.
+	  
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN Energy_GEDIIS   '')')
+	  
+      ER_star=0.D0
+      INV=-NCoord
+      DO IX=1,MSET
+         INV=INV+NCoord
+         JNV=-NCoord
+         DO JX=1,MSET
+            JNV=JNV+NCoord
+            tmp=0.D0
+	        DO KX=1, NCoord
+	           tmp = tmp + (((GradSet(INV+KX)-GradSet(JNV+KX))*(GeomSet(INV+KX)-GeomSet(JNV+KX)))/2.D0)
+	        END DO
+			ER_star = ER_star + ci(IX)*ci(JX)*tmp
+         END DO
+      END DO
+
+	  DO I=1, MSET
+	     ER_star = ER_star + (ci(I)*ESET(I))		
+	  END DO
+
+      IF (PRINT)  WRITE(*,'(/,''       END Energy_GEDIIS  '',/)')
+
+      END SUBROUTINE Energy_GEDIIS

Property changes on: src/Energy_GEDIIS.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Expand.f90
===================================================================
--- src/Expand.f90	(revision 0)
+++ src/Expand.f90	(revision 1)
@@ -0,0 +1,59 @@
+SUBROUTINE Expand(List,Idx,Dim)
+
+  ! This subroutine expands a list entered in a compacted form
+  ! ie 1 -10 => 1 2 3  4 5 6 7 8 9 10
+
+  use VarTypes
+
+  INTEGER(KINT), INTENT(IN) :: Dim
+  INTEGER(KINT), INTENT(INOUT) :: List(Dim)
+  INTEGER(KINT), INTENT(INOUT) :: Idx
+
+  LOGICAL, ALLOCATABLE :: FTmp(:) ! Dim
+  LOGICAL :: Debug
+  INTEGER(KINT) :: i
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+  END INTERFACE
+
+  Debug=valid('Expand')
+
+  Allocate(FTmp(Dim))
+  FTmp=.FALSE.
+
+  Idx=1
+
+  DO WHILE (List(Idx).NE.0)
+     If (List(Idx).LT.0) THEN
+        DO I=List(Idx-1),abs(List(Idx))
+           IF (.NOT.FTmp(I)) THEN
+              FTmp(I)=.TRUE.
+           END IF
+        END DO
+     ELSEIF (.NOT.FTmp(List(Idx))) THEN
+        FTmp(List(Idx))=.TRUE.
+     END IF
+     Idx=Idx+1
+  END DO
+
+  if (debug) WRITE(*,*) "DBG Expand,  List",List
+
+  ! We convert List into non compacted form
+  Idx=1
+  DO I=1,Dim
+     If(Ftmp(I)) THEN
+        List(Idx)=I
+        Idx=Idx+1
+     END IF
+  END DO
+  List(Idx)=0
+  Idx=Idx-1
+
+ DEALLOCATE(Ftmp)
+
+END SUBROUTINE Expand
Index: src/Makefile
===================================================================
--- src/Makefile	(revision 0)
+++ src/Makefile	(revision 1)
@@ -0,0 +1,409 @@
+################### Makefile for Path ############
+# (C) PFL 2008
+#################################################
+# Change the value of Machine before compiling
+# You might also have to edit the location of
+# some libraries (like mkl for ifort)
+
+Machine=gfortran
+
+###########################################
+#                                         #
+########### Main supported compilers     ##
+#                                         #
+###########################################
+ifeq ($(Machine),ifort)
+# Flags for Ifort
+COMP=/opt/intel/fc/9.1.036/bin/ifort
+F90=${COMP}  
+LINK=${COMP} -Vaxlib   -L/usr/lib/  -L/opt/intel/mkl/8.1/lib/32/ -lguide -lpthread -lmkl_lapack -lmkl_ia32  -lmkl
+FreeF=-FR
+endif
+
+ifeq ($(Machine),g95)
+# Flags for g95 
+COMP=g95 -g  -save-temps -Wall -fbounds-check
+#COMP=g95  -fbounds-check -g -ftrace=full -ftrace=frame  -save-temps
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP}   -L/usr/lib/ -llapack -lblas
+FreeF=-ffree-form
+endif
+
+ifeq ($(Machine),gfortran)
+# Flags for gfortran
+COMP=gfortran -g  -Wall -fbounds-check
+#COMP=g95  -fbounds-check -g -ftrace=full -ftrace=frame  -save-temps
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP} -L/usr/lib/  -llapack -lblas
+FreeF=-ffree-form
+endif
+
+
+ifeq ($(Machine),pgf)
+# Flags for PGF
+COMP=pgf90
+FLAGS= -mp  -fast -Kieee -fastsse  -tpp7 -Mipa=fast
+F90=$(COMP)  -c  $(FLAGS)
+LINK=pgf90 $(FLAGS)  -L/usr/local/pgi/linux86/6.2/lib -llapack  -lblas -lpthread 
+FreeF=-Mfree
+endif
+
+ifeq ($(Machine),pathscale)
+# Flags for PathScale
+COMP=/softs/pathscale/bin/pathf90
+F90=${COMP}
+LINK=${COMP}   -L/usr/lib/ -llapack -lblas
+FreeF=-FR
+endif
+
+ifeq ($(Machine),xlf)
+# Flags for Xlf
+COMP=xlf
+F90=${COMP}
+LINK=${COMP}   -L/usr/lib/ -llapack -lblas
+FreeF=-qfree
+endif
+
+############################################
+#
+# national center
+#
+############################################
+#
+#### IDRIS
+#
+ifeq ($(Machine),vargas)
+# Flags for Xlf
+COMP=xlf
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP}   -L/usr/lib/
+FreeF=-qfree
+endif
+
+ifeq ($(Machine),idris)
+# Flags for Xlf
+COMP=xlf
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP}   -L/usr/lib/
+FreeF=-qfree
+endif
+#
+#### CINES
+#
+
+ifeq ($(Machine),jade)
+# Flags for Ifort
+COMP=ifort
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP}  -lguide -lpthread
+FreeF=-FR
+endif
+
+ifeq ($(Machine),zeus)
+# Flags for Xlf
+COMP=xlf
+F90=${COMP}
+F77=${COMP}
+LINK=${COMP}   -L/usr/lib/
+FreeF=-qfree
+endif
+
+
+############################################
+#
+# local machines at the ENS Lyon
+#
+############################################
+
+ifeq ($(Machine),arq)
+# Flags for arq Ifort
+COMP=ifort
+F90=${COMP}   -g -check all -traceback
+F77=${F90}
+#F90=${COMP}  
+LINK=${COMP} -lguide -lpthread 
+FreeF=-FR
+endif
+
+
+
+ifeq ($(Machine),arqP)
+# Flags for arq Ifort
+COMP=ifort
+F90=${COMP}   -g -check bounds  -check format -check uninit  -traceback
+F77=${F90}
+#F90=${COMP}  
+LINK=${COMP} -lguide -lpthread   -L/usr/lib/ \
+  -L/opt/intel/Compiler/11.1/064/mkl/lib/64  \
+  -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential \
+           -lmkl_core -Wl,--end-group -lpthread 
+FreeF=-FR
+endif
+
+ifeq ($(Machine),arqg)
+# Flags for arq GFortran
+COMP=gfortran
+F90=${COMP}  
+F77=${F90}
+#F90=${COMP}  
+LINK=${COMP}  -L/usr/lib/   -llapack -lblas
+FreeF=-ffree-form
+endif
+
+ifeq ($(Machine),psmn)
+# Flags for PSMN PathScale
+COMP=/softs/pathscale/bin/pathf90
+F90=${COMP}
+LINK=${COMP}   -L/usr/lib/
+FreeF=-FR
+endif
+
+ifeq ($(Machine),psmnI)
+# Flags for PSMN Ifort v12
+COMP=ifort
+F90=${COMP}   -g -check all -traceback
+F77=${F90}
+#F90=${COMP}  
+LINK=${COMP}    -L/softs/intel/v12.0.084/mkl/lib/intel64  \
+  -L/softs/intel/v12.0.084/lib/intel64  -L/usr/lib \
+  -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential \
+           -lmkl_core -Wl,--end-group
+FreeF=-FR
+endif
+
+
+ifeq ($(Machine),psmnI11)
+# Flags for PSMN Ifort v11
+COMP=ifort
+F90=${COMP}   -g -check all -traceback
+F77=${F90}
+#F90=${COMP}  
+LINK=${COMP} -lguide -lpthread   -L/usr/lib/ \
+  -L/softs/intel/v11.1.069/mkl/lib/em64t  \
+  -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential \
+           -lmkl_core -Wl,--end-group -lpthread
+FreeF=-FR
+endif
+
+
+ifeq ($(Machine),duo)
+# Flags for DUO Ifort
+COMP=/opt/intel/fc/9.1.037/bin/ifort
+#F90=${COMP}   -g -check all
+F90=${COMP}  
+LINK=${COMP} -Vaxlib   -L/usr/lib/  -L/opt/intel/mkl/8.1/lib/32/ -lguide -lpthread  -lmkl_lapack64 -lmkl
+FreeF=-FR
+endif
+
+ifeq ($(Machine),commander)
+# Flags for Commander Ifort
+COMP=/opt/intel/fc/9.0/bin/ifort
+#F90=${COMP}   -g -check all
+F90=${COMP}
+LINK=${COMP} -Vaxlib   -L/usr/lib/  -L/opt/intel/mkl/8.1/lib/32/ -lguide -lpthread -lmkl_lapack -lmkl_ia32  -lmkl
+FreeF=-FR
+endif
+
+Version=1.0
+
+
+###############################################################
+#
+# Help Makefile 
+# voir: http://gl.developpez.com/tutoriel/outil/makefile/
+#
+###############################################################
+# $@  	Le nom de la cible
+# $< 	Le nom de la première dépendance
+# $^ 	La liste des dépendances
+# $? 	La liste des dépendances plus récentes que la cible
+# $* 	Le nom du fichier sans suffixe
+
+SRC=  Path.f90 \
+      PathCreate.f90 \
+      Read_geom.f90 \
+      Calc_zmat.f90 \
+      Calc_zmat_frag.f90 \
+      Calc_zmat_constr_frag.f90 \
+      Decomp_frag.f90 \
+      Calc_mixed_frag.f90 \
+      Calc_baker.f90 \
+      Calc_Xprim.f90 \
+      Calc_baker_allGeomF.f90 \
+      ConvertZmat_cart.f90  \
+      ConvertBakerInternal_cart.f90  \
+      ConvertZmat_cart_3.f90  \
+      Egrad.f90  \
+      Egrad_baker.f90 \
+      EgradPath.f90 \
+      egrad_gaussian.f90 \
+      egrad_mopac.f90 \
+      egrad_ext.f90 \
+      egrad_test.f90 \
+      egrad_vasp.f90 \
+      egrad_turbomole.f90 \
+      egrad_chamfre.f90 \
+      CalcHess.f90 \
+      Hupdate_all.f90 \
+      Hupdate_MS.f90 \
+      Hupdate_Bofill.f90 \
+      Hinvup_BFGS.f90 \
+      CalcTangent.f90 \
+      Step_RFO_all.f90 \
+      Step_GEDIIS.f90  \
+      Step_GEDIIS_All.f90 \
+      Energy_GEDIIS.f90 \
+      Step_DIIS_all.f90 \
+      Extrapol_int.f90 \
+      Extrapol_baker.f90 \
+      Extrapol_mixed.f90 \
+      Extrapol_cart.f90 \
+      IntCoord_der.f90 \
+      Step_DIIS.f90 \
+      Step_GDIIS_Simple_Err.f90  \
+      minv.f90 \
+      Space.f90 \
+      Space_GEDIIS.f90 \
+      Space_GEDIIS_all.f90 \
+      Space_all.f90 \
+      freemv.f90 \
+      Mat_util.f90 \
+      refsor.f90 \
+      Ginvse.f90
+
+SRC0= ConvertNumAt.f90 \
+      CheckPeriodicBound.f90 \
+      Check_step.f90 \
+      TestCart.f90 \
+      Opt_Geom.f90 \
+      PrintGeom.f90 \
+      PrintGeomVasp.f90 \
+      test_zmat.f90 \
+      Annul.f90 \
+      addligne.f90 \
+      Splin1D.f90 \
+      bib_oper.f90 \
+      VectorPer.f90 \
+      ZmatBuild.f90 \
+      CalcCnct.f90 \
+      ConvXyzZmat.f90 \
+      ConvXyzMixed.f90 \
+      Add2indzmat.f90 \
+      CalcRmsd.f90\
+      AlignPartial.f90 \
+      Rotation_matrix.f90 \
+      valid.f90  \
+      upcase.f90\
+      CalcBMat_int.f90 \
+      CalcBMat_mixed.f90 \
+      ConvGrad_Cart2Int.f90 \
+      Int2cart.f90 \
+      Mixed2cart.f90 \
+      Write_path.f90  \
+      Write_vasp.f90  \
+      Std_ori.f90 \
+      Tensor.f90 \
+      cmshft.f90 \
+      sinangle.f90 \
+      Header.f90 \
+      gaussj.f90  \
+      Expand.f90
+
+MAIN= $(SRC:.f90=.o)
+TOOLS= $(SRC0:.f90=.o)
+
+MOD = VarTypes.mod \
+      Path_module.mod \
+      Io_module.mod  \
+      m_mrgrnk.mod
+      
+MODo = $(MOD:.mod=.o)
+MODSRC = $(MOD:.mod=.f90)
+
+OBJ = ${MAIN} ${TOOLS}
+
+EXAMPLES = Path.valid  parameter.dat
+
+
+###############################################################
+#
+# For now, we also give Lapack and Blas source files in case
+# the libraries are not found by the user
+#
+###############################################################
+SRCLAPACKD=$(wildcard ./lapack/double/*.f )
+SRCLAPACKU=$(wildcard ./lapack/util/*.f )
+SRCBLAS=$(wildcard ./blas/*.f )
+
+OBJLAPACK=$(SCRLAPACKD:.f=.o) \
+        $(SCRLAPACKU:.f=.o)
+
+OBJBLAS=$(SRCBLAS:.f=.o)
+
+all: path utils
+
+install: 
+	mkdir ${PWD}/../exe
+	ln -s ${PWD}/Path.exe ../exe/.
+	ln -s ${PWD}/../utils/xyz2scan ../exe/.
+	ln -s ${PWD}/../utils/xyz2path ../exe/.
+
+path: ${MODo} ${OBJ} 
+	${LINK} -o Path.exe ${OBJ} ${MODo} 
+	@echo ""
+	@echo "Path.exe has been created."
+
+path_noL: ${MODo} ${OBJ} lapack blas
+	${LINK} -o Path.exe ${OBJ} ${MODo}  ./lapack/lapack.a ./blas/blas.a
+	@echo ""
+	@echo "Path.exe has been created."
+
+util: utils
+utils:  xyz2scan xyz2path
+	@echo ""
+	@echo "Utilities have been created."
+	@echo "Make sure that they are in your PATH environment"
+
+xyz2scan: ../utils/Xyz2Scan.f
+	${F90} -o ../utils/xyz2scan ../utils/Xyz2Scan.f
+
+xyz2path: ../utils/Xyz2Path.f ../utils/Xyz2Path.param 
+	${F90} -o ../utils/xyz2path ../utils/Xyz2Path.f
+
+tgz:  ${SRC0} ${SRC} Makefile ${EXAMPLES} ${MODSRC} ${SRCLAPACKD} ${SRCLAPACKU} ${SRCBLAS} 
+	tar -cvf Path_${Version}.tar ${SRC0} ${SRC} Makefile ${EXAMPLES} ${MODSRC}
+	gzip Path_${Version}.tar 
+	mv  Path_${Version}.tar.gz Path_${Version}.tgz
+	@echo "Path_${Version}.tgz  has been created."
+
+lapack: ${OBJLAPACK} 
+	ar rcs ./lapack/lapack.a ${OBJLAPACK}
+
+blas: ${OBJBLAS}
+	ar rcs ./blas/blas.a ${OBJBLAS}
+
+clean:
+	rm *~ "#"* *.s ${OBJ} ${MOD}  ${MODo} ${OBJLAPACK} ${OBJBLAS}  
+
+veryclean: clean
+	rm Path.exe ./lapack/lapack.a  ./blas/blas.a
+
+%.o : %.mod
+
+%.o: %.f90 ${MOD}
+	${F90} -c $*.f90 
+
+%.o: %.f
+	${F90} -o $@ -c $<
+
+%.exe: %.f90
+	${F90} -o $*.exe $*.f90
+	chmod u+x  $*.exe
+
+%.mod: %.f90
+	${F90} -c $*.f90
Index: src/Calc_Xprim.f90
===================================================================
--- src/Calc_Xprim.f90	(revision 0)
+++ src/Calc_Xprim.f90	(revision 1)
@@ -0,0 +1,186 @@
+SUBROUTINE Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive,XPrimRef)
+!     
+! This subroutine uses the description of a list of Coordinates
+! to compute the values of the coordinates for a given geometry.
+!
+!!!!!!!!!!
+! Input:
+!   Na: INTEGER, Number of atoms
+!  x,y,z(Na): REAL, cartesian coordinates of the considered geometry
+! Coordinate (Pointer(ListCoord)): description of the wanted coordiantes
+! NPrim, INTEGER: Number of coordinates to compute
+!
+! Optional: XPrimRef(NPrim) REAL: array that contains coordinates values for
+! a former geometry. Useful for Dihedral angles evolution...
+
+!!!!!!!!!!!
+! Output:
+! XPrimimite(NPrim) REAL: array that will contain the values of the coordinates
+!
+!!!!!!!!!
+
+  Use VarTypes
+  Use Io_module
+  Use Path_module, only : pi
+
+  IMPLICIT NONE
+
+  Type (ListCoord), POINTER :: Coordinate
+  INTEGER(KINT), INTENT(IN) :: Nat,NPrim
+  REAL(KREAL), INTENT(IN) :: x(Nat), y(Nat), z(Nat)
+  REAL(KREAL), INTENT(IN), OPTIONAL :: XPrimRef(NPrim) 
+  REAL(KREAL), INTENT(OUT) :: XPrimitive(NPrim)
+
+
+  Type (ListCoord), POINTER :: ScanCoord
+
+  real(KREAL) :: vx,vy,vz,dist, Norm
+  real(KREAL) :: vx1,vy1,vz1,norm1
+  real(KREAL) :: vx2,vy2,vz2,norm2
+  real(KREAL) :: vx3,vy3,vz3,norm3
+  real(KREAL) :: vx4,vy4,vz4,norm4
+  real(KREAL) :: vx5,vy5,vz5,norm5
+  real(KREAL) :: val,val_d, Q, T
+
+  INTEGER(KINT) :: I,J, n1,n2,n3,n4
+
+  REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat
+  REAL(KREAL) :: DiheTmp
+
+  LOGICAL :: debug, debugPFL
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+     END FUNCTION SINANGLE
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+  END INTERFACE
+
+
+  debug=valid("Calc_Xprim")
+  debugPFL=valid("BakerPFL")
+  if (debug) WRITE(*,*) "============= Entering Cal_XPrim =============="
+
+
+  IF (debug) THEN
+     WRITE(*,*) "DBG Calc_Xprim, geom"
+     DO I=1,Nat
+        WRITE(*,'(1X,I5,3(1X,F15.3))') I,X(I),y(i),z(i)
+     END DO
+     WRITE(*,*) "XPrimRef"
+     WRITE(*,'(15(1X,F10.6))') XPrimRef
+  END IF
+
+
+!  WRITE(*,*) "Coordinate:",associated(Coordinate)
+
+     ScanCoord=>Coordinate
+
+!  WRITE(*,*) "ScanCoord:",associated(ScanCoord),ScanCoord%Type
+
+!     WRITE(*,*) "coucou"
+     I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+!        WRITE(*,*) i
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND')
+           Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+           Xprimitive(I) = Norm2  
+        CASE ('ANGLE')
+           Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx1,vy1,vz1,Norm1)
+           Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+           Xprimitive(I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+        CASE ('DIHEDRAL')
+           Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1)
+           Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx2,vy2,vz2,Norm2)
+           Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3)
+           Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+                vx4,vy4,vz4,norm4)
+           Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+                vx5,vy5,vz5,norm5)
+
+                 DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+                         vx2,vy2,vz2,norm2)
+                 Xprimitive(I) = DiheTmp*Pi/180.
+! PFL 15th March 2008 ->
+! I think that the test on changes less than Pi should be enough
+!! We treat large dihedral angles differently as +180=-180 mathematically and physically
+!! but this causes lots of troubles when converting baker to cart.
+!! So we ensure that large dihedral angles always have the same sign
+!                    if (abs(ScanCoord%SignDihedral).NE.1) THEN
+!                        ScanCoord%SignDihedral=Int(Sign(1.D0,DiheTmp))
+!                    ELSE
+!                        If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN
+!                          Xprimitive(I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi
+!                       END IF
+!                  END IF
+!!!! <- PFL 15th March 2008
+! Another test... will all this be consistent ??? 
+! We want the shortest path, so we check that the change in dihedral angles is less than Pi:
+                  IF (Present(XPrimRef)) THEN
+                     IF (abs(Xprimitive(I)-XPrimRef(I)).GE.Pi) THEN
+                       if (debug) THEN 
+                         WRITE(*,*) "Pb dihedral, i,Xprimivite,XPrimref=",i,XPrimitive(I),XPrimRef(I)
+                         WRITE(*,*) "In deg Xprimivite,XPrimref=",XPrimitive(I)*180./Pi,XPrimRef(I)*180/Pi
+                       END IF
+                        if ((Xprimitive(I)-XPrimRef(I)).GE.Pi) THEN
+                           Xprimitive(I)=Xprimitive(I)-2.d0*Pi
+                        ELSE
+                           Xprimitive(I)=Xprimitive(I)+2.d0*Pi
+                        END IF
+                     END IF
+                       if (debug) WRITE(*,*) " New Xprimivite",XPrimitive(I),XPrimitive(I)*180./Pi
+                  END IF
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+
+
+  IF (debug) THEN
+     WRITE(*,*) "DBG Calc_Xprim Values"
+     
+     ScanCoord=>Coordinate
+     I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,ScanCoord%At2,Xprimitive(I)
+        CASE ('ANGLE')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1, &
+            ScanCoord%At2, ScanCoord%At3,Xprimitive(I)*180./Pi
+        CASE ('DIHEDRAL')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,&
+           ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,Xprimitive(I)*180./Pi
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO ! matches DO WHILE (Associated(ScanCoord%next))
+  END IF
+  if (debug) WRITE(*,*) "============= Cal_XPrim OVER =============="
+END SUBROUTINE Calc_Xprim
Index: src/Hupdate_Bofill.f90
===================================================================
--- src/Hupdate_Bofill.f90	(revision 0)
+++ src/Hupdate_Bofill.f90	(revision 1)
@@ -0,0 +1,120 @@
+! This program reads an old hessian, old forces, new forces
+! and print the updated hessian and old coordinates.
+! Instead of the Murtagh-Sargent update, we use the Bofill update
+! which is an average of Murtagh-Sargent and Powell-symmetryc-Broyden
+! cf JCP 1999, vol 111 (19), p 8773
+
+! This subroutine slightly differs from previous ones as
+! it is written with the Gradient as input and not the forces
+! Using the relation F=-Grad, one can easily go from older
+! versions to this one (which more closely mimics the JCP article)
+
+SUBROUTINE Hupdate_Bofill(Nfree,ds,dgrad,Hess)
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  INTEGER(KINT), INTENT(IN) :: NFREE
+  REAL(KREAL), INTENT(INOUT) :: Hess(Nfree,Nfree)
+  REAL(KREAL), INTENT(IN) :: ds(Nfree)
+  REAL(KREAL), INTENT(IN) :: dGrad(Nfree)
+
+
+  REAL(KREAL), ALLOCATABLE  :: HessOld(:,:) , HupMS(:,:)
+  REAL(KREAL), ALLOCATABLE  :: HupPSB(:,:), Hup(:,:)
+  REAL(KREAL), ALLOCATABLE  :: HupInt(:)
+  REAL(KREAL), ALLOCATABLE  :: HS(:), Num(:,:), Num2(:,:)
+  REAL(KREAL) :: Phi, Num3, Den, Den2,NormDS
+  CHARACTER(120) :: fmt,fmt2,Line
+  INTEGER(KINT) :: i,j, idx
+
+  LOGICAL debug,valid
+  EXTERNAL valid
+
+  debug=valid("Hupdate").OR.Valid("Hupdate_bofill")
+
+  if (debug) WRITE(*,*) "=========================== Entering Hupdate_Bofill ===================="
+
+  ALLOCATE(HessOld(nfree,nfree), HupMS(nfree,nfree),  &
+       HupPSB(nfree,nfree), Hup(nfree,nfree), &
+       HupInt(nfree), HS(nfree),  &
+       Num(nfree,nfree), Num2(nfree,nfree) )
+
+  HessOld=Hess
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG Hupdate HessOld'
+     Idx=min(12,Nfree)
+     DO I=1,NFree
+        WRITE(*,'(12(1X,F8.4))') HessOld(I,1:Idx)
+     END DO
+     WRITE(*,*) 'DBG Hupdate ds'
+     WRITE(*,'(12(1X,F8.4))') ds(1:Idx)
+     WRITE(*,*) 'DBG Hupdate dGrad'
+     WRITE(*,'(12(1X,F8.4))') dGrad(1:Idx)
+  END IF
+
+  NormDS=sqrt(DOT_PRODUCT(DS,DS))
+  if (NormDS>=1e-6) THEN
+
+     HS=0
+     DO I=1,nfree
+        DO J=1,nfree
+           HS(I)=HS(I)+HessOld(i,j)*Ds(j)
+        END DO
+     END DO
+     HupInt=DGrad-HS
+
+     ! WE calculate the MS update
+     Num=0.
+     Den=0.
+     DO I=1,nfree
+        DO J=1,nfree
+           Num(I,J)=HUpInt(i)*HupInt(j)
+        END DO
+        Den=Den+Hupint(i)*Ds(i)
+     END DO
+
+     HupMS=Num/Den
+
+     ! Now we calculate the PSB update
+     Num=0
+     Num2=0
+     Num3=0
+     Den=0
+     DO I=1,nfree
+        DO J=1,nfree
+           Num(I,J)=HUpInt(i)*Ds(j)+Ds(i)*HupInt(j)
+           Num2(I,J)=DS(i)*DS(j)
+        END DO
+        Den=Den+Ds(i)*Ds(i)
+        Num3=Num3+DS(i)*HupInt(i)
+     END DO
+     HupPSB=Num/Den-Num3*Num2/(Den)**2
+
+     ! We calculate Phi
+     Den2=0.
+     Do I=1,nfree
+        Den2=Den2+HupInt(i)*HupInt(i)
+     END DO
+     Phi=Num3**2/(Den*Den2)
+
+     Hup=Phi*HupMS+(1-Phi)*HupPSB
+
+     Hess=HessOld+Hup
+  ELSE
+     Hess=HessOld
+  END IF
+  !     WRITE(*,*) 'New hess'
+  !     DO I=1,nfree
+  !        WRITE(*,fmt) Hess(i,:)
+  !     END DO
+
+  DEALLOCATE(HessOld, HupMS, HupPSB, Hup, &
+       HupInt, HS, Num, Num2 )
+
+  if (debug) WRITE(*,*) "=========================== Hupdate Over ===================="
+
+END SUBROUTINE Hupdate_Bofill
Index: src/bib_oper.f90
===================================================================
--- src/bib_oper.f90	(revision 0)
+++ src/bib_oper.f90	(revision 1)
@@ -0,0 +1,197 @@
+
+!================================================================
+!       vecteur
+!================================================================
+
+         SUBROUTINE vecteur(n1,n2,x,y,z,vx,vy,vz,norm)
+
+        use Path_module, only : NAt, KINT, KREAL
+
+
+        integer(KINT) :: n1,n2
+        real(KREAL) ::  x(Nat),y(Nat),z(Nat)
+        real(KREAL) ::  vx,vy,vz,norm
+
+        vx=x(n2)-x(n1)
+        vy=y(n2)-y(n1)
+        vz=z(n2)-z(n1)
+
+        !norm=dsqrt( vx*vx + vy*vy + vz*vz )
+            norm=sqrt( vx*vx + vy*vy + vz*vz )
+
+!       write(6,*)
+!       write(6,*) vx,vy,vz,norm
+!       write(6,*)
+
+      RETURN
+      END
+
+!================================================================
+!       angle
+!================================================================
+
+         FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+
+
+        use Path_module, only :  Pi,KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z,norm1
+        real(KREAL) ::  v2x,v2y,v2z,norm2
+        real(KREAL) ::  angle,ps
+
+!       write(6,*)
+!       write(6,*) v1x,v1y,v1z,norm1
+!       write(6,*) v2x,v2y,v2z,norm2
+!       write(6,*)
+        IF (abs(norm1) .LT. 1.D-4) THEN
+            STOP 'norm1 egale 0'
+        ELSE IF (abs(norm2) .LT. 1.D-4) THEN
+            STOP 'norm2 egale 0'
+        ELSE
+          ps=v1x*v2x+v1y*v2y+v1z*v2z
+          angle=dacos(ps/(norm1*norm2))*180./Pi
+        ENDIF
+
+      RETURN
+      END
+
+
+!================================================================
+!       angle oriente (dihedre)
+!================================================================
+
+         FUNCTION angle_d(v1x,v1y,v1z,norm1, &
+                          v2x,v2y,v2z,norm2, &
+                          v3x,v3y,v3z,norm3)
+
+        use Path_module, only :  Pi,KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z,norm1
+        real(KREAL) ::  v2x,v2y,v2z,norm2
+        real(KREAL) ::  v3x,v3y,v3z,norm3
+        real(KREAL) ::  angle_d,ca,sa
+
+!       write(6,*)
+!       write(6,*) v1x,v1y,v1z,norm1
+!       write(6,*) v2x,v2y,v2z,norm2
+!       write(6,*) v3x,v3y,v3z,norm3
+!       write(6,*)
+        !Print *, 'Inside angle_d'
+        IF (abs(norm1) .LT. 1.D-4) THEN
+            STOP 'norm1 egale 0'
+         ELSE IF (abs(norm2) .LT. 1.D-4) THEN
+            STOP 'norm2 egale 0'
+        ELSE IF (abs(norm3) .LT. 1.D-4) THEN
+            STOP 'norm3 egale 0'
+        ELSE
+          ca=(v1x*v2x+v1y*v2y+v1z*v2z)/(norm1*norm2)
+          sa=(v1x*(v2y*v3z-v2z*v3y) &
+             -v1y*(v2x*v3z-v2z*v3x) &
+             +v1z*(v2x*v3y-v2y*v3x)) &
+             /(norm1*norm2*norm3)
+           angle_d=datan2(sa,ca)*180./Pi
+!         write(*,*) sa,ca,angle_d,norm1,norm2,norm3
+        ENDIF
+        !Print *, 'End of angle_d'
+      RETURN
+      END
+
+!================================================================
+!       produit vectoriel
+!================================================================
+
+       SUBROUTINE produit_vect(v1x,v1y,v1z,norm1, &
+                               v2x,v2y,v2z,norm2, &
+                               v3x,v3y,v3z,norm3)
+
+        use Path_module, only :  Pi,KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z,norm1 ! what do you do with norm1, norm2???
+        real(KREAL) ::  v2x,v2y,v2z,norm2
+        real(KREAL) ::  v3x,v3y,v3z,norm3
+
+        v3x= v1y*v2z-v1z*v2y
+        v3y=-v1x*v2z+v1z*v2x
+            v3z= v1x*v2y-v1y*v2x
+
+        norm3=dsqrt( v3x*v3x + v3y*v3y + v3z*v3z )
+
+
+      RETURN
+      END
+
+!================================================================
+!       rotation suivant l axe x de phi tq a11=cos(phi) a12=sin(phi)
+!================================================================
+
+       SUBROUTINE rota_x(v1x,v1y,v1z,a11,a12)
+
+        use Path_module, only :  KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z
+        real(KREAL) ::  v2x,v2y,v2z
+        real(KREAL) ::  a11,a12
+
+        v2x=  v1x
+        v2y=  a11*v1y - a12*v1z
+        v2z=  a12*v1y + a11*v1z
+
+
+        v1x=v2x
+        v1y=v2y
+        v1z=v2z
+
+
+      RETURN
+      END
+
+
+!================================================================
+!       rotation suivant l axe y de phi tq a11=cos(phi) a12=sin(phi)
+!================================================================
+
+       SUBROUTINE rota_y(v1x,v1y,v1z,a11,a12)
+
+        use Path_module, only :  KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z
+        real(KREAL) ::  v2x,v2y,v2z
+        real(KREAL) ::  a11,a12
+
+        v2x=  a11*v1x - a12*v1z
+        v2y=  v1y
+        v2z=  a12*v1x + a11*v1z
+
+
+        v1x=v2x
+        v1y=v2y
+        v1z=v2z
+
+
+        RETURN
+        END
+
+
+!================================================================
+!       rotation suivant l axe z de phi tq a11=cos(phi) a12=sin(phi)
+!================================================================
+
+       SUBROUTINE rota_z(v1x,v1y,v1z,a11,a12)
+
+        use Path_module, only :  KINT, KREAL
+
+        real(KREAL) ::  v1x,v1y,v1z
+        real(KREAL) ::  v2x,v2y,v2z
+        real(KREAL) ::  a11,a12
+
+        v2x=  a11*v1x - a12*v1y
+        v2y=  a12*v1x + a11*v1y
+        v2z=  v1z
+
+
+        v1x=v2x
+        v1y=v2y
+        v1z=v2z
+
+        RETURN
+        END

Property changes on: src/bib_oper.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Egrad.f90
===================================================================
--- src/Egrad.f90	(revision 0)
+++ src/Egrad.f90	(revision 1)
@@ -0,0 +1,229 @@
+subroutine Egrad(E,Geom,Grad,NCoord,IGeom,IOpt,GeomCart)
+
+  ! This routines calculates the energy E and the gradient Grad of 
+  ! a molecule with Geometry Geom (may be in internal coordinates),
+  ! using for now, either gaussian or Ext, more general later.
+
+  use Path_module, only : Nat,AtName,Coord,dzdc,indzmat,Nom,Atome,massat,unit, &
+                          prog,NCart,XyzGeomF,IntCoordF,XyzGeomI, renum, OrderInv
+						  ! IntCoordF(NGeomF,NCoord),GeomOld_all(NGeomF,NCoord)
+						  ! allocated in Path.f90
+  use Io_module
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: E
+  ! NCoord: Number of the degrees of freedom
+  ! IGeom: index of the geometry.
+  INTEGER(KINT), INTENT (IN) :: NCoord, IGeom, IOpt
+  ! Geometry at which gradient is calculated (cf Factual also):
+  REAL(KREAL), INTENT (INOUT) :: Geom(NCoord)
+  ! Gradient calculated at Geom geometry:
+  REAL(KREAL), INTENT (OUT) :: Grad(NCoord)
+  ! Cartesian geometry corresponding to (Internal Geometry) Geom:
+  REAL(KREAL), INTENT (OUT) :: GeomCart(Nat,3)
+
+  ! ======================================================================
+
+  CHARACTER(LCHARS) :: LINE
+  LOGICAL :: debug
+  LOGICAL, SAVE :: first=.true.
+  REAL(KREAL), SAVE :: Eold=1.e6
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:)
+  REAL(KREAL), ALLOCATABLE :: GradCart(:)
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  REAL(KREAL) :: d, a_val, Pi
+
+  INTEGER(KINT) :: iat,jat,kat,i,j,IBeg,Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  CHARACTER(LCHARS) :: ListName, CH32SVAR1
+  CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand
+  LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False.
+  LOGICAL   :: FTmp
+  INTEGER(kint) :: NbLists,NStep
+  INTEGER(KINT), PARAMETER :: NbExtName=4
+
+
+  ! ======================================================================
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+  ! ======================================================================
+  
+  INTEGER(KINT) :: OptGeom
+  Namelist/path/OptGeom
+  
+  Pi=dacos(-1.0d0)
+
+  debug=valid('EGRAD')
+  if (debug) Call header("Entering Egrad")
+
+  Print *, 'EGrad.f90, L73, IOpt=', IOpt
+
+  Grad=0.
+  E=0.
+
+  ALLOCATE(GradCart(3*Nat))
+  ALLOCATE(x(Nat),y(Nat),z(Nat))
+  SELECT CASE (COORD)
+  CASE ('ZMAT')
+     ! In order to avoid problem with numbering and linear angles/diehedral, we convert the
+     ! zmat into cartesian coordinates
+     ! A remplacer par Int2Cart :-)
+     Call Int2Cart(nat,indzmat,Geom,GeomCart)
+  CASE ('BAKER')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad_baker.f90, instead of Egrad.f90. Stop"
+  CASE ('MIXED')
+!  write(*,*) "Coucou 4-mixed"
+     Call Mixed2Cart(Nat,indzmat,geom,GeomCart)
+  CASE ('CART')
+!  write(*,*) "Coucou 4-cart"
+     if (debug) WRITE(*,*) "Coord=CART... in egrad"
+     GeomCart=reshape(Geom,(/Nat,3/))
+     DO Iat=1,Nat
+        WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),Geom(3*Iat-2:3*Iat)
+     END DO
+  CASE ('HYBRID')
+!  write(*,*) "Coucou 4-hybrid"
+        GeomCart=reshape(Geom,(/Nat,3/))
+  CASE DEFAULT
+   WRITE (*,*) "Coord=",TRIM(COORD)," not recognized. Stop"
+   STOP
+  END SELECT
+
+  SELECT CASE (Prog)
+     CASE ('GAUSSIAN')
+! we call the Gaussian routine.
+! it will return the energy and the gradient in cartesian coordinates.
+! Gradient calculated at GeomCart geometry and stored in GradCart, which has INTENT(OUT)
+        Call egrad_gaussian(E,GeomCart,GradCart)
+     CASE ('MOPAC')
+! we call the Mopac routine.
+! it will return the energy and the gradient in cartesian coordinates.
+! Gradient calculated at GeomCart geometry and stored in GradCart, which has INTENT(OUT)
+        Call egrad_mopac(E,GeomCart,GradCart)
+     CASE ('VASP')
+        Call egrad_vasp(E,Geomcart,GradCart)
+     CASE ('TURBOMOLE')
+        Call egrad_turbomole(E,Geomcart,GradCart)
+     CASE ('EXT')
+        Call egrad_ext(E,Geomcart,GradCart)
+     CASE ('TEST')
+        Call egrad_test(Nat,E,Geomcart,GradCart)
+     CASE ('CHAMFRE')
+        Call egrad_chamfre(Nat,E,Geomcart,GradCart)
+  END SELECT
+  if (debug) THEN
+     WRITE(*,*) 'DBG EGRAD, GradCart read'
+     DO I=1,Nat
+        Iat=I
+        if (renum) Iat=orderInv(I)
+        WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GradCart(3*I-2:3*I)
+     END DO
+  END IF
+
+!  If (PROG=="VASP") STOP
+
+  ! We have the gradient in Cartesian coordinates... which is ok for COORD=Cart, Hybrid
+  !  but we have to convert it into Zmat if COORD=Zmat
+  SELECT CASE (COORD)
+     CASE ("ZMAT")
+        ALLOCATE(GradTmp(3*Nat))
+        if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_int"
+        CALL CalcBMat_int (nat, reshape(GeomCart,(/3,Nat/),ORDER=(/2,1/)), indzmat, dzdc, massat,atome)
+
+        if (debug) WRITE(*,*) "DBG EGRAD Calling ConvGrad_Cart2Int"
+        CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+
+        if (debug) WRITE(*,*) "DBG EGRAD Storing Grad"
+     Grad(1)=GradTmp(4)
+     Grad(2)=GradTmp(7)
+! We might have troubles whith angles that are not in the [0:pi] range because,
+! when converted to catesian coord, they do appear in the [0:Pi] range to gaussian...
+! so that the derivative is not good, and a multiplicative factor should be added...
+!
+! This in fact should be taken care of in B mat calculation... 
+!
+     IF ((Geom(3).LE.0).OR.(Geom(3).GE.Pi)) THEN
+        Grad(3)=-1.0d0*GradTmp(8)
+     ELSE
+        Grad(3)=GradTmp(8)
+     END IF
+     Idx=4
+     DO I=4,Nat
+        Grad(Idx)=GradTmp(3*i-2)
+        Grad(Idx+1)=GradTmp(3*i-1)
+        Grad(Idx+2)=GradTmp(3*i)
+        Idx=Idx+3
+     END DO
+     DEALLOCATE(GradTmp)
+	 CASE ('BAKER')
+        WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad_baker.f90, instead of Egrad.f90. Stop"
+     CASE ('MIXED')
+        ALLOCATE(GradTmp(3*Nat))
+        if (debug) WRITE(*,*) "DBG EGRAD Calling CalcBMat_mixed"
+        CALL CalcBMat_mixed (nat, reshape(GeomCart,(/3,Nat/),ORDER=(/2,1/)), indzmat, dzdc, massat,atome)
+
+        if (Debug) THEN
+           WRITE(*,*) "DzDc"
+           DO I=1,Nat
+              DO J=1,3
+                 WRITE(*,'(50(1X,F12.6))') dzdc(J,I,:,:)
+              END DO
+           END DO
+        END IF
+       
+
+        CALL ConvGrad_Cart2Int(Nat,dzdc,IndZmat,GradCart,GradTmp)
+        DO I=1,Nat
+           WRITE(*,'(1X,3(1X,F10.5))') GradTmp(3*I-2:3*I)
+        END DO
+        SELECT CASE (NCART)
+           CASE (1)
+              Grad(1:3)=GradTmp(1:3)
+              Grad(4)=GradTmp(4)
+              Grad(5)=GradTmp(7)
+              Grad(6)=GradTmp(8)
+              Idx=7
+              IBeg=4
+           CASE(2)
+              Grad(1:3)=GradTmp(1:3)
+              Grad(4:6)=GradTmp(4:6)
+              Grad(7)=GradTmp(7)
+              Grad(8)=GradTmp(8)
+              Idx=9
+              IBeg=4
+            CASE DEFAULT
+               Idx=1
+               IBeg=1
+            END SELECT
+     DO I=IBeg,Nat
+        Grad(Idx)=GradTmp(3*i-2)
+        Grad(Idx+1)=GradTmp(3*i-1)
+        Grad(Idx+2)=GradTmp(3*i)
+        Idx=Idx+3
+     END DO
+     DEALLOCATE(GradTmp)
+  CASE ("CART","HYBRID")
+     Grad=GradCart
+  CASE DEFAULT
+     WRITE(*,*) "Coord=",AdjustL(Trim(COORD))," not yet implemented in Egradients. STOP"
+     STOP
+  END SELECT
+
+  DEALLOCATE(GradCart)
+  DEALLOCATE(x,y,z)
+
+  IF (Debug) WRITE(*,*) 'DBG EGRAD grad',grad(1:NCoord)
+  if (debug) Call Header("Egrad Over")
+
+  !999 CONTINUE
+  !if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
+  !STOP
+  ! ======================================================================
+end subroutine Egrad
+

Property changes on: src/Egrad.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Rotation_matrix.f90
===================================================================
--- src/Rotation_matrix.f90	(revision 0)
+++ src/Rotation_matrix.f90	(revision 1)
@@ -0,0 +1,79 @@
+
+!-----------------------------------------------------------------------
+      subroutine rotation_matrix(q, U)
+!-----------------------------------------------------------------------
+! This subroutine constructs rotation matrix U from quaternion q.
+!-----------------------------------------------------------------------
+! This subroutine calculates RMSD using quaternions.
+! It is based on the F90 routine bu E. Coutsias
+! http://www.math.unm.edu/~vageli/homepage.html
+! I (PFL) have just translated it, and I have changed the diagonalization
+! subroutine.
+! I also made some changes to make it suitable for Cart package.
+!----------------------------------------------------------------------
+!----------------------------------------------------------------------
+! Copyright (C) 2004, 2005 Chaok Seok, Evangelos Coutsias and Ken Dill
+!      UCSF, Univeristy of New Mexico, Seoul National University
+! Witten by Chaok Seok and Evangelos Coutsias 2004.
+
+! This library is free software; you can redistribute it and/or
+! modify it under the terms of the GNU Lesser General Public
+! License as published by the Free Software Foundation; either
+! version 2.1 of the License, or (at your option) any later version.
+!
+
+! This library is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+! Lesser General Public License for more details.
+!
+
+! You should have received a copy of the GNU Lesser General Public
+! License along with this library; if not, write to the Free Software
+! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+!----------------------------------------------------------------------------
+
+        Use VarTypes
+
+      real(KREAL) :: q(4)
+      real(KREAL) :: U(3,3)
+      real(KREAL) :: q0,q1,q2,q3,b0,b1,b2,b3,q00,q01,q02,q03
+      REAL(KREAL) :: q11,q12,q13,q22,q23,q33
+
+      q0 = q(1)
+      q1 = q(2)
+      q2 = q(3)
+      q3 = q(4)
+
+      b0 = 2.0d0*q0
+      b1 = 2.0d0*q1
+      b2 = 2.0d0*q2
+      b3 = 2.0d0*q3
+
+      q00 = b0*q0-1.0d0
+      q01 = b0*q1
+      q02 = b0*q2
+      q03 = b0*q3
+
+      q11 = b1*q1
+      q12 = b1*q2
+      q13 = b1*q3
+
+      q22 = b2*q2
+      q23 = b2*q3
+
+      q33 = b3*q3
+
+      U(1,1) = q00+q11
+      U(1,2) = q12-q03
+      U(1,3) = q13+q02
+
+      U(2,1) = q12+q03
+      U(2,2) = q00+q22
+      U(2,3) = q23-q01
+
+      U(3,1) = q13-q02
+      U(3,2) = q23+q01
+      U(3,3) = q00+q33
+
+      end

Property changes on: src/Rotation_matrix.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/freemv.f90
===================================================================
--- src/freemv.f90	(revision 0)
+++ src/freemv.f90	(revision 1)
@@ -0,0 +1,48 @@
+  Subroutine freemv(NFree,vfree)
+
+  use Path_module, only : runtyp, hesupd,Hinv
+  use Io_module, only : IoOut
+  
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+  INTEGER(KINT), INTENT(IN) :: Nfree
+  REAL(KREAL), INTENT(OUT) :: Vfree(Nfree,Nfree)
+
+! ======================================================================
+!
+! At the end, this should do:
+! Construct displacement vectors that are free and which do not contain rigid motions.
+! Output : vectors are orthonormal (in the non-mass-weighted metric)
+! 
+! For now, it just returns an identity matrix (NFree,Nfree)
+! v3.94
+! We delete displacements that correspond to frozen atoms
+!
+! ======================================================================
+  logical :: debug
+  integer(KINT) :: I
+
+  interface
+     function valid(string) result (isValid)
+       logical                  :: isValid
+       character(*), intent(in) :: string
+     end function valid
+  end interface
+
+  debug=valid('vfree')
+
+  if (debug) WRITE(*,*) "================================= Entering Vfree ==============="
+  
+  Vfree=0.d0
+  DO I=1,Nfree
+     Vfree(I,I)=1.d0
+  END DO
+
+  if (debug) WRITE(*,*) "================================= Exiting Vfree ==============="
+
+ END Subroutine freemv
+
+
Index: src/Extrapol_mixed.f90
===================================================================
--- src/Extrapol_mixed.f90	(revision 0)
+++ src/Extrapol_mixed.f90	(revision 1)
@@ -0,0 +1,210 @@
+SUBROUTINE Extrapol_mixed(s,dist,x0,y0,z0,xgeom,Coef)
+
+! This subroutine constructs the path, and if dist<>Infinity, it samples
+! the path to obtain geometries.
+! Basically, you call it twice: i) dist=infinity, it will calculate the 
+! length of the path
+! ii) dist finite, it will give you the images you want along the path.
+!
+! For now, it gives equidistant geometries
+!!!!!!!!!!!!!!!!
+!
+! v2.0
+! Uses Mix2cart for conversions.
+
+
+  use Path_module
+  use Io_module
+
+
+  IMPLICIT NONE
+
+
+  REAL(KREAL), INTENT(OUT) :: s
+  REAL(KREAL), INTENT(IN) :: dist,X0(Nat),Y0(Nat),Z0(Nat)
+  REAL(KREAL), INTENT(IN) :: Xgeom(NGeomI),Coef(NGeomI,NCoord)
+
+  INTEGER(KINT) :: IdxGeom, I, J, K, Idx
+  REAL(KREAL) :: Rmsd,MRot(3,3), ds, u, v
+  REAL(KREAL) :: a_val, d
+
+  REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3)
+  REAL(KREAL), ALLOCATABLE :: IntCoordTmp(:),DerInt(:) ! (NCoord)
+
+
+  LOGICAL ::  debug, print
+  LOGICAL, EXTERNAL :: valid
+
+  !We will calculate the length of the path, in MW coordinates...
+  ! this is done is a stupid way: we interpolate the zmatrix values,
+  ! convert them into cartesian, weight the cartesian
+  ! and calculate the evolution of the distance ! 
+  ! We have to follow the same procedure for every geometry
+  ! so even for the first one, we have to convert it from zmat
+  ! to cartesian !
+
+  debug=valid("pathcreate")
+  print=valid("printgeom")
+
+  if (debug) Call Header("Entering Extrapol_mixed")
+  if (debug) WRITE(*,*) "NFroz,NCart",NFroz,NCart
+  ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3),IntCoordTmp(NCoord),DerInt(NCoord))
+  IdxGeom=1
+  
+  IntCoordTmp=IntCoordI(1,1:NCoord)
+  call Mixed2Cart(Nat,IndZmat,IntCoordTmp,XyzTmp2(1,1))
+
+  XyzTmp=XyzTmp2
+
+! We align this geometry with the original one
+! PFL 01/feb/2007: useless when dealing with more than three cartesian atoms 
+! PFL 17/July/2006: only if we have more than 4 atoms.
+  IF ((NCart.LT.3).AND.(Nat.GT.4)) THEN
+!  IF (Nat.GT.4) THEN
+     Call  CalcRmsd(Nat, x0,y0,z0,                              &
+          xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),       &
+          MRot,rmsd,FRot,FAlign)
+  END IF
+
+  XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+  IntCoordF(IdxGeom,:)=IntCoordI(1,:)
+
+  if (print.AND.(Dist.LE.1e20)) THEN
+     WRITE(IOOUT,'(1X,I5)') Nat
+     WRITE(IOOUT,*) "# Cartesian Coordinates for geom",IdxGeom
+     DO i=1,Nat
+        If (Renum) THEN
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),      &
+                (XyzTmp2(Order(I),J),J=1,3)
+        ELSE
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),      &
+                (XyzTmp2(I,J),J=1,3)
+        END IF
+     END DO
+  END IF
+
+! Calculate tangents for first geometry
+  u=0.d0
+     DO Idx=1,NCoord
+           call splintder(u,IntCoordTmp(Idx),DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+     END DO
+     IntTangent(IdxGeom,:)=DerInt
+
+
+! First geometry already initialized
+
+  s=0.
+!  valzmat=0.d0
+
+  DO K=1,NMaxPtPath
+     u=real(K)/NMaxPtPath*(NGeomI-1.)
+
+     XYZTmp2=0.
+
+! We generate the interpolated  coordinates
+     DO Idx=1,NCoord
+           call splintder(u,IntCoordTmp(Idx),DerInt(Idx),NGeomI,xgeom(1),IntCoordI(1,Idx),Coef(1,Idx))
+     END DO
+
+! We convert it into Cartesian coordinates
+  call Mixed2Cart(Nat,IndZmat,IntCoordTmp,XyzTmp2(1,1))
+
+! We calculate ds
+     ds=0.
+     DO I=1,Nat
+        DO J=1,3
+           ds=ds+MassAt(I)*(XYZTMp2(I,J)-XYZTmp(I,J))**2
+           XYZTmp(I,J)=XyzTMP2(I,J)
+        ENDDO
+     ENDDO
+     s=s+sqrt(ds)
+
+!         if (debug) WRITE(*,*) "Debug u,s,dist",u,s,dist
+     if (s>=dist) THEN
+        s=s-dist
+        IdxGeom=IdxGeom+1
+        XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+
+        IntCoordF(IdxGeom,:)=IntCoordTmp
+        IntTangent(IdxGeom,:)=DerInt
+
+        if (print) THEN
+           WRITE(IOOUT,'(1X,A,12(1X,F10.5))') "#Internal Coord",IntCoordTmp(1:NCoord)
+           WRITE(IOOUT,'(1X,A,12(1X,F10.5))') "#Internal tan",IntTangent(IdxGeom,1:NCoord)
+           WRITE(IOOUT,'(1X,I5)') Nat
+           WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K,u,Xgeom(NGeomI)
+
+! PFL 01/feb/2007: useless when dealing with more than three cartesian atoms 
+! PFL 17/July/2006: only if we have more than 4 atoms.
+           IF ((NCart.LT.3).AND.(Nat.GT.4)) THEN
+!           IF (Nat.GT.4) THEN
+              Call  CalcRmsd(Nat, x0,y0,z0,                               &
+                   xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),   &
+                   MRot,rmsd,FRot,FAlign)
+           END IF
+
+           DO i=1,Nat
+              If (Renum) THEN
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),   &
+                      (XyzTmp2(Order(I),J),J=1,3)
+              ELSE
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),    &
+                      (XyzTmp2(I,J),J=1,3)
+              END IF
+           END DO
+
+        END IF
+     END IF
+  ENDDO
+
+
+  if ((s>=0.1*dist).AND.(IdxGeom.EQ.NGeomF)) THEN
+     WRITE(*,*) "** PathCreate ***"
+     WRITE(*,*) "Distribution of points along the path is wrong."
+     WRITE(*,*) "Increase value of NMaxPtPath in the input file"
+     WRITE(*,*) "Present value is:", NMaxPtPath
+     STOP
+  END IF
+
+  IdxGeom=NGeomF
+
+! We have to add the last geometry. We copy the last geom of Initial geometries.
+     IntCoordF(IdxGeom,:)=IntCoordI(NGeomI,:)
+     IntTangent(IdxGeom,:)=DerInt
+
+! we convert it to cartesian geom
+  call Mixed2Cart(Nat,IndZmat,IntCoordF(IdxGeom,1),XyzTmp2(1,1))
+  XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+
+     if (print) THEN
+        WRITE(IOOUT,'(1X,I5)') Nat
+        WRITE(IOOUT,*) "# Cartesian coord for last Geometry ",IdxGeom,K,u,Xgeom(NGeomI)
+! PFL 01/feb/2007: useless when dealing with more than three cartesian atoms 
+! PFL 17/July/2006: only if we have more than 4 atoms.
+        IF ((NCART.LT.3).AND.(Nat.GT.4)) THEN
+!       IF (Nat.GT.4) THEN
+           Call  CalcRmsd(Nat, x0,y0,z0,                          &
+                xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3),    &
+                MRot,rmsd,FRot,FAlign)
+        END IF
+
+        DO i=1,Nat
+           If (Renum) THEN
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)),    &
+                   (XyzTmp2(Order(I),J),J=1,3)
+           ELSE
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))),     &
+                   (XyzTmp2(I,J),J=1,3)
+           END IF
+        END DO
+     END IF
+
+
+  if (debug) WRITE(*,*) 's final =',s
+
+  DEALLOCATE(XyzTmp,XyzTmp2)
+
+  if (debug) Call Header("Extrapol_Mixed Over")
+
+ 
+END SUBROUTINE EXTRAPOL_MIXED
Index: src/ConvertZmat_cart.f90
===================================================================
--- src/ConvertZmat_cart.f90	(revision 0)
+++ src/ConvertZmat_cart.f90	(revision 1)
@@ -0,0 +1,121 @@
+!C================================================================
+!C       Converti les positions Zmat en coordonnes cartesiennes
+!C================================================================
+
+        SUBROUTINE ConvertZmat_cart(iat,ind_zmat,val_zmat,x,y,z)
+
+        use Path_module, only : Nat, KINT, KREAL
+
+        IMPLICIT NONE
+
+        integer(KINT) :: iat,n1,n2,n3
+        real(KREAL)    :: x(nat),y(nat),z(nat)
+        real(KREAL)    :: val_zmat(Nat,3)
+        integer(KINT) :: ind_zmat(Nat,5)
+
+        real(KREAL) ::  vx1,vy1,vz1,norm1
+        real(KREAL) ::  vvx1,vvy1,vvz1,normv1
+        real(KREAL) ::  vx2,vy2,vz2,norm2
+        real(KREAL) ::  vvx2,vvy2,vvz2,normv2
+        real(KREAL) ::  vx3,vy3,vz3,norm3
+        real(KREAL) ::  vx4,vy4,vz4,norm4
+        real(KREAL) ::  d,a_val,a_dih,c1,c2
+        real(KREAL) ::  a11_z1,a12_z1
+        real(KREAL) ::  a11_z2,a12_z2
+        real(KREAL) ::  a11_y,a12_y
+
+
+
+!C ind_zmat(1) contient le numero de l'atome, (2) celui par rapport auquel on definit la distance...
+
+          n1=ind_zmat(iat,2)
+          n2=ind_zmat(iat,3)
+          n3=ind_zmat(iat,4)
+
+!          WRITE(*,*) iat,n1,n2,n3
+
+          d=val_zmat(iat,1)
+          a_val=val_zmat(iat,2)/180.*3.141592654
+          a_dih=val_zmat(iat,3)/180.*3.141592654
+
+!          WRITE(*,*) "d,val,di",d,a_val,a_dih,a_val*180./3.141592654
+
+          CALL vecteur(n1,n2,x,y,z,vx1,vy1,vz1,norm1)
+          CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+
+          vvx1=vx1
+          vvy1=vy1
+          vvz1=vz1
+
+!c rotation autour de z de v1 et v2 de phi (a11_z1=cos(phi) et a12_z1=sin(phi) ) tq
+!C  v1 soit dans le plan ????
+
+          normv1=dsqrt(vvx1*vvx1+vvy1*vvy1)
+
+          IF (normv1 .GE. 1.D-6) THEN
+             a11_z1 = vvx1/normv1
+             a12_z1 = vvy1/normv1
+           ELSE
+             a11_z1 = 1
+             a12_z1 = 0
+          END IF
+
+             CALL rota_z(vx1,vy1,vz1,a11_z1,-a12_z1)
+             CALL rota_z(vx2,vy2,vz2,a11_z1,-a12_z1)
+
+
+!c rotation autour de y de v1 et v2 de theta (a11_y=cos(theta) et a12_y=sin(theta) ) tq
+!C  v1 soit dans le plan ????
+
+
+          IF (norm1 .GE. 1.D-8) THEN
+             a11_y = vz1/norm1
+             a12_y = vx1/norm1
+          ELSE
+             a11_y = 1
+             a12_y = 0
+          END IF
+
+             CALL rota_y(vx1,vy1,vz1,a11_y,a12_y)
+             CALL rota_y(vx2,vy2,vz2,a11_y,a12_y)
+
+
+!c rotation autour de z de v1 et v2 de psi (a11_z2=cos(psi) et a12_z2=sin(psi) ) tq
+!C  v1 soit dans le plan ????
+
+          vvx2=vx2
+          vvy2=vy2
+          vvz2=vz2
+          normv2=dsqrt(vvx2*vvx2+vvy2*vvy2)
+
+          IF (normv2 .GE. 1.D-8) THEN
+             a11_z2 = vvx2/normv2
+             a12_z2 = vvy2/normv2
+          ELSE
+             a11_z2 = 1
+             a12_z2 = 0
+          END IF
+
+             CALL rota_z(vx1,vy1,vz1,a11_z2,-a12_z2)
+             CALL rota_z(vx2,vy2,vz2,a11_z2,-a12_z2)
+
+
+!c calcul le vecteur de l atome dans la nouvelle orientation
+
+          vx4=d*dsin(a_val)*dcos(a_dih)
+          vy4=-d*dsin(a_val)*dsin(a_dih)
+           vz4=d*cos(a_val)
+
+!c calcul le vecteur de l atome
+!c on tourne en sens invers
+          CALL rota_z(vx4,vy4,vz4,a11_z2, a12_z2)
+          CALL rota_y(vx4,vy4,vz4,a11_y ,-a12_y )
+          CALL rota_z(vx4,vy4,vz4,a11_z1, a12_z1)
+
+!c calcul l atome a partir de v4
+          x(iat)=vx4+x(n1)
+          y(iat)=vy4+y(n1)
+          z(iat)=vz4+z(n1)
+
+        END
+

Property changes on: src/ConvertZmat_cart.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Egrad_baker.f90
===================================================================
--- src/Egrad_baker.f90	(revision 0)
+++ src/Egrad_baker.f90	(revision 1)
@@ -0,0 +1,372 @@
+subroutine Egrad_baker(E,Geom,Grad,NCoord,IGeom,IOpt,GeomCart,Flag_Opt_Geom,GeomOld,GeomCart_old)
+
+  ! This routines calculates the energy E and the gradient Grad of 
+  ! a molecule with Geometry Geom (may be in internal coordinates),
+  ! using for now, either Gaussian or Ext, more general later.
+
+  use Path_module, only : Nat,AtName,Coord,dzdc,indzmat,Nom,Atome,massat,unit, &
+       prog,NCart,XyzGeomF,IntCoordF,BTransInv, XyzGeomI, &
+       GeomOld_all,BTransInvF,BTransInv_local,UMatF,UMat_local &
+       , BprimT,a0,ScanCoord, Coordinate,NPrim,BMat_BakerT,BBT,BBT_inv &
+      , Order,OrderInv, XPrimitiveF
+
+  ! IntCoordF(NGeomF,NCoord),GeomOld_all(NGeomF,NCoord)
+  ! allocated in Path.f90
+
+  use Io_module
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: E
+  ! NCoord: Number of the degrees of freedom
+  ! IGeom: index of the geometry.
+  INTEGER(KINT), INTENT (IN) :: NCoord, IGeom, IOpt
+  ! Geometry at which gradient is calculated (cf Factual also):
+  REAL(KREAL), INTENT (INOUT) :: Geom(NCoord)
+  REAL(KREAL), INTENT (INOUT) :: GeomOld(NCoord)
+  ! Gradient calculated at Geom geometry:
+  REAL(KREAL), INTENT (OUT) :: Grad(NCoord)
+  ! Cartesian geometry corresponding to (Internal Geometry) Geom:
+  REAL(KREAL), INTENT (OUT) :: GeomCart(Nat,3)
+  REAL(KREAL), INTENT (IN) :: GeomCart_old(Nat,3)
+  LOGICAL,INTENT (IN) :: Flag_Opt_Geom
+
+  ! ======================================================================
+
+  CHARACTER(LCHARS) :: LINE
+  LOGICAL :: debug
+  LOGICAL, SAVE :: first=.true.
+  LOGICAL, ALLOCATABLE :: Done(:)
+  REAL(KREAL), SAVE :: Eold=1.e6
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:)
+  REAL(KREAL), ALLOCATABLE :: GradCart(:)
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  REAL(KREAL) :: d, a_val, Pi
+
+  INTEGER(KINT) :: iat, jat, kat, i, j, n3at,IBeg,Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  CHARACTER(LCHARS) :: ListName, CH32SVAR1
+  CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand
+  LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False.
+  LOGICAL   :: FTmp
+  INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit
+  INTEGER(KINT), PARAMETER :: NbExtName=4
+
+  REAL(KREAL), ALLOCATABLE :: XPrimRef(:), XPrim(:) ! NPrim
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!!!!!!!! PFL Debug
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  REAL(KREAL), ALLOCATABLE :: GeomTmp(:,:) !3,Nat
+  REAL(KREAL), ALLOCATABLE :: V(:,:) ! (NCoord,NCoord)
+  REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:) ! xyzatm(3,nat)
+  REAL(KREAL) :: tol
+  LOGICAL :: FAIL , FALOBBT,FALOBPrimt,FAloBBTInv
+  LOGICAL :: DebugPFL
+
+  ! ======================================================================
+  LOGICAL, EXTERNAL :: valid
+  ! ======================================================================
+
+  INTEGER(KINT) :: OptGeom
+  Namelist/path/OptGeom
+
+  Pi=dacos(-1.0d0)
+  n3at=3*nat
+
+  debug=valid('EGRAD_baker')
+  debugPFL=valid('bakerPFL')
+  if (debug) WRITE(*,*) '================ Entering Egrad_baker ================='
+  if (debug) Print *, 'EGrad.f90, L73, IOpt=', IOpt, ' Flag_Opt_Geom=',Flag_Opt_Geom
+
+  Grad=0.
+  E=0.
+
+  ALLOCATE(GradCart(3*Nat))
+  ALLOCATE(x(Nat),y(Nat),z(Nat))
+  ALLOCATE(XPrimRef(NPrim),XPrim(NPrim))
+
+  SELECT CASE (COORD)
+  CASE ('ZMAT')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE ('BAKER')
+     XPrimRef=XPrimitiveF(IGeom,:)
+     IF (Flag_Opt_Geom) THEN
+        IF (IOpt .EQ. 1) THEN
+           GeomCart(:,1) = XyzGeomI(IGeom,1,:)
+           GeomCart(:,2) = XyzGeomI(IGeom,2,:)
+           GeomCart(:,3) = XyzGeomI(IGeom,3,:)
+        ELSE
+	   if (debug) WRITE(*,*) 'Before Call ConvertBakerInternal_cart; L82, Egrad.f90'
+           WRITE(*,*) 'GeomOld='
+           WRITE(*,'(12(1X,F6.3))') GeomOld
+           WRITE(*,*) 'Geom='
+           WRITE(*,'(12(1X,F6.3))') Geom
+           WRITE(*,*) 'GeomCart_old='
+           WRITE(*,'(20(1X,F6.3))') GeomCart_old
+           Call ConvertBakerInternal_cart(GeomOld,Geom,GeomCart_old(:,1), &
+                GeomCart_old(:,2),GeomCart_old(:,3),x,y,z,XPrim,XPrimRef)
+           GeomCart(:,1) = x(:)
+           GeomCart(:,2) = y(:)
+           GeomCart(:,3) = z(:)
+        END IF
+     ELSE
+        IF (IOpt .EQ. 0) THEN
+           GeomCart(:,1) = XyzGeomF(IGeom,1,:)
+           GeomCart(:,2) = XyzGeomF(IGeom,2,:)
+           GeomCart(:,3) = XyzGeomF(IGeom,3,:)
+        ELSE
+           ! IntCoordF(NGeomF,NCoord), XyzGeomF(NGeomF,3,Nat)
+           ! Geom has to be converted into x,y,z
+           ! GeomOld_all and XyzGeomF are old geometry in internal and cartesian coords resp.
+           DO I=1,NCoord ! these variables are used in ConvertBakerInternal_cart()
+              BTransInv_local(I,:) = BTransInvF(IGeom,I,:)
+              UMat_local(:,I) = UMatF(IGeom,:,I)
+           END DO
+           if (debug) Print *, 'I am before Call ConvertBakerInternal_cart; L108, Egrad.f90'
+           WRITE(*,*) 'GeomOld='
+           WRITE(*,'(12(1X,F6.3))') GeomOld
+           WRITE(*,*) 'Geom='
+           WRITE(*,'(12(1X,F6.3))') Geom
+           WRITE(*,*) 'DBG Egrad_baker L129 GeomCart_old='
+           DO I=1,Nat
+              WRITE(*,'(3(1X,F12.8))') XyzGeomF(IGeom,:,I)
+           END DO
+
+           Call ConvertBakerInternal_cart(GeomOld_all(IGeom,:),Geom,XyzGeomF(IGeom,1,:), &
+	        XyzGeomF(IGeom,2,:),XyzGeomF(IGeom,3,:),x,y,z,XPrim,XPrimRef)
+           if (debug) Print *, 'I am after Call ConvertBakerInternal_cart; L111, Egrad.f90'
+           DO I=1,NCoord ! these variables are used in ConvertBakerInternal_cart()
+              BTransInvF(IGeom,I,:) = BTransInv_local(I,:)
+           END DO
+           ! GeomCart is actually XyzCoord and has INTENT(OUT) in this subroutine.
+           GeomCart(:,1) = x(:)
+           GeomCart(:,2) = y(:)
+           GeomCart(:,3) = z(:)
+        END IF ! matches IF (IOpt .EQ. 0) THEN
+     END IF
+  CASE ('MIXED')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE ('CART')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE ('HYBRID')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE DEFAULT
+     WRITE (*,*) "Coord=",TRIM(COORD)," not recognized. Stop"
+     STOP
+  END SELECT
+  !WRITE(*,*) Nat
+  !WRITE(*,*) 'GeomCart in Egrad_baker'
+  !DO I=1,Nat
+  !	WRITE(*,'(1X,A,3(1X,F12.8))') AtName(I),GeomCart(I,1:3)
+  !END DO
+
+  SELECT CASE (Prog)
+  CASE ('GAUSSIAN')
+     ! we call the Gaussian routine.
+     ! it will return the energy and the gradient in cartesian coordinates.
+     ! Gradient calculated at GeomCart geometry and stored in GradCart, which has INTENT(OUT)
+     Call egrad_gaussian(E,GeomCart,GradCart)
+  CASE ('MOPAC')
+     ! we call the Mopac routine.
+     ! it will return the energy and the gradient in cartesian coordinates.
+     ! Gradient calculated at GeomCart geometry and stored in GradCart, which has INTENT(OUT)
+     Call egrad_mopac(E,GeomCart,GradCart)
+  CASE ('VASP')
+     Call egrad_vasp(E,Geomcart,GradCart)
+  CASE ('TURBOMOLE')
+     Call egrad_turbomole(E,Geomcart,GradCart)
+  CASE ('EXT')
+     Call egrad_ext(E,Geomcart,GradCart)
+  CASE ('TEST')
+     Call egrad_test(Nat,E,Geomcart,GradCart)
+  CASE ('CHAMFRE')
+     Call egrad_chamfre(Nat,E,Geomcart,GradCart)
+  END SELECT
+  if (debug) THEN
+     WRITE(*,*) 'DBG EGRAD, GradCart read'
+     DO Iat=1,Nat
+        WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GradCart(3*Iat-2:3*Iat)
+     END DO
+  END IF
+
+  !  If (PROG=="VASP") STOP
+
+  ! We have the gradient in Cartesian coordinates... which is ok for COORD=Cart, Hybrid
+  !  but we have to convert it into Zmat if COORD=Zmat
+  SELECT CASE (COORD)
+  CASE ("ZMAT")
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE ('BAKER')
+     ! We have the gradient in Cartesian coordinates... which is ok for COORD=Cart, Hybrid
+     ! but we have to convert it into internal coordinates if COORD=Baker	 
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !   PFL Debug
+     !
+!!!!!!!!!!!!!!!!!!!!
+     if (debugPFL) THEN
+        WRITE(*,*) "DBG PFL Egrad_Baker... computing dzdc"
+     if (.not.ALLOCATED(indzmat)) THEN
+        ALLOCATE(indzmat(Nat,5))
+     IndZmat=0
+     Indzmat(1,1)=1
+     IndZmat(2,1)=2
+     IndZmat(2,2)=1
+     IndZmat(3,1)=3
+     IndZmat(3,2)=2
+     IndZmat(3,3)=1
+     IndZmat(4,1)=4
+     IndZmat(4,2)=3
+     IndZmat(4,3)=2
+     IndZmat(4,4)=1
+     END IF
+     IF (.NOT.ALLOCATED(DzDc)) THEN
+        ALLOCATE(DzDc(3,nat,3,Nat))
+     END IF
+     if (.NOT.Allocated(GeomTmp)) Allocate(GeomTmp(3,Nat))                                            
+     DO I=1,Nat
+     GeomTmp(1,I)=GeomCart(OrderInv(I),1)
+     GeomTmp(2,I)=GeomCart(OrderInv(i),2)
+     GeomTmp(3,I)=GeomCart(OrderInv(i),3)
+     END DO
+
+     DzDc=0.d0
+     CALL CalcBMat_int (nat, GeomTmp, indzmat, dzdc, massat,atome)     
+
+     END IF ! if (debugPFL)
+!!!!!!!!!!!!!!!!!!!!!!!!!
+     ! Debugging PFL
+!!!!!!!!!!!!!!!!!!!!!!!!
+
+     WRITE(*,*) "BTransInv_local Trans that is used originally"
+     DO J=1,3*Nat
+        WRITE(*,'(50(1X,F12.8))') BTransInv_local(:,J)
+     END DO
+
+     WRITE(*,*) "Calculating actual values using GeomCart"
+     if (.NOT.Allocated(GeomTmp)) Allocate(GeomTmp(3,Nat))
+     GeomTmp(1,:)=GeomCart(1:Nat,1)
+     GeomTmp(2,:)=GeomCart(1:Nat,2)
+     GeomTmp(3,:)=GeomCart(1:Nat,3)
+
+     ! Computing B^prim:
+     FAloBBT=.NOT.ALLOCATED(BBT)
+     FAloBBTInv=.NOT.ALLOCATED(BBT_inv)
+     FAloBPrimT=.NOT.ALLOCATED(BprimT)
+     if (FAloBPrimT) ALLOCATE(Bprimt(3*Nat,NPrim))
+     if (FAloBBT) ALLOCATE(BBt(NCoord,NCoord))
+     if (FAloBBTInv) ALLOCATE(BBt_inv(NCoord,NCoord))
+     BprimT=0.d0
+     ScanCoord=>Coordinate
+     I=0
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND') 
+           CALL CONSTRAINTS_BONDLENGTH_DER(Nat,ScanCoord%at1,ScanCoord%AT2,GeomTmp,BprimT(1,I))
+        CASE ('ANGLE')
+           CALL CONSTRAINTS_BONDANGLE_DER(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,GeomTmp,BprimT(1,I))
+        CASE ('DIHEDRAL')
+           CALL CONSTRAINTS_TORSION_DER2(Nat,ScanCoord%At1,ScanCoord%AT2,ScanCoord%At3,ScanCoord%At4,GeomTmp,BprimT(1,I))
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Bprim "
+        DO J=1,3*Nat
+           WRITE(*,'(50(1X,F12.6))') BprimT(J,:)
+        END DO
+     END IF
+
+     BMat_BakerT = 0.d0
+     DO I=1,NCoord
+        DO J=1,NPrim
+           !BprimT is transpose of B^prim.
+           !B = UMat^T B^prim, B^T = (B^prim)^T UMat
+           BMat_BakerT(:,I)=BMat_BakerT(:,I)+BprimT(:,J)*UMat_local(J,I)
+        END DO
+     END DO
+
+     BBT = 0.d0
+     DO I=1,NCoord
+        DO J=1,3*Nat 	! BBT(:,I) forms BB^T
+           BBT(:,I) = BBT(:,I) + BMat_BakerT(J,:)*BMat_BakerT(J,I)
+        END DO
+     END DO
+
+     BBT_inv = 0.d0
+
+     Call GenInv(NCoord,BBT,BBT_inv,NCoord)
+
+!     ALLOCATE(V(NCoord,NCoord))
+!     tol = 1e-10
+!     ! BBT is destroyed by GINVSE
+!     Call GINVSE(BBT,NCoord,NCoord,BBT_inv,NCoord,NCoord,NCoord,tol,V,NCoord,FAIL,IOOUT)
+!     DEALLOCATE(V)
+!     IF(Fail) Then
+!        WRITE (*,*) "Failed in generalized inverse, L220, ConvertBaker...f90"
+!        STOP
+!     END IF
+
+     !Print *, 'BBT_inv='
+     DO J=1,NCoord
+        ! WRITE(*,'(50(1X,F10.2))') BBT_inv(:,J)
+        ! Print *, BBT_inv(:,J)
+     END DO
+     !Print *, 'End of BBT_inv'
+
+     ! Calculation of (B^T)^-1 = (BB^T)^-1B:
+     BTransInv_local = 0.d0
+     DO I=1,3*Nat
+        DO J=1,NCoord
+           BTransInv_local(:,I)=BTransInv_local(:,I)+BBT_inv(:,J)*BMat_BakerT(I,J)
+        END DO
+     END DO
+
+     Print *, 'BMat_BakerT='
+     DO J=1,3*Nat
+        WRITE(*,'(50(1X,F12.8))') BMat_BakerT(:,J)
+     END DO
+
+     WRITE(*,*) "BTransInv_local Trans corresponding to GeomCart"
+     DO J=1,3*Nat
+        WRITE(*,'(50(1X,F12.8))') BTransInv_local(:,J)
+     END DO
+
+     if (FAloBPrimT) DEALLOCATE(Bprimt)
+     if (FAloBBT) DEALLOCATE(BBt)
+     if (FAloBBTInv) DEALLOCATE(BBt_inv)
+
+     Grad=0.d0
+     DO I=1, 3*Nat
+        ! Here Grad is gradient in Baker coordinates. GradCart(3*Nat)
+        Grad(:) = Grad(:) + BTransInv_local(:,I)*GradCart(I) !BTransInv_local = BTransInv in Opt_Geom.f90
+     END DO
+     !WRITE(*,*) 'In Egrad.f90, L263, Gradient:' 
+     !WRITE(*,'(12(1X,F8.4))') Grad(1:NCoord)
+  CASE ('MIXED')
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE ("CART","HYBRID")
+     WRITE (*,*) "Coord=",TRIM(COORD),": use Egrad.f90, instead of Egrad_baker.f90. Stop"
+  CASE DEFAULT
+     WRITE(*,*) "Coord=",AdjustL(Trim(COORD))," not yet implemented in Egradients. STOP"
+     STOP
+  END SELECT
+
+  DEALLOCATE(GradCart)
+  DEALLOCATE(x,y,z)
+  IF (Debug) WRITE(*,*) 'DBG EGRAD_baker grad',grad(1:NCoord)
+
+  if (debug) WRITE(*,*) '================  Egrad_baker Over ===================='
+
+  !999 CONTINUE
+  !if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
+  !STOP
+  ! ======================================================================
+end subroutine Egrad_baker
+

Property changes on: src/Egrad_baker.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Calc_mixed_frag.f90
===================================================================
--- src/Calc_mixed_frag.f90	(revision 0)
+++ src/Calc_mixed_frag.f90	(revision 1)
@@ -0,0 +1,993 @@
+SUBROUTINE Calc_mixed_frag(na,atome,ind_zmat,val_zmat,x,y,z, &
+     r_cov,fact,frozen,cart,ncart)
+
+  !     
+  !     This second version enables the user to freeze some atoms
+  !     the frozen atoms indices are listed in the frozen array.
+  !     
+  !     The idea is surely too stupid to work all the time... but here it is
+  !     we first construct the zmat using only the frozen atoms, and then
+  !     we add the other atoms on top of the first ones...
+  !     
+  Use Path_module, only : max_Z, NMaxL, Nom,MaxFroz
+  Use Io_module
+
+  IMPLICIT NONE
+
+  CHARACTER(5) :: AtName
+  integer(KINT) ::  na,atome(na),ind_zmat(Na,5)
+  INTEGER(KINT) ::  idx_zmat(NA)
+  real(KREAL) ::  x(Na),y(Na),z(Na),fact
+  real(KREAL) ::  val_zmat(Na,3)
+  real(KREAL) ::  r_cov(0:Max_Z)
+
+  !     Frozen contains the indices of frozen atoms
+  INTEGER(KINT) Frozen(*),Cart(*),NFroz,NCart
+  LOGICAL, ALLOCATABLE :: FCart(:) ! Na
+  INTEGER(KINT), ALLOCATABLE :: AtCart(:) !Na
+  INTEGER(KINT), ALLOCATABLE :: FrozDist(:) ! na
+  INTEGER(KINT) NbFrag,IdxFrag
+  INTEGER(KINT), ALLOCATABLE :: Fragment(:),NbAtFrag(:) !na
+  INTEGER(KINT), ALLOCATABLE :: FragAt(:,:) !na,na
+  INTEGER(KINT), ALLOCATABLE :: FrozFrag(:,:) !na,3
+  !  INTEGER(KINT), ALLOCATABLE :: IdxFragAt(:) !na
+  INTEGER(KINT), ALLOCATABLE :: FrozBlock(:,:) !(na,0:na)
+  REAL(KREAL), ALLOCATABLE :: DistFroz(:) !na
+
+  INTEGER(KINT) :: IdxCaFaire, IAfaire
+  INTEGER(KINT), ALLOCATABLE ::  LIAISONS(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE ::  LiaisonsBis(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE ::  LiaisonsIni(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE :: CAFaire(:) ! (Na)
+
+
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d, d12, d13,d23,d
+  Logical PasFini,Debug
+  LOGICAL, ALLOCATABLE :: DejaFait(:),FCaf(:) !(na)
+  Logical, ALLOCATABLE ::  FrozAt(:)    !T if this atom is frozen
+  LOGICAL F1213, F1223,F1323
+
+
+  INTEGER(KINT) :: I,J,n0,n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
+  INTEGER(KINT) :: IMax, I3,I1,Ip, IFragFroz,IBeg
+  INTEGER(KINT) :: I0, Izm, JAt,Izm0,Idx
+
+  REAL(KREAL) :: sDihe, Pi, Sang
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+     END FUNCTION SINANGLE
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3 
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+  END INTERFACE
+
+  Pi=dacos(-1.d0)
+  debug=valid("calc_mixed_frag")
+  if (debug) Call Header("Entering Calc_mixed_frag")
+  if (na.le.2) THEN
+     WRITE(*,*) "I do not work for less than 2 atoms :-p"
+     RETURN
+  END IF
+
+  ALLOCATE(FrozDist(Na),Fragment(na), NbAtFrag(na),FragAt(na,na))
+  ALLOCATE(FCart(Na),AtCart(Na))
+  ALLOCATE(FrozFrag(na,3), FrozBlock(na,0:na))
+  ALLOCATE(DistFroz(na),Liaisons(na,0:NMaxL))
+  ALLOCATE(LiaisonsBis(na,0:NMaxL),LiaisonsIni(na,0:NMaxL))
+  ALLOCATE(CaFaire(na+1),DejaFait(Na),FCaf(na),FrozAt(na))
+
+  Ind_Zmat=0
+
+  ! Putting cart+frozen atoms into  cart array
+  FCart=.FALSE.
+  NCart=0
+  Idx=1
+  DO WHILE (Frozen(Idx).NE.0)
+     If (Frozen(Idx).LT.0) THEN
+        DO I=Frozen(Idx-1),abs(Frozen(Idx))
+           IF (.NOT.FCart(I)) THEN
+              NCart=NCart+1
+              AtCart(NCart)=I
+              FCart(I)=.TRUE.
+           END IF
+        END DO
+     ELSEIF (.NOT.FCart(Frozen(Idx))) THEN
+        FCart(Frozen(Idx))=.TRUE.
+        NCart=NCart+1
+        AtCart(NCart)=Frozen(Idx)
+     END IF
+  Idx=Idx+1
+  END DO
+  NFroz=NCart
+  Idx=1
+  DO WHILE (Cart(Idx).NE.0)
+     If (Cart(Idx).LT.0) THEN
+        DO I=Cart(Idx-1),abs(Cart(Idx))
+           IF (.NOT.FCart(I)) THEN
+              NCart=NCart+1
+              AtCart(NCart)=I
+              FCart(I)=.TRUE.
+           END IF
+        END DO
+     ELSEIF (.NOT.FCart(Cart(Idx))) THEN
+        FCart(Cart(Idx))=.TRUE.
+        NCart=NCart+1
+        AtCart(NCart)=Cart(Idx)
+     END IF
+  Idx=Idx+1
+  END DO
+
+  if (debug) THEN
+     WRITE(*,'(1X,A,I4,A,I4,A)') "Found ",NFroz," frozen atoms, and a total of ",NCart," atoms described in cartesian coordinates"
+     WRITE(*,*) "AtCart:",AtCart(1:NCart)
+  END IF
+
+  DejaFait=.FALSE.
+
+  ! We cheat a lot: we will use ind_zmat et val_zmat to store
+  ! the cartesian coordinates of the NCart atoms :-p
+  DO I=1,NCart
+     Iat=AtCart(I)
+     ind_zmat(I,1)=Iat
+     ind_zmat(I,2:5)=-1
+     val_zmat(I,1)=X(Iat)
+     val_zmat(I,2)=Y(Iat)
+     val_zmat(I,3)=Z(Iat)
+     DejaFait(Iat)=.TRUE.
+     idx_zmat(Iat)=I
+  END DO
+
+
+  izm=NCart
+
+  ! We now calculate the connections
+  Liaisons=0
+  LiaisonsBis=0
+
+  if (debug) THEN
+     WRITE(*,*) "Liaisons initialized"
+!     WRITE(*,*) 'Covalent radii used'
+!     DO iat=1,na
+!        i=atome(iat)
+!        WRITE(*,*) Nom(I),Iat,r_cov(i),r_cov(i)*fact
+!     END DO
+  END IF
+
+1003 FORMAT(1X,I4,' - ',25(I5))
+
+  Call CalcCnct(na,atome,x,y,z,LIAISONS,r_cov,fact)
+
+  if (debug) THEN
+     WRITE(*,*) "Connections calculated"
+     DO IL=1,na
+        WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+  ! We get rid of bonds between cart atoms
+  ! the trick is to do this on liaisons while keeping LiaisonsBis ok.
+
+  LiaisonsIni=Liaisons
+  LiaisonsBis=Liaisons
+
+  DO I=1,NCart
+     Iat=AtCart(I)
+     if (debug) WRITE(*,'(20(1X,I3))') I,Iat,  &
+          (LiaisonsIni(Iat,Itmp),ITmp=0,LiaisonsIni(Iat,0))
+     DO J=1,LiaisonsIni(Iat,0)
+        Jat=LiaisonsIni(Iat,J)
+        IF (FCart(Jat)) THEN
+           Call Annul(Liaisons,Iat,Jat)
+           Call Annul(Liaisons,Jat,Iat)
+           Call Annul(LiaisonsIni,Jat,Iat)
+           Liaisons(Iat,0)=Liaisons(Iat,0)-1
+           Liaisons(Jat,0)=Liaisons(Jat,0)-1
+           LiaisonsIni(Jat,0)=LiaisonsIni(Jat,0)-1
+        END IF
+     END DO
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "Connections omitting bonds between cart atoms"
+     DO IL=1,na
+        WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+  ! We decompose the system into fragments, but we omit on purpuse
+  ! fragments consisting only of frozen atoms
+  ! Now, frozblock will contain the frozen atom indices in a given fragment
+  Fragment=0
+  NbAtFrag=0
+  FrozBlock=0
+
+  IdxFrag=0
+  NbFrag=0
+
+ Call Decomp_frag(na,liaisons,.NOT.Fcart,nbfrag,Fragment,NbAtFrag,FragAt)
+
+ ! We compute FrozBlock now
+  DO IFrag=1,NbFrag
+     DO I=1,NbAtFrag(IFrag)
+        Iat=FragAt(IFrag,I)
+        IF (FCart(Iat)) THEN
+           FrozBlock(IFrag,0)=FrozBlock(IFrag,0)+1
+           FrozBlock(IFrag,FrozBlock(IFrag,0))=IAt
+        END IF
+     END DO
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) 'I found ',NbFrag, 'fragments with respectively '
+     WRITE(*,*) (NbAtFrag(I),I=1,NbFrag), 'atoms'
+     WRITE(*,*) "Fragments atoms are now listed as F in the following"
+     DO I=1,NbFrag
+        WRITE(*,*) Na
+        WRITE(*,*) 'Fragment ', i
+        DO J=1,Na
+           AtName=Nom(Atome(J))
+           IF (Fragment(J).EQ.I) AtName='F'
+           WRITE(*,'(1X,A5,3(1X,F10.6))') AtName,X(J),Y(J),Z(J)
+        END DO
+        !     WRITE(*,*) "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+     END DO
+
+     DO I=1,NbFrag
+        WRITE(*,*) 'Fragment ', i
+        WRITE(*,'(A,20(1X,I3))') "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+        WRITE(*,'(A,20(1X,I3))') "FrozBlock:",(FrozBlock(I,j),j=0,FrozBlock(I,0))
+     END DO
+  END IF
+
+  NFroz=0
+  DO IFrag=1,NbFrag
+     If (FrozBlock(IFrag,0).NE.0) NFroz=NFroz+1
+  END DO
+
+  IF (DEBUG) WRITE(*,'(1X,A,I4,A,I4,A)') "Found ",NFroz," fragment(s) with cart atoms, out of",NbFrag," fragment(s)"
+
+
+  if (debug) THEN
+     WRITE(*,*) "Connections before adding fragments"
+     DO IL=1,na
+        IF (Liaisons(IL,0).NE.0)  WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+  ! We will now add the fragments containing non cart atoms.
+  ! I am not sure that there is a best strategy to add them...
+  ! so we add them in the order they were created :-(
+  ! First only block with frozen atoms are added
+  izm0=-1
+  IFrag=1
+  IZm=NCart
+  FCaf=.FALSE.
+  DO IFragFroz=1,NFroz
+     DO WHILE (FrozBlock(IFrag,0).EQ.0)
+        IFrag=IFrag+1
+     END DO
+     ! each atom has at least one frozen atom that will serve as the seed
+     ! of this fragment.
+     if (debug) WRITE(*,*) 'Adding fragment :', ifrag,'with',FrozBlock(IFrag,0),' frozen atoms'
+     IF (FrozBlock(IFrag,0).EQ.1) THEN
+        ! There is only one frozen atom, easy case ...
+        Iat=FrozBlock(IFrag,1)
+        if (debug) WRITE(*,*) 'Only frozen atom of frag',iat
+        DejaFait(iat)=.TRUE.
+        IdxCaFaire=2
+        CaFaire(1)=iat
+        CaFaire(2)=0
+        IaFaire=1
+        FCaf(Iat)=.TRUE.
+        DO WHILE (CaFaire(IaFaire).NE.0)
+           n1=CaFaire(IaFaire)
+           I1=idx_zmat(n1)
+           n2=ind_zmat(I1,2)
+           n3=ind_zmat(I1,3)
+
+        if (debug) WRITE(*,1003) n1,(LIAISONS(n1,JL),JL=0,NMaxL)
+           DO I3=1,Liaisons(n1,0)
+              IAt=Liaisons(n1,I3)
+              ! PFL 2007.Apr.16 ->
+              ! We add ALL atoms linked to n1 to CaFaire
+              ! But we delete their link to n1
+!! PFL 2007.Aug.28 ->
+! re-add the test on FCaf in order not to put the same atom more than once in 
+! CaFaire array.
+                 IF (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=Iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                 END IF
+!! <-- PFL 2007.Aug.28
+              if (debug) WRITE(*,1003) Iat,(LIAISONS(Iat,JL),JL=0,NMaxL)
+              Call Annul(Liaisons,Iat,n1)
+              if (debug) WRITE(*,1003) Iat,(LIAISONS(Iat,JL),JL=0,NMaxL)
+              Liaisons(iat,0)=Liaisons(Iat,0)-1
+           if (debug) WRITE(*,*) 'Iafaire,n1,DejaFait,idxzmat,n2,n3',IaFaire,n1, &
+                DejaFait(n1),idx_zmat(n1),n2,3
+           if (debug) WRITE(*,*) 'Cafaire - 0', &
+                (CaFaire(J),J=Iafaire,IdxCAfaire)
+
+
+              ! <- PFL 2007.Apr.16
+              IF (.NOT.DejaFait(Iat)) THEN
+                 ! we add it to the Zmat
+!                 WRITE(*,*) "coucou"
+                 call vecteur(n1,iat,x,y,z,vx1,vy1,vz1,norm1)
+!                 WRITE(*,*) "coucou 2"
+                 izm=izm+1
+                 IF (izm.EQ.2) THEN
+!                 WRITE(*,*) "coucou 3"
+                    ind_zmat(izm,1)=IAt
+                    ind_zmat(izm,2)=n1
+                    ind_zmat(izm,3:5)=0
+                    if (n2.EQ.-1) n2=Iat
+                 END IF
+
+!                 WRITE(*,*) "coucou 4"
+                 if ((izm.GE.3).AND.(n2.EQ.-1)) THEN
+!                 WRITE(*,*) "coucou 5"
+!                 WRITE(*,*) "coucou 3 bis"
+                       ! This atom is defined in cartesian coordinates
+                       ! and has not been used to put a non cart atom.
+                       ! we will find the closest atom linked to this one amongst the atoms
+                       ! already stored in ind_zmat
+                       d=1e9
+                       JAt=-1
+                       DO I=1,NCart
+                          If (ind_zmat(I,1).NE.n1) THEN
+                             call vecteur(n1,ind_zmat(I,1),x,y,z,vx2,vy2,vz2,norm2)
+                             SAng=Sinangle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+                             ! we take only atoms that are not aligned
+                             if ((norm2<=d).AND.(SAng.GT.0.09d0)) THEN
+                                Jat=ind_zmat(I,1)
+                                d=norm2
+                             END IF
+                          END IF
+                       END DO
+                       if (JAt.EQ.-1) THEN
+                          WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                          STOP
+                       END IF
+                       n2=JAt
+                 END IF! izm>=3 and n2.eq.-1
+
+                 IF (izm.eq.3) THEN
+                    ind_zmat(izm,1)=Iat
+                    ind_zmat(izm,2)=n1
+                    ind_zmat(izm,3)=n2
+                 END IF  ! izm=3
+
+                 IF (izm.GE.4) THEN
+!                                     WRITE(*,*) "coucou 5 bis"
+                    IF (n3.EQ.-1) THEN
+                       ! This atom is defined in cartesian coordinates
+                       ! and has not been used to put a non cart atom.
+                       ! we will find the closest atom linked to this one amongst the atoms
+                       ! already stored in ind_zmat
+                       call vecteur(n1,n2,x,y,z,vx2,vy2,vz2,norm2)
+                       d=1e9
+                       JAt=-1
+                       DO I=1,NCart
+                          If ((ind_zmat(I,1).NE.n1).AND.(ind_zmat(I,1).NE.n2)) THEN
+                             call vecteur(n1,ind_zmat(I,1),x,y,z,vx3,vy3,vz3,norm3)
+                             SAng=Sinangle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+                             if (debug) WRITE(*,*) "1-Trying izm,iat,n1,n2,n3,sang,d,norm3", &
+                                  izm,iat,n1,n2,ind_zmat(I,1),sang,d,norm3
+                             ! we take only atoms that are not aligned
+                             if ((norm3<=d).AND.(SAng.GT.0.09d0)) THEN
+                                Jat=ind_zmat(I,1)
+                                d=norm3
+                             END IF
+                          END IF
+                       END DO
+                       if (JAt.EQ.-1) THEN
+                          WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                          STOP
+                       END IF
+                       n3=JAt
+                    END IF
+                    !                    ind_zmat(I1,3)=n3
+                    Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                 END IF ! izm>=4
+!                 WRITE(*,*) "coucou 6"
+           if (debug) THEN
+              WRITE(*,*) 'ind_zmat 0',izm
+              DO Ip=1,NCart
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(ip,1:4)
+                 END DO
+              SELECT CASE (NCart)
+                 CASE (1)
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+                    if (izm.GE.3) &
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+                    Ibeg=4
+                 CASE (2)
+                    WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+                    Ibeg=4
+                 CASE DEFAULT
+                    IBeg=NCart+1
+                 END SELECT
+              DO Ip=IBeg,izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1),  &
+                      ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+              END DO
+           END IF
+
+                 idx_zmat(iat)=izm
+!                 Call Annul(Liaisons,iat,n1)
+!                 Liaisons(iat,0)=Liaisons(Iat,0)-1
+                 !                  Call Annul(Liaisons,n1,iat)
+                 n3=iat
+                 DejaFait(Iat)=.TRUE.
+              END IF
+           END DO
+           IaFaire=IaFaire+1
+
+           if (debug) THEN
+              WRITE(*,*) 'ind_zmat 5'
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+              DO Ip=4,izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1),  &
+                      ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+              END DO
+           END IF
+
+        END Do              ! DO WHILE CaFaire
+
+
+     ELSE     ! FrozBlock(I,0)==1
+        if (debug) WRITE(*,*) 'IFrag=',IFrag,'Frozblock(I,0)>1',Frozblock(IFrag,0)
+        ! We have many frozen atoms for one fragment. We will have to choose
+        ! the first one, and then to decide when to swich...
+        Iat=0
+        I0=-1
+        DO I=1,FrozBlock(IFrag,0)
+           JAt=FrozBlock(IFrag,I)
+           if (debug) WRITE(*,*) Jat, &
+                (LiaisonsBis(Jat,Itmp),Itmp=0,LiaisonsBis(Jat,0))
+           IF (LiaisonsBis(Jat,0).GT.I0) THEN
+              I0=LiaisonsBis(Jat,0)
+              Iat=Jat
+           END IF
+        END DO
+        ! Iat is the starting frozen atom
+        IF (debug) WRITE(*,*) 'Choosing atom ',iat,'as a starting atom for frag',ifrag
+        DejaFait(iat)=.TRUE.
+        IdxCaFaire=2
+        CaFaire(1)=iat
+        CaFaire(2)=0
+        IaFaire=1
+        FCaf(Iat)=.TRUE.
+        DO WHILE (CaFaire(IaFaire).NE.0)
+           n1=CaFaire(IaFaire)
+           I1=idx_zmat(n1)
+           n2=ind_zmat(I1,2)
+           n3=ind_zmat(I1,3)
+           if (debug) WRITE(*,*) 'Iafaire,n1,DejaFait,idxzmat,n2,n3',IaFaire,n1, &
+                DejaFait(n1),idx_zmat(n1),n2,3
+           if (debug) WRITE(*,*) 'Cafaire', &
+                (CaFaire(J),J=Iafaire,IdxCAfaire)
+
+
+           DO I3=1,Liaisons(n1,0)
+              if (debug) WRITE(*,*) "Here, I3=",I3
+              IAt=Liaisons(n1,I3)
+              ! PFL 2007.Apr.16 ->
+              ! We add ALL atoms linked to n1 to CaFaire
+              ! But we delete their link to n1
+!! PFL 2007.Aug.28 ->
+! re-add the test on FCaf in order not to put the same atom more than once in 
+! CaFaire array.
+                 IF (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=Iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                 END IF
+!! <-- PFL 2007.Aug.28
+              Call Annul(Liaisons,Iat,n1)
+              Liaisons(iat,0)=Liaisons(Iat,0)-1
+              ! <- PFL 2007.Apr.16
+              IF (.NOT.DejaFait(Iat)) THEN
+                 ! we add it to the Zmat
+                 call vecteur(n1,iat,x,y,z,vx1,vy1,vz1,norm1)
+                 izm=izm+1
+                 IF (izm.EQ.2) THEN
+                    ind_zmat(izm,1)=IAt
+                    ind_zmat(izm,2)=n1
+                    ind_zmat(izm,3:5)=0
+                 ELSE
+                    IF (n2.EQ.-1) THEN
+                       ! This atom is defined in cartesian coordinates
+                       ! and has not been used to put a non cart atom.
+                       ! we will find the closest atom linked to this one amongst the atoms
+                       ! already stored in ind_zmat
+                       d=1e9
+                       JAt=-1
+                       DO I=1,NCart
+                          If (ind_zmat(I,1).NE.n1) THEN
+                             call vecteur(n1,ind_zmat(I,1),x,y,z,vx2,vy2,vz2,norm2)
+                             SAng=Sinangle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+                             ! we take only atoms that are not aligned
+                             if ((norm2<=d).AND.(SAng.GT.0.09d0)) THEN
+                                Jat=ind_zmat(I,1)
+                                d=norm2
+                             END IF
+                          END IF
+                       END DO
+                       if (JAt.EQ.-1) THEN
+                          WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                          STOP
+                       END IF
+                       n2=JAt
+                    END IF
+                    !                    ind_zmat(I1,2)=n2
+                    if (izm.EQ.3) THEN
+                       ind_zmat(izm,1)=Iat
+                       ind_zmat(izm,2)=n1
+                       ind_zmat(izm,3)=n2
+                    ELSE
+                       IF (n3.EQ.-1) THEN
+                          ! This atom is defined in cartesian coordinates
+                          ! and has not been used to put a non cart atom.
+                          ! we will find the closest atom linked to this one amongst the atoms
+                          ! already stored in ind_zmat
+                          call vecteur(n1,n2,x,y,z,vx2,vy2,vz2,norm2)
+                          d=1e9
+                          JAt=-1
+                          DO I=1,NCart
+                             If ((ind_zmat(I,1).NE.n1).AND.(ind_zmat(I,1).NE.n2)) THEN
+                                call vecteur(n1,ind_zmat(I,1),x,y,z,vx3,vy3,vz3,norm3)
+                                SAng=Sinangle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+                             if (debug) WRITE(*,*) "2-Trying izm,iat,n1,n2,n3,sang,d,norm3", &
+                                  izm,iat,n1,n2,ind_zmat(I,1),sang,d,norm3
+
+                                ! we take only atoms that are not aligned
+                                if ((norm3<=d).AND.(SAng.GT.0.09d0)) THEN
+                                   Jat=ind_zmat(I,1)
+                                   d=norm3
+                                END IF
+                             END IF
+                          END DO
+                          if (JAt.EQ.-1) THEN
+                             WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                             STOP
+                          END IF
+                          n3=JAt
+                       END IF
+                       !                    ind_zmat(I1,3)=n3
+                       Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                    END IF
+                 END IF
+                 idx_zmat(iat)=izm
+              !                  Call Annul(Liaisons,n1,iat)
+                 n3=iat
+                 DejaFait(Iat)=.TRUE.
+                 if (debug) WRITE(*,*) "For no reason, I3=",I3
+              END IF
+           END DO
+           IaFaire=IaFaire+1
+
+           if (debug) THEN
+              WRITE(*,*) 'ind_zmat 6',izm
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+              DO Ip=4,izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1),  &
+                      ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+              END DO
+           END IF
+
+
+        END Do              ! DO WHILE CaFaire
+
+
+     END IF  ! FrozBlock(I,0)==1
+
+     IFrag=IFrag+1
+
+  END DO                    ! Loop on all fragments
+
+
+  DO IFrag=1,NbFrag
+     IF (FrozBlock(IFrag,0).EQ.0) THEN
+        if (debug) WRITE(*,*) 'Adding fragment :', ifrag,'with no frozen atoms'
+        ! We have no frozen atoms for this fragment. We will have to choose
+        ! the first atom to put.
+        ! For now, we do not care of the 'central' atom (ie the one with
+        ! no CP atoms...)
+        ! We just take the atom that is the closest to the already placed
+        ! atoms !
+
+        I0=0
+        I1=0
+        d=1e9
+        DO J=1,izm
+           Jat=ind_zmat(J,1)
+           DO I=1,NbAtfrag(IFrag)
+              IAt=FragAt(IFrag,I)
+              IF (.NOT.DejaFait(Iat)) THEN
+                 Call vecteur(Iat,Jat,x,y,z,vx1,vy1,vz1,norm1)
+                 IF (norm1.LT.d) THEN
+                    I1=Jat
+                    I0=Iat
+                    d=Norm1
+                 END IF
+              END IF
+           END DO
+        END DO
+
+        Iat=I0
+        n1=I1
+        I1=idx_zmat(n1)
+        n2=ind_zmat(I1,2)
+        n3=ind_zmat(I1,3)
+
+        IF (debug) WRITE(*,*) Iat,' starting atom for frag',ifrag
+
+        
+        call vecteur(n1,iat,x,y,z,vx1,vy1,vz1,norm1)
+        izm=izm+1
+        IF (izm.EQ.2) THEN
+           ind_zmat(izm,1)=IAt
+           ind_zmat(izm,2)=n1
+           ind_zmat(izm,3:5)=0
+        ELSE
+           IF (n2.EQ.-1) THEN
+! This atom is defined in cartesian coordinates
+! and has not been used to put a non cart atom.
+! we will find the closest atom linked to this one amongst the atoms
+! already stored in ind_zmat
+              d=1e9
+              JAt=-1
+              DO I=1,NCart
+                 If (ind_zmat(I,1).NE.n1) THEN
+                    call vecteur(n1,ind_zmat(I,1),x,y,z,vx2,vy2,vz2,norm2)
+                    SAng=Sinangle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+! we take only atoms that are not aligned
+                    if ((norm2<=d).AND.(SAng.GT.0.09d0)) THEN
+                       Jat=ind_zmat(I,1)
+                       d=norm2
+                    END IF
+                 END IF
+              END DO
+              if (JAt.EQ.-1) THEN
+                 WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                 STOP
+              END IF
+              n2=JAt
+           END IF
+!                    ind_zmat(I1,2)=n2
+        END IF
+        if (izm.EQ.3) THEN
+           ind_zmat(izm,1)=Iat
+           ind_zmat(izm,2)=n1
+           ind_zmat(izm,3)=n2
+        ELSE
+           IF (n3.EQ.-1) THEN
+! This atom is defined in cartesian coordinates
+! and has not been used to put a non cart atom.
+! we will find the closest atom linked to this one amongst the atoms
+! already stored in ind_zmat
+              call vecteur(n1,n2,x,y,z,vx2,vy2,vz2,norm2)
+              d=1e9
+              JAt=-1
+              DO I=1,NCart
+                 If ((ind_zmat(I,1).NE.n1).AND.(ind_zmat(I,1).NE.n2)) THEN
+                    call vecteur(n1,ind_zmat(I,1),x,y,z,vx3,vy3,vz3,norm3)
+                    SAng=Sinangle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+                             if (debug) WRITE(*,*) "3-Trying izm,iat,n1,n2,n3,sang,d,norm3", &
+                                  izm,iat,n1,n2,ind_zmat(I,1),sang,d,norm3
+
+! we take only atoms that are not aligned
+                    if ((norm3<=d).AND.(SAng.GT.0.09d0)) THEN
+                       Jat=ind_zmat(I,1)
+                       d=norm3
+                    END IF
+                 END IF
+              END DO
+              if (JAt.EQ.-1) THEN
+                 WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                 STOP
+              END IF
+              n3=JAt
+           END IF
+           !                    ind_zmat(I1,3)=n3
+           Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+        END IF
+        idx_zmat(iat)=izm
+
+
+        DejaFait(iat)=.TRUE.
+        IdxCaFaire=2
+        CaFaire(1)=iat
+        CaFaire(2)=0
+        IaFaire=1
+        FCaf(Iat)=.TRUE.
+        DO WHILE (CaFaire(IaFaire).NE.0)
+           n1=CaFaire(IaFaire)
+           if (debug) WRITE(*,*) 'Iafaire,n1',IaFaire,n1, &
+                DejaFait(n1),idx_zmat(n1)
+           if (debug) WRITE(*,*) 'Cafaire', &
+                (CaFaire(J),J=Iafaire,IdxCAfaire)
+           I1=idx_zmat(n1)
+           n2=ind_zmat(I1,2)
+           n3=ind_zmat(I1,3)
+
+           DO I3=1,Liaisons(n1,0)
+              IAt=Liaisons(n1,I3)
+              ! PFL 2007.Apr.16 ->
+              ! We add ALL atoms linked to n1 to CaFaire
+              ! But we delete their link to n1
+!! PFL 2007.Aug.28 ->
+! re-add the test on FCaf in order not to put the same atom more than once in 
+! CaFaire array.
+                 IF (.NOT.FCaf(Iat)) THEN
+                    CaFaire(IdxCaFaire)=Iat
+                    IdxCaFaire=IdxCaFaire+1
+                    CaFaire(IdxCaFaire)=0
+                    FCaf(Iat)=.TRUE.
+                 END IF
+!! <-- PFL 2007.Aug.28
+              Call Annul(Liaisons,Iat,n1)
+              Liaisons(iat,0)=Liaisons(Iat,0)-1
+              ! <- PFL 2007.Apr.16
+              IF (.NOT.DejaFait(Iat)) THEN
+                 ! we add it to the Zmat
+                 call vecteur(n1,iat,x,y,z,vx1,vy1,vz1,norm1)
+                 izm=izm+1
+                 IF (izm.EQ.2) THEN
+                    ind_zmat(izm,1)=IAt
+                    ind_zmat(izm,2)=n1
+                    ind_zmat(izm,3:5)=0
+                 ELSE
+                    IF (n2.EQ.-1) THEN
+! This atom is defined in cartesian coordinates
+! and has not been used to put a non cart atom.
+! we will find the closest atom linked to this one amongst the atoms
+! already stored in ind_zmat
+                       d=1e9
+                       JAt=-1
+                       DO I=1,NCart
+                          If (ind_zmat(I,1).NE.n1) THEN
+                             call vecteur(n1,ind_zmat(I,1),x,y,z,vx2,vy2,vz2,norm2)
+                             SAng=Sinangle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+! we take only atoms that are not aligned
+                             if ((norm2<=d).AND.(SAng.GT.0.09d0)) THEN
+                                Jat=ind_zmat(I,1)
+                                d=norm2
+                             END IF
+                          END IF
+                       END DO
+                       if (JAt.EQ.-1) THEN
+                          WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                          STOP
+                       END IF
+                       n2=JAt
+                    END IF
+!                    ind_zmat(I1,2)=n2
+                 END IF
+                 if (izm.EQ.3) THEN
+                    ind_zmat(izm,1)=Iat
+                    ind_zmat(izm,2)=n1
+                    ind_zmat(izm,3)=n2
+                 ELSE
+                    IF (n3.EQ.-1) THEN
+! This atom is defined in cartesian coordinates
+! and has not been used to put a non cart atom.
+! we will find the closest atom linked to this one amongst the atoms
+! already stored in ind_zmat
+                       call vecteur(n1,n2,x,y,z,vx2,vy2,vz2,norm2)
+                       d=1e9
+                       JAt=-1
+                       DO I=1,NCart
+                          If ((ind_zmat(I,1).NE.n1).AND.(ind_zmat(I,1).NE.n2)) THEN
+                             call vecteur(n1,ind_zmat(I,1),x,y,z,vx3,vy3,vz3,norm3)
+                             SAng=Sinangle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+                             if (debug) WRITE(*,*) "4-Trying izm,iat,n1,n2,n3,sang,d,norm3", &
+                                  izm,iat,n1,n2,ind_zmat(I,1),sang,d,norm3
+
+! we take only atoms that are not aligned
+                             if ((norm3<=d).AND.(SAng.GT.0.09d0)) THEN
+                                Jat=ind_zmat(I,1)
+                                d=norm3
+                             END IF
+                          END IF
+                       END DO
+                       if (JAt.EQ.-1) THEN
+                          WRITE(*,*) "All cart atoms are aligned. Case non treated for now. Contact PFL"
+                          STOP
+                       END IF
+                       n3=JAt
+                    END IF
+!                    ind_zmat(I1,3)=n3
+                    Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                 END IF
+                 idx_zmat(iat)=izm
+                 n3=iat
+                 DejaFait(Iat)=.TRUE.
+              END IF
+           END DO
+           IaFaire=IaFaire+1
+
+           if (debug) THEN
+              WRITE(*,*) 'ind_zmat 7',izm
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+              DO Ip=4,izm
+                 WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1),  &
+                      ind_zmat(Ip,2),ind_zmat(Ip,3), ind_zmat(Ip,4)
+              END DO
+           END IF
+
+
+        END Do              ! DO WHILE CaFaire
+     END IF                 ! FrozBlock(IFrag,0).EQ.0
+
+  END DO                    ! Loop on all fragments without frozen atoms
+
+  if (debug) THEN
+     WRITE(*,*) Na+Izm
+     WRITE(*,*) 'Done... :-(', izm
+     DO J=1,Na
+        WRITE(*,'(1X,A5,3(1X,F10.6))') Nom(Atome(J)),X(J),Y(J),Z(J)
+     END DO
+     DO I=1,Izm
+        J=ind_zmat(I,1)
+        WRITE(*,'(1X,A5,3(1X,F10.6))') 'X ',X(J),Y(J),Z(J)
+     END DO
+        IF (izm.NE.Na) THEN
+           WRITE(*,*) "Atoms not done:"
+           DO I=1,Na
+              IF (.NOT.DejaFait(I)) WRITE(*,'(I5)',ADVANCE='NO') I
+           END DO
+        END IF
+
+  END IF
+
+
+  ! We have ind_zmat. We calculate val_zmat :-)
+  if (debug) WRITE(*,*) "Calculating val_zmat"
+
+  SELECT CASE (NCart)
+     CASE (1)
+        val_zmat(2,2)=0.d0
+     val_zmat(2,3)=0.d0
+     val_zmat(3,3)=0.d0
+     n1=ind_zmat(2,1)
+     n2=ind_zmat(2,2)
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     val_zmat(2,1)=norm1
+
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+     val_zmat(3,2)=val
+     IBeg=4
+
+     CASE (2)
+     val_zmat(3,3)=0.d0
+
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+     val_zmat(3,2)=val
+     IBeg=4
+  CASE DEFAULT
+     Ibeg=NCart+1
+  END SELECT
+
+
+  DO i=IBeg,na
+
+     n1=ind_zmat(i,1)
+     n2=ind_zmat(i,2)
+     n3=ind_zmat(i,3)
+     n4=ind_zmat(i,4)
+
+     if (debug) WRITE(*,*) "Doing i,n1,n2,n3,n4",i,n1,n2,n3,n4
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+     CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+          vx4,vy4,vz4,norm4)
+     CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+          vx5,vy5,vz5,norm5)
+
+     val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, &
+          vx2,vy2,vz2,norm2)
+
+     !     write(*,11) n1,n2,norm1,n3,val,n4,val_d
+!11   format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+     val_zmat(i,1)=norm1
+     val_zmat(i,2)=val
+     val_zmat(i,3)=val_d
+
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG Cre_Zmat_Constr: ind_zmat'
+     DO I=1,na
+        WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+     END DO
+
+     WRITE(*,*) 'DBG Cre_Zmat_Constr: Full zmat'
+     DO I=1,NCart
+        WRITE(*,'(1X,I5,3(1X,F11.6))') ind_zmat(i,1),(val_zmat(i,j),j=1,3)
+     END DO
+     DO I=NCart+1,Na
+        WRITE(*,'(1X,I5,1X,I5,F8.4,2(1X,I5,1X,F7.2))') ind_zmat(i,1),(ind_zmat(i,j+1),val_zmat(i,j),j=1,3)
+     END DO
+
+  END IF
+
+  if (debug) WRITE(*,*) "Deallocate (FrozDist,Fragment, NbAtFrag,FragAt)"
+  DEALLOCATE(FrozDist,Fragment, NbAtFrag,FragAt)
+  if (debug) WRITE(*,*) "Deallocate FrozFrag, IdxFragAt, FrozBlock"
+!  DEALLOCATE(FrozFrag, IdxFragAt, FrozBlock)
+  DEALLOCATE(FrozFrag,FrozBlock)
+  if (debug) WRITE(*,*) "Deallocate (DistFroz,Liaisons)"
+  DEALLOCATE(DistFroz,Liaisons)
+  if (debug) WRITE(*,*) "Deallocate (LiaisonsIni)"
+  DEALLOCATE(LiaisonsIni)
+  if (debug) WRITE(*,*) "Deallocate(CaFaire,DejaFait,FrozAt)"
+  DEALLOCATE(CaFaire,DejaFait,FrozAt)
+  if (debug) WRITE(*,*) "Deallocate LiaisonsBis"
+  DEALLOCATE(LiaisonsBis)
+  if (debug) WRITE(*,*) "Deallocate FCart,AtCart,FCaf"
+  DEALLOCATE(FCart,AtCart,FCaf)
+
+  if (debug) Call Header("Exiting Calc_mixed_frag")
+
+END SUBROUTINE Calc_mixed_frag
+
Index: src/CalcRmsd.f90
===================================================================
--- src/CalcRmsd.f90	(revision 0)
+++ src/CalcRmsd.f90	(revision 1)
@@ -0,0 +1,198 @@
+
+! This subroutine calculates RMSD (Root mean square deviation) using quaternions.
+! It is baNatsed on the F90 routine bu E. Coutsias
+! http://www.math.unm.edu/~vageli/homepage.html
+! I (PFL) have just translated it, and I have changed the diagonalization
+! subroutine.
+! I also made some changes to make it suitable for Cart package.
+!----------------------------------------------------------------------
+!----------------------------------------------------------------------
+! Copyright (C) 2004, 2005 Chaok Seok, Evangelos Coutsias and Ken Dill
+!      UCSF, Univeristy of New Mexico, Seoul National University
+! Witten by Chaok Seok and Evangelos Coutsias 2004.
+                                                                                
+! This library is free software; you can redistribute it and/or
+! modify it under the terms of the GNU Lesser General Public
+! License as published by the Free Software Foundation; either
+! version 2.1 of the License, or (at your option) any later version.
+!
+                                                                                
+! This library is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+! Lesser General Public License for more details.
+!
+                                                                                
+! You should have received a copy of the GNU Lesser General Public
+! License along with this library; if not, write to the Free Software
+! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+!----------------------------------------------------------------------------
+
+      subroutine CalcRmsd(Nat,x0,y0,z0, x2,y2,z2,U,rmsd,FRot,FAlign)
+!-----------------------------------------------------------------------
+!  This subroutine calculates the least square rmsd of two coordinate
+!  sets coord1(3,n) and coord2(3,n) using a method based on quaternion.
+!  It then calculate the rotation matrix U and the centers of coord, and uses
+! them to align the two molecules.
+! x0(Nat), y0(Nat), z0(Nat) are the coordinates of the reference geometry.
+! x2(Nat), y2(Nat), z2(Nat) are the coordinates of the geometry which is to
+! be aligned with the reference geometry. 
+! The rotation matrix U has INTENT(OUT) in subroutine rotation_matrix(...),
+! which is called in this CalcRmsd(...).
+! rmsd: the root mean square deviation and calculated in this subroutine
+! CalcRmsd(...).
+! FRot: if .TRUE. the rotation matrix is calculated. This is the matrix that rotates
+! the first molecule onto the second one.
+! FAlgin: if .TRUE. then the second molecule is aligned on the first one.
+!-----------------------------------------------------------------------
+
+        use VarTypes
+
+      IMPLICIT NONE
+
+      INTEGER(KINT) :: Nat
+      real(KREAL) ::  x0(Nat),y0(Nat),z0(Nat)
+      real(KREAL) ::  x2(Nat),y2(Nat),z2(Nat)
+      real(KREAL) ::  U(3,3), rmsd
+      LOGICAL  FRot,FAlign,Debug
+
+      REAL(KREAL) :: Coord1(3,Nat), Coord2(3,Nat)
+      real(KREAL) ::  x0c1,y0c1,z0c1, xc2,yc2,zc2
+      
+
+      INTEGER(KINT) :: i, j, nd, ia
+      real(KREAL) :: x_norm, y_norm, lambda
+      real(KREAL) :: Rmatrix(3,3)
+      real(KREAL) :: S(4,4), dS(4,4), q(4)
+      real(KREAL) :: tmp(3),tmp1(4),tmp2(4),EigVec(4,4), EigVal(4)
+
+      INTERFACE
+       function valid(string) result (isValid)
+         CHARACTER(*), intent(in) :: string
+         logical                  :: isValid
+         END function VALID
+      END INTERFACE
+
+
+      debug=valid('CalcRmsd').OR.valid('align').OR.valid('alignpartial')
+
+  ! calculate the barycenters, centroidal coordinates, and the norms
+      x_norm = 0.0d0
+      y_norm = 0.0d0
+      x0c1=0.
+      y0c1=0.
+      z0c1=0.
+      xc2=0.
+      yc2=0.
+      zc2=0.
+      do ia=1,Nat
+         x0c1=x0c1+x0(ia)
+         xc2=xc2+x2(ia)
+         y0c1=y0c1+y0(ia)
+         yc2=yc2+y2(ia)
+         z0c1=z0c1+z0(ia)
+         zc2=zc2+z2(ia)
+!         if (debug) WRITE(*,'(A,I5,4(1X,F10.4))') 'ia...',ia,x0(ia),
+!     &                        x2(ia),x0c1,xc2
+      END DO
+      x0c1=x0c1/dble(Nat)
+      y0c1=y0c1/dble(Nat)
+      z0c1=z0c1/dble(Nat)
+      xc2=xc2/dble(Nat)
+      yc2=yc2/dble(Nat)
+      zc2=zc2/dble(Nat)
+
+      IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center1',x0c1,y0c1,z0c1
+      IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center2',xc2,yc2,zc2
+      do i=1,Nat
+         Coord1(1,i)=x0(i)-x0c1
+         Coord1(2,i)=y0(i)-y0c1
+         Coord1(3,i)=z0(i)-z0c1
+         Coord2(1,i)=x2(i)-xc2
+         Coord2(2,i)=y2(i)-yc2
+         Coord2(3,i)=z2(i)-zc2
+         x_norm=x_norm+Coord1(1,i)**2+Coord1(2,i)**2+Coord1(3,i)**2
+         y_norm=y_norm+Coord2(1,i)**2+Coord2(2,i)**2+Coord2(3,i)**2
+      end do
+
+      IF (debug) THEN
+         WRITE(*,*) "R matrix"
+         DO I=1,3
+            WRITE(*,*) (RMatrix(I,j),j=1,3)
+         END DO
+      END IF
+
+  ! calculate the R matrix
+      do i = 1, 3
+         do j = 1, 3
+            Rmatrix(i,j)=0.
+            do ia=1,Nat
+               Rmatrix(i,j) = Rmatrix(i,j)+Coord1(i,ia)*Coord2(j,ia)
+            END DO
+         end do
+      end do
+
+      IF (debug) THEN
+         WRITE(*,*) "R matrix"
+         DO I=1,3
+            WRITE(*,*) (RMatrix(I,j),j=1,3)
+         END DO
+      END IF
+
+
+  ! S matrix
+      S(1, 1) = Rmatrix(1, 1) + Rmatrix(2, 2) + Rmatrix(3, 3)
+      S(2, 1) = Rmatrix(2, 3) - Rmatrix(3, 2)
+      S(3, 1) = Rmatrix(3, 1) - Rmatrix(1, 3)
+      S(4, 1) = Rmatrix(1, 2) - Rmatrix(2, 1)
+
+      S(1, 2) = S(2, 1)
+      S(2, 2) = Rmatrix(1, 1) - Rmatrix(2, 2) - Rmatrix(3, 3)
+      S(3, 2) = Rmatrix(1, 2) + Rmatrix(2, 1)
+      S(4, 2) = Rmatrix(1, 3) + Rmatrix(3, 1)
+
+      S(1, 3) = S(3, 1)
+      S(2, 3) = S(3, 2)
+      S(3, 3) =-Rmatrix(1, 1) + Rmatrix(2, 2) - Rmatrix(3, 3)
+      S(4, 3) = Rmatrix(2, 3) + Rmatrix(3, 2)
+
+      S(1, 4) = S(4, 1)
+      S(2, 4) = S(4, 2)
+      S(3, 4) = S(4, 3)
+      S(4, 4) =-Rmatrix(1, 1) - Rmatrix(2, 2) + Rmatrix(3, 3) 
+
+
+! PFL : I use my usual Jacobi diagonalisation
+  ! Calculate eigenvalues and eigenvectors, and 
+  ! take the maximum eigenvalue lambda and the corresponding eigenvector q.
+
+      IF (debug) THEN
+         WRITE(*,*) "S matrix"
+         DO I=1,4
+            WRITE(*,*) (S(I,j),j=1,4)
+         END DO
+      END IF
+
+      Call Jacobi(S,4,EigVal,EigVec,4)
+
+      Call Trie(4,EigVal,EigVec,4)
+
+      Lambda=EigVal(4)
+
+! RMS Deviation
+       rmsd=sqrt(max(0.0d0,((x_norm+y_norm)-2.0d0*lambda))/dble(Nat))
+! The subroutine rotation_matrix(...) constructs rotation matrix U as output
+! from the input quaternion EigVec(1,4).
+      if (FRot.OR.FAlign) Call rotation_matrix(EigVec(1,4),U)
+      IF (FAlign) THEN
+         DO I=1,Nat
+            x2(i)=Coord2(1,i)*U(1,1)+Coord2(2,i)*U(2,1) &
+                +Coord2(3,i)*U(3,1) +x0c1
+            y2(i)=Coord2(1,i)*U(1,2)+Coord2(2,i)*U(2,2) &
+                +Coord2(3,i)*U(3,2) +y0c1
+            z2(i)=Coord2(1,i)*U(1,3)+Coord2(2,i)*U(2,3) &
+                +Coord2(3,i)*U(3,3) +z0c1
+         END DO
+      END IF
+
+      END
Index: src/parameter.dat
===================================================================
--- src/parameter.dat	(revision 0)
+++ src/parameter.dat	(revision 1)
@@ -0,0 +1,25 @@
+   2.27045099701841     
+   5.87929230245325     
+   1.86427686848187     
+   2.26548734166748     
+   31.9299589107320     
+   3.27322188604311     
+   17.9610521367759     
+   1.82104395022872     
+  0.825101362791933     
+   34.0078399425696     
+   1.91146989272995     
+   3.66661785907343     
+   1.37347126545815     
+   3.55480374526404     
+   67.3040205463812     
+   1.89387157185940     
+   2.17137001204142     
+  0.533633138965003     
+   19.4671756645185     
+   1065.41415725655     
+   2.87971780991060     
+   5.02074691416647     
+   1.76108092464328     
+  0.835701570374113     
+   22.8174560553715     
Index: src/Calc_zmat_frag.f90
===================================================================
--- src/Calc_zmat_frag.f90	(revision 0)
+++ src/Calc_zmat_frag.f90	(revision 1)
@@ -0,0 +1,1319 @@
+SUBROUTINE Calc_Zmat_frag(na,atome,ind_zmat,val_zmat,x,y,z,r_cov,fact)
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!   Goal: to compute a viable Z-Matrix starting from the 
+!         cartesian coordinates of the atoms
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Input:
+!  na    : Number or atoms 
+! atome  : Mass number of the atoms (H=1, He=2,...)
+! x,y,z  : cartesian coordinates of the atoms
+! r_cov  : array containing the covalent radii of the atoms
+!  fact  : multiplicative factor used to determine if two atoms are linked.
+!          see CalcCnct for more details.
+!
+! Output:
+! ind_zmat : INTEGER(na,5) contains the indices of the Z-matrix
+! val_zmat : REAL(na,3)    contains the values of the Z-matrix
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! History
+!
+! v1.0 written for Cart a long time ago. Does not use fragment analysis, but was quite good !
+!
+! v2.0 12/2007
+! Comes from Calc_zmat_constr_frag, based on a fragment analysis of the 
+! system under study.
+! It should be more flexible and robust.
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  Use Path_module, only : max_Z, NMaxL, Nom,MaxFroz, Pi
+  Use Io_module
+
+  IMPLICIT NONE
+
+  CHARACTER(5) ::  AtName
+  integer(KINT), INTENT(IN) ::  na,atome(na)
+  real(KREAL), INTENT(IN)   ::  x(Na),y(Na),z(Na),fact
+  real(KREAL), INTENT(IN)   ::  r_cov(0:Max_Z)
+
+  INTEGER(KINT), INTENT(OUT) :: ind_zmat(Na,5)
+  real(KREAL), INTENT(OUT)   :: val_zmat(Na,3)
+
+  INTEGER(KINT) :: idx_zmat(NA)
+! Frozen contains the indices of frozen atoms
+! INTEGER(KINT) Frozen(*),NFroz
+! Number of fragment, Index of the current fragment for loops
+  INTEGER(KINT) :: NbFrag,IdxFrag
+! Fragment(I) contains the fragment index to which I belongs
+! NbAtFrag(j) contains the number of atoms of fragment j
+  INTEGER(KINT), ALLOCATABLE :: Fragment(:),NbAtFrag(:) !na
+! FragAt(i,:) lists the atoms of fragment i
+  INTEGER(KINT), ALLOCATABLE :: FragAt(:,:) !na,na
+! MaxLFrag(i,1) contains the maximum of links for an atom for fragment i
+! MaxLFrag(i,2) is the atom that has this number of linked atoms
+  INTEGER(KINT), ALLOCATABLE :: MaxLFrag(:,:) !na,2
+! INTEGER(KINT), ALLOCATABLE :: IdxFragAt(:) !na
+! INTEGER(KINT), ALLOCATABLE :: FrozBlock(:,:) !(na,0:na)
+! DistFrag contains the distance between a given atom and some other atoms
+  REAL(KREAL), ALLOCATABLE :: DistFrag(:) !na
+! FragDist(I) contains the index of the atoms corresponding to DistFrag(I)
+  INTEGER(KINT), ALLOCATABLE :: FragDist(:) ! na
+
+  INTEGER(KINT) :: IdxCaFaire, IAfaire
+  INTEGER(KINT), ALLOCATABLE ::  LIAISONS(:,:) ! (Na,0:NMaxL)
+! INTEGER(KINT), ALLOCATABLE ::  LiaisonsIni(:,:) ! (Na,0:NMaxL)
+  INTEGER(KINT), ALLOCATABLE :: CAFaire(:) ! (Na)
+
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d, d12, d13,d23,d
+  Logical PasFini,Debug, FirstAt, DebugGaussian
+  LOGICAL, ALLOCATABLE :: DejaFait(:), FCaf(:) !(na)
+!  Logical, ALLOCATABLE ::  FrozAt(:)    !T if this atom is frozen
+  LOGICAL F1213, F1223,F1323
+
+  INTEGER(KINT) :: I,J,n0,n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
+  INTEGER(KINT) :: IMax, I3,I1,Ip, IFragFroz
+  INTEGER(KINT) :: I0, Izm, JAt,Izm0
+  INTEGER(KINT) :: OrderZmat
+
+  REAL(KREAL) :: sDihe
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+     END FUNCTION SINANGLE
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+  END INTERFACE
+
+  debug=valid("calc_zmat").OR.valid("calc_zmat_frag")
+  debugGaussian=valid("zmat_gaussian")
+  
+  if (debug) WRITE(*,*) "=============================== Entering Calc_zmat_frag ========================"
+  if (na.le.2) THEN
+     WRITE(*,*) "I do not work for less than 2 atoms :-p"
+     RETURN
+  END IF
+
+  ALLOCATE(FragDist(Na),Fragment(na), NbAtFrag(na),FragAt(na,na))
+! ALLOCATE(FrozFrag(na,3), IdxFragAt(na), FrozBlock(na,0:na))
+! ALLOCATE(FrozFrag(na,3))
+  ALLOCATE(DistFrag(na),Liaisons(na,0:NMaxL))
+! ALLOCATE(Liaisons(na,0:NMaxL),LiaisonsIni(na,0:NMaxL))
+! ALLOCATE(CaFaire(na),DejaFait(Na),FCaf(na),FrozAt(na))
+  ALLOCATE(CaFaire(na+1),DejaFait(Na),FCaf(na))
+
+  if (debug) THEN
+     WRITE(*,*) "DBG Calc_zmat_frag - Cartesian coordinates"
+     DO I=1,na
+        WRITE(*,'(1X,A3,3(1X,F15.8))') Nom(atome(i)),x(i),y(i),z(i)
+     END DO
+  END if
+
+  DO I=1,na
+     DO J=1,5
+        Ind_Zmat(I,J)=0
+     END DO
+  END DO
+  
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!     Easy case : 3 or less atoms
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  if (Na.eq.3) THEN
+     d12=sqrt((x(1)-x(2))**2+(y(1)-y(2))**2+(z(1)-z(2))**2)
+     d13=sqrt((x(1)-x(3))**2+(y(1)-y(3))**2+(z(1)-z(3))**2)
+     d23=sqrt((x(3)-x(2))**2+(y(3)-y(2))**2+(z(3)-z(2))**2)
+     F1213=(d12<=d13)
+     F1323=(d13<=d23)
+     F1223=(d12<=d23)
+     if (debug) THEN
+        WRITE(*,*) "DEBUG Calc_Zmat 3 atoms"
+        WRITE(*,*) "d12,d13,d23:",d12,d13,d23
+        WRITE(*,*) "F1213,F1323,F1223:",F1213,F1323,F1223
+     END IF
+     OrderZmat=0
+     if (F1213) orderZmat=OrderZmat+4
+     if (F1323) orderZmat=OrderZmat+2
+     if (F1223) orderZmat=OrderZmat+1
+     if (debug) WRITE(*,*) 'OrderZmat=',OrderZmat
+     SELECT CASE (OrderZmat)
+        CASE (0)
+! F F F ordre 2-3----1 
+           ind_zmat(1,1)=3
+           ind_zmat(2,1)=2
+           ind_zmat(2,2)=3
+           ind_zmat(3,1)=1
+           ind_zmat(3,2)=3
+           ind_zmat(3,3)=2
+        CASE (2)
+! F T F ordre 1-3----2
+           ind_zmat(1,1)=3
+           ind_zmat(2,1)=1
+           ind_zmat(2,2)=3
+           ind_zmat(3,1)=2
+           ind_zmat(3,2)=3
+           ind_zmat(3,3)=1
+        CASE (3)
+! F T T ordre 2---1-3
+           ind_zmat(1,1)=1
+           ind_zmat(2,1)=3
+           ind_zmat(2,2)=1
+           ind_zmat(3,1)=2
+           ind_zmat(3,2)=1
+           ind_zmat(3,3)=3
+        CASE (5)
+! T F T  ordre 1-2----3
+           ind_zmat(1,1)=2
+           ind_zmat(2,1)=1
+           ind_zmat(2,2)=2
+           ind_zmat(3,1)=3
+           ind_zmat(3,2)=2
+           ind_zmat(3,3)=1
+        CASE (7)
+! T T T ordre 3----1-2
+           ind_zmat(1,1)=1
+           ind_zmat(2,1)=2
+           ind_zmat(2,2)=1
+           ind_zmat(3,1)=3
+           ind_zmat(3,2)=1
+           ind_zmat(3,3)=2
+        END SELECT
+
+     IF (debug) THEN
+        WRITE(*,*) "DBG Calc_zmat_frag - Nat=3 -"
+        DO i=1,na
+           WRITE(*,'(1X,A3,5(1X,I5))') Nom(Atome(ind_zmat(i,1))),(ind_zmat(i,j),j=1,5)
+        END DO
+     END IF
+
+     ! We have ind_zmat, we fill val_zmat
+     val_zmat=0.d0
+     n2=ind_zmat(2,1)
+     n1=ind_zmat(2,2)
+     d=sqrt((x(n1)-x(n2))**2+(y(n1)-y(n2))**2+(z(n1)-z(n2))**2)
+     val_zmat(2,1)=d
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     if (debug) write(*,*) n1,n2,norm1
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+     if (debug) write(*,*) n2,n3,norm2,val
+     val_zmat(3,2)=val
+
+     RETURN
+  END IF !matches if (Na.eq.3) THEN
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!  End of Easy case : 3 or less atoms
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! General Case 
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+
+! Initialization
+  DejaFait=.False.
+  Liaisons=0
+  ind_zmat=0
+  val_zmat=0.d0
+
+  if (debug) WRITE(*,*) "Coucou from Calc_zmat_frag.f90; L240"
+  
+  if (debug) THEN
+     WRITE(*,*) "Bonds initialized"
+     WRITE(*,*) 'Covalent radii used'
+     DO iat=1,na
+        i=atome(iat)
+        WRITE(*,*) Nom(I),Iat,r_cov(i),r_cov(i)*fact
+     END DO
+  END IF
+
+1003 FORMAT(1X,I4,' - ',25(I5))
+
+!   First step : connectivity  are calculated
+
+  Call CalcCnct(na,atome,x,y,z,LIAISONS,r_cov,fact)
+
+  if (debug) THEN
+     WRITE(*,*) "Connections calculated"
+     DO IL=1,na
+        WRITE(IOOUT,1003) Il,(LIAISONS(IL,JL),JL=0,NMaxL)
+     END DO
+  END IF
+
+  FCaf=.TRUE.
+  Call Decomp_frag(na,liaisons,FCaf,nbfrag,Fragment,NbAtFrag,FragAt)
+  
+  IF (debug) THEN
+     WRITE(*,*) 'I found ',NbFrag, 'fragments'
+     WRITE(*,*) (NbAtFrag(I),I=1,NbFrag)
+     DO I=1,NbFrag
+        WRITE(*,*) NbAtFrag(I)
+        WRITE(*,*) 'Fragment ', i
+        DO J=1,Na
+           IF (Fragment(J).EQ.I) WRITE(*,'(1X,I3,1X,A5,3(1X,F10.6))') J,Nom(Atome(J)) &
+                ,X(J),Y(J),Z(J)
+        END DO
+        WRITE(*,*) "FragAt:",(FragAt(I,j),j=1,NbAtFrag(I))
+     END DO
+  END IF
+
+ ALLOCATE(MaxLFrag(NbFrag,2))
+
+ MaxLFrag=0
+
+  DO I=1,NbFrag
+     MaxLFrag(I,1)=Liaisons(FragAt(I,1),0)
+     MaxLFrag(I,2)=FragAt(I,1)
+
+     DO J=1,NbAtFrag(I)
+	    Iat=FragAt(I,J)
+        IF (Liaisons(IAt,0).GT.MaxLFrag(I,1)) THEN
+		   MaxLFrag(I,1)=Liaisons(Iat,0)
+		   MaxLFrag(I,2)=Iat
+		END IF
+     END DO
+     IF (debug) WRITE(*,*) 'Frag :',I,', atom ',MaxLFrag(I,2), ' has ',MaxLFrag(I,2),' links'
+  END DO
+
+  !     We will now build the molecule fragment by fragment
+  !     We choose the starting fragment with two criteria:
+  !     1- Number of linked atoms:
+  !       * >=3 is good as it fully defines the coordinate space
+  !       * 2 is ok as we can either use a 3rd atom from the same fragment
+  !       or add a X atom somewhere but this complicates quite a lot the way
+  !       to treat the conversion from cartesian to zmat latter
+  !       * 1 is bad...
+  !     2- Size of the fragment
+  !     this allows us to deal more easily with cases 1- when number of 
+  !     directly linked atoms is less than 3
+
+  IFrag=0
+! I0 is the number of connections of the best fragment
+  I0=0
+! I1 is the number of atoms of the best fragment
+  I1=0
+  IAt=0
+  DO I=1,NbFrag
+    SELECT CASE(MaxLFrag(I,1)-I0)
+     CASE (1:)
+        IFrag=I
+        I0=MaxLFrag(I,1)
+        I1=NbAtFrag(I)
+        IAt=MaxLFrag(I,2)
+     CASE (0)
+        if (NbAtFrag(I).GT.I1) THEN
+           IFrag=I
+           I0=MaxLFrag(I,1)
+           I1=NbAtFrag(I)
+           IAt=MaxLFrag(I,2)
+        END IF
+     END SELECT
+  END DO
+
+  if (debug) WRITE(*,'(1X,A,I5,A,I5,A,I5,A,I5)') 'Starting with fragment:',IFrag,' with ',I0   &
+      ,' max links for atom',IAt,' fragment size',NbAtFrag(IFrag)
+
+  !     We will build the first fragment in a special way, as it will
+  !     set the coordinates system
+
+  if (debug) WRITE(*,*) 'Fragment 1, starting with atom:',IAt, &   
+    'with ',I0,' connections'
+
+  DejaFait=.FALSE.
+  FCaf=.FALSE.
+  
+  izm=0
+  SELECT CASE (I0)
+  CASE(3:)
+     if (debug) WRITE(*,*) 'DBG select case I0 3'
+     n0=Iat
+
+     ITmp=2
+     sDihe=0.
+     n2=IAt
+     n3=Liaisons(Iat,1)
+     ! We search for the third atom while making sure that it is not aligned with first two !
+     DO While ((ITmp.LE.Liaisons(Iat,0)).AND.(sDihe.LE.0.09d0))
+        n4=Liaisons(Iat,Itmp)
+        CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+        CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+        val_d=angle(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2)
+        sDiHe=abs(sin(val_d*pi/180.d0))
+        if (debug) Write(*,*) 'Trying n2,n3,n4,sdihe,val_d',n2,n3,n4,sdihe,val_d
+        Itmp=Itmp+1
+     END DO
+     If (debug) WRITE(*,*) 'Itmp,Liaisons',Itmp,Liaisons(Iat,1:NMaxL)
+     Liaisons(Iat,Itmp-1)=Liaisons(iat,2)
+     Liaisons(Iat,2)=n4
+     If (debug) WRITE(*,*) 'Itmp,Liaisons',Itmp,Liaisons(Iat,1:NMaxL)
+
+     if (sDihe.LE.0.09d0) THEN
+        WRITE(*,*) "PROBLEM !!! All atoms linked to ",n0," are aligned..."
+		WRITE(*,*) "Surprising as this atom has at least three bonds... For NOW STOP"
+		STOP
+     END IF
+
+     CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+          vx5,vy5,vz5,norm5)
+
+
+! We search for the fourth atom while checking that it is not aligned with 1st and 2nd atoms.
+     Itmp=3
+     sDiHe=0.
+! PFL 28 Dec 2007 ->
+! I had a test on the dihedral angle, but I cannot see why it is important to have
+! a non planar fragment at the begining... ethylene works and is fully planar
+! I thus suppress this test
+!
+!     DO While ((ITmp.LE.Liaisons(Iat,0)).AND.(sDihe.LE.0.09d0))
+!        ITmp=ITmp+1
+        n1=Liaisons(Iat,Itmp)
+        if (debug) WRITe(*,*) 'trying n1,n2,n3,n4',n1,n2,n3,n4
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+        ! Is this atom aligned with n2-n3 ?
+        val_d=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+        sDiHe=abs(sin(val_d*pi/180.d0))
+        if (debug) Write(*,*) 'Angle n3-n2-n1',val_d
+        if (sDiHe.le.0.09d0) THEN
+           ! As atoms n2,n3 and n4 are not aligned, we interchange n3 and n4 so that n1,n2 and n3 are not aligned
+           if (debug) WRITE(*,*) "n3-n2-n1 aligned, we interchange n3 and n4"
+           n1=n3
+           n3=n4
+           n4=n1
+           n1=Liaisons(Iat,ITmp)
+           CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)           
+           CALL vecteur(n2,n4,x,y,z,vx3,vy3,vz3,norm3)           
+           val_d=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+           if (debug) Write(*,*) 'NEW Angle n3-n2-n1',val_d
+        END IF
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        ! avant de tester l'angle diedre, il faut verifier que ce 4e atome n'est pas
+        ! aligne avec les 2 premiers. 
+        ! comme on a deja test� que les 3 premiers ne sont pas alignes,
+        ! s'il est align� avec les 2 premiers, on peut inverser le role de 2 et 3.
+        ! On pourrait tout simplier en faisant une bete recherche parmi tous les atomes geles
+        ! de ce bloc (au moins 4 ?) avec le critere 1) on les range par distance croissante
+        ! 2) on les scanne tant que l'angle valence n'est pas bon, puis tant que diehedre pas bon
+        ! on pourrait comme ca faire un tableau avec les atomes ranges d'abord pour le fragment s�lectionn�
+        ! puis les atomes des autres fragment par distance croissante.
+        ! les autres fragments ne seraient additonn�s que si l'on ne trouve pas notre bonheur dans le premier bloc
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+        CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+             vx4,vy4,vz4,norm4)
+        val_d=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+             vx2,vy2,vz2,norm2)
+        sDihe=abs(sin(val_d*pi/180.d0))
+        if (debug) WRITE(*,*) 'n2,n3,n4,n1, angle_d',n2,n3,n4,n1,val_d
+!     END DO
+
+     DejaFait(n2)=.TRUE.
+     DejaFait(n3)=.TRUE.
+     DejaFait(n4)=.TRUE.
+
+!     if (sDihe.LE.0.09d0) THEN
+!        !     None of the atoms linked to IAt are good to define the third
+!        !     direction in space...
+!        !     We will look at the other atoms
+!        !     we might improve the search so as to take the atom closest to IAt
+!        if (debug) WRITE(*,*) "All atoms linked to ",Iat," are in a plane. Looking for other atoms"
+!        ITmp=0
+!        DO I=1,NbAtFrag(IFrag)
+!           JAt=FragAt(IFrag,I)
+!           if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+!              n1=JAt
+!              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!              CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+!                   vx4,vy4,vz4,norm4)
+!              val_d=angle_d(vx4,vy4,vz4,norm4, &
+!                   vx5,vy5,vz5,norm5, &
+!                   vx2,vy2,vz2,norm2)
+!              if (abs(sin(val_d)).GE.0.09D0) THEN
+!                 ITmp=ITmp+1
+!                 DistFrag(ITmp)=Norm1
+!                 FragDist(ITmp)=JAt
+!              END IF
+!           END IF
+!        END DO
+
+!        IF (ITmp.EQ.0) THEN
+!           !     All dihedral angles between frozen atoms are less than 5�
+!           !     (or more than 175�). We have to look at other fragments :-(
+!           DO I=1,NFroz
+!              Jat=Frozen(I)
+!              if (.NOT.DejaFait(JAt)) THEN
+!                 n1=JAt
+!                 CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!                 CALL produit_vect(vx1,vy1,vz1,norm1, &
+!                      vx2,vy2,vz2,norm2, &
+!                      vx4,vy4,vz4,norm4)
+!                 val_d=angle_d(vx4,vy4,vz4,norm4, &
+!                      vx5,vy5,vz5,norm5, &
+!                      vx2,vy2,vz2,norm2)
+!                 if (abs(sin(val_d)).GE.0.09D0) THEN
+!                    ITmp=ITmp+1
+!                    DistFrag(ITmp)=Norm1
+!                    FragDist(ITmp)=JAt
+!                 END IF
+!              END IF
+!           END DO
+!           IF (ITmp.EQ.0) THEN
+!              !     All frozen atoms are in a plane... too bad
+!              WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+!              WRITE(*,*) 'For now, I do not treat this case'
+!              STOP
+!           END IF
+!        END IF
+!        I1=0
+!        d=1e9
+!        DO I=1,ITmp
+!           IF (DistFrag(I).LE.d) THEN
+!              d=DistFrag(I)
+!              I1=FragDist(I)
+!           END IF
+!        END DO
+!     ELSE                !(sDihe.LE.0.09d0)
+!        I1=FrozBlock(IAt,ITmp)
+!        if (debug) WRITE(*,*) 'I1,n1:',I1,n1
+!     END IF                 !(sDihe.LE.0.09d0)
+!     !     we now have the atom that is closer to the first one and that
+!     !     forms a non 0/Pi dihedral angle
+!
+!  <- PFL 28 Dec 2007
+
+! We construct the begining of the Z-Matrix
+
+     ind_zmat(1,1)=n2
+     ind_zmat(2,1)=n3
+     ind_zmat(2,2)=n2
+     ind_zmat(3,1)=n4
+     ind_zmat(3,2)=n2
+     ind_zmat(3,3)=n3
+     DejaFait(n2)=.TRUE.
+     DejaFait(n3)=.TRUE.
+     DejaFait(n4)=.TRUE.
+     CaFaire(1)=n3
+     CaFaire(2)=n4
+
+! PFL 28 Dec 2007
+! We have not selected a fourth atom, so that the following is not needed
+!     ind_zmat(4,1)=I1
+!     ind_zmat(4,2)=n2
+!     ind_zmat(4,3)=n3
+!     ind_zmat(4,4)=n4
+!     DejaFait(I1)=.TRUE.
+!     CaFaire(3)=I1
+!     CaFaire(4)=0
+!     IdxCaFaire=4
+!     izm=4
+!     FCaf(I1)=.TRUE.
+!!!!!!!
+! and replaced by:
+     CaFaire(3)=0
+	 IdxCaFaire=3
+	 izm=3
+!
+! <- PFL 28 Dec 2007
+	 
+     FCaf(n2)=.TRUE.
+     FCaf(n3)=.TRUE.
+	 FirstAt=.TRUE.
+     DO I=3,Liaisons(Iat,0)
+        IF (.NOT.DejaFait(Liaisons(Iat,I))) THEN
+           izm=izm+1
+           !           ind_zmat(izm,1)=Liaisons(Iat,I)
+           !           ind_zmat(izm,2)=n2
+           !           ind_zmat(izm,3)=n3
+           !           ind_zmat(izm,4)=n4
+           Call add2indzmat(na,izm,Liaisons(Iat,I),n2,n3,n4,ind_zmat,x,y,z)
+           if (FirstAt) THEN
+		       n4=Liaisons(Iat,I)
+			   FirstAt=.FALSE.
+		   END IF
+           IF (.NOT.FCaf(Liaisons(Iat,I))) THEN
+              CaFaire(IdxCaFaire)=Liaisons(Iat,I)
+              IdxCaFaire=IdxCaFaire+1
+              CaFaire(IdxCaFaire)=0
+              FCaf(Liaisons(Iat,I))=.TRUE.
+           END IF
+           DejaFait(Liaisons(Iat,I))=.TRUE.
+        END IF
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) "Ind_zmat 0 - SELECT CASE I0 3: -- izm=",izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+        DO I=4,izm
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+                ind_zmat(I,3), ind_zmat(I,4)
+        END DO
+     END IF
+
+
+     !     First four atoms (at least) have been put we go on with next parts
+     !     of this fragment... later
+
+
+  CASE(2)
+     if (debug) WRITE(*,*) 'DBG select case I0 2'
+	 WRITE(*,*) "PFL 28 Dec 2007: No test of alignment here :(  TO DO TO DO TO DO"
+     ind_zmat(1,1)=IAt
+     ind_zmat(2,1)=Liaisons(IAt,1)
+     ind_zmat(2,2)=IAt
+     ind_zmat(3,1)=Liaisons(IAt,2)
+     ind_zmat(3,2)=IAt
+     ind_zmat(3,3)=Liaisons(IAt,1)
+     DejaFait(IAt)=.TRUE.
+     DejaFait(Liaisons(Iat,1))=.TRUE.
+     DejaFait(Liaisons(Iat,2))=.TRUE.
+     CaFaire(1)=Liaisons(Iat,1)
+     CaFaire(2)=Liaisons(Iat,2)
+     FCaf(Liaisons(Iat,1))=.TRUE.
+     FCaf(Liaisons(Iat,2))=.TRUE.
+
+! PFL 28 Dec 2007 ->
+! We do NOT need a fourth atom !!! The third direction in space is defined by the cross
+! product of the first two directions
+!
+! the following is thus commented
+!
+!     !     We search for a fourth atom, first in the FrozBlock atoms
+!     ITmp=2
+!     sDihe=0.
+!     n2=IAt
+!     n3=Liaisons(Iat,1)
+!     n4=Liaisons(Iat,2)
+!     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+!     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+!     CALL produit_vect(vx3,vy3,vz3,norm3, &
+!          vx2,vy2,vz2,norm2, &
+!          vx5,vy5,vz5,norm5)
+!
+!     DO While ((ITmp.LE.FrozBlock(Iat,0)).AND.(sDihe.LE.0.09d0))
+!        ITmp=ITmp+1
+!        n1=FrozBlock(Iat,Itmp)
+!        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!        CALL produit_vect(vx1,vy1,vz1,norm1, &
+!             vx2,vy2,vz2,norm2, &
+!             vx4,vy4,vz4,norm4)
+!        val_d=angle_d(vx4,vy4,vz4,norm4,  &
+!             vx5,vy5,vz5,norm5,           &
+!             vx2,vy2,vz2,norm2)
+!        sDihe=abs(sin(val_d))
+!     END DO
+!     IF (debug) WRITE(*,*) 'DBG 4th atom, ITmp, sDihe',ITmp, sDihe
+!     if (sDihe.LE.0.09d0) THEN
+!        !     None of the frozen atoms linked to IAt are good to define the third
+!        !     direction in space...
+!        !     We will look at the other frozen atoms
+!        !     we might improve the search so as to take the atom closest to IAt
+!        ITmp=0
+!        DO I=1,NbAtFrag(IFrag)
+!           JAt=FragAt(IFrag,I)
+!           if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+!              n1=JAt
+!              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!              CALL produit_vect(vx1,vy1,vz1,norm1,  &
+!                   vx2,vy2,vz2,norm2,               &
+!                   vx4,vy4,vz4,norm4)
+!              val_d=angle_d(vx4,vy4,vz4,norm4,    &
+!                   vx5,vy5,vz5,norm5,              &
+!                   vx2,vy2,vz2,norm2)
+!              if (abs(sin(val_d)).GE.0.09D0) THEN
+!                 ITmp=ITmp+1
+!                 DistFrag(ITmp)=Norm1
+!                 FragDist(ITmp)=JAt
+!              END IF
+!           END IF
+!        END DO
+!        IF (ITmp.EQ.0) THEN
+!           !     All dihedral angles between frozen atoms are less than 5�
+!           !     (or more than 175�). We have to look at other fragments :-(
+!           DO I=1,NFroz
+!              Jat=Frozen(I)
+!              if (.NOT.DejaFait(JAt)) THEN
+!                 n1=JAt
+!                 CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!                 CALL produit_vect(vx1,vy1,vz1,norm1,   &
+!                      vx2,vy2,vz2,norm2,                 &
+!                      vx4,vy4,vz4,norm4)
+!                 val_d=angle_d(vx4,vy4,vz4,norm4,       &
+!                      vx5,vy5,vz5,norm5,                 &
+!                      vx2,vy2,vz2,norm2)
+!                 if (abs(sin(val_d)).GE.0.09D0) THEN
+!                    ITmp=ITmp+1
+!                    DistFrag(ITmp)=Norm1
+!                    FragDist(ITmp)=JAt
+!                 END IF
+!              END IF
+!           END DO
+!           IF (ITmp.EQ.0) THEN
+!              !     All frozen atoms are in a plane... too bad
+!              WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+!              WRITE(*,*) 'For now, I do not treat this case'
+!              STOP
+!           END IF
+!        END IF
+!        I1=0
+!        d=1e9
+!        DO I=1,ITmp
+!           IF (DistFrag(I).LE.d) THEN
+!              d=DistFrag(I)
+!              I1=FragDist(I)
+!           END IF
+!        END DO
+!     ELSE                   !(sDihe.LE.0.09d0)
+!        I1=FrozBlock(IAt,ITmp)
+!     END IF                 !(sDihe.LE.0.09d0)
+!     !     we now have the atom that is closer to the first one and that
+!     !     forms a non 0/Pi dihedral angle
+!     !     ind_zmat(4,1)=I1
+!     !     ind_zmat(4,2)=IAt
+!     !     ind_zmat(4,3)=Liaisons(Iat,1)
+!     !     ind_zmat(4,4)=Liaisons(Iat,2)
+!     n3=Liaisons(Iat,1)
+!     n4=Liaisons(Iat,2)
+!     Call add2indzmat(na,4,I1,Iat,n3,n4,ind_zmat,x,y,z)
+!     Liaisons(Iat,1)=n3
+!     Liaisons(Iat,2)=n4
+!     DejaFait(I1)=.TRUE.
+!     CaFaire(3)=I1
+!     CaFaire(4)=0
+!     IdxCaFaire=4
+!     izm=4
+!     FCaf(I1)=.TRUE.
+!
+!!!!!! <- PFL 28 Dec 2007
+
+     CaFaire(3)=0
+     IdxCaFaire=3
+     izm=3
+
+  CASE(1)
+     if (debug) WRITE(*,*) 'DBG select case I0 1, NbAtFrag=',NbAtFrag(IFrag)
+     ind_zmat(1,1)=IAt
+     ind_zmat(2,1)=Liaisons(IAt,1)
+     ind_zmat(2,2)=IAt
+     DejaFait(IAt)=.TRUE.
+     DejaFait(Liaisons(Iat,1))=.TRUE.
+     IdxCaFaire=2
+     CaFaire(1)=Liaisons(Iat,1)
+     CaFaire(2)=0
+     FCaf(Liaisons(Iat,1))=.TRUE.
+
+! PFL 28 Dec 2007 ->
+! We do NOT need a fourth atom. So we will look only for a third atom
+!
+!!!!
+!
+     !     We search for a third and fourth atoms, first in the FrozBlock atoms
+     !     It should not be possible to have   (FrozBlock(Iat,0).GT.2) and
+     !     iat linked to only one atom !       
+
+
+     !     we calculate the distances between Iat and all other frozen
+     !     atoms of this fragment, and store only those for which 
+     !     valence angles are not too close to 0/Pi. (limit:5�)
+
+     ITmp=0
+     CALL vecteur(Liaisons(Iat,1),IAt,x,y,z,vx2,vy2,vz2,norm2)
+
+! PFL 28 Dec 2007: As MaxL=1 I think that there is at most 2 atoms in this fragment... 
+! so that the following loop is useless... this should be tested more carefully
+     DO I=1,NbAtFrag(IFrag)
+        JAt=FragAt(IFrag,I)
+        if (.NOT.DejaFait(JAt)) THEN
+           CALL vecteur(JAt,IAt,x,y,z,vx1,vy1,vz1,norm1)
+           if (abs(cos(angle(vx1,vy1,vz1,norm1,  &
+                vx2,vy2,vz2,norm2))).LE.0.996d0) THEN
+              ITmp=ITmp+1
+              DistFrag(ITmp)=Norm1
+              FragDist(ITmp)=JAt
+           END IF
+        END IF
+     END DO
+
+     IF (ITMP.EQ.0) THEN
+        !     We have no atoms correct in this fragment, we use
+        !     atoms from other fragments
+        DO Jat=1,Na
+! DejaFait(Iat)=.TRUE. so that we do not need to test Jat/=Iat
+           if (.NOT.DejaFait(JAt)) THEN
+              CALL vecteur(JAt,IAt,x,y,z,vx1,vy1,vz1,norm1)
+              if (abs(cos(angle(vx1,vy1,vz1,norm1, &
+                   vx2,vy2,vz2,norm2))).LE.0.996d0) THEN
+                 ITmp=ITmp+1
+                 DistFrag(ITmp)=Norm1
+                 FragDist(ITmp)=JAt
+              END IF
+           END IF
+        END DO
+        IF (ITMP.EQ.0) THEN
+           WRITE(*,*) 'It seems all atoms are aligned'
+           WRITE(*,*) 'Case non treated for now :-( '
+           STOP
+        END IF
+     END IF
+
+     I1=0
+     d=1e9
+! PFL 28 Dec 2007: There exists some F90 intrinsics to find the smallest element of an array.
+! The following loop should be replaced by it !
+     DO I=1,ITmp
+        IF (DistFrag(I).LE.d) THEN
+           I1=FragDist(I)
+           d=DistFrag(I)
+        END IF
+     END DO
+
+     !     we now have the atom that is closer to the first one and that
+     !     forms a non 0/Pi valence angle
+     ind_zmat(3,1)=I1
+     ind_zmat(3,2)=IAt
+     ind_zmat(3,3)=Liaisons(Iat,1)
+     DejaFait(I1)=.TRUE.
+     CaFaire(2)=I1
+     FCaf(I1)=.TRUE.
+
+
+! PFL 28 Dec 2007 ->
+! We do NOT need a fourth atom so that the following is suppressed
+!
+!     !     we search for a fourth atom !
+!     !     We search for a fourth atom, first in the FrozBlock atoms
+!     ITmp=2
+!     sDihe=0.
+!     n2=IAt
+!     n3=Liaisons(Iat,1)
+!     n4=I1
+!     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+!     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+!     CALL produit_vect(vx3,vy3,vz3,norm3,  &
+!          vx2,vy2,vz2,norm2,    &
+!          vx5,vy5,vz5,norm5)
+!
+!     !     We will look at the other frozen atoms
+!     !     we might improve the search so as to take the atom closest to IAt
+!     ITmp=0
+!     DO I=1,NbAtFrag(IFrag)
+!        JAt=FragAt(IFrag,I)
+!        if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN
+!           n1=JAt
+!           CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!           CALL produit_vect(vx1,vy1,vz1,norm1, &
+!                vx2,vy2,vz2,norm2, &
+!                vx4,vy4,vz4,norm4)
+!           val_d=angle_d(vx4,vy4,vz4,norm4,  &
+!                vx5,vy5,vz5,norm5,   &
+!                vx2,vy2,vz2,norm2)
+!           if (abs(sin(val_d)).GE.0.09D0) THEN
+!              ITmp=ITmp+1
+!              DistFrag(ITmp)=Norm1
+!              FragDist(ITmp)=JAt
+!           END IF
+!        END IF
+!     END DO
+!     IF (ITmp.EQ.0) THEN
+!        !     All dihedral angles between frozen atoms are less than 5�
+!        !     (or more than 175�). We have to look at other fragments :-(
+!        DO I=1,NFroz
+!           Jat=Frozen(I)
+!           if (.NOT.DejaFait(JAt)) THEN
+!              n1=JAt
+!              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+!              CALL produit_vect(vx1,vy1,vz1,norm1,  &
+!                   vx2,vy2,vz2,norm2, &
+!                   vx4,vy4,vz4,norm4)
+!              val_d=angle_d(vx4,vy4,vz4,norm4,   &
+!                   vx5,vy5,vz5,norm5,           &
+!                   vx2,vy2,vz2,norm2)
+!              if (abs(sin(val_d)).GE.0.09D0) THEN
+!                 ITmp=ITmp+1
+!                 DistFrag(ITmp)=Norm1
+!                 FragDist(ITmp)=JAt
+!              END IF
+!           END IF
+!       END DO
+!        IF (ITmp.EQ.0) THEN
+!           !     All frozen atoms are in a plane... too bad
+!           WRITE(*,*) 'ERROR: It seems that all frozen atoms are in a plane'
+!           WRITE(*,*) 'For now, I do not treat this case'
+!           STOP
+!        END IF
+!     END IF                 ! ITmp.EQ.0 after scaning fragment
+!     I1=0
+!     d=1e9
+!     DO I=1,ITmp
+!        IF (DistFrag(I).LE.d) THEN
+!           d=DistFrag(I)
+!           I1=FragDist(I)
+!        END IF
+!     END DO
+!
+!     !     we now have the atom that is closer to the first one and that
+!     !     forms a non 0/Pi dihedral angle
+!     !     ind_zmat(4,1)=I1
+!     !     ind_zmat(4,2)=IAt
+!     !     ind_zmat(4,3)=ind_zmat(2,1)
+!     !     ind_zmat(4,4)=ind_zmat(3,1)
+!     n3=ind_zmat(2,1)
+!     n4=ind_zmat(3,1)
+!     Call add2indzmat(na,4,I1,IAt,n3,n4,ind_zmat,x,y,z)
+!     ind_zmat(2,1)=n3
+!     ind_zmat(3,1)=n4
+!     DejaFait(I1)=.TRUE.
+!     CaFaire(3)=I1
+!     CaFaire(4)=0
+!     IdxCaFaire=4
+!     izm=4
+!     FCaf(I1)=.TRUE.
+!!!!!!!!!!!
+!
+! <- PFL 28 Dec 2007
+
+     CaFaire(3)=0
+	 IdxCaFaire=3
+	 
+  CASE(0)
+     WRITE(*,*) 'All atoms are separated .. '
+     WRITE(*,*) 'this case should be treated separately !'
+     STOP
+  END SELECT
+
+  if (debug) THEN
+     WRITE(*,*) 'ind_zmat 1 izm=',izm
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+     DO I=4,izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+             ind_zmat(I,3), ind_zmat(I,4)
+     END DO
+  END IF
+
+  DO I=1,izm
+     Idx_zmat(ind_zmat(I,1))=i
+  END Do
+
+  !     at least first three atoms of this fragment done...
+  !     we empty the 'cafaire' array before going on
+  IAFaire=1
+  DO WHILE (CaFaire(IaFaire).NE.0)
+     n1=CaFaire(IaFaire)
+     n2=ind_zmat(idx_zmat(N1),2)
+     if (idx_zmat(N1).EQ.2) THEN
+        !     We have a (small) problem: we have to add atoms linked to the 2nd
+        !     atom of the zmat. This is a pb because we do not know
+        !     which atom to use to define the dihedral angle
+        !     we take the third atom of the zmat
+        n3=ind_zmat(3,1)
+     ELSE
+        n3=ind_zmat(idx_zmat(n1),3)
+     END IF
+	 
+	 FirstAt=.TRUE.
+     DO I=1,Liaisons(n1,0)
+        IAt=Liaisons(n1,I)
+! PFL 29.Aug.2008 ->
+! We dissociate the test on 'DejaFait' that indicates that this atom
+! has already been put in the Zmat
+! from the test on FCaf that indicates that this atom has been put in the
+! 'CAFaire' list that deals with identifying its connectivity.
+! Those two test might differ in some cases.
+        IF (.NOT.DejaFait(Iat)) THEN
+           izm=izm+1
+           if (debug) WRITE(*,*) ">1< Adding atom ",Iat,"position izm=",izm
+           !           ind_zmat(izm,1)=iat
+           !           ind_zmat(izm,2)=n1
+           !           ind_zmat(izm,3)=n2
+           !           ind_zmat(izm,4)=n3
+           Call add2indzmat(na,izm,iat,n1,n2,n3,ind_zmat,x,y,z)
+		   if (FirstAt) THEN
+		      n3=Iat
+			  FirstAt=.FALSE.
+           END IF
+           idx_zmat(iat)=izm
+           DejaFait(iat)=.TRUE.
+        END IF
+        IF (.NOT.FCaf(Iat)) THEN
+           CaFaire(IdxCaFaire)=iat
+           IdxCaFaire=IdxCaFaire+1
+           CaFaire(IdxCaFaire)=0
+           FCaf(Iat)=.TRUE.
+        END IF
+! <- PFL 29.Aug.2008
+     END DO
+     IaFaire=IaFaire+1
+  END Do                    ! DO WHILE CaFaire
+
+  if (debug) THEN
+     WRITE(*,*) 'ind_zmat 2, izm=',izm
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+     WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+     DO I=4,izm
+        WRITE(*,'(1X,4(1X,I5))') ind_zmat(I,1), ind_zmat(I,2),  &
+             ind_zmat(I,3), ind_zmat(I,4)
+     END DO
+  END IF
+
+  !     We have finished putting atoms linked to the first one
+  ! There should not be any atom left from this fragment. We check:
+  !     we will add other atoms of this fragment
+  DO I=1,NbAtFrag(IFrag)
+     Iat=FragAt(IFrag,I)
+     if (debug) WRITE(*,*) "DBG: I,Iat,dejafait",I,Iat,DejaFait(Iat)
+     IF (.NOT.DejaFait(Iat)) THEN
+           WRITE(*,*) 'Treating atom I,Iat',I,Iat
+        
+     END IF
+
+  END DO
+
+	NbAtFrag(Ifrag)=0
+	MaxLFrag(IFrag,1)=0
+	
+  !     we start again with the rest of the molecule...
+  ! v 1.01 We add the fragment in the order corresponding to NbAtFrag
+  KMax=NbFrag-1
+
+  IF (DEBUG) WRITE(*,*) "Adding the ",Kmax," remaining fragments"
+  DO K=1, KMax
+  IFrag=0
+  I0=0
+  IAt=0
+  I1=0
+  DO I=1,NbFrag
+    SELECT CASE(MaxLFrag(I,1)-I0)
+     CASE (1:)
+        IFrag=I
+        I0=MaxLFrag(I,1)
+        IAt=MaxLFrag(I,2)
+        I1=NbAtFrag(I)
+     CASE (0)
+        if (NbAtFrag(I).GT.I1) THEN
+           IFrag=I
+           I0=MaxLFrag(I,1)
+           IAt=MaxLFrag(I,2)
+           I1=NbAtFrag(I)
+        END IF
+     END SELECT
+ 
+  END DO
+
+  if (debug) WRITE(*,'(1X,A,I5,A,I5,A,I5,A,I5)') 'Adding fragment:',IFrag,' with ',I0   &
+      ,' max links for atom',IAt,' fragment size',NbAtFrag(IFrag)
+    
+     MaxLFrag(IFrag,1)=0
+
+! We search for the closest atoms of the previous fragments to the atom with max links
+	d=1e9
+	DO J=1,izm
+		Call vecteur(iat,ind_zmat(j,1),x,y,z,vx1,vy1,vz1,norm1)
+		if (norm1.le.d) THEN
+			Jat=j
+			d=norm1
+		END IF
+	END DO
+	n2=ind_zmat(jat,1)
+	SELECT CASE(jat)
+        CASE (1)
+		 n3=ind_zmat(2,1)
+		 n4=ind_zmat(3,1)
+	  CASE (2)
+		 n3=ind_zmat(1,1)
+		 n4=ind_zmat(3,1)
+	  CASE DEFAULT
+		 n3=ind_zmat(jAt,2)
+		 n4=ind_zmat(jat,3)
+	END SELECT
+	izm=izm+1
+	Call add2indzmat(na,izm,iat,n2,n3,n4,ind_zmat,x,y,z)
+    idx_zmat(iat)=izm
+    DejaFait(iat)=.TRUE.
+	IdxCaFaire=2
+    CaFaire(1)=iat
+              CaFaire(2)=0
+              FCaf(Iat)=.TRUE.
+              IaFaire=1
+              DO WHILE (CaFaire(IaFaire).NE.0)
+                 n1=CaFaire(IaFaire)
+                 n2=ind_zmat(idx_zmat(N1),2)
+                 if (idx_zmat(N1).EQ.2) THEN
+                    !     We have a (small) problem: we have to add atoms linked to the 2nd
+                    !     atom of the zmat. This is a pb because we do not know
+                    !     which atom to use to define the dihedral angle
+                    !     we take the third atom of the zmat
+                    n3=ind_zmat(3,1)
+                 ELSE
+                    n3=ind_zmat(idx_zmat(n1),3)
+                 END IF
+                 DO I3=1,Liaisons(n1,0)
+                    IAt=Liaisons(n1,I3)
+! PFL 29.Aug.2008 ->
+! We dissociate the test on 'DejaFait' that indicates that this atom
+! has already been put in the Zmat
+! from the test on FCaf that indicates that this atom has been put in the
+! 'CAFaire' list that deals with identifying its connectivity.
+! Those two test might differ for a frozen atom linked to non frozen atoms.
+                    IF (.NOT.DejaFait(Iat)) THEN
+                       izm=izm+1
+                       Call add2indzmat(na,izm,Iat,n1,n2,n3,ind_zmat,x,y,z)
+                       idx_zmat(iat)=izm
+                       n3=iat
+                       DejaFait(Iat)=.TRUE.
+                    END IF
+                    IF (.NOT.FCaf(Iat)) THEN
+                       CaFaire(IdxCaFaire)=iat
+                       IdxCaFaire=IdxCaFaire+1
+                       CaFaire(IdxCaFaire)=0
+                       FCaf(Iat)=.TRUE.
+                    END IF
+! <- PFL 29.Aug.2008
+                 END DO
+                 IaFaire=IaFaire+1
+              END Do              ! DO WHILE CaFaire
+
+        if (debug) THEN
+           WRITE(*,*) 'ind_zmat 4'
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(1,1)
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(2,1), ind_zmat(2,2)
+           WRITE(*,'(1X,4(1X,I5))') ind_zmat(3,1), ind_zmat(3,2), ind_zmat(3,3)
+           DO Ip=4,izm
+              WRITE(*,'(1X,4(1X,I5))') ind_zmat(Ip,1), ind_zmat(Ip,2), &
+                   ind_zmat(Ip,3), ind_zmat(Ip,4)
+           END DO
+        END IF
+
+  END DO                    ! Loop on all fragments
+
+
+     ! We have ind_zmat. We calculate val_zmat :-)
+     if (debug) WRITE(*,*) "Calculating val_zmat"
+
+     val_zmat(1,1)=0.d0
+     val_zmat(1,2)=0.d0
+     val_zmat(1,3)=0.d0
+     val_zmat(2,2)=0.d0
+     val_zmat(2,3)=0.d0
+     val_zmat(3,3)=0.d0
+
+     n1=ind_zmat(2,1)
+     n2=ind_zmat(2,2)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     val_zmat(2,1)=norm1
+
+
+     n1=ind_zmat(3,1)
+     n2=ind_zmat(3,2)
+     n3=ind_zmat(3,3)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     val_zmat(3,1)=norm1
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+     val_zmat(3,2)=val
+
+     DO i=4,na
+
+        n1=ind_zmat(i,1)
+        n2=ind_zmat(i,2)
+        n3=ind_zmat(i,3)
+        n4=ind_zmat(i,4)
+
+        if (debug) WRITE(*,*) "Doing i,n1,n2,n3,n4",i,n1,n2,n3,n4
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+        CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+        val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+        CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+        CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+             vx4,vy4,vz4,norm4)
+        CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+             vx5,vy5,vz5,norm5)
+
+        val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, &
+             vx2,vy2,vz2,norm2)
+
+        !     write(*,11) n1,n2,norm1,n3,val,n4,val_d
+        !11   format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+        val_zmat(i,1)=norm1
+        val_zmat(i,2)=val
+        val_zmat(i,3)=val_d
+
+     END DO
+
+     if (debug) THEN
+        WRITE(*,*) 'DBG Cre_Zmat_Frag: ind_zmat'
+        DO I=1,na
+           WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+        END DO
+
+        WRITE(*,*) 'DBG Cre_Zmat_Frag: Full zmat'
+        DO I=1,na
+           WRITE(*,'(1X,I5,1X,I5,F8.4,2(1X,I5,1X,F7.2))') ind_zmat(i,1),(ind_zmat(i,j+1),val_zmat(i,j),j=1,3)
+        END DO
+
+     END IF
+
+     if (debugGaussian) THEN
+        WRITE(*,*) 'DBG Cre_Zmat_Frag: Gaussian Zmat - START'
+        Call zmat_g92(na,atome,ind_zmat,val_zmat)
+        WRITE(*,*) 'DBG Cre_Zmat_Frag: Gaussian Zmat - END'
+     END IF
+
+
+     if (debug) WRITE(*,*) "Deallocate (FragDist,Fragment, NbAtFrag,FragAt)"
+     DEALLOCATE(FragDist,Fragment, NbAtFrag,FragAt)
+     if (debug) WRITE(*,*) "Deallocate (DistFrag,Liaisons)"
+     DEALLOCATE(DistFrag,Liaisons)
+     if (debug) WRITE(*,*) "Deallocate(CaFaire,DejaFait)"
+     DEALLOCATE(CaFaire,DejaFait,FCaf,MaxLFrag)
+ 
+
+
+     if (debug) WRITE(*,*) "=============================== Exiting Calc_zmat_frag ========================"
+
+END SUBROUTINE Calc_Zmat_frag
+
+SUBROUTINE zmat_g92(na,atome,ind_zmat,val_zmat)
+
+! This subroutine comes for Cart. Slightly modified to be f90
+
+  Use Path_module, only : max_Z, NMaxL, Nom,MaxFroz, Pi
+  Use Io_module
+
+  IMPLICIT NONE
+
+  integer(KINT), INTENT(IN) ::  na,atome(na)
+  INTEGER(KINT), INTENT(IN) :: ind_zmat(Na,5)
+  real(KREAL), INTENT(IN)   :: val_zmat(Na,3)
+
+  character(6) :: at1,at2,at3,at4,at5,d,a,dh
+  character(SCHARS), ALLOCATABLE :: tab(:) ! 3*na
+  character(LCHARS) :: ligne
+  
+  INTEGER(KINT) :: i,n1,n2,n3,n4
+
+  ALLOCATE(tab(3*na))
+
+  DO i=1,na
+     IF (i .GE. 1)  THEN
+        n1=ind_zmat(i,1)
+        write(at1,11) nom(atome(n1)),n1
+11      format(a2,i3)
+        Call ecris_sb(at1,at1)
+        write(ligne,4) at1
+     END IF
+     IF (i .GE. 2)  THEN
+        n2=ind_zmat(i,2)
+        write(at2,11) nom(atome(n2)),n2
+        Call ecris_sb(At2,at2)
+        write(d,11) 'R',i-1
+        Call ecris_sb(D,d)
+        write(ligne,4) at1,at2,d
+        write(tab(i-1),12) d,val_zmat(i,1)
+12      format(a8,f8.4)
+     END IF
+     IF (i .GE. 3)  THEN
+        n3=ind_zmat(i,3)
+        write(at3,11) nom(atome(n3)),n3
+        Call ecris_sb(At3,at3)
+        write(a,11) 'A',na+i-3
+        Call ecris_sb(A,A)
+        write(ligne,4) at1,at2,d,at3,a
+           write(tab(na+i-3),13) a,val_zmat(i,2)
+13         format(a8,f8.3)
+        END IF
+        IF (i .GE. 4)  THEN
+           n4=ind_zmat(i,4)
+           write(at4,11) nom(atome(n4)),n4
+           Call ecris_sb(At4,at4)
+           write(dh,11) 'DH',na+na+i-6
+           Call ecris_sb(dh,dh)
+           write(ligne,4) at1,at2,d,at3,a,at4,dh
+4          format(7a6)
+           write(tab(na+na+i-6),13) dh,val_zmat(i,3)
+        END IF
+        write(IOOUT,*) TRIM(ligne)
+     END DO
+     
+     write(IOOUT,*)
+     IF (na .EQ. 2) THEN
+        write(IOOUT,*) TRIM(tab(1))
+     ELSE
+        DO i=1,3*na-6
+           write(IOOUT,*) TRIM(tab(i))
+        END DO
+     END IF
+     write(IOOUT,*)
+
+     DEALLOCATE(Tab)
+
+   END SUBROUTINE zmat_g92
+
+   SUBROUTINE ecris_sb(inter1,inter)
+
+      character(6) :: inter,inter1
+
+
+      k=1
+      DO j=1,len(inter)
+        IF (inter(j:j) .NE. ' ' ) THEN
+         inter1(k:k)=inter(j:j)
+         k=k+1
+        END IF
+      END DO
+
+       inter1(k:6)=' '
+
+    END SUBROUTINE ecris_sb

Property changes on: src/Calc_zmat_frag.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Path.f90
===================================================================
--- src/Path.f90	(revision 0)
+++ src/Path.f90	(revision 1)
@@ -0,0 +1,2398 @@
+! This programs generates and optimizes a reaction path
+! between at least two endpoints.
+!
+! It uses NAMELIST for input, see below !
+!
+! v3.0
+! First version entirely in Fortran.
+! It uses routines from Cart (path creation and parameterisation) 
+! and from IRC06, especially routines for point optimization.
+!
+! TO DO:
+! 1) Possibility to read and/or calculate some hessian structures
+! 2) Use of internal coordinate to estimate the hessian for stable
+! species in a much better way...
+!
+!!!!!!!!!!!!!!!
+! v3.1
+! The Hessian update includes neighbour points.
+!
+! v3.2
+! We add the option Hinv that uses the BFGS update of the Hessian inverse
+!
+! v3.3
+! We add the full option for ZMAT coordinates, where all is done using
+! internal coordinates.
+! v3.31
+! The step size is controlled using the step norm and not the maximum step
+! component.
+! v3.5
+! Big modifications of Calc_zmat_const_frag in order to be able
+! to treat VASP geometries. 
+! For now, only XYZ geometries are read and written. VASP interface
+! has to be written.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v3.6
+! Some minor modif in Calc_zmat_const_frag to have nicer programming
+! and a new mode added: Coord=MIXED where part of the system
+! is extrapolated in cartesian coordinates and the rest of it in zmat.
+! it might be Useful for VASP, or when lots of atoms are frozen
+! by default, when Coord=MIXED, all frozen atoms are described in cartesian
+! coordinates.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v3.61
+! We move further and further to VASP program. New variables added to the 'path' namelist:
+! input: what is the program used for the geometries ?
+!     Possible values: xyz (or cart) for Xmol format; VASP. Xyz should be used for Gaussian
+! prog: what is the program used for the calculations ?
+!     Possible values for now: gaussian, vasp.
+! For now (02/2007), when prog='vasp' is used, only the initial path is created.
+! That means that we have only added input/output subroutines :-)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v3.7
+! We try to improve the optimization steps. For that, we first modify many routines
+! so that the new step is calculated in the 'free' degrees of freedom, as it is done
+! in IRC07/ADF for example. That will allow us to impose constraints in an easier way.
+!
+! v3.701
+! Add a new option for the initial extrapolation of the Hessian
+!
+!v3.71
+! The optimization step has been improved... but the vfree part has not yet been included.
+! This has still to be done :-)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v3.8
+! I have included part of the vfree procedure: for now freemv returns the Id
+! matrix, that is used to project out the tangent vector.
+! This improves the optimization a lot, but I will have to implement
+! a real freemw subroutine to have constraints there !
+! v3.81 Technical version
+! I have added a new program 'Ext'. When this one is used, Path creates a Ext.in file,
+! calls Ext.exe file to get a Ext.out file that contains the Energy and the gradient.
+! Format:
+! Ext.in : Xmol format. The second line (comment in Xmol) contains the COORD name.
+! Ext.out: Energy on firt line (1X,D25.15), then gradient in CARTESIAN coordinates
+!  (3(1X,D25.15)) format. Natoms lines. 
+! TO DO:  Gradient could be given in COORD format, ie cartesian for COORD=CART, XYZ or HYBRID
+! ZMAT for CORD=ZMAT (in that case, 6 zeros are there at the begining !)
+! For MIXED, it is equivalent to CART :-)
+! v3.811
+! I have added a prog="TEST" option, where egradient calls egrad_test subroutine.
+! It then calculates the energy and gradient as it wants and it returns the cartesian 
+! gradient. The purpose is to have an analytical approximation of the PES of the system
+! under study to gain some time in testing the program. This is not documented :-)
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!  v3.9
+! In order to be fully interfaced with VASP, I have to change the architecture
+! of the program. In particular, with VASP, one can use a Para8+NEB routine
+! of VASP to calculate energy+forces for all points of the path.
+! v3.91
+! One small modification: in the cart list, one can freeze a whole sequence by
+! entering a negative number for the last atom of the sequence
+! for example : cart=1 -160 165 -170 will define atoms from 1 to 160 and from
+! 165 to 170 (included) as cartesian atoms.  
+! Of course, Same applies to Frozen
+! v3.92 / v3.93
+! Slight modifications. One noticeable: when using Vasp, the program analyses the
+! displacements to suggest which atoms could be described in CART.
+! v3.94 
+! VaspMode=Para now implemented. One needs to be careful in defining 'ProgExe'.
+! In particular, one must put the mpirun command in ProgExe !!! There is NO test.
+! v3.95
+! When using internal coordinates (zmat, hybrid or mixes), Path calculates the number
+! of fragments for each geometry. The reference one (ie the one used to compute the internal
+! coordinates) is now the one with the least fragments.
+! user can also choose one geometry by specifying IGeomRef in the Path namelis.
+! v3.96
+! I have added a test for the geometry step: it does not allow valence angle to 
+! be negative or bigger than 180. I hope that this might help geometry optimization
+! when dealing with nearly linear molecules.
+! v3.961
+! The options cart and frozen are now LOGICAL:
+! Fcart=T indicates that a &cartlist namelist should be read !
+! Ffrozen=T indicates that a &frozenlist namelist should be read !
+! TO DO: Autocart=T indicates that the atoms described in cartesian coordiantes should
+! be found automatically
+! v3.97
+! Baker has been implemented by P. Dayal: we are interpolating Xint for now.
+! TO do: interpolate Umat ?
+! -----
+! v3.971
+! AutoCart=T is being implemented. Goal: having a 'black box' version for Vasp users.
+! Vmd: True if user wants to watch the path using VMD. Only used for VASP for now.
+!------------
+! v3.98
+! Calc_zmat has been replaced by Calc_zmat_frag which is more robust.
+! Still missing: linear molecules and some tests.
+!
+! v3.981
+! * Added a non document flag in .valid file that switch on the numerical
+! calculation of the hessian instead of the update.
+! * Added HesUpd variable in the namelist. Default value is MS for path
+!   optimization because it does not imposes a positive hessian, and BFGS
+!  for geometry optimization
+! v 4.0
+! * This version has been made public within the CARTE project.
+! * Added:
+! - Step_method to choose the optimization method: RFO or Diis
+! - DynMaxStep: if TRUE, the maximum size of a step is updated at each step. 
+!             If energy goes up, Smax=Smax*0.8, if not Smax=Smax*1.2. 
+!             It is ensured that the dynamical Smax is within [0.5*SMax_0,2*Smax_0]
+!
+!!!!!!!!!!!!!!!!!!!!!!
+! v4.1
+! * Para mode has been partly implemented for Gaussian.
+!  VaspMode is thus now 'RunMode' and can be Serial or Para
+! Only Gaussian and VASP are supported for Para mode now.
+! v4.12 
+! Some bugs in unconstrained zmat construction are corrected.
+! v4.13
+! Prakash has implemented the GEDIIS optimization procedure.
+! v4.14
+! There is a small problem for some inputs in VASP, where the
+! last geometry is not the one given by the user. 
+! It seems to come from the fact that some people try to freeze
+! some unfrozen atoms
+! So some tests have been added to check that frozen atoms do not move.
+!!!
+! v4.15
+! There were some bugs when reading and expanding cartlist and frozenlist
+! I have changed the way frozen atoms are compared by adding partial alignment.
+! v4.16
+! Some bugs were corrected.
+! v4.17
+! Added MOPAC as a program.
+! v4.175
+! Added Three more parameters for defining the input and output names for
+! the calculations.
+! CalcName: Prefix for the files used for the energy and gradient calculations
+! ISuffix: Suffix for the input file
+! OSuffix: suffix for the output file.
+! This maters for Gaussian for example.
+!
+! v4.177 (P) 2010 Nov 22
+! - We add TurboMole as a new external code.
+! - Subtle change for Input: the default is XYZ whatever the code, except
+! for VASP. 
+!
+! v4.178 (P) 2010 Nov 28
+! - We add the possibility to call CHAMFRE reactive force field using 
+! prog=TEST2 or CHAMFRE
+!
+
+
+PROGRAM PathOpt
+
+  use VarTypes
+  use Path_module
+  use Io_module
+
+  IMPLICIT NONE
+
+  CHARACTER(132) :: FileIn, FileOut, Line,Line2
+  CHARACTER(32) :: Input,poscar
+
+  INTEGER(KINT) :: I,J,K,IGeom,iat, IGeom0, IGeomF
+  INTEGER(KINT) :: IOpt
+  INTEGER(KINT) :: Idx, LineL,LenLine
+  INTEGER(KINT) :: N3at, NFree, Nfr
+  ! Temporary integer counter
+  INTEGER(KINT) :: NTmp
+
+  INTEGER(KINT) :: List(2*MaxFroz)
+
+  REAL(KREAL) :: E,FactStep,B(3) !E=Energy
+  REAL(KREAL) :: Alpha,sa,ca,norm,s,NormStep,NormGrad
+  REAL(KREAL) :: EReac,EProd,HP,HEAT ! HEAT=E
+  REAL(KREAL), ALLOCATABLE :: GeomTmp(:),GradTmp(:),ZeroVec(:) !NCoord
+  REAL(KREAL), ALLOCATABLE :: GradOld(:,:) ! (NGeomF,NCoord)
+  REAL(KREAL), ALLOCATABLE :: GeomTmp2(:),GradTmp2(:) ! NCoord
+  REAL(KREAL), ALLOCATABLE :: HessTmp(:,:)
+  REAL(KREAL), ALLOCATABLE :: Hprim(:,:) !(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: HprimU(:,:) !(NPrim,3*Nat-6))
+  LOGICAL, SAVE :: allocation_flag
+
+  ! Flag to see if frozen atoms are frozen (see below)
+  LOGICAL :: FChkFrozen
+
+  ! Energies for all points along the path at the previous iteration
+  REAL(KREAL), ALLOCATABLE ::  EPathold(:) ! NGeomF, where it is deallocated: Prakash
+  ! Maximum step allowed for this geometry
+  REAL(KREAL), ALLOCATABLE ::  MaxStep(:) ! NGeomF, where it is deallocated: Prakash 
+
+  LOGICAL, ALLOCATABLE :: FTmp(:) ! Nat
+  LOGICAL :: FFrozen,FCart
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! To analyse the frozen atoms
+  !
+  REAL(KREAL), ALLOCATABLE :: x1(:),y1(:),z1(:) ! nat
+  REAL(KREAL), ALLOCATABLE :: x2(:),y2(:),z2(:) ! nat
+  REAL(KREAL) :: MRot(3,3),Norm1,Norm2,Dist
+  LOGICAL, ALLOCATABLE :: ListAtFroz(:)
+  INTEGER(KINT) :: Iat1, Iat2, Iat3
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! For VASP
+  !
+  INTEGER(KINT), ALLOCATABLE :: NbAtType(:) !na
+  INTEGER(KINT) :: NbType, NbTypeUser
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  LOGICAL :: TChk
+  LOGICAL :: Debug, Fini,Flag_Opt_Geom
+
+!  INTEGER(KINT), EXTERNAL :: Iargc
+  INTEGER(KINT), EXTERNAL ::  ConvertNumAt
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! For Debugging purposes
+  !
+  LOGICAL :: FCalcHess
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     SUBROUTINE Read_Geom(Input)
+       CHARACTER(32), INTENT(IN) :: input
+     END SUBROUTINE READ_GEOM
+
+     subroutine hupdate_all (n, dx, dgrad, HessOld)
+
+       IMPLICIT NONE
+
+       INTEGER, PARAMETER :: KINT=KIND(1)
+       INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+       INTEGER(KINT), INTENT(IN) :: n
+       real(KREAL) :: dx(n), dgrad(n), HessOld(n*n)
+     END subroutine hupdate_all
+
+     SUBROUTINE Hinvup_BFGS_new(Nfree,ds,dgrad,Hess)
+
+       IMPLICIT NONE
+       
+       INTEGER, PARAMETER :: KINT=KIND(1)
+       INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+       
+       INTEGER(KINT), INTENT(IN) :: NFREE
+       REAL(KREAL), INTENT(INOUT) :: Hess(Nfree,Nfree)
+       REAL(KREAL), INTENT(IN) :: ds(Nfree)
+       REAL(KREAL), INTENT(IN) :: dGrad(Nfree)
+       
+     END subroutine Hinvup_BFGS_new
+
+
+  END INTERFACE
+
+  Namelist/path/fact,r_cov,nat,ngeomi,ngeomf,debugFile, &
+       MW,mass,Ffrozen, renum, OptReac,OptProd,Coord,Step_method,MaxCyc, &
+       SMax, SThresh, GThresh,IReparam, IReparamT,Hinv, ISpline, PathOnly,Fcart, &
+       input,prog, ProgExe,RunMode, AtTypes,poscar,PathName,  &
+       OptGeom,IniHup, HupNeighbour, hesUpd, &
+       FTan, EReac, EProd, IGeomRef, Vmd, AutoCart, DynMaxStep, &
+       NMaxPtPath, FrozTol, BoxTol,CalcName,ISuffix,OSuffix, WriteVasp, &
+       NGintMax, Align
+
+  Namelist/cartlist/list
+  Namelist/frozenlist/list
+
+
+  Flag_Opt_Geom = .FALSE. ! Initialized.
+
+  ! We read the files names
+!  SELECT CASE (iargc())
+  SELECT CASE (command_argument_count())
+  CASE (2)
+     call getarg(1,FileIn)
+     OPEN(IOIN,FILE=FileIn,STATUS='UNKNOWN')
+     call getarg(2,FileOut)
+     OPEN(IOOUT,FILE=FileOut,STATUS='UNKNOWN')
+  CASE (1)
+     call getarg(1,FileIn)
+     IF ((FileIn=="-help").OR.(FileIn=="--help")) THEN
+        WRITE(*,*) "Path mini-help"
+        WRITE(*,*) "--------------"
+        WRITE(*,*) ""
+        WRITE(*,*) "Use: Path Input_file Output_file"
+        WRITE(*,*) "Input_file starts with a Namelist called path"
+        WRITE(*,*) ""
+        WRITE(*,*) "Compulsory variables are:"
+        WRITE(*,*) "NGeomi: Number of geometries defining the Initial path"
+        WRITE(*,*) "NGeomf: Number of geometries defining the Final path"
+        WRITE(*,*) "Nat   : Number of atoms"
+        WRITE(*,*) ""
+        WRITE(*,*) "Other options"
+        WRITE(*,*) "Input: string that indicates the type of the input geometries."
+        WRITE(*,*) "Accepted values are: Cart (or Xmol or Xyz) or Vasp"
+        WRITE(*,*) "Prog: string that indicates the program that will be used for energy and gradient calculations."
+        WRITE(*,*) "      Accepted values are: Gaussian, Vasp, Mopac or Ext"
+        WRITE(*,*) "      In case of a Gaussian or Mopac calculations, input must be set to Cart."
+        WRITE(*,*) "      One example of a gaussian/mopac input should be added at the end of the"
+        WRITE(*,*) "      input file.See example file Test_G03.path or Test_Mopac.path"
+        WRITE(*,*) "      In the case of a VASP calculation, if input is set to Cart, then"
+        WRITE(*,*) "    the preamble of a VASP calculation should be added at the end of"
+        WRITE(*,*) "    the input file. See example file Test_VASP_cart.path"
+        WRITE(*,*) "    In the case of a VASP calculation, one should also give value of the "
+        WRITE(*,*) "    Runmode variable"
+        WRITE(*,*) "Runmode: This indicates wether one should use VASP routine to calculate the energy"
+        WRITE(*,*) "       and gradient of the whole path or not. If one wants to use VASP,"
+        WRITE(*,*) "       Runmode must be set to PARA."
+        WRITE(*,*) "PathName: Prefix used to save the path. Default is Path"
+        WRITE(*,*) "Poscar: string that will be used as the prefix for the different "
+        WRITE(*,*) "        POSCAR files in a VASP calculations. Usefull only if PathOnly=.TRUE.,"
+        WRITE(*,*) "        not used for internal calculations."
+        WRITE(*,*) " CalcName: Prefix for the files used for the energy and gradient calculations"
+        WRITE(*,*) " ISuffix: Suffix for the input file."
+        WRITE(*,*) " OSuffix: suffix for the output file."
+        WRITE(*,*) "IGeomRef: Index of the geometry used to construct the internal coordinates."
+        WRITE(*,*) "      Valid only for Coord=Zmat, Hybrid or Mixed"
+        WRITE(*,*) "Fact: REAL used to define if two atoms are linked."
+        WRITE(*,*) "      If d(A,B)<=fact*(rcov(A)+rcov(B)), then A and B are considered Linked."
+        WRITE(*,*) "debugFile: Name of the file that indicates which subroutine should print debug info."
+        WRITE(*,*) "Coord: System of coordinates to use. Possible choices are:"
+        WRITE(*,*) "       - CART (or Xyz): works in cartesian"
+        WRITE(*,*) "       - Zmat: works in internal coordinates (Zmat)"
+        WRITE(*,*) "       - Mixed: frozen atoms, as well as atoms defined by the "
+        WRITE(*,*) "       'cart' array(see below) are describe in CARTESIAN, whereas the"
+        WRITE(*,*) "       others are described in Zmat" 
+        WRITE(*,*) "       - Baker: use of Baker coordinates, also called delocalized internal coordinates"
+        WRITE(*,*) "       - Hybrid: geometries are described in zmat, but the gradient are used in cartesian"
+        WRITE(*,*) "Step_method: method to compute the step for optimizing a geometry; choices are:" 
+        WRITE(*,*) "       - RFO: Rational function optimization"
+        WRITE(*,*) "       - GDIIS: Geometry optimization using direct inversion in the iterative supspace"
+        WRITE(*,*) " HesUpd: method to update the hessian. By default, it is Murtagh-Sargent"
+        WRITE(*,*) "      Except for geometry optimization where it is BFGS."
+        WRITE(*,*) "MaxCyc: maximum number of iterations for the path optimization"
+        WRITE(*,*) "Smax: Maximum length of a step during path optimization"
+        WRITE(*,*) "SThresh: Step Threshold to consider that the path is stationary"
+        WRITE(*,*) "GThresh: Gradient Threshold to consider that the path is stationary, only orthogonal part is taken"
+        WRITE(*,*) "FTan: We moving the path, this gives the proportion of the displacement tangent to the path"
+        WRITE(*,*) "      that is kept. FTan=1. corresponds to the full displacement, "
+        WRITE(*,*) "      whereas FTan=0. gives a displacement orthogonal to the path."
+        WRITE(*,*) "IReparam: The path is not reparameterised at each iteration. This gives the frequency of reparameterization."
+        WRITE(*,*) "ISpline: By default, a linear interpolation is used to generate the path."
+        WRITE(*,*) "         This option indicates the first step where spline interpolation is used."
+        WRITE(*,*) ""
+        WRITE(*,*) "Arrays:"
+        WRITE(*,*) "Rcov: Array containing the covalent radii of the first 80 elements."
+        WRITE(*,*) "      You can modify it using, rcov(6)=0.8."
+        WRITE(*,*) "Mass: Array containing the atomic mass of the first 80 elements."
+        WRITE(*,*) "AtTypes: Name of the different atoms used in a VASP calculations."
+        WRITe(*,*) "If not given, Path will read the POTCAR file."
+        WRITE(*,*) ""
+        WRITE(*,*) "Flags:"
+        WRITE(*,*) "MW:  Flag. True if one wants to work in Mass Weighted coordinates. Default=.TRUE."
+        WRITE(*,*) "Renum: Flag. True if one wants to reoder the atoms in the initial order. default is .TRUE. most of the time."
+        WRITE(*,*) "OptProd: True if one wants to optimize the geometry of the products."
+        WRITE(*,*) "OptReac: True if one wants to optimize the geometry of the reactants."
+        WRITE(*,*) "PathOnly:TRUE if one wants to generate the initial path, and stops." 
+        WRITE(*,*) "Hinv: if True, then Hessian inversed is used."
+        WRITE(*,*) "IniHup: if True, then Hessian inverse is extrapolated using the initial path calculations."
+        WRITE(*,*) "HupNeighbour: if True, then Hessian inverse is extrapolated using the neighbouring points of the path."
+        WRITE(*,*) "FFrozen: True if one wants to freeze the positions of some atoms." 
+        WRITE(*,*) "         If True, a &frozenlist namelist containing the list of frozen atoms must be given."
+        WRITE(*,*) "          If VASP is used, and frozen is not given"
+        WRITE(*,*) " here, the program will use the F flags of the input geometry"
+        WRITE(*,*) "FCart:  True if one wants to describe some atoms using cartesian coordinates. "
+        WRITE(*,*) "        *** Only used in 'mixed' calculations. ***"
+        WRITE(*,*) "      If True, a &cartlist namelist containing the list of cart atoms must be given."
+        WRITE(*,*) "      By default, only frozen atoms are described in cartesian coordinates."
+        WRITE(*,*) ""
+        WRITE(*,*) "DynMaxStep: if TRUE, the maximum allowed step is updated at each step, for each geometry."
+        WRITE(*,*) "        If energy goes up, Smax=Smax*0.8, if not Smax=Smax*1.2. "
+        WRITE(*,*) "       It is ensured that the dynamical Smax is within [0.5*SMax_0,2*Smax_0]"
+        WRITE(*,*) "Autocart: True if you want to let the program choosing the cartesian atoms."
+        WRITE(*,*) "VMD: TRUE if you want to use VMD to look at the Path. Used only for VASP for now"
+        WRITE(*,*) "WriteVASP: TRUE if you want to print the images coordinates in POSCAR files."
+        WRITE(*,*) "See also the POSCAR option. This can be used only if prog or input=VASP."
+        WRITE(*,*) ""
+        STOP
+     END IF
+     OPEN(IOIN,FILE=FileIn,STATUS='UNKNOWN')
+     IOOUT=6
+  CASE (0)
+     IOIN=5
+     IOOUT=6
+  END SELECT
+
+!!!!!!!!!!!!!!!!!!!!!!!!!
+  ! 
+  ! We print the Version info in file
+  !
+  WRITE(*,'(1X,A)') "Path v4.1793 (c) PFL/PD 2007-2010"
+
+
+  ! We initiliaze variables
+  Pi=dacos(-1.0d0)
+  Nat=1
+  Fact=1.1
+  IGeomRef=-1
+  NGeomI=1
+  NGeomF=8
+  IReparam=5
+  IReparamT=-1
+  ISpline=5
+  debug=.False.
+  MW=.TRUE.
+  bohr=.False.
+  Coord='ZMAT'
+  Step_method='RFO'
+  DebugFile='Path.valid'
+  PathName="Path"
+  MaxCyc=50
+  SMax=0.1D0
+  SThresh=-1.
+  GThresh=-1.
+  FTan=0.
+  Hinv=.TRUE.
+  IniHUp=.FALSE.
+  HupNeighbour=.FALSE.
+  HesUpd="MS"
+  FFrozen=.FALSE.
+  FCart=.FALSE.
+  List=0
+  renum=.TRUE.
+  OptReac=.FALSE.
+  OptProd=.FALSE.
+  EReac=0.d0
+  EProd=0.d0
+  OptGeom=-1
+  PathOnly=.FALSE.
+  Prog='EMPTY'
+  ProgExe='EMPTY'
+  Runmode='SERIAL'
+  Input='EMPTY'
+  Poscar="POSCAR"
+  AutoCart=.FALSE.
+  VMD=.TRUE.
+  WriteVASP=.FALSE.
+  DynMaxStep=.FALSE.
+  CalcName="EMPTY"
+  ISuffix="EMPTY"
+  OSuffix="EMPTY"
+  NGintMax=10
+  Align=.TRUE.
+
+  ! Number of point used to compute the length of the path,
+  ! and to reparameterize the path
+  NMaxPtPath=-1 
+  FrozTol=1e-4
+
+  ! Read the namelist
+  read (IOIN,path)
+
+  debug=valid("Main")
+  FCalcHess=valid("CalcHess")
+  PathName=AdjustL(PathName)
+  Coord=AdjustL(Coord)
+  CALL UpCase(coord)
+
+  Step_method=AdjustL(Step_method)
+  CALL UpCase(Step_method)
+
+  Prog=AdjustL(Prog)
+  CALL UpCase(prog)
+
+  Input=AdjustL(Input)
+  CALL UpCase(input)
+
+  Runmode=AdjustL(Runmode)
+  Call UpCase(Runmode)
+  IF (Runmode(1:4).EQ.'PARA')    Runmode="PARA"
+
+  If (IReparamT<=0) IReparamT=IReparam
+
+  IF (COORD.EQ.'CART') THEN
+     Renum=.FALSE.
+     IGeomRef=1
+  END IF
+
+  if (Prog.EQ.'EMPTY') THEN
+     Prog='GAUSSIAN'
+     If (ProgExe=="EMPTY") ProgExe="g09"
+  END IF
+  if (Prog.EQ.'G03') THEN
+     Prog='GAUSSIAN'
+     If (ProgExe=="EMPTY") ProgExe="g03"
+  END IF
+  if (Prog.EQ.'G09') THEN
+     Prog='GAUSSIAN'
+     If (ProgExe=="EMPTY") ProgExe="g09"
+  END IF
+
+  if (Prog.EQ.'TM') Prog="TURBOMOLE"
+  if (Prog.EQ.'TEST2') Prog="CHAMFRE"
+
+
+  Select Case (Prog)
+    CASE ("EXT")
+     if (CalcName=="EMPTY") CalcName="Ext"
+     if (ISuffix=="EMPTY")  ISuffix="in"
+     if (OSuffix=="EMPTY")  OSuffix="out"
+    CASE ('MOPAC')
+     if (CalcName=="EMPTY") CalcName="Path"
+     if (ISuffix=="EMPTY")  ISuffix="mop"
+     if (OSuffix=="EMPTY")  OSuffix="out"
+    CASE ("GAUSSIAN")
+     if (CalcName=="EMPTY") CalcName="Path"
+     if (ISuffix=="EMPTY")  ISuffix="com"
+     if (OSuffix=="EMPTY")  OSuffix="log"
+    CASE DEFAULT
+     if (CalcName=="EMPTY") CalcName="Path"
+     if (ISuffix=="EMPTY")  ISuffix="in"
+     if (OSuffix=="EMPTY")  OSuffix="out"
+  END SELECT 
+
+
+  if (Input.EQ.'EMPTY') THEN
+     Select Case (Prog)
+       CASE ("VASP")
+          Input=Prog
+       CASE ("CHAMFRE")
+          Input="VASP"
+       CASE DEFAULT
+          Input='XYZ'
+     END SELECT
+    WRITE(*,*) "Input has been set to the default: ",INPUT
+ END IF
+
+  WriteVASP=WriteVASP.AND.((Prog=="VASP").OR.(Input=="VASP"))
+
+  IF ((RunMode=="PARA").AND.((Prog/="GAUSSIAN").AND.(Prog/="VASP"))) THEN
+     WRITE(*,*) "Program=",TRIM(Prog)," not yet supported for Para mode."
+     STOP
+  END IF
+
+  if (OptGeom.GE.1) THEN
+     HesUpd="BFGS"
+     IF (IGeomRef.LE.0) THEN
+        IGeomRef=OptGeom
+     ELSE
+        IF (IGeomRef.NE.OptGeom) THEN
+           WRITE(IOOUT,*) "STOP: IGeomRef and OptGeom both set... but to different values !"
+           WRITE(IOOUT,*) "Check it : IGeomRef=",IGeomRef," OptGeom=",OptGeom
+
+           WRITE(*,*) "STOP: IGeomRef and OptGeom both set... but to different values !"
+           WRITE(*,*) "Check it : IGeomRef=",IGeomRef," OptGeom=",OptGeom
+           STOP
+        END IF
+     END IF
+  END IF
+
+  IF (ProgExe.EQ.'EMPTY') THEN
+     SELECT CASE (PROG)
+     CASE ("GAUSSIAN")
+        ProgExe="g03"
+     CASE ("MOPAC")
+        ProgExe="mopac"
+     CASE ("EXT")
+        ProgExe="./Ext.exe"
+     CASE ("VASP")
+        ProgExe='VASP'
+     CASE ("TURBOMOLE")
+        ProgExe='jobex -c 1 -keep'
+     CASE ("TEST")
+        ProgExe=""
+     CASE ("CHAMFRE")
+        ProgExe=""
+     CASE DEFAULT
+        WRITE(*,*) "Prog=",Adjustl(trim(Prog))," not recognized. STOP"
+        STOP
+     END SELECT
+  END IF
+
+  if (FCart.AND.FFrozen) THEN
+     ! We have to be carreful because user might use any order
+     ! to give the two lists CartList and FrozenList
+     READ(IOIN,'(A)') Line
+     Call Upcase(Line)
+     if (Index(Line,"CART").NE.0) THEN
+        ALLOCATE(Cart(Nat))
+        BackSpace(IOIN)
+        List=0
+        READ(IOIN,cartlist)
+        IF (COORD.NE.'CART') THEN
+           Cart=List(1:Nat)
+           if (debug) WRITE(*,*) "DBG Path L512 Cart",Cart
+        ELSE
+           WRITE(*,*) "FCart=T is not allowed when Coord='CART'"
+           WRITE(*,*) "I will discard the cartlist"
+           Cart=0
+        END IF
+
+        ALLOCATE(Frozen(Nat))
+        BACKSPACE(IOIN)
+        List=0
+        READ(IOIN,Frozenlist)
+        Frozen=List(1:Nat)
+        if (debug) WRITE(*,*) "DBG Path L517 Frozen",Frozen
+     ELSE
+        ALLOCATE(Frozen(Nat))
+        BACKSPACE(IOIN)
+        List=0
+        READ(IOIN,Frozenlist)
+        Frozen=List(1:Nat)
+        if (debug) WRITE(*,*) "DBG Path L523 Frozen",Frozen
+        ALLOCATE(Cart(Nat))
+        BackSpace(IOIN)
+        List=0
+        READ(IOIN,cartlist)
+        IF (COORD.NE.'CART') THEN
+           Cart=List(1:Nat)
+           if (debug) WRITE(*,*) "DBG Path L548 Cart",Cart
+        ELSE
+           WRITE(*,*) "FCart=T is not allowed when Coord='CART'"
+           WRITE(*,*) "I will discard the cartlist"
+           Cart=0
+        END IF
+     END IF
+  ELSE
+     if (FCart) THEN
+        ALLOCATE(Cart(Nat))
+        List=0
+        READ(IOIN,cartlist)
+        IF (COORD.NE.'CART') THEN
+           Cart=List(1:Nat)
+           if (debug) WRITE(*,*) "DBG Path L561 Cart",Cart
+        ELSE
+           WRITE(*,*) "FCart=T is not allowed when Coord='CART'"
+           WRITE(*,*) "I will discard the cartlist"
+           Cart=0
+        END IF
+     ELSE
+        IF ((PROG=="VASP").OR.(AutoCart)) THEN
+           ALLOCATE(Cart(Nat))
+        ELSE
+           ALLOCATE(Cart(1))
+        END IF
+        Cart=0
+     END IF
+
+     if (FFrozen) THEN
+        ALLOCATE(Frozen(Nat))
+        List=0
+        READ(IOIN,Frozenlist)
+        Frozen=List(1:Nat)
+        WRITE(*,*) Frozen
+        if (debug) WRITE(*,*) "DBG Path L549 Frozen",Frozen
+     ELSE
+        IF (PROG=="VASP") THEN
+           ALLOCATE(Frozen(Nat))
+        ELSE
+           ALLOCATE(Frozen(1))
+        END IF
+        Frozen=0
+     END IF
+  END IF
+
+
+  If (FCart) Call Expand(Cart,NCart,Nat)
+  IF (FFrozen) Call Expand(Frozen,NFroz,Nat)
+
+  if (debug) WRITE(*,*) "DBG Main L609, Ncart,Cart",NCart,Cart
+  if (debug) WRITE(*,*) "DBG Main L610, NFroz,Frozen", NFroz,Frozen
+
+  if (NMaxPtPath.EQ.-1) then
+     NMaxPtPath=min(50*NGeomF,1000)
+     NMaxPtPath=max(20*NGeomF,NMaxPtPath)
+  end if
+
+  !  NMaxPtPath=10000
+
+  ! We ensure that FTan is in [0.:1.]
+  FTan=min(abs(FTan),1.d0)
+
+  if (debug) WRITE(IOOUT,path)
+
+  FTan=1.-FTan
+
+  !Thresholds...
+  if (SThresh.LE.0) SThresh=0.01d0
+  If (GThresh.LE.0) GThresh=SThresh/4.
+  SThreshRms=Sthresh*2./3.
+  GThreshRms=Gthresh*2./3.
+
+  ! First batch of allocations. Arrays that depend only on NGeomI, Nat
+  ALLOCATE(XyzGeomI(NGeomI,3,Nat), AtName(NAt))
+  ALLOCATE(IndZmat(Nat,5),Order(Nat),Atome(Nat))
+  ALLOCATE(MassAt(NAt),OrderInv(Nat))
+
+  ! We read the initial geometries
+  Call Read_Geom(input)
+
+  ! We convert atome names into atom mass number
+  DO I=1,NAt
+     !     WRITE(*,*) 'I,AtName',I,AtName(I)
+     Atome(I)=ConvertNumAt(AtName(I))
+  END DO
+
+
+  ! PFL 23 Sep 2008 ->
+  ! We check that frozen atoms are really frozen, ie that their coordinates do not change
+  ! between the first geometry and the others.
+  IF (NFroz.GT.0) THEN
+     ALLOCATE(ListAtFroz(Nat),x1(Nat),y1(nat),z1(nat))
+     ALLOCATE(x2(nat),y2(nat),z2(nat)) 
+     ListAtFroz=.FALSE.
+
+     x1(1:Nat)=XyzgeomI(1,1,1:Nat)
+     y1(1:Nat)=XyzgeomI(1,2,1:Nat)
+     z1(1:Nat)=XyzgeomI(1,3,1:Nat)
+
+     SELECT CASE (NFroz)
+        ! We have Frozen atoms
+        ! PFL 28 Oct 2008 ->
+        ! It might happen that the geometries are translated/rotated.
+        ! So if we have 3 (or more) frozen atoms, we re-orient the geometries, based on the first
+        ! three frozen atoms.
+
+     CASE (3:)
+        DO I=1,NFroz
+           ListAtFroz(Frozen(I))=.TRUE.
+        END DO
+     CASE (2)
+        IAt1=Frozen(1)
+        IAt2=Frozen(2)
+        ListAtFroz(Iat1)=.TRUE.
+        ListAtFroz(Iat2)=.TRUE.
+        x2(1)=x1(Iat2)-x1(Iat1)
+        y2(1)=y1(Iat2)-y1(Iat1)
+        z2(1)=z1(Iat2)-z1(Iat1)
+        Norm1=sqrt(x2(1)**2+y2(1)**2+z2(1)**2)
+        Dist=-1.
+        ! We scan all atoms to find one that is not aligned with Iat1-Iat2
+        DO I=1,Nat
+           if ((I.EQ.Iat1).OR.(I.EQ.Iat2)) Cycle
+           x2(2)=x1(Iat2)-x1(I)
+           y2(2)=y1(Iat2)-y1(I)
+           z2(2)=z1(Iat2)-z1(I)
+           Norm2=sqrt(x2(2)**2+y2(2)**2+z2(2)**2)
+           ca=(x2(1)*x2(2)+y2(1)*y2(2)+z2(1)*Z2(2))/(Norm1*Norm2)
+           if (abs(ca)<0.9) THEN
+              IF (Norm2>Dist) THEN
+                 Iat3=I
+                 Dist=Norm2
+              END IF
+           END IF
+        END DO
+        ListAtFroz(Iat3)=.TRUE.
+        if (debug) WRITE(*,*) "DBG Path, NFroz=2, third frozen=",Iat3
+     CASE (1)
+        IAt1=Frozen(1)
+        ListAtFroz(Iat1)=.TRUE.
+        Dist=-1.
+        ! We scan all atoms to find one that is further from At1
+        DO I=1,Nat
+           if (I.EQ.Iat1) Cycle
+           x2(1)=x1(Iat1)-x1(I)
+           y2(1)=y1(Iat1)-y1(I)
+           z2(1)=z1(Iat1)-z1(I)
+           Norm1=sqrt(x2(1)**2+y2(1)**2+z2(1)**2)
+           IF (Norm1>Dist) THEN
+              Iat2=I
+              Dist=Norm1
+           END IF
+        END DO
+        IAt2=Frozen(2)
+        ListAtFroz(Iat2)=.TRUE.
+        if (debug) WRITE(*,*) "DBG Path, NFroz=1, second frozen=",Iat2
+        x2(1)=x1(Iat2)-x1(Iat1)
+        y2(1)=y1(Iat2)-y1(Iat1)
+        z2(1)=z1(Iat2)-z1(Iat1)
+        Norm1=sqrt(x2(1)**2+y2(1)**2+z2(1)**2)
+        Dist=-1.
+        ! We scan all atoms to find one that is not aligned with Iat1-Iat2
+        DO I=1,Nat
+           if ((I.EQ.Iat1).OR.(I.EQ.Iat2)) Cycle
+           x2(2)=x1(Iat2)-x1(I)
+           y2(2)=y1(Iat2)-y1(I)
+           z2(2)=z1(Iat2)-z1(I)
+           Norm2=sqrt(x2(2)**2+y2(2)**2+z2(2)**2)
+           ca=(x2(1)*x2(2)+y2(1)*y2(2)+z2(1)*Z2(2))/(Norm1*Norm2)
+           if (abs(ca)<0.9) THEN
+              IF (Norm2>Dist) THEN
+                 Iat3=I
+                 Dist=Norm2
+              END IF
+           END IF
+        END DO
+        ListAtFroz(Iat3)=.TRUE.
+        if (debug) WRITE(*,*) "DBG Path, NFroz=1, third frozen=",Iat3
+     END SELECT
+
+     DO I=2,NGeomI
+        ! First, we align the Ith geometry on the first one, using only
+        ! the positions of the "frozen" atoms. (see above: it might be that
+        ! ListAtFroz contains non frozen atoms usd to align the geometries
+        x2(1:Nat)=XyzgeomI(I,1,1:Nat)
+        y2(1:Nat)=XyzgeomI(I,2,1:Nat)
+        z2(1:Nat)=XyzgeomI(I,3,1:Nat)
+        Call Alignpartial(Nat,x1,y1,z1,x2,y2,z2,ListAtFroz,MRot)
+
+
+        FChkFrozen=.FALSE.
+        DO J=1,NFroz
+           IAt=Frozen(J)
+           IF ((abs(X1(Iat)-X2(Iat)).GT.FrozTol).OR. &
+                (abs(y1(Iat)-y2(Iat)).GT.FrozTol).OR.  &
+                (abs(z1(Iat)-z2(Iat)).GT.FrozTol))                     THEN
+              IF (.NOT.FChkFrozen) WRITE(*,*) "*** WARNING ****"
+              FChkFrozen=.TRUE.
+              WRITE(*,*) "Atom ",Iat," is set to Frozen but its coordinates change"
+              WRITE(*,*) "from geometry 1 to geometry ",I
+           END IF
+        END DO
+     END DO
+     IF (FChkFrozen) THEN
+        WRITE(*,*) "Some frozen atoms are not frozen... check this and play again"
+        STOP
+     END IF
+  END IF
+
+
+  N3at=3*Nat
+  NFree=N3at-6   ! ATTENTION: THIS IS NOT VALID FOR ALL TYPES OF COORDINATES.
+
+  ! if prog=gaussian, we have to read a full input
+  ! to mimic it later
+  if (prog=='GAUSSIAN') THEN
+     ! We read the Gaussian input file
+     ! First, the root
+     IF (DEBUG) WRITE(*,*) "Reading Gauss Root"
+     ALLOCATE(Gauss_Root)
+     NULLIFY(Gauss_Root%next)
+     Current => Gauss_root
+     LineL=1
+     DO WHILE (LineL.NE.0)
+        READ(IOIN,'(A)') Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+        Idx=INDEX(Line,"chk")
+        IF ((LineL.NE.0).AND.(Idx.EQ.0)) THEN
+           current%Line=TRIM(Line)
+           ALLOCATE(current%next)
+           Current => Current%next
+           Nullify(Current%next)
+        END IF
+     END DO
+
+!     Current => Gauss_root
+!     DO WHILE (ASSOCIATED(Current%next))
+!        WRITE(*,'(1X,A)') Trim(current%line)
+!        Current => current%next
+!     END DO
+
+     ! Now the comment... 
+     IF (DEBUG) WRITE(*,*) "Reading Gauss Comment"
+     ALLOCATE(Gauss_Comment)
+     NuLLIFY(Gauss_Comment%Next)
+     Current => Gauss_comment
+     LineL=1
+     DO WHILE (LineL.NE.0)
+        READ(IOIN,'(A)') Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+        IF (LineL.NE.0) THEN
+           current%Line=TRIM(Line)
+           ALLOCATE(current%next)
+           Current => Current%next
+           Nullify(Current%next)
+        END IF
+     END DO
+
+ !    Current => Gauss_comment
+ !    DO WHILE (ASSOCIATED(Current%next))
+ !       WRITE(*,'(1X,A)') Trim(current%line)
+ !       Current => current%next
+ !    END DO
+
+     ! Now the charge
+     IF (DEBUG) WRITE(*,*) "Reading Gauss Charge"
+     READ(IOIN,'(A)') Gauss_Charge
+!     WRITE(*,*) Gauss_charge
+     ! We now read the Paste part...
+     ALLOCATE(Gauss_Paste(NAt))
+     LenLine=1
+     Iat=0
+     Gauss_paste=" "
+     DO While (LenLine.GT.0)
+        READ(IOIN,'(A)') Line
+        Line=AdjustL(Line)
+        LenLine=Len_TRIM(Line)
+        IF (LenLine.GT.0) Iat=Iat+1
+        Idx=Index(Line,'.',BACK=.TRUE.)
+        !          WRITE(*,*) Idx,TRIM(Line)
+        !          WRITE(*,*) Idx,TRIM(Line(Idx+1:))
+        Line=ADJUSTL(Line(Idx+1:))
+        Idx=Index(Line," ")
+        LineL=LEN_TRIM(Line(Idx:))
+        !          WRITE(*,*) LineL,TRIM(Line(Idx:))
+        IF (LineL.GT.0) THEN 
+           Gauss_paste(Iat)=Line(Idx:)
+        END IF
+     END DO
+     IF (Iat.NE.Nat) THEN
+        WRITE(*,*) "I found ", Iat," lines for the geometry instead of ",Nat
+        WRITE(*,*) "ERROR. STOP"
+        WRITE(IOOUT,*) "I found ", Iat," lines for the geometry instead of ",Nat
+        WRITE(IOOUT,*) "ERROR. STOP"
+        STOP
+     END IF
+     ! We now read the last part
+     IF (DEBUG) WRITE(*,*) "Reading Gauss End"
+     !     READ(IOIN,'(A)') Line
+     ALLOCATE(Gauss_End)
+     NuLLIFY(Gauss_End%Next)
+     Current => Gauss_End
+     LineL=1
+     DO WHILE (1.EQ.1)
+        READ(IOIN,'(A)',END=999) Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+        current%Line=TRIM(Line)
+        ALLOCATE(current%next)
+        Current => Current%next
+        Nullify(Current%next)
+     END DO
+999  CONTINUE
+
+     !     ! Write the gaussian input file for testing purposes
+     !     Current => Gauss_root
+     !     DO WHILE (ASSOCIATED(Current%next))
+     !        WRITE(*,'(1X,A)') Trim(current%line)
+     !        Current => current%next
+     !     END DO
+
+     !        WRITE(*,*) 
+     !        WRITE(*,*) 'Comment original'
+
+     !        Current => Gauss_comment
+     !        DO WHILE (ASSOCIATED(Current%next))
+     !           WRITE(*,'(1X,A)') Trim(current%line)
+     !           Current => current%next
+     !        END DO
+
+     !        WRITE(*,*) 
+     !        WRITE(*,*) Trim(Gauss_charge)
+
+     !        DO I=1,Nat
+     !           WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(I)),XyzGeomI(1:3,I,1), TRIM(Gauss_Paste(I))
+     !        END DO
+
+     !        WRITE(*,*) 
+     !        Current => Gauss_End
+     !        DO WHILE (ASSOCIATED(Current%next))
+     !           WRITE(*,'(1X,A)') Trim(current%line)
+     !           Current => current%next
+     !        END DO
+
+     !        WRITE(*,*) 
+
+  END IF
+
+! if prog=mopac, we have to read a full input to reproduce it later
+! The structure is:
+! A MOPAC data set normally consists of one line of keywords, two lines of user-defined text, then the coordinates
+! Then  a blank line or a line of 0.
+! then the symmetry description.
+! comment lines start with * and can be anywhere !!!
+
+  if (prog=='MOPAC') THEN
+     ! We read the Gaussian input file
+     ! First, the root
+     IF (DEBUG) WRITE(*,*) "Reading Mopac input"
+     ALLOCATE(Mopac_Root)
+     NULLIFY(Mopac_Root%next)
+     ALLOCATE(Mopac_Comment)
+     NULLIFY(Mopac_Comment%next)
+     ALLOCATE(Mopac_End)
+     NuLLIFY(Mopac_End%Next)
+     Current => Mopac_root
+     CurCom => Mopac_Comment
+     LineL=1
+     NTmp=0
+     DO WHILE (NTmp.LT.3)
+        READ(IOIN,'(A)') Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+        IF (Line(1:1)/="*") THEN
+           IF (NTmp==0) THEN
+              Line2=Line
+              Call UpCase(Line2)
+              Idx=Index(Line2,'GRADIENTS')
+              If (Idx==0) Line=TRIM(Line) // " GRADIENTS"
+              Idx=Index(Line2,'1SCF')
+              If (Idx==0) Line=TRIM(Line) // " 1SCF"
+           END IF
+           current%Line=TRIM(Line)
+           ALLOCATE(current%next)
+           Current => Current%next
+           Nullify(Current%next)
+           NTmp=NTmp+1
+        ELSE
+           CurCom%Line=TRIM(LINE)
+           ALLOCATE(CurCom%Next)
+           CurCom => CurCom%Next
+           NULLIFY(CurCom%Next)
+        END IF
+     END DO
+
+!     Current => Mopac_root
+!     DO WHILE (ASSOCIATED(Current%next))
+!        WRITE(*,'(1X,A)') Trim(current%line)
+!        Current => current%next
+!     END DO
+
+! Now the geometry... that we just skip :)
+     IF (DEBUG) WRITE(*,*) "Reading Mopac Geometry"
+     Mopac_EndGeom=""
+     LineL=1
+     DO WHILE (LineL.NE.0)
+        READ(IOIN,'(A)',END=989) Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+! The last line might be either blank or filled with 0
+        IF (Line(1:1)=="0") THEN
+           LineL=0
+           Mopac_EndGeom=Trim(Line)
+        END IF
+        IF (Line(1:1)=="*") THEN
+           CurCom%Line=TRIM(LINE)
+           ALLOCATE(CurCom%Next)
+           CurCom => CurCom%Next
+           NULLIFY(CurCom%Next)
+        END IF
+     END DO
+
+! If we are here, there might be something else to read: Mopac_end
+
+     ! We now read the last part
+     IF (DEBUG) WRITE(*,*) "Reading Mopac End"
+     !     READ(IOIN,'(A)') Line
+     Current => Mopac_End
+     LineL=1
+     DO WHILE (1.EQ.1)
+        READ(IOIN,'(A)',END=989) Line
+        Line=AdjustL(Line)
+        LineL=len(Trim(Line))
+        IF (Line(1:1)/="*") THEN
+           current%Line=TRIM(Line)
+           ALLOCATE(current%next)
+           Current => Current%next
+           Nullify(Current%next)
+           NTmp=NTmp+1
+        ELSE
+           CurCom%Line=TRIM(LINE)
+           ALLOCATE(CurCom%Next)
+           CurCom => CurCom%Next
+           NULLIFY(CurCom%Next)
+        END IF
+     END DO
+989  CONTINUE
+
+  END IF ! IF (PROG="MOPAC")
+
+  if ((Prog=="VASP").AND.(input/="VASP")) THEN
+     ! Input was not Vasp, so many parameters are missing like lattice 
+     ! constants...
+     ! we read them now !
+     ALLOCATE(FFF(3,nat))
+     ! First geometry is a bit special for VASP as we have to set
+     ! many things
+     IF (DEBUG) WRITE(*,*) "Reading Vasp Parameters"
+     READ(IOIN,'(A)') Vasp_Title
+     READ(IOIN,*) Vasp_param
+
+     READ(IOIN,*) Lat_a
+     READ(IOIN,*) Lat_b
+     READ(IOIN,*) Lat_c
+
+     Lat_a=Lat_a*Vasp_param
+     Lat_b=Lat_b*Vasp_param
+     Lat_c=Lat_c*Vasp_param
+
+     ALLOCATE(NbAtType(nat))
+     READ(IOIN,'(A)') Vasp_types
+     ! First, how many different types ?
+     NbAtType=0
+     READ(Vasp_types,*,END=998) NbAtType
+998  CONTINUE
+     NbType=0
+     DO WHILE (NbAtType(NbType+1).NE.0)
+        NbType=NbType+1
+     END DO
+
+     ! Do we know the atom types ?
+     IF (AtTypes(1).EQ.'  ') THEN
+        ! user has not provided atom types... we have to find them ourselves
+        ! by looking into the POTCAR file...
+        INQUIRE(File="POTCAR", EXIST=Tchk)
+        IF (.NOT.Tchk) THEN
+           WRITE(*,*) "ERROR! No AtTypes provided, and POTCAR file not found"
+           STOP
+        END IF
+        OPEN(IOTMP,File="POTCAR")
+        DO I=1,NbType
+           Line='Empty'
+           DO WHILE (Line(1:2).NE.'US')
+              READ(IOTMP,'(A)') Line
+              Line=AdjustL(Line)
+           END DO
+           Line=adjustl(Line(3:))
+           AtTypes(I)=Line(1:2)
+        END DO
+        if (debug) WRITE(*,'(A,100(1X,A2))') "ReadG:VASP AtTypes",AtTypes(1:NbType)
+        CLOSE(IOTMP)
+
+     ELSE  !AtTypes(1).EQ.'  '
+        ! user has provided atom types
+        NbTypeUser=0
+        DO WHILE (AtTypes(NbTypeUser+1).NE.'  ')
+           NbTypeUser=NbTypeUser+1
+        END DO
+        IF (NbType.NE.NbTypeUser) THEN
+           WRITE(*,*) "ERROR Read_Geom : NbType in POSCAR do not match AtTypes"
+           STOP
+        END IF
+     END IF
+
+     IAt=1
+     DO I=1,NbType
+        DO J=1,NbAtType(I)
+           AtName(Iat)=AtTypes(I)
+           Iat=Iat+1
+        END DO
+     END DO
+     DEALLOCATE(NbAtType)
+
+     NbTypes=NbType
+
+     READ(IOIN,'(A)') Vasp_comment
+     READ(IOIN,'(A)') Vasp_direct
+     V_direct=Adjustl(Vasp_direct)
+     Call UpCase(V_direct)
+
+  END IF
+
+  ! In the case of VASP there is always the problem  of moving from one side
+  ! of the box to the other...
+! PFL 2010 Dec 2 ->
+! Here we deal with input and not prog in fact 
+!  if (prog.EQ.'VASP') THEN
+  if (Input.EQ.'VASP') THEN
+! <- PFL 2010 Dec 2
+     Renum=.TRUE.
+
+     ! V_direct has been set in Read_geom
+     IF (V_direct(1:6).EQ.'DIRECT') THEN
+        Latr(1:3,1)=Lat_a
+        Latr(1:3,2)=Lat_b
+        Latr(1:3,3)=Lat_c
+        B=1.
+        CALL Gaussj(Latr,3,3,B,1,1)
+     ELSE
+        Latr=0.
+        Latr(1,1)=1.d0
+        Latr(2,2)=1.d0
+        Latr(3,3)=1.d0
+     END IF
+
+     ! Actualization of Frozen using the FFFF... 
+     ! Frozen has the advantage ie if given, it imposes _ALL_ the FFF flags.
+     IF (Frozen(1).NE.0) THEN
+        WRITE(IOOUT,*) "Frozen is given. Flags of the given POSCAR are overriden"
+        FFF='T'
+
+        NFroz=0
+        DO WHILE (Frozen(NFroz+1).NE.0)
+           NFroz=NFroz+1
+           FFF(1:3,Frozen(NFroz))='F'
+        END DO
+     ELSE
+        WRITE(IOOUT,*) "Frozen not given : using  Flags of the given POSCAR"
+        NFroz=0
+        Frozen=0
+        DO I=1,Nat
+           IF ((FFF(1,I).EQ.'F').OR.(FFF(2,I).EQ.'F').OR.(FFF(3,I).EQ.'F')) THEN
+              FFF(1:3,I)='F'
+              NFroz=NFroz+1
+              Frozen(NFroz)=I
+           END IF
+        END DO
+        WRITE(IOOUT,*) "Frozen atoms:",Frozen(1:NFroz)
+     END IF
+
+
+  END IF
+
+  IF (Prog=="VASP") THEN
+     IF (Vmd) THEN
+        if (debug) WRITE(*,*) "DBG MAIN, L803, VMD=T,NbTypes,AtTypes",NbTypes,AtTypes(1:NbTypes)
+        Line=""
+        DO I=1,NbTypes
+           Line=TRIM(Line) // " " // TRIM(AdjustL(AtTypes(I))) 
+        END DO
+        Vasp_Title=Trim(Line) // " " // Trim(adjustL(Vasp_Title))
+        if (debug) WRITE(*,*) "DBG MAIN, L809, VMD=T, Vasp_Title=",TRIM(Vasp_Title)
+     END IF
+     Call CheckPeriodicBound
+  END IF
+
+  IF (COORD=="MIXED") Call TestCart(AutoCart)
+
+  SELECT CASE(NFroz)
+  CASE (2)
+     IntFroz=1
+  CASE (3)
+     IntFroz=3
+  CASE (4:)
+     IntFroz=(NFroz-2)*3  !(NFroz-3)*3+3
+  END SELECT
+
+  if (debug) WRITE(*,'(1X,A,A,5I5)') "DBG Path, L825, Coord, NCart, NCoord, N3at, NFroz: "&
+       ,TRIM(COORD),Ncart,NCoord,N3at,NFroz
+  if (debug) WRITE(*,*) "DBG Path, L827, Cart",Cart
+
+  if (((NCart+NFroz).EQ.0).AND.(Coord=="MIXED")) THEN
+     WRITE(IOOUT,*) "Coord=MIXED but Cart list empty: taking Coord=ZMAT."
+     COORD="ZMAT"
+  END IF
+
+  IF ((Coord=="MIXED").AND.(NFroz.NE.0)) IntFroz=3*NFroz
+
+  SELECT CASE(COORD)
+  CASE ('ZMAT')
+     NCoord=Nfree
+     ALLOCATE(dzdc(3,nat,3,nat))
+  CASE ('MIXED')
+     SELECT CASE (NCart+NFroz)
+     CASE (1) 
+        NCoord=N3At-3
+     CASE (2)
+        NCoord=N3At-1
+     CASE (3:)
+        NCoord=N3At
+     END SELECT
+     ALLOCATE(dzdc(3,nat,3,nat))
+  CASE ('BAKER')
+     Symmetry_elimination=0
+     NCoord=3*Nat-6-Symmetry_elimination !NFree = 3*Nat-6
+     ALLOCATE(BMat_BakerT(3*Nat,NCoord))
+     ALLOCATE(BTransInv(NCoord,3*Nat))
+     ALLOCATE(BTransInv_local(NCoord,3*Nat))
+  CASE ('HYBRID')
+     NCoord=N3at
+  CASE ('CART')
+     NCoord=N3at
+  END SELECT
+
+  if (debug) WRITE(*,*) "DBG Path, L826, Coord, NCart,NCoord, N3At",TRIM(COORD),Ncart, NCoord,N3at
+
+  ALLOCATE(IntCoordI(NGeomI,NCoord),IntCoordF(NGeomF,NCoord))
+  ALLOCATE(XyzGeomF(NGeomF,3,Nat),XyzTangent(NGeomF,3*Nat))
+  ALLOCATE(Vfree(NCoord,NCoord),IntTangent(NGeomF,NCoord))
+  ALLOCATE(Energies(NgeomF),ZeroVec(NCoord)) ! Energies is declared in  Path_module.f90
+  ALLOCATE(Grad(NGeomF,NCoord),GeomTmp(NCoord),GradTmp(NCoord))
+  ALLOCATE(GeomOld_all(NGeomF,NCoord),GradOld(NGeomF,NCoord))
+  ALLOCATE(Hess(NGeomF,NCoord,NCoord),SGeom(NGeomF)) ! SGeom is declared in  Path_module.f90
+  ALLOCATE(EPathOld(NGeomF),MaxStep(NGeomF))
+
+  ZeroVec=0.d0
+  DO I =1, NGeomF
+     IntTangent(I,:)=0.d0
+  END DO
+
+  if (debug) THEN
+     Print *, 'L886, IntTangent(1,:)='
+     Print *, IntTangent(1,:)
+  END IF
+
+  if (.NOT.OptReac) Energies(1)=Ereac
+  if (.NOT.OptProd) Energies(NGeomF)=EProd
+  MaxStep=SMax
+
+  ! We initialize the mass array
+  if (MW) THEN
+     WRITE(*,*) 'Working in MW coordinates'
+     DO I=1,Nat
+        massAt(I)=Mass(Atome(I))
+     END DO
+  ELSE
+     DO I=1,Nat
+        MassAt(I)=1.d0
+     END DO
+  END IF
+
+  WRITE(*,*) "Prog=",TRIM(PROG)
+
+  ALLOCATE(FrozAtoms(Nat))
+
+  !  IF (debug) WRITe(*,*) "DBG Main L940 NFroz",NFroz
+  !  IF (debug) WRITe(*,*) "DBG Main L940 Frozen",Frozen
+  !  IF (debug) WRITe(*,*) "DBG Main L940 FrozAtoms",FrozAtoms
+  IF (NFroz.EQ.0) THEN
+     FrozAtoms=.TRUE.
+  ELSE
+     I=1
+     NFr=0
+     FrozAtoms=.False.
+     DO WHILE (Frozen(I).NE.0)
+        IF (Frozen(I).LT.0) THEN
+           DO J=Frozen(I-1),abs(Frozen(I))
+              IF (.NOT.FrozAtoms(J)) THEN
+                 NFr=NFr+1
+                 FrozAtoms(J)=.TRUE.
+              END IF
+           END DO
+        ELSEIF (.NOT.FrozAtoms(Frozen(I))) THEN
+           FrozAtoms(Frozen(I))=.TRUE.
+           NFr=NFr+1
+        END IF
+        I=I+1
+     END DO
+     IF (NFr.NE.NFroz) THEN
+        WRITE(*,*) "Pb in PATH: Number of Frozen atoms not good :-( ",NFroz,NFr
+        STOP
+     END IF
+  END IF
+
+  if (debug) THEN
+     !Print *, 'L968, IntTangent(1,:)='
+     !Print *, IntTangent(1,:)
+  END IF
+
+  ! We have read everything we needed... time to work :-)
+  IOpt=0
+  FirstTimePathCreate = .TRUE. ! Initialized.
+  Call PathCreate(IOpt)    ! IntTangent is also computed in PathCreate.
+  FirstTimePathCreate = .FALSE.
+
+  if (debug) THEN
+     Print *, 'L980, IntTangent(1,:)='
+     Print *, IntTangent(1,:)
+  END IF
+
+  ! PFL 30 Mar 2008 ->
+  ! The following is now allocated in Calc_Baker. This is more logical to me
+  !   IF (COORD .EQ. "BAKER") Then
+  !      ALLOCATE(XprimitiveF(NgeomF,NbCoords))
+  !      ALLOCATE(UMatF(NGeomF,NbCoords,NCoord))
+  !      ALLOCATE(BTransInvF(NGeomF,NCoord,3*Nat))
+  !   END IF
+  ! <- PFL 30 mar 2008
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! For Debugging purposes
+  !
+  ! OptGeom is the index of the geometry which is to be optimized.
+  IF (Optgeom.GT.0) THEN
+     Flag_Opt_Geom=.TRUE.
+     SELECT CASE(Coord)
+     CASE ('CART','HYBRID')
+!!! CAUTION : PFL 29.AUG.2008 ->
+        ! XyzGeomI/F stored in (NGeomI/F,3,Nat) and NOT (NGeomI/F,Nat,3)
+        ! This should be made  consistent !!!!!!!!!!!!!!!
+        GeomTmp=Reshape(reshape(XyzGeomF(OptGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/))
+        !           GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+!!! <- CAUTION : PFL 29.AUG.2008
+     CASE ('ZMAT','MIXED')
+        !GeomTmp=IntCoordF(OptGeom,:)
+        GeomTmp=IntCoordI(OptGeom,:)
+     CASE ('BAKER')
+        !GeomTmp=IntCoordF(OptGeom,:)
+        GeomTmp=IntCoordI(OptGeom,:)
+     CASE DEFAULT
+        WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in Path L935.STOP"
+        STOP
+     END SELECT
+
+     ! NCoord = NFree, Coord = Type of coordinate; e.g.: Baker
+     Flag_Opt_Geom = .TRUE.
+     Call Opt_geom(OptGeom,Nat,Ncoord,Coord,GeomTmp,E,Flag_Opt_Geom,Step_method)
+
+     WRITE(Line,"('Geometry ',I3,' optimized')") Optgeom
+     WRITE(*,*) "Before PrintGeom, L1059, Path.f90"
+     Call PrintGeom(Line,Nat,NCoord,GeomTmp,Coord,IoOut,Atome,Order,OrderInv,IndZmat)
+     STOP
+  END IF ! IF (Optgeom.GT.0) THEN
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  ! End of GeomOpt
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  IF (PathOnly) THEN
+     WRITE(*,*) "PathOnly=.T. , Stop here"
+     Call Write_path(-1)
+     if ((prog.EQ.'VASP').OR.WriteVasp) Call Write_vasp(poscar)
+     STOP
+  END IF
+
+  if ((debug.AND.(prog.EQ.'VASP')).OR.WriteVasp)  Call Write_vasp(poscar)
+
+  DEALLOCATE(XyzGeomI,IntCoordI)
+  NGeomI=NGeomF
+  ALLOCATE(XyzGeomI(NGeomF,3,Nat),IntCoordI(NGeomF,NCoord))
+
+  IF (DEBUG) WRITE(*,*) ' Back from PathCreate, L965, Path.f90'
+  ! we print this path, which is the first one :-) called Iteration0
+  ! we now have to calculate the gradient for each point (and the energy
+  ! if we work at 0K)
+
+  if (DEBUG.AND.(COORD.EQ."BAKER")) THEN
+     DO IGeom=1,NGeomF
+        WRITE(*,*) "Before Calc_baker_allgeomf UMatF for IGeom=",IGeom
+        DO I=1,3*Nat-6
+           WRITE(*,'(50(1X,F12.8))') UMatF(IGeom,:,I)
+        END DO
+     END DO
+  END IF
+
+  ! To calculate B^T^-1 for all extrapolated final geometries:
+  ! PFL 18 Jan 2008 ->
+  ! Added a test for COORD=BAKER before the call to calc_baker_allgeomF
+  IF (COORD.EQ."BAKER")   Call Calc_baker_allGeomF()
+  ! <-- PFL 18 Jan 2008
+
+  if (DEBUG.AND.(COORD.EQ."BAKER")) THEN
+     DO IGeom=1,NGeomF
+        WRITE(*,*) "After Calc_baker_allgeomf UMatF for IGeom=",IGeom
+        DO I=1,3*Nat-6
+           WRITE(*,'(50(1X,F12.8))') UMatF(IGeom,:,I)
+        END DO
+     END DO
+  END IF
+
+  IOpt=0
+  Call EgradPath(IOpt,Flag_Opt_Geom)
+
+  if (debug)  WRITE(*,*) "Calling Write_path, L1002, Path.f90, IOpt=",IOpt
+  Call Write_path(IOpt)
+  if ((debug.AND.(prog.EQ.'VASP')).OR.WriteVasp)  Call Write_vasp(poscar)
+
+  ! We have the geometries, the first gradients... we will generate the first hessian matrices :-)
+  ! ... v3.71 Only if IniHUp=.TRUE. which is not the default. In this version, we take the hessian
+  ! of end points as Unity matrices, and we update them along the path.
+
+  ! By default, Hess=Id
+  Hess=0.
+  IF(Coord .EQ. "ZMAT") Then
+     ! We use the fact that we know that approximate good hessian values
+     ! are 0.5 for bonds, 0.1 for valence angle and 0.02 for dihedral angles
+     DO IGeom=1,NGeomF
+        Hess(IGeom,1,1)=0.5d0
+        Hess(IGeom,2,2)=0.5d0
+        Hess(IGeom,3,3)=0.1d0
+        DO J=1,Nat-3
+           Hess(IGeom,3*J+1,3*J+1)=0.5d0
+           Hess(IGeom,3*J+2,3*J+2)=0.1d0
+           Hess(IGeom,3*J+3,3*J+3)=0.02d0
+        END DO
+        IF (HInv) THEN
+           DO I=1,NCoord
+              Hess(IGeom,I,I)=1.d0/Hess(IGeom,I,I)
+           END DO
+        END IF
+     END DO
+  ELSE
+     DO I=1,NCoord
+        DO J=1,NGeomF
+           Hess(J,I,I)=1.d0
+        END DO
+     END DO
+  END IF
+
+  IF (COORD .EQ. "BAKER") THEN
+     ! UMat(NPrim,NCoord)
+     ALLOCATE(Hprim(NPrim,NPrim),HprimU(NPrim,3*Nat-6))
+     Hprim=0.d0
+     ScanCoord=>Coordinate
+     I=0
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND')
+           !DO J=1,NGeomF ! why all geometries?? Should be only 1st and NGeomF??
+           Hprim(I,I) = 0.5d0
+           !END DO
+        CASE ('ANGLE')
+           Hprim(I,I) = 0.2d0
+        CASE ('DIHEDRAL')
+           Hprim(I,I) = 0.1d0
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO
+
+     ! HprimU = H^prim U:
+     HprimU=0.d0
+     DO I=1, 3*Nat-6
+        DO J=1,NPrim
+           HprimU(:,I) = HprimU(:,I) + Hprim(:,J)*UMat(J,I)
+        END DO
+     END DO
+
+     ! Hess = U^T HprimU = U^T H^prim U:
+     Hess=0.d0
+     DO I=1, 3*Nat-6
+        DO J=1,NPrim
+           ! UMat^T is needed below.
+           Hess(1,:,I) = Hess(1,:,I) + UMat(J,:)*HprimU(J,I)
+        END DO
+     END DO
+     DO K=2,NGeomF
+        Hess(K,:,:)=Hess(1,:,:)
+     END DO
+     DEALLOCATE(Hprim,HprimU)
+  end if !  ends IF COORD=BAKER
+  ALLOCATE(GradTmp2(NCoord),GeomTmp2(NCoord))
+  ALLOCATE(HessTmp(NCoord,NCoord))
+
+  IF (IniHUp) THEN
+     IF (FCalcHess) THEN
+        ! The numerical calculation of the Hessian has been switched on
+        DO IGeom=1,NGeomF
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              GeomTmp=IntCoordF(IGeom,:)
+           ELSE
+              GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+           END IF
+           Call CalcHess(NCoord,GeomTmp,Hess(IGeom,:,:),IGeom,Iopt)
+        END DO
+     ELSE
+        ! We generate a forward hessian and a backward one and we mix them.
+        ! First, the forward way:
+        DO IGeom=2,NGeomF-1
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              GeomTmp=IntCoordF(IGeom,:)-IntCoordF(IGeom-1,:)
+           ELSE
+              GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))-Reshape(XyzGeomF(IGeom-1,:,:),(/3*Nat/))
+           END IF
+           GradTmp=Grad(IGeom-1,:)-Grad(IGeom,:)
+           HessTmp=Hess(IGeom-1,:,:)
+           Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)
+           Hess(IGeom,:,:)=HessTmp
+        END DO
+
+        ! Now, the backward way:
+        HessTmp=Hess(NGeomF,:,:)
+        DO IGeom=NGeomF-1,2,-1
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              GeomTmp=IntCoordF(IGeom,:)-IntCoordF(IGeom+1,:)
+           ELSE
+              GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))-Reshape(XyzGeomF(IGeom+1,:,:),(/3*Nat/))
+           END IF
+           GradTmp=Grad(IGeom,:)-Grad(IGeom+1,:)
+           Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)
+           alpha=0.5d0*Pi*(IGeom-1.)/(NGeomF-1.)
+           ca=cos(alpha)
+           sa=sin(alpha)
+           Hess(IGeom,:,:)=ca*Hess(IGeom,:,:)+sa*HessTmp(:,:)
+        END DO
+     END IF ! matches IF (FCalcHess)
+  END IF ! matches IF (IniHUp) THEN
+
+  ! For debug purposes, we diagonalize the Hessian matrices
+  IF (debug) THEN
+     !WRITE(*,*) "DBG Main, L1104, - EigenSystem for Hessian matrices"
+     DO I=1,NGeomF
+        WRITE(*,*) "DBG Main - Point ",I
+        Call Jacobi(Hess(I,:,:),NCoord,GradTmp2,HessTmp,NCoord)
+        DO J=1,NCoord
+           WRITE(*,'(1X,I3,1X,F10.6," : ",20(1X,F8.4))') J,GradTmp2(J),HessTmp(J,1:min(20,NCoord))
+        END DO
+     END DO
+  END IF ! matches IF (debug) THEN
+
+  ! we have the hessian matrices and the gradients, we can start the optimizations !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! Main LOOP : Optimization of the Path
+  !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  if (debug)   Print *, 'NGeomF=', NGeomF
+  allocation_flag = .TRUE.
+
+  Fini=.FALSE.
+
+  DO WHILE ((IOpt.LT.MaxCyc).AND.(.NOT. Fini))
+     if (debug) Print *, 'IOpt at the begining of the loop, L1128=', IOpt
+     IOpt=IOpt+1
+
+     SELECT CASE (COORD)
+     CASE ('ZMAT','MIXED','BAKER')
+        GeomOld_all=IntCoordF
+     CASE ('CART','HYBRID')
+        GeomOld_all=Reshape(XyzGeomF,(/NGeomF,NCoord/))
+     CASE DEFAULT
+        WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1149.STOP'
+        STOP
+     END SELECT
+
+     IF (((COORD.EQ.'ZMAT').OR.(COORD.EQ.'BAKER').OR.(COORD.EQ.'MIXED')).AND. &
+          valid("printtangent")) THEN
+        WRITE(*,*) "Visualization of tangents"
+        Idx=min(12,NCoord)
+        DO I=1,NGeomF
+           WRITE(*,'(12(1X,F12.5))') IntCoordF(I,1:Idx)-0.5d0*IntTangent(I,1:Idx)
+           WRITE(*,'(12(1X,F12.5))') IntCoordF(I,1:Idx)+0.5d0*IntTangent(I,1:Idx)
+           WRITE(*,*) 
+        END DO
+        WRITE(*,*) "END of tangents"
+     END IF
+
+     IF (((COORD.EQ.'ZMAT').OR.(COORD.EQ.'BAKER').OR.(COORD.EQ.'MIXED')).AND. &
+          valid("printgrad")) THEN
+        WRITE(*,*) "Visualization of gradients"
+        Idx=min(12,NCoord)
+        DO I=1,NGeomF
+           WRITE(*,'(12(1X,F12.5))') IntCoordF(I,1:Idx)-1.d0*Grad(I,1:Idx)
+           WRITE(*,'(12(1X,F12.5))') IntCoordF(I,1:Idx)+1.d0*Grad(I,1:Idx)
+           WRITe(*,*) 
+        END DO
+        WRITE(*,*) "END of gradients"
+     END IF
+
+     Fini=.TRUE.
+     IF (OptReac) THEN !OptReac: True if one wants to optimize the geometry of the reactants. Default is FALSE.
+        IGeom=1
+        if (debug) WRITE(*,*) '**************************************'
+        if (debug) WRITE(*,*) 'Optimizing reactant'
+        if (debug) WRITE(*,*) '**************************************'
+        SELECT CASE (COORD)
+        CASE ('ZMAT','MIXED','BAKER')
+           SELECT CASE (Step_method)
+           CASE ('RFO')
+              !GradTmp(NCoord) becomes Step in Step_RFO_all and has INTENT(OUT).
+              Call Step_RFO_all(NCoord,GradTmp,1,IntCoordF(1,:),Grad(1,:),Hess(1,:,:),ZeroVec)
+              Print *, GradTmp
+           CASE ('GDIIS')
+              ! GradTmp(NCoord) becomes "step" below and has INTENT(OUT).:
+              Call Step_DIIS_all(NGeomF,1,GradTmp,IntCoordF(1,:),Grad(1,:),HP,HEAT,&
+                   Hess(1,:,:),NCoord,allocation_flag,ZeroVec)
+              Print *, 'OptReac, Steps from GDIIS, GeomNew - IntCoordF(1,:)='
+              Print *, GradTmp
+           CASE ('GEDIIS')
+              ! GradTmp(NCoord) becomes "step" below and has INTENT(OUT).:
+              ! Energies are updated in EgradPath.f90
+              Call Step_GEDIIS_All(NGeomF,1,GradTmp,IntCoordF(1,:),Grad(1,:),Energies(1),Hess(1,:,:),&
+                   NCoord,allocation_flag,ZeroVec)
+              !Call Step_GEDIIS(GeomTmp,IntCoordF(1,:),Grad(1,:),Energies(1),Hess(1,:,:),NCoord,allocation_flag)
+              !GradTmp = GeomTmp - IntCoordF(1,:)
+              !Print *, 'Old Geometry:'
+              !Print *, IntCoordF(1,:)
+              Print *, 'OptReac, Steps from GEDIIS, GradTmp = GeomTmp - IntCoordF(1,:)='
+              Print *, GradTmp
+              !Print *, 'GeomTmp:'
+              !Print *, GeomTmp
+              GeomTmp(:) = GradTmp(:) + IntCoordF(1,:)
+           CASE DEFAULT
+              WRITE (*,*) "Step_method=",TRIM(Step_method)," not recognized, Path.f90, L1194. Stop"
+              STOP
+           END SELECT
+        CASE ('HYBRID','CART')
+           Call Step_RFO_all(NCoord,GradTmp,1,XyzGeomF(1,:,:),Grad(1,:),Hess(1,:,:),ZeroVec)
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1200. STOP'
+           STOP
+        END SELECT
+
+        IF (debug) THEN
+           WRITE(Line,*) 'DBG Path, L1227,', TRIM(Step_method), 'Step for IOpt=',IOpt, ', IGeom=1'
+           Call PrintGeom(Line,Nat,NCoord,GeomTmp,Coord,6,Atome,Order,OrderInv,IndZmat)
+        END IF
+
+        ! we have the Newton+RFO step, we will check that the maximum displacement is not greater than Smax
+        NormStep=sqrt(DOT_Product(GradTmp,GradTmp))      
+        FactStep=min(1.d0,MaxStep(Igeom)/NormStep)
+        Fini=(Fini.AND.(NormStep.LE.SThresh))
+        OptReac=(NormStep.GT.SThresh)
+        IF (debug) WRITE(*,*) "NormStep, SThresh, OptReac=",NormStep, SThresh, OptReac
+        NormGrad=sqrt(DOT_Product(reshape(Grad(1,:),(/Nfree/)),reshape(Grad(1,:),(/NFree/))))
+        Fini=(Fini.AND.(NormGrad.LE.GThresh))
+        OptReac=(OptReac.OR.(NormGrad.GT.GThresh))
+        !Print *, 'Grad(1,:):'
+        !Print *, Grad(1,:)
+        IF (debug) WRITE(*,*) "NormGrad, GThresh, OptReac=",NormGrad, GThresh, OptReac
+
+        GradTmp=GradTmp*FactStep
+
+        ! we take care that frozen atoms do not move.
+        IF (NFroz.NE.0) THEN
+           SELECT CASE (COORD)
+           CASE ('ZMAT','MIXED')
+              GradTmp(1:IntFroz)=0.d0
+           CASE ('CART','HYBRID')
+              DO I=1,Nat
+                 IF (FrozAtoms(I)) THEN
+                    Iat=Order(I)
+                    GradTmp(3*Iat-2:3*Iat)=0.d0
+                 END IF
+              END DO
+           CASE('BAKER')
+              GradTmp(1:IntFroz)=0.d0 !GradTmp is "step" in Step_RFO_all(..)
+           CASE DEFAULT
+              WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1323.STOP'
+              STOP
+           END SELECT
+        END IF ! matches IF (NFroz.NE.0) THEN
+
+        IF (debug) THEN
+           !WRITE(Line,*) 'DBG Path, L1244, Step for IOpt=',IOpt, ', IGeom=1'
+           !Call PrintGeom(Line,Nat,NCoord,GradTmp,Coord,6,Atome,Order,OrderInv,IndZmat)
+        END IF
+
+        IF (debug) THEN
+           !WRITE(*,*) "DBG Main, L1249, IOpt=",IOpt, ', IGeom=1'
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(1,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF ! matches IF (debug) THEN
+
+        SELECT CASE (COORD)
+        CASE ('ZMAT','MIXED','BAKER')
+           IntcoordF(1,:)=IntcoordF(1,:)+GradTmp(:) !IGeom=1
+        CASE ('HYBRID','CART')
+           XyzGeomF(1,:,:)=XyzGeomF(1,:,:)+reshape(GradTmp(:),(/3,Nat/))
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1201.STOP'
+           STOP
+        END SELECT
+
+        IF (debug) THEN
+           WRITE(*,*) "DBG Main, L1271, IOpt=",IOpt, ', IGeom=1'
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(1,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+
+!!!!!!!!!! There was an OrderInv here... should I put it back ?
+                 ! It was with indzmat. IndZmat cannot appear here...
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF ! matches IF (debug) THEN
+
+        IF (.NOT.OptReac) WRITE(*,*) "Reactants optimized"
+     ELSE ! Optreac
+        IF (debug) WRITE(*,*) "Reactants already optimized, Fini=",Fini
+     END IF ! matches IF (OptReac) THEN
+
+     IF (OptProd) THEN !OptProd: True if one wants to optimize the geometry of the products. Default is FALSE.
+        IGeom=NGeomF
+        if (debug) WRITE(*,*) '******************'
+        if (debug) WRITE(*,*) 'Optimizing product'
+        if (debug) WRITE(*,*) '******************'
+        SELECT CASE (COORD)
+        CASE ('ZMAT','MIXED','BAKER')
+           Print *, 'Optimizing product'
+           SELECT CASE (Step_method)
+           CASE ('RFO')
+              !GradTmp(NCoord)) becomes "Step" in Step_RFO_all and has INTENT(OUT).
+              Call Step_RFO_all(NCoord,GradTmp,NGeomF,IntCoordF(NGeomF,:),Grad(NGeomF,:),Hess(NGeomF,:,:),ZeroVec)
+              Print *, GradTmp
+           CASE ('GDIIS')
+              ! GradTmp becomes "step" below and has INTENT(OUT):
+              Call Step_DIIS_all(NGeomF,NGeomF,GradTmp,IntCoordF(NGeomF,:),Grad(NGeomF,:),&
+                   HP,HEAT,Hess(NGeomF,:,:),NCoord,allocation_flag,ZeroVec)
+              Print *, 'OptProd, Steps from GDIIS, GeomNew - IntCoordF(NGeomF,:)='
+              Print *, GradTmp
+           CASE ('GEDIIS')
+              ! GradTmp(NCoord) becomes "step" below and has INTENT(OUT):
+              Call Step_GEDIIS_All(NGeomF,NGeomF,GradTmp,IntCoordF(NGeomF,:),Grad(NGeomF,:),Energies(NGeomF),&
+                   Hess(NGeomF,:,:),NCoord,allocation_flag,ZeroVec)
+              Print *, 'OptProd, Steps from GEDIIS, GeomNew - IntCoordF(NGeomF,:)='
+              Print *, GradTmp
+           CASE DEFAULT
+              WRITE (*,*) "Step_method=",TRIM(Step_method)," not recognized, Path.f90, L1309. Stop"
+              STOP
+           END SELECT
+        CASE ('HYBRID','CART')
+           Call Step_RFO_all(NCoord,GradTmp,IGeom,XyzGeomF(NGeomF,:,:),Grad(NGeomF,:),Hess(NGeomF,:,:),ZeroVec)
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1460.STOP'
+           STOP
+        END SELECT
+
+        ! we have the Newton+RFO step, we will check that the displacement is not greater than Smax
+        NormStep=sqrt(DOT_Product(GradTmp,GradTmp))      
+        FactStep=min(1.d0,MaxStep(IGeom)/NormStep)
+        Fini=(Fini.AND.(NormStep.LE.SThresh))
+        OptProd=.NOT.(NormStep.LE.SThresh)
+        NormGrad=sqrt(DOT_Product(reshape(Grad(NGeomF,:),(/Nfree/)),reshape(Grad(NGeomF,:),(/NFree/))))
+        Fini=(Fini.AND.(NormGrad.LE.GThresh))
+        OptProd=(OptProd.OR.(NormGrad.GT.GThresh))
+        IF (debug) WRITE(*,*) "NormGrad, GThresh, OptProd=",NormGrad, GThresh, OptProd
+
+        GradTmp=GradTmp*FactStep
+
+        ! we take care that frozen atoms do not move
+        IF (NFroz.NE.0) THEN
+           SELECT CASE (COORD)
+           CASE ('ZMAT','MIXED','BAKER')
+              GradTmp(1:IntFroz)=0.d0
+           CASE ('CART','HYBRID')
+              DO I=1,Nat
+                 IF (FrozAtoms(I)) THEN
+                    Iat=Order(I)
+                    GradTmp(3*Iat-2:3*Iat)=0.d0
+                 END IF
+              END DO
+           CASE DEFAULT
+              WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1045.STOP'
+              STOP
+           END SELECT
+        END IF ! matches IF (NFroz.NE.0) THEN
+
+        IF (debug) THEN
+           WRITE(*,*) "DBG Main, L1354, IGeom=, IOpt=",IGeom,IOpt
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(IGeom,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF
+
+        SELECT CASE (COORD)
+        CASE ('ZMAT','MIXED','BAKER')
+           IntcoordF(NGeomF,:)=IntcoordF(NGeomF,:)+GradTmp(:) ! IGeom is NGeomF.
+        CASE ('HYBRID','CART')
+           XyzGeomF(IGeom,:,:)=XyzGeomF(IGeom,:,:)+reshape(GradTmp(:),(/3,Nat/))
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1050.STOP'
+           STOP
+        END SELECT
+
+        IF (debug) THEN
+           WRITE(*,*) "DBG Main, L1376, IGeom=, IOpt=",IGeom,IOpt
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(IGeom,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF
+     ELSE ! Optprod
+        IF (debug) WRITE(*,*) "Product already optimized, Fini=",Fini
+     END IF !matches IF (OptProd) THEN 
+
+     IF (debug) WRITE(*,*) "Fini before L1491 path:",Fini
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+     !
+     !  Optimizing other geometries
+     !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+
+     DO IGeom=2,NGeomF-1 ! matches at L1556
+        if (debug) WRITE(*,*) '****************************'
+        if (debug) WRITE(*,*) 'All other geometries, IGeom=',IGeom
+        if (debug) WRITE(*,*) '****************************'
+
+        SELECT CASE (COORD)
+        CASE ('ZMAT','BAKER','MIXED')
+           GradTmp2=reshape(IntTangent(IGeom,:),(/NCoord/))
+           ! PFL 6 Apr 2008 ->
+           ! Special case, if FTan=0. we do not consider Tangent at all.
+           ! To DO: add the full treatment of FTan
+           if (FTan==0.) GradTmp2=ZeroVec
+           ! <- PFL 6 Apr 2008
+           if (debug) THEN
+              Print *, 'L1500, IntTangent(',IGeom,',:)='
+              Print *, IntTangent(IGeom,:)
+           END IF
+           !GradTmp(NCoord)) is actually "Step" in Step_RFO_all and has INTENT(OUT).
+           SELECT CASE (Step_method)
+           CASE ('RFO')
+              Call Step_RFO_all(NCoord,GradTmp,IGeom,IntCoordF(IGeom,:),Grad(IGeom,:),Hess(IGeom,:,:),GradTmp2)
+           CASE ('GDIIS')
+              !The following has no effect at IOpt==1
+              !Print *, 'Before call of Step_diis_all, All other geometries, IGeom=', IGeom
+              Call Step_DIIS_all(NGeomF,IGeom,GradTmp,IntCoordF(IGeom,:),Grad(IGeom,:),HP,HEAT,&			  
+                   Hess(IGeom,:,:),NCoord,allocation_flag,GradTmp2)
+              Print *, 'All others, Steps from GDIIS, GeomNew - IntCoordF(IGeom,:)='
+              Print *, GradTmp
+           CASE ('GEDIIS')
+              ! GradTmp(NCoord) becomes "step" below and has INTENT(OUT):
+              Call Step_GEDIIS_All(NGeomF,IGeom,GradTmp,IntCoordF(IGeom,:),Grad(IGeom,:),Energies(IGeom),&
+                   Hess(IGeom,:,:),NCoord,allocation_flag,GradTmp2)
+              Print *, 'All others, Steps from GEDIIS, GeomNew - IntCoordF(IGeom,:)='
+              Print *, GradTmp
+           CASE DEFAULT
+              WRITE (*,*) "Step_method=",TRIM(Step_method)," not recognized, Path.f90, L1430. Stop"
+              STOP
+           END SELECT
+        CASE ('HYBRID','CART')
+           ! XyzTangent is implicitely in Nat,3... but all the rest is 3,Nat
+           ! so we change it
+           DO I=1,Nat
+              DO J=1,3
+                 GradTmp2(J+(I-1)*3)=XyzTangent(IGeom,(J-1)*Nat+I)
+              END DO
+           END DO
+           !           GradTmp2=XyzTangent(IGeom,:)
+           ! PFL 6 Apr 2008 ->
+           ! Special case, if FTan=0. we do not consider Tangent at all.
+           ! To DO: add the full treatment of FTan
+           if (FTan==0.) GradTmp2=ZeroVec
+           ! <- PFL 6 Apr 2008
+
+           Call Step_RFO_all(NCoord,GradTmp,IGeom,XyzGeomF(IGeom,:,:),Grad(IGeom,:),Hess(IGeom,:,:),GradTmp2)
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1083.STOP'
+           STOP
+        END SELECT
+
+        ! we take care that frozen atoms do not move
+        IF (NFroz.NE.0) THEN
+           SELECT CASE (COORD)
+           CASE ('ZMAT','MIXED','BAKER')
+              IF (debug) THEN 
+                 WRITE(*,*) 'Step computed. Coord=',Coord
+                 WRITE(*,*) 'Zeroing components for frozen atoms. Intfroz=', IntFroz
+              END IF
+              GradTmp(1:IntFroz)=0.d0
+           CASE ('CART','HYBRID')
+              if (debug) THEN
+                 WRITE(*,*) "DBG Path Zeroing components L1771. Step before zeroing"
+                 DO I=1,Nat
+                    WRITe(*,*) I,GradTmp(3*I-2:3*I)
+                 END DO
+              END IF
+              DO I=1,Nat
+                 IF (FrozAtoms(I)) THEN
+                    if (debug) THEN
+                       write(*,*) 'Step Computed. Coord=',Coord
+                       WRITE(*,*) 'Atom',I,' is frozen. Zeroing',Order(I)
+                    END IF
+                    Iat=Order(I)
+                    GradTmp(3*Iat-2:3*Iat)=0.d0
+                 END IF
+              END DO
+
+                 if (debug) THEN
+                    WRITE(*,*) "DBG Path Zeroing components L1785. Step After zeroing"
+                    DO I=1,Nat
+                       WRITe(*,*) I,GradTmp(3*I-2:3*I)
+                    END DO
+                 END IF
+
+           CASE DEFAULT
+              WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1338.STOP'
+              STOP
+           END SELECT
+        END IF !matches IF (NFroz.NE.0) THEN
+
+        IF (debug) THEN
+           SELECT CASE (COORD)
+           CASE ('ZMAT','MIXED','BAKER')
+              WRITE(*,'(A,12(1X,F8.3))') 'Step tan:',IntTangent(IGeom,1:min(12,NFree))
+              WRITE(*,'(A,12(1X,F8.3))') 'Ortho Step:',GradTmp(1:min(12,NFree))
+           CASE ('CART','HYBRID')
+              WRITE(*,'(A,12(1X,F8.3))') 'Step tan:',XyzTangent(IGeom,1:min(12,NFree))
+               WRITE(*,'(A,12(1X,F8.3))') 'Ortho Step:',GradTmp(1:min(12,NFree))
+           CASE DEFAULT
+              WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1588.STOP'
+              STOP
+           END SELECT
+        END IF ! matches if (debug) THEN
+
+        ! we check that the maximum displacement is not greater than Smax
+        If (debug) WRITE(*,*) "Fini before test:",Fini
+        NormStep=sqrt(DOT_Product(GradTmp,GradTmp))      
+        FactStep=min(1.d0,maxStep(Igeom)/NormStep)
+        Fini=(Fini.AND.(NormStep.LE.SThresh))
+        IF (debug) WRITE(*,*) "IGeom,NormStep, SThresh,Fini",IGeom,NormStep, SThresh, Fini
+
+        GradTmp=GraDTmp*FactStep
+
+        if (debug) WRITE(*,*) "DBG Main, L1475, FactStep=",FactStep
+        if (debug.AND.(COORD.EQ.'ZMAT')) WRITE(*,'(A,12(1X,F10.6))') 'Scaled Step:',GradTmp(1:min(12,NFree))
+
+        IF (debug) THEN
+           WRITE(*,*) "DBG Main, L1479, IGeom=, IOpt=",IGeom,IOpt
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(IGeom,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF ! matches if (debug) THEN
+
+        SELECT CASE (COORD)
+        CASE ('ZMAT')
+           IntcoordF(IGeom,:)=IntcoordF(IGeom,:)+GradTmp(:)
+           if (debug) Print *, 'New Geom=IntcoordF(',IGeom,',:)=', IntcoordF(IGeom,:)
+           WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+           WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+           WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+                OrderInv(indzmat(2,2)),IntcoordF(IGeom,1)
+           WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+                OrderInv(indzmat(3,2)),IntcoordF(IGeom,2), OrderInv(indzmat(3,3)),IntcoordF(IGeom,3)*180./Pi
+           Idx=4
+           DO Iat=4,Nat
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                   OrderInv(indzmat(iat,2)),IntcoordF(IGeom,Idx), &
+                   OrderInv(indzmat(iat,3)),IntcoordF(IGeom,Idx+1)*180./pi, &
+                   OrderInv(indzmat(iat,4)),IntcoordF(IGeom,Idx+2)*180/Pi
+              Idx=Idx+3
+           END DO
+
+        CASE ('BAKER')
+           IntcoordF(IGeom,:)=IntcoordF(IGeom,:)+GradTmp(:)
+           if (debug) Print *, 'New Geom=IntcoordF(',IGeom,',:)=', IntcoordF(IGeom,:)
+           WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+           WRITE(IOOUT,*) "COORD=BAKER, printing IntCoordF is not meaningfull."
+
+        CASE ('MIXED')
+           IntcoordF(IGeom,:)=IntcoordF(IGeom,:)+GradTmp(:)
+           if (debug) Print *, 'New Geom=IntcoordF(',IGeom,',:)=', IntcoordF(IGeom,:)
+           WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+           DO Iat=1,NCart
+              WRITE(IOOUT,'(1X,A5,3(1X,F13.8))') Nom(Atome(OrderInv(indzmat(1,1)))),IntcoordF(IGeom,3*Iat-2:3*Iat)
+           END DO
+           Idx=3*NCart+1
+           IF (NCart.EQ.1) THEN
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+                   OrderInv(indzmat(2,2)),IntcoordF(IGeom,4)
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+                   OrderInv(indzmat(3,2)),IntcoordF(IGeom,5), OrderInv(indzmat(3,3)),IntcoordF(IGeom,6)*180./Pi
+
+              Idx=7
+           END IF
+           IF (NCart.EQ.2) THEN
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+                   OrderInv(indzmat(3,2)),IntcoordF(IGeom,7), OrderInv(indzmat(3,3)),IntcoordF(IGeom,8)*180./Pi
+              Idx=9
+           END IF
+
+           
+           DO Iat=max(NCart+1,4),Nat
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                   OrderInv(indzmat(iat,2)),IntcoordF(IGeom,Idx), &
+                   OrderInv(indzmat(iat,3)),IntcoordF(IGeom,Idx+1)*180./pi, &
+                   OrderInv(indzmat(iat,4)),IntcoordF(IGeom,Idx+2)*180/Pi
+              Idx=Idx+3
+           END DO
+           if (debug) Print *, 'New Geom=IntcoordF(',IGeom,',:)=', IntcoordF(IGeom,:)
+
+        CASE ('HYBRID','CART')
+           XyzGeomF(IGeom,:,:)=XyzGeomF(IGeom,:,:)+reshape(GradTmp(:),(/3,Nat/))
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1537.STOP'
+           STOP
+        END SELECT
+
+        IF (debug) THEN
+           WRITE(*,*) "DBG Main, L1516, IGeom=, IOpt=",IGeom,IOpt
+           IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+              WRITE(*,'(12(1X,F8.3))') IntCoordF(IGeom,1:min(12,NFree))
+           ELSE
+              DO Iat=1,Nat
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(Iat)), &
+                      XyzGeomF(IGeom,1:3,Iat)
+              END DO
+           END IF
+        END IF ! matches if (debug) THEN
+
+        ! We project out the tangential part of the gradient to know if we are done
+        GradTmp=Grad(IGeom,:)
+        NormGrad=sqrt(dot_product(GradTmp,GradTmp))
+        if (debug) WRITE(*,*) "Norm Grad tot=",NormGrad
+        SELECT CASE (COORD)
+        CASE ('ZMAT','MIXED','BAKER')
+           S=DOT_PRODUCT(GradTmp,IntTangent(IGeom,:))
+           Norm=DOT_PRODUCT(IntTangent(IGeom,:),IntTangent(IGeom,:))
+           GradTmp=GradTmp-S/Norm*IntTangent(IGeom,:)
+           Ca=S/(sqrt(Norm)*NormGrad)
+           S=DOT_PRODUCT(GradTmp,IntTangent(IGeom,:))
+           GradTmp=GradTmp-S/Norm*IntTangent(IGeom,:)
+        CASE ('CART','HYBRID')
+           S=DOT_PRODUCT(GradTmp,XyzTangent(IGeom,:))
+           Norm=DOT_PRODUCT(XyzTangent(IGeom,:),XyzTangent(IGeom,:))
+           Ca=S/(sqrt(Norm)*NormGrad)
+           GradTmp=GradTmp-S/Norm*XyzTangent(IGeom,:)
+           S=DOT_PRODUCT(GradTmp,XyzTangent(IGeom,:))
+           GradTmp=GradTmp-S/Norm*XyzTangent(IGeom,:)
+        CASE DEFAULT
+           WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1190.STOP'
+           STOP
+        END SELECT
+        IF (debug) WRITE(*,'(1X,A,3(1X,F10.6))') "cos and angle between grad and tangent",ca, acos(ca), acos(ca)*180./pi
+        NormGrad=sqrt(DOT_Product(GradTmp,GradTmp))
+        Fini=(Fini.AND.(NormGrad.LE.GThresh))
+        IF (debug) WRITE(*,*) "NormGrad_perp, GThresh, Fini=",NormGrad, GThresh, Fini
+
+     END DO ! matches DO IGeom=2,NGeomF-1
+     ! we save the old gradients
+     GradOld=Grad
+     EPathOld=Energies
+
+     ! Shall we re-parameterize the path ?
+     ! PFL 2007/Apr/10 ->
+     ! We call PathCreate in all cases, it will take care of the 
+     ! reparameterization, as well as calculating the tangents.
+     !     IF (MOD(IOpt,IReparam).EQ.0) THEN
+     XyzGeomI=XyzGeomF
+     IntCoordI=IntCoordF
+
+     Call PathCreate(IOpt)
+     !     END IF
+     ! <- PFL 2007/Apr/10
+
+     if (debug) WRITE(*,'(1X,A,I5,A,I5,A,L2)')  'Path.f90, L1415, IOpt=', IOpt, 'MaxCyc=', MaxCyc,' Fini=', Fini
+     IF ((.NOT.Fini).AND.(IOpt.LT.MaxCyc)) THEN
+
+        ! We have the new path, we calculate its energy and gradient
+
+        Call EgradPath(IOpt,Flag_Opt_Geom)
+        !IF(IOPT .EQ. 10) Then
+        !	       Print *, 'Stopping at my checkpoint.'
+        !           STOP !This is my temporary checkpoint.
+        !ENDIF
+
+        ! PFL 31 Mar 2008 ->
+        ! Taken from v3.99 but we added a flag...
+        ! Added in v3.99 : MaxStep is modified according to the evolution of energies
+        ! if Energies(IGeom)<=EPathOld then MaxStep is increased by 1.1 
+        ! else it is decreased by 0.8
+
+        if (DynMaxStep) THEN
+           if (debug) WRITE(*,*) "Dynamically updating the Maximum step"
+           if (OptReac) THEN
+              If (Energies(1)<EPathOld(1)) Then
+                 MaxStep(1)=min(1.1*MaxStep(1),2.*SMax)
+              ELSE
+                 MaxStep(1)=max(0.8*MaxStep(1),SMax/2.)
+              END IF
+           END IF
+
+           if (OptProd) THEN
+              If (Energies(NGeomF)<EPathOld(NGeomF)) Then
+                 MaxStep(NGeomF)=min(1.1*MaxStep(NGeomF),2.*SMax)
+              ELSE
+                 MaxStep(NGeomF)=max(0.8*MaxStep(NGeomF),SMax/2.)
+              END IF
+           END IF
+
+           DO IGeom=2,NGeomF-1
+              If (Energies(IGeom)<EPathOld(IGeom)) Then
+                 MaxStep(IGeom)=min(1.1*MaxStep(IGeom),2.*SMax)
+              ELSE
+                 MaxStep(IGeom)=max(0.8*MaxStep(IGeom),SMax/2.)
+              END IF
+           END DO
+           if (debug) WRITE(*,*) "Maximum step",MaxStep(1:NgeomF)
+        END IF ! test on DynMaxStep
+        if (debug) WRITE(*,*) "Maximum step",MaxStep(1:NgeomF)
+        ! <- PFL 31 MAr 2008
+        ! Also XyzGeomF is updated in EgradPath for Baker Case.
+        !  It should get updated for other cases too.
+
+        DO IGeom=1,NGeomF
+           SELECT CASE (COORD)
+           CASE('ZMAT')
+              WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+              GeomTmp=IntCoordF(IGeom,:)
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+                   OrderInv(indzmat(2,2)),Geomtmp(1)
+              WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+                   OrderInv(indzmat(3,2)),Geomtmp(2), &
+                   OrderInv(indzmat(3,3)),Geomtmp(3)*180./Pi
+              Idx=4
+              DO Iat=4,Nat
+                 WRITE(IOOUT,'(1X,A5,3(1X,I4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                      OrderInv(indzmat(iat,2)),Geomtmp(Idx), &
+                      OrderInv(indzmat(iat,3)),Geomtmp(Idx+1)*180./pi, &
+                      OrderInv(indzmat(iat,4)),Geomtmp(Idx+2)*180/Pi
+                 Idx=Idx+3
+              END DO
+           CASE('BAKER')
+              !WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+              !GeomTmp=IntCoordF(IGeom,:)
+           CASE('CART','HYBRID','MIXED')
+              WRITE(IOOUT,'(1X,I5)') Nat
+              WRITE(IOOUT,"('Geometry ',I3,'/',I3,' for iteration ',I3)") IGeom,NgeomF,IOpt
+              GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+              DO I=1,Nat
+                 Iat=I
+                 If (renum) Iat=OrderInv(I)
+                 WRITE(IOOUT,'(1X,A5,3(1X,F11.6))') Nom(Atome(iat)), Geomtmp(3*Iat-2:3*Iat)
+              END DO
+           CASE DEFAULT
+              WRITE(*,*) 'Coord=',TRIM(COORD),' not recognized. Path L1356.STOP'
+              STOP
+           END SELECT
+        END DO ! matches DO IGeom=1,NGeomF
+
+        Call Write_path(IOpt)
+
+        ! We update the Hessian matrices
+        IF (debug) WRITE(*,*) "Updating Hessian matrices",NCoord
+        ! First using the displacement from the old path
+        IGeom0=2
+        IGeomF=NGeomF-1
+        IF (OptReac) IGeom0=1
+        IF (OptProd) IGeomF=NGeomF
+
+        IF (FCalcHess) THEN
+           DO IGeom=IGeom0,IGeomF
+              SELECT CASE (COORD)
+              CASE ('ZMAT','MIXED','BAKER')
+                 GeomTmp2=IntCoordF(IGeom,:)
+              CASE ('CART','HYBRID')
+                 GeomTmp2=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+              CASE DEFAULT
+                 WRITE(*,*) "Coord=",TRIM(COORD)," not recognized. PATH L1267.STOP"
+                 STOP
+              END SELECT
+              Call CalcHess(NCoord,GeomTmp2,Hess(IGeom,:,:),IGeom,Iopt)
+           END DO
+        ELSE
+           DO IGeom=IGeom0,IGeomF
+              GeomTmp=GeomOld_all(IGeom,:)
+              SELECT CASE (COORD)
+              CASE ('ZMAT','MIXED','BAKER')
+                 GeomTmp2=IntCoordF(IGeom,:)
+              CASE ('CART','HYBRID')
+                 GeomTmp2=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))
+              CASE DEFAULT
+                 WRITE(*,*) "Coord=",TRIM(COORD)," not recognized. PATH L1267.STOP"
+                 STOP
+              END SELECT
+              GeomTmp=GeomTmp2-GeomTmp
+              GradTmp=Grad(IGeom,:)-GradOld(IGeom,:)
+              HessTmp=Hess(IGeom,:,:)
+              Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)
+              Hess(IGeom,:,:)=HessTmp
+           END DO ! matches DO IGeom=IGeom0,IGeomF
+
+           ! Second using the neighbour points
+           IF (HupNeighbour) THEN
+              ! Only one point for end points.
+              IF (OptReac) THEN
+                 IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+                    GeomTmp=IntCoordF(1,:)-IntCoordF(2,:)
+                 ELSE
+                    GeomTmp=Reshape(XyzGeomF(1,:,:),(/3*Nat/))-Reshape(XyzGeomF(2,:,:),(/3*Nat/))
+                 END IF
+                 GradTmp=Grad(1,:)-Grad(2,:)
+                 HessTmp=Hess(1,:,:)
+                 Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)
+                 Hess(1,:,:)=HessTmp
+              END IF
+
+              IF (OptProd) THEN
+                 IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+                    GeomTmp=IntCoordF(NGeomF,:)-IntCoordF(NGeomF-1,:)
+                 ELSE
+                    GeomTmp=Reshape(XyzGeomF(NGeomF,:,:),(/3*Nat/))-Reshape(XyzGeomF(NGeomF-1,:,:),(/3*Nat/))
+                 END IF
+                 GradTmp=Grad(NGeomF,:)-Grad(NGeomF-1,:)
+                 HessTmp=Hess(NGeomF,:,:)
+                 Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)        
+                 Hess(NGeomF,:,:)=HessTmp
+              END IF
+
+              ! Two points for the rest of the path
+              DO IGeom=2,NGeomF-1
+                 IF ((COORD.EQ.'ZMAT').OR.(COORD.EQ.'BAKER')) THEN
+                    GeomTmp=IntCoordF(IGeom,:)-IntCoordF(IGeom+1,:)
+                 ELSE
+                    GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))-Reshape(XyzGeomF(IGeom+1,:,:),(/3*Nat/))
+                 END IF
+                 GradTmp=Grad(IGeom,:)-Grad(IGeom+1,:)
+                 HessTmp=Hess(IGeom,:,:)
+                 Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)        
+
+                 IF ((COORD.EQ.'ZMAT') .OR. (COORD.EQ.'BAKER')) THEN
+                    GeomTmp=IntCoordF(IGeom,:)-IntCoordF(IGeom-1,:)
+                 ELSE
+                    GeomTmp=Reshape(XyzGeomF(IGeom,:,:),(/3*Nat/))-Reshape(XyzGeomF(IGeom-1,:,:),(/3*Nat/))
+                 END IF
+                 GradTmp=Grad(IGeom,:)-Grad(IGeom-1,:)
+
+                 Call Hupdate_all(NCoord,GeomTmp,GradTmp,HessTmp)        
+                 Hess(IGeom,:,:)=HessTmp
+              END DO ! matches DO IGeom=2,NGeomF-1
+           END IF !matches IF (HupNeighbour) THEN
+        END IF ! matches IF (FCalcHess)
+     END IF ! If (not.fini.).AND.(IOpt.LE.MaxCyc)
+  END DO ! matches DO WHILE ((IOpt.LT.MaxCyc).AND.(.NOT.Fini))
+
+  IF (PROG=="GAUSSIAN") THEN
+     DEALLOCATE(Gauss_paste)
+     DEALLOCATE(Gauss_root,Gauss_comment,Gauss_end,current)
+  END IF
+  DEALLOCATE(XyzGeomF, IntCoordF)
+  DEALLOCATE(XyzGeomI, IntCoordI)
+  DEALLOCATE(XyzTangent,IntTangent)
+  DEALLOCATE(AtName,IndZmat,Order,Atome,MassAt)
+  DEALLOCATE(GeomOld_all)
+
+  if (PROG=="GAUSSIAN") THEN
+     ! We de-allocate the Gauss_XX lists
+     ! transverse the list and deallocate each node
+     previous => Gauss_root ! make current point to head of list
+     DO
+        IF (.NOT. ASSOCIATED(previous)) EXIT ! exit if null pointer
+        current => previous%next ! make list point to next node of head
+        DEALLOCATE(previous) ! deallocate current head node
+        previous => current  ! make current point to new head
+     END DO
+
+     previous => Gauss_comment ! make current point to head of list
+     DO
+        IF (.NOT. ASSOCIATED(previous)) EXIT ! exit if null pointer
+        current => previous%next ! make list point to next node of head
+        DEALLOCATE(previous) ! deallocate current head node
+        previous => current  ! make current point to new head
+     END DO
+
+     previous => Gauss_end ! make current point to head of list
+     DO
+        IF (.NOT. ASSOCIATED(previous)) EXIT ! exit if null pointer
+        current => previous%next ! make list point to next node of head
+        DEALLOCATE(previous) ! deallocate current head node
+        previous => current  ! make current point to new head
+     END DO
+
+     DEALLOCATE(current)
+  END IF
+
+  DEALLOCATE(GeomTmp, Hess, GradTmp)
+  IF (COORD.EQ.'ZMAT')  DEALLOCATE(dzdc)
+  IF (COORD.EQ.'BAKER') THEN
+     DEALLOCATE(BMat_BakerT,BTransInv,BTransInv_local,Xprimitive_t)
+     DEALLOCATE(XprimitiveF,UMatF,BTransInvF,UMat,UMat_local)
+  END IF
+
+  WRITE(IOOUT,*) "Exiting Path, IOpt=",IOpt
+
+END PROGRAM PathOpt
Index: src/Step_GEDIIS.f90
===================================================================
--- src/Step_GEDIIS.f90	(revision 0)
+++ src/Step_GEDIIS.f90	(revision 1)
@@ -0,0 +1,445 @@
+     ! Geom = input parameter vector (Geometry), Grad = input gradient vector.
+     ! HEAT is Energy(Geom)
+      SUBROUTINE Step_GEDIIS(Geom_new,Geom,Grad,HEAT,Hess,NCoord,FRST)
+
+	  use Io_module
+	  use Path_module, only : Nom, Atome, OrderInv, indzmat, Pi, Nat
+	  
+      IMPLICIT NONE
+
+      INTEGER(KINT) :: NCoord
+      REAL(KREAL) :: Geom_new(NCoord), Grad(NCoord), Hess(NCoord*NCoord)
+	  REAL(KREAL), INTENT(IN) :: Geom(NCoord)
+	  REAL(KREAL) :: HEAT ! HEAT= Energy
+      LOGICAL :: FRST
+
+      ! MRESET = maximum number of iterations.
+      INTEGER(KINT), PARAMETER :: MRESET=15, M2=(MRESET+1)*(MRESET+1) !M2 = 256
+      REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet(:), GradSet(:) ! MRESET*NCoord
+      REAL(KREAL), ALLOCATABLE, SAVE :: DX(:), GSAVE(:) !NCoord
+	  REAL(KREAL), SAVE :: ESET(MRESET)
+	  REAL(KREAL) :: ESET_tmp(MRESET), B(M2),BS(M2),BST(M2), B_tmp(M2) ! M2=256
+      LOGICAL DEBUG, PRINT, ci_lt_zero
+      INTEGER(KINT), SAVE :: MSET ! mth Iteration
+	  REAL(KREAL) :: ci(MRESET), ci_tmp(MRESET) ! MRESET = maximum number of iterations.
+      INTEGER(KINT) :: NGEDIIS, MPLUS, INV, ITERA, MM, cis_zero, IXX, JXX, MSET_minus_cis_zero
+      INTEGER(KINT) :: I,J,K, JJ, KJ, JNV, II, IONE, IJ, INK,ITmp, IX, JX, KX, MSET_C_cis_zero
+	  INTEGER(KINT) :: current_size_B_mat, MyPointer, Iat
+      REAL(KREAL) :: XMax, XNorm, S, DET, THRES, tmp, ER_star, ER_star_tmp
+
+      DEBUG=.TRUE.
+      PRINT=.FALSE.
+	  
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN GEDIIS   '')')
+	  
+      ! Initialization
+      IF (FRST) THEN
+      ! FRST will be set to False in SPACE_GEDIIS, so no need to modify it here
+         IF (ALLOCATED(GeomSet)) THEN
+            IF (PRINT)  WRITE(*,'(/,''    In FRST, GEDIIS Dealloc  '')')
+            DEALLOCATE(GeomSet,GradSet,DX,GSave)
+            RETURN
+         ELSE
+            IF (PRINT)  WRITE(*,'(/,''     In FRST,  GEDIIS Alloc  '')')
+            ALLOCATE(GeomSet(MRESET*NCoord),GradSet(MRESET*NCoord),DX(NCoord),GSAVE(NCoord))
+         END IF
+      END IF ! IF (FRST) THEN
+
+      ! SPACE_GEDIIS SIMPLY LOADS THE CURRENT VALUES OF Geom AND Grad INTO THE ARRAYS GeomSet
+      ! AND GradSet, MSET is set to zero and then 1 in SPACE_GEDIIS at first iteration.
+      CALL SPACE_GEDIIS(MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+
+      IF (PRINT)  WRITE(*,'(/,''       GEDIIS after SPACE_GEDIIS  '')')
+
+      ! INITIALIZE SOME VARIABLES AND CONSTANTS:
+      NGEDIIS = MSET !MSET=mth iteration
+      MPLUS = MSET + 1
+      MM = MPLUS * MPLUS
+
+      ! CONSTRUCT THE GEDIIS MATRIX:
+      ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>
+      JJ=0
+      INV=-NCoord
+      DO I=1,MSET
+         INV=INV+NCoord
+         JNV=-NCoord
+         DO J=1,MSET
+            JNV=JNV+NCoord
+            JJ = JJ + 1
+            B(JJ)=0.D0
+			DO K=1, NCoord
+			   B(JJ) = B(JJ) + (((GradSet(INV+K)-GradSet(JNV+K))*(GeomSet(INV+K)-GeomSet(JNV+K)))/2.D0)
+			END DO
+         END DO
+      END DO
+
+     ! The following shifting is required to correct indices of B_ij elements in the GEDIIS matrix.
+	 ! The correction is needed because the last coloumn of the matrix contains all 1 and one zero.
+      DO I=MSET-1,1,-1
+         DO J=MSET,1,-1
+            B(I*MSET+J+I) = B(I*MSET+J) 
+         END DO
+	  END DO
+   
+      ! for last row and last column of GEDIIS matrix 
+      DO I=1,MPLUS
+         B(MPLUS*I) = 1.D0
+         B(MPLUS*MSET+I) = 1.D0
+      END DO
+      B(MM) = 0.D0
+	  
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.4))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  	  
+      ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+   80 CONTINUE
+      DO I=1,MM !MM = (MSET+1) * (MSET+1)
+         BS(I) = B(I) !just a copy of the original B (GEDIIS) matrix
+      END DO
+	  
+      IF (NGEDIIS .NE. MSET) THEN
+        DO II=1,MSET-NGEDIIS
+           XMAX = -1.D10
+           ITERA = 0
+           DO I=1,MSET
+              XNORM = 0.D0
+              INV = (I-1) * MPLUS
+              DO J=1,MSET
+                 XNORM = XNORM + ABS(B(INV + J))
+              END DO
+              IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+                 XMAX = XNORM
+                 ITERA = I
+                 IONE = INV + I
+              ENDIF
+           END DO
+		 
+           DO I=1,MPLUS
+              INV = (I-1) * MPLUS
+              DO J=1,MPLUS
+                 JNV = (J-1) * MPLUS
+                 IF (J.EQ.ITERA) B(INV + J) = 0.D0
+                 B(JNV + I) = B(INV + J)
+              END DO
+		   END DO
+           B(IONE) = 1.0D0
+        END DO
+	  END IF ! matches IF (NGEDIIS .NE. MSET) THEN
+	  
+      ! SCALE GEDIIS MATRIX BEFORE INVERSION:
+      DO I=1,MPLUS
+         II = MPLUS * (I-1) + I ! B(II)=diagonal elements of B matrix
+         GSAVE(I) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+		 !Print *, 'GSAVE(',I,')=', GSAVE(I) 
+      END DO
+      GSAVE(MPLUS) = 1.D0
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+         END DO
+      END DO
+  
+     ! INVERT THE GEDIIS MATRIX B:
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.4))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  	  
+      CALL MINV(B,MPLUS,DET) ! matrix inversion.
+	  
+	  DO I=1, MPLUS
+	     !WRITE(*,'(10(1X,F20.16))') B((I-1)*MPLUS+1:I*(MPLUS))
+	  END DO
+	  
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+         END DO
+      END DO
+	  
+      ! COMPUTE THE NEW INTERPOLATED PARAMETER VECTOR (Geometry):
+	  ci=0.d0
+	  ci_tmp=0.d0
+	
+	  ci_lt_zero= .FALSE.
+	  DO I=1, MSET
+		 DO J=1, MSET ! B matrix is read column-wise
+		    ci(I)=ci(I)+B((J-1)*(MPLUS)+I)*ESET(J) !ESET is energy set, yet to be fixed.
+		 END DO
+		 ci(I)=ci(I)+B((MPLUS-1)*(MPLUS)+I)
+		 !Print *, 'NO ci < 0 yet, c(',I,')=', ci(I)
+		 IF((ci(I) .LT. 0.0D0) .OR. (ci(I) .GT. 1.0D0)) THEN
+		   ci_lt_zero=.TRUE.
+		   EXIT
+		 END IF
+      END DO !matches DO I=1, MSET
+	  
+	  IF (ci_lt_zero) Then
+	  	 cis_zero = 0
+         ER_star = 0.D0
+		 ER_star_tmp = 1e32
+		 
+		 ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>, Full B matrix created first and then rows and columns are removed.
+         JJ=0
+         INV=-NCoord
+         DO IX=1,MSET
+            INV=INV+NCoord
+            JNV=-NCoord
+            DO JX=1,MSET
+               JNV=JNV+NCoord
+               JJ = JJ + 1
+               BST(JJ)=0.D0
+		       DO KX=1, NCoord
+		          BST(JJ) = BST(JJ) + (((GradSet(INV+KX)-GradSet(JNV+KX))*(GeomSet(INV+KX)-GeomSet(JNV+KX)))/2.D0)
+		       END DO
+            END DO
+	     END DO  
+		
+		 DO I=1, (2**MSET)-2 ! all (2**MSET)-2 combinations of cis, except the one where all cis are .GT. 0 and .LT. 1
+		     ci(:)=1.D0
+		     ! find out which cis are zero in I:
+			 DO IX=1, MSET
+			    JJ=IAND(I, 2**(IX-1))
+				IF(JJ .EQ. 0) Then
+				  ci(IX)=0.D0
+			    END IF
+			 END DO
+			 
+			 ci_lt_zero = .FALSE.
+			 ! B_ij calculations from <B_ij=(g_i-g_j)(R_i-R_j)>, Full B matrix created first and then rows and columns are removed.
+			 DO IX=1, MSET*MSET
+                B(IX) = BST(IX) !just a copy of the original B (GEDIIS) matrix
+             END DO
+			 
+             ! Removal of KXth row and KXth column in order to accomodate cI to be zero:
+			 current_size_B_mat=MSET
+			 cis_zero = 0
+			 ! The bits of I (index of the upper loop 'DO I=1, (2**MSET)-2'), gives which cis are zero.
+			 DO KX=1, MSET ! searching for each bit of I (index of the upper loop 'DO I=1, (2**MSET)-2')
+			    IF (ci(KX) .EQ. 0.D0) Then !remove KXth row and KXth column
+				   cis_zero = cis_zero + 1
+				   
+			       ! First row removal: (B matrix is read column-wise)
+			       JJ=0
+                   DO IX=1,current_size_B_mat ! columns reading
+                      DO JX=1,current_size_B_mat ! rows reading
+				         IF (JX .NE. KX) Then
+				             JJ = JJ + 1
+				             B_tmp(JJ) = B((IX-1)*current_size_B_mat+JX)
+				         END IF
+				      END DO   
+			       END DO
+			 
+			       DO IX=1,current_size_B_mat*(current_size_B_mat-1)
+			          B(IX) = B_tmp(IX)
+			       END DO
+			 
+			       ! Now column removal:
+			       JJ=0	 
+                   DO IX=1,KX-1 ! columns reading
+                      DO JX=1,current_size_B_mat-1 ! rows reading
+				         JJ = JJ + 1
+				         B_tmp(JJ) = B(JJ)
+				      END DO
+			       END DO				
+			  
+                   DO IX=KX+1,current_size_B_mat
+                      DO JX=1,current_size_B_mat-1
+				         JJ = JJ + 1
+			   	         B_tmp(JJ) = B(JJ+current_size_B_mat-1)
+				      END DO
+			       END DO
+			 			 
+			       DO IX=1,(current_size_B_mat-1)*(current_size_B_mat-1)
+			          B(IX) = B_tmp(IX)
+			       END DO
+				   current_size_B_mat = current_size_B_mat - 1
+				END IF ! matches IF (ci(KX) .EQ. 0.D0) Then !remove
+	         END DO ! matches DO KX=1, MSET
+
+			 ! The following shifting is required to correct indices of B_ij elements in the GEDIIS matrix.
+			 ! The correction is needed because the last coloumn and row of the matrix contains all 1 and one zero.
+			 DO IX=MSET-cis_zero-1,1,-1
+				DO JX=MSET-cis_zero,1,-1
+				   B(IX*(MSET-cis_zero)+JX+IX) = B(IX*(MSET-cis_zero)+JX) 
+				END DO
+			 END DO
+			 
+			 ! for last row and last column of GEDIIS matrix 
+			 DO IX=1,MPLUS-cis_zero
+				B((MPLUS-cis_zero)*IX) = 1.D0
+				B((MPLUS-cis_zero)*(MSET-cis_zero)+IX) = 1.D0
+			 END DO
+			 B((MPLUS-cis_zero) * (MPLUS-cis_zero)) = 0.D0
+	       
+	         DO IX=1, MPLUS
+	            !WRITE(*,'(10(1X,F20.4))') B((IX-1)*MPLUS+1:IX*(MPLUS))
+	         END DO
+		   		   
+			 ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+             IF (NGEDIIS .NE. MSET) THEN
+			    JX = min(MSET-NGEDIIS,MSET-cis_zero-1)
+                DO II=1,JX
+                   XMAX = -1.D10
+                   ITERA = 0
+                   DO IX=1,MSET-cis_zero
+                      XNORM = 0.D0
+                      INV = (IX-1) * (MPLUS-cis_zero)
+                      DO J=1,MSET-cis_zero
+                         XNORM = XNORM + ABS(B(INV + J))
+                      END DO
+                      IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+                         XMAX = XNORM
+                         ITERA = IX
+                         IONE = INV + IX
+                      ENDIF
+				   END DO
+		 
+                   DO IX=1,MPLUS-cis_zero
+                      INV = (IX-1) * (MPLUS-cis_zero)
+                      DO J=1,MPLUS-cis_zero
+                         JNV = (J-1) * (MPLUS-cis_zero)
+                         IF (J.EQ.ITERA) B(INV + J) = 0.D0
+                         B(JNV + IX) = B(INV + J)
+					  END DO
+		           END DO
+                   B(IONE) = 1.0D0
+			    END DO
+	         END IF ! matches IF (NGEDIIS .NE. MSET) THEN
+
+			 ! SCALE GEDIIS MATRIX BEFORE INVERSION:
+			 DO IX=1,MPLUS-cis_zero
+				II = (MPLUS-cis_zero) * (IX-1) + IX ! B(II)=diagonal elements of B matrix
+				GSAVE(IX) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+			 END DO
+			 GSAVE(MPLUS-cis_zero) = 1.D0
+			 DO IX=1,MPLUS-cis_zero
+				DO JX=1,MPLUS-cis_zero
+				   IJ = (MPLUS-cis_zero) * (IX-1) + JX
+				   B(IJ) = B(IJ) * GSAVE(IX) * GSAVE(JX)
+				END DO
+			 END DO
+
+			 ! INVERT THE GEDIIS MATRIX B:	  
+			 CALL MINV(B,MPLUS-cis_zero,DET) ! matrix inversion.
+	  
+			 DO IX=1,MPLUS-cis_zero
+				DO JX=1,MPLUS-cis_zero
+				   IJ = (MPLUS-cis_zero) * (IX-1) + JX
+				   B(IJ) = B(IJ) * GSAVE(IX) * GSAVE(JX)
+				END DO
+			 END DO
+			 
+	         DO IX=1, MPLUS
+	            !WRITE(*,'(10(1X,F20.4))') B((IX-1)*MPLUS+1:IX*(MPLUS))
+	         END DO
+			 			 
+             ! ESET is rearranged to handle zero cis and stored in ESET_tmp:
+			 JJ=0
+			 DO IX=1, MSET
+				IF (ci(IX) .NE. 0) Then
+				   JJ=JJ+1
+				   ESET_tmp(JJ) = ESET(IX)
+				END IF
+			 END DO
+			 
+			 ! DETERMINATION OF nonzero cis:
+			 MyPointer=1
+     	     DO IX=1, MSET-cis_zero
+			    tmp = 0.D0
+		        DO J=1, MSET-cis_zero ! B matrix is read column-wise
+				   tmp=tmp+B((J-1)*(MPLUS-cis_zero)+IX)*ESET_tmp(J)
+				END DO
+		        tmp=tmp+B((MPLUS-cis_zero-1)*(MPLUS-cis_zero)+IX)
+		        IF((tmp .LT. 0.0D0) .OR. (tmp .GT. 1.0D0)) THEN
+		           ci_lt_zero=.TRUE.
+		           EXIT
+				ELSE
+				   DO JX=MyPointer,MSET
+				      IF (ci(JX) .NE. 0) Then
+				         ci(JX) = tmp
+					     MyPointer=JX+1
+					     EXIT
+					  END IF
+				   END DO
+		        END IF
+             END DO !matches DO I=1, MSET-cis_zero
+	         !Print *, 'Local set of cis, first 10:, MSET=', MSET, ', I of (2**MSET)-2=', I
+			 !WRITE(*,'(10(1X,F20.4))') ci(1:MSET)
+	         !Print *, 'Local set of cis ends:****************************************'
+
+             ! new set of cis determined based on the lower energy (ER_star):
+			 IF (.NOT. ci_lt_zero) Then
+                Call Energy_GEDIIS(MRESET,MSET,ci,GeomSet,GradSet,ESET,NCoord,ER_star)
+				IF (ER_star .LT. ER_star_tmp) Then			
+				   ci_tmp=ci	
+				   ER_star_tmp = ER_star
+				END IF
+             END IF ! matches IF (.NOT. ci_lt_zero) Then
+          END DO !matches DO I=1, (2**K)-2 ! all (2**K)-2 combinations of cis, except the one where all cis are .GT. 0 and .LT. 1 
+		  ci = ci_tmp
+	  END IF! matches IF (ci_lt_zero) Then
+	  
+	  Print *, 'Final set of cis, first 10:***********************************'
+	  WRITE(*,'(10(1X,F20.4))') ci(1:MSET)
+	  Print *, 'Final set of cis ends:****************************************'
+	  Geom_new(:) = 0.D0
+	  DO I=1, MSET	  
+         Geom_new(:) = Geom_new(:) + (ci(I)*GeomSet((I-1)*NCoord+1:I*NCoord)) !MPLUS=MSET+1
+		 ! R_(N+1)=R*+DeltaR:
+		 DO J=1, NCoord
+			tmp=0.D0
+			DO K=1,NCoord
+			   !tmp=tmp+Hess((J-1)*NCoord+K)*GradSet((I-1)*NCoord+K) ! If Hinv=.False., then we need to invert Hess
+			END DO
+			Geom_new(J) = Geom_new(J) - (ci(I)*tmp)
+		 END DO
+	  END DO
+	  
+	  DX(:) = Geom(:) - Geom_new(:)
+	  
+      XNORM = SQRT(DOT_PRODUCT(DX,DX))
+      IF (PRINT) THEN
+         WRITE (6,'(/10X,''DEVIATION IN X '',F10.4,8X,''DETERMINANT '',G9.3)') XNORM, DET
+         !WRITE(*,'(10X,''GEDIIS COEFFICIENTS'')')
+         !WRITE(*,'(10X,5F12.5)') (B(MPLUS*MSET+I),I=1,MSET)
+      ENDIF
+
+      ! THE FOLLOWING TOLERENCES FOR XNORM AND DET ARE SOMEWHAT ARBITRARY!
+      THRES = MAX(10.D0**(-NCoord), 1.D-25)
+      IF (XNORM.GT.2.D0 .OR. DABS(DET) .LT. THRES) THEN
+         IF (PRINT)THEN
+            WRITE(*,*) "THE GEDIIS MATRIX IS ILL CONDITIONED"     
+            WRITE(*,*) " - PROBABLY, VECTORS ARE LINEARLY DEPENDENT - "
+            WRITE(*,*) "THE GEDIIS STEP WILL BE REPEATED WITH A SMALLER SPACE"
+         END IF
+         DO K=1,MM
+			B(K) = BS(K) ! why this is reverted? Because "IF (NGEDIIS .GT. 0) GO TO 80", see below
+         END DO
+         NGEDIIS = NGEDIIS - 1
+         IF (NGEDIIS .GT. 0) GO TO 80
+         IF (PRINT) WRITE(*,'(10X,''NEWTON-RAPHSON STEP TAKEN'')')
+         Geom_new(:) = Geom(:) ! Geom_new is set to original Geom, thus DX = Geom(:) - Geom_new(:)=zero
+      END IF ! matches IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+	  
+	 !*******************************************************************************************************************
+	  Geom_new(:) = 0.D0
+	  DO I=1, MSET	  
+         Geom_new(:) = Geom_new(:) + (ci(I)*GeomSet((I-1)*NCoord+1:I*NCoord)) !MPLUS=MSET+1
+		 ! R_(N+1)=R*+DeltaR:
+		 DO J=1, NCoord
+			tmp=0.D0
+			DO K=1,NCoord
+			   tmp=tmp+Hess((J-1)*NCoord+K)*GradSet((I-1)*NCoord+K) ! If Hinv=.False., then we need to invert Hess
+			END DO
+			Geom_new(J) = Geom_new(J) - (ci(I)*tmp)
+		 END DO
+	  END DO
+	 !*******************************************************************************************************************
+	  
+      IF (PRINT)  WRITE(*,'(/,''       END GEDIIS  '',/)')
+
+      END SUBROUTINE Step_GEDIIS
+

Property changes on: src/Step_GEDIIS.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Calc_baker.f90
===================================================================
--- src/Calc_baker.f90	(revision 0)
+++ src/Calc_baker.f90	(revision 1)
@@ -0,0 +1,1006 @@
+SUBROUTINE Calc_baker(atome,r_cov,fact,frozen,IGeomRef)
+  !     
+  ! This subroutine analyses a geometry to construct the baker
+  ! delocalized internal coordinates
+  ! v1.0
+  ! We use only one geometry
+  !     
+  Use Path_module, only : max_Z,NMaxL,Nom,MaxFroz,NFroz,Pi,Massat,a0,BMat_BakerT, &
+       Nat,NCoord,XyzGeomI,NGeomI,NGeomF,UMat,NPrim,BTransInv, &
+       IntCoordI,Coordinate,CurrentCoord,ScanCoord,BprimT,BBT, &
+       BBT_inv,Xprimitive,XPrimitiveF,Symmetry_elimination,UMat_local, &
+       BTransInv_local, UMatF,BTransInvF,      &
+       indzmat, dzdc,renum,order,OrderInv
+  ! BMat_BakerT(3*Nat,NCoord), NCoord=3*Nat or NFree=3*Nat-6-Symmetry_elimination
+  ! depending upon the coordinate choice. IntCoordI(NGeomI,NCoord) where 
+  ! UMat(NPrim,NCoord), NCoord number of vectors in UMat matrix, i.e. NCoord
+  ! Baker coordinates. NPrim is the number of primitive internal coordinates.
+
+  Use Io_module
+  IMPLICIT NONE
+
+  ! IGeom: Geometry index, IGeomRef: Reference Geometry.
+  INTEGER(KINT), INTENT(IN) :: atome(Nat),IGeomRef
+  REAL(KREAL), INTENT(IN) :: fact
+  REAL(KREAL), INTENT(IN)  :: r_cov(0:Max_Z)
+  ! Frozen contains the indices of frozen atoms
+  INTEGER(KINT), INTENT(IN) :: Frozen(*)
+
+  INTEGER(KINT), ALLOCATABLE :: LIAISONS(:,:) ! (Nat,0:NMaxL)
+  REAL(KREAL), ALLOCATABLE :: Geom(:,:) !(3,Nat)
+  ! NPrim is the number of primitive coordinates and NCoord is the number
+  ! of internal coordinates. BMat is actually (NPrim,3*Nat).
+  REAL(KREAL), ALLOCATABLE :: GMat(:,:) !(NPrim,NPrim)
+  ! EigVec(..) contains ALL eigevectors of BMat times BprimT, NOT only Baker Coordinate vectors.
+  REAL(KREAL), ALLOCATABLE :: EigVec(:,:), EigVal(:) ! EigVec(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  REAL(KREAL), ALLOCATABLE :: x_refGeom(:), y_refGeom(:), z_refGeom(:)
+  !REAL(KREAL), ALLOCATABLE :: V(:,:) ! (3*Nat,3*Nat)
+  !REAL(KREAL), ALLOCATABLE :: P(:) ! Used in Baker Coordinates: Matrix Inversion
+  REAL(KREAL), ALLOCATABLE :: UMat_tmp(:,:)
+  INTEGER(KINT) :: NbBonds, NbAngles, NbDihedrals, IGeom
+
+  real(KREAL) :: vx,vy,vz,dist, Norm
+  real(KREAL) :: vx1,vy1,vz1,norm1
+  real(KREAL) :: vx2,vy2,vz2,norm2
+  real(KREAL) :: vx3,vy3,vz3,norm3
+  real(KREAL) :: vx4,vy4,vz4,norm4
+  real(KREAL) :: vx5,vy5,vz5,norm5
+  real(KREAL) :: val,val_d, Q, T
+
+  INTEGER(KINT) :: I,J, n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
+  INTEGER(KINT) :: I0, IOld, IAtTmp, Izm, JAt, Kat, Lat, L, NOUT
+
+  REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat
+  REAL(KREAL) :: DiheTmp
+
+  LOGICAL :: debug, bond, AddPrimitiveCoord, FAIL
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+ 
+
+
+     SUBROUTINE Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive,XPrimRef)
+       !     
+       ! This subroutine uses the description of a list of Coordinates
+       ! to compute the values of the coordinates for a given geometry.
+       !
+!!!!!!!!!!
+       ! Input:
+       !   Na: INTEGER, Number of atoms
+       !  x,y,z(Na): REAL, cartesian coordinates of the considered geometry
+       ! Coordinate (Pointer(ListCoord)): description of the wanted coordiantes
+       ! NPrim, INTEGER: Number of coordinates to compute
+       !
+       ! Optional: XPrimRef(NPrim) REAL: array that contains coordinates values for
+       ! a former geometry. Useful for Dihedral angles evolution...
+
+!!!!!!!!!!!
+       ! Output:
+       ! XPrimimite(NPrim) REAL: array that will contain the values of the coordinates
+       !
+!!!!!!!!!
+
+       Use VarTypes
+       Use Io_module
+       Use Path_module, only : pi
+
+       IMPLICIT NONE
+
+       Type (ListCoord), POINTER :: Coordinate
+       INTEGER(KINT), INTENT(IN) :: Nat,NPrim
+       REAL(KREAL), INTENT(IN) :: x(Nat), y(Nat), z(Nat)
+       REAL(KREAL), INTENT(IN), OPTIONAL :: XPrimRef(NPrim) 
+       REAL(KREAL), INTENT(OUT) :: XPrimitive(NPrim)
+
+     END SUBROUTINE CALC_XPRIM
+  END INTERFACE
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!!!!!!!! PFL Debug
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  REAL(KREAL), ALLOCATABLE :: V(:,:) ! (NCoord,NCoord)
+  REAL(KREAL) :: tol
+  INTEGER(KINT) :: I1,I2,I3,I4
+  LOGICAL ::  FALOBBT,FALOBPrimt,FAloBBTInv
+  LOGICAL :: debugPFL
+  REAL(KREAL), ALLOCATABLE :: val_zmat(:,:)
+  INTEGER(KINT), ALLOCATABLE :: indzmat0(:,:)
+
+
+  debug=valid("Calc_baker")
+  debugPFL=valid("BakerPFL")
+  if (debug) WRITE(*,*) "============= Entering Cal_baker =============="
+
+  IF (Nat.le.2) THEN
+     WRITE(*,*) "I do not work for less than 2 atoms :-p"
+     RETURN
+  END IF
+
+  IF (debug) THEN
+     WRITE(*,*) "DBG Calc_baker, geom"
+     DO I=1,Nat
+        WRITE(*,'(1X,I5,":",I3,3(1X,F15.3))') I,atome(I),XyzGeomI(IGeomRef,1:3,I)
+     END DO
+  END IF
+
+
+
+
+  ! we construct the list of bonds, valence angles and dihedral angles using this connectivity
+  ALLOCATE(Coordinate)
+  NULLIFY(Coordinate%next)
+  NbBonds=0
+  NbAngles=0
+  NbDihedrals=0
+
+  CurrentCoord => Coordinate
+
+  ALLOCATE(Liaisons(Nat,0:NMaxL),Geom(3,Nat),x(Nat),y(Nat),z(Nat))
+  ALLOCATE(x_refGeom(Nat),y_refGeom(Nat),z_refGeom(Nat))
+
+  x_refGeom(1:Nat) = XyzGeomI(IGeomRef,1,1:Nat)
+  y_refGeom(1:Nat) = XyzGeomI(IGeomRef,2,1:Nat)
+  z_refGeom(1:Nat) = XyzGeomI(IGeomRef,3,1:Nat) 
+
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !   PFL Debug
+     !
+!!!!!!!!!!!!!!!!!!!!
+     if (debugPFL) THEN
+        WRITE(*,*) "DBG PFL Calc_BAKER - Calculating Zmat"
+     if (.not.ALLOCATED(indzmat)) THEN
+        ALLOCATE(indzmat(Nat,5))
+     END IF
+     IF (.NOT.ALLOCATED(DzDc)) THEN
+        ALLOCATE(DzDc(3,nat,3,Nat))
+     END IF
+     IF (.NOT.ALLOCATED(Val_zmat)) THEN
+        ALLOCATE(val_zmat(nat,3))
+     END IF
+     IF (.NOT.ALLOCATED(indzmat0)) THEN
+        ALLOCATE(indzmat0(nat,5))
+     END IF
+! We construct a Zmat
+          IF (Frozen(1).NE.0) THEN 
+           Renum=.TRUE.
+!!! remplcaer indzmat par indzmat0 puis renumerotation
+           call Calc_zmat_const_frag(Nat,atome,IndZmat0,val_zmat, &
+             x_refGeom,y_refGeom,z_refGeom, &
+                r_cov,fact,frozen)
+        ELSE
+           !no zmat... we create our own 
+           call Calc_zmat_frag(Nat,atome,IndZmat0,val_zmat, &
+             x_refGeom,y_refGeom,z_refGeom, &
+                r_cov,fact)
+        END IF
+
+         DO I=1,Nat
+           Order(IndZmat0(I,1))=I
+           OrderInv(I)=IndZmat0(I,1)
+        END DO
+        IndZmat(1,1)=Order(IndZmat0(1,1))
+        IndZmat(2,1)=Order(IndZmat0(2,1))
+        IndZmat(2,2)=Order(IndZmat0(2,2))
+        IndZmat(3,1)=Order(IndZmat0(3,1))
+        IndZmat(3,2)=Order(IndZmat0(3,2))
+        IndZmat(3,3)=Order(IndZmat0(3,3))
+        DO I=4,Nat
+           DO J=1,4
+              IndZmat(I,J)=Order(IndZmat0(I,J))
+           END DO
+        end do
+
+
+        WRITE(*,*) "DBG PFL CalcBaker, IndZmat0"
+        DO I=1,Nat
+            WRITE(*,*) I, indZmat0(I,:)
+        end do
+
+        WRITE(*,*) "DBG PFL CalcBaker, IndZmat"
+        DO I=1,Nat
+            WRITE(*,*) I, indZmat(I,:)
+        end do
+
+
+     DO I=1,Nat
+        I1=indzmat0(I,1)
+        I2=indzmat0(I,2)
+        I3=indzmat0(I,3)
+        I4=indzmat0(I,4)
+! Adding BOND between at1 and at2
+      WRITE(*,*)  "DBG Indzmat",I,I1,I2,I3,I4
+         if (I2.NE.0) THEN
+           NbBonds=NbBonds+1
+    ! values of the coordinate (bond) is calculated for the reference geometry
+    ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.)
+    ! are determined using all geometries. vecteur is defined in bib_oper.f
+                  Call vecteur(I1,I2,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+!                  CurrentCoord%value=Norm2
+                  WRITE(*,'(1X,A,I5,A,2(1X,F12.6))') "Bond",NbBonds," Norm2,val_zmat",Norm2,val_zmat(I,1)
+                  CurrentCoord%value=val_zmat(I,1)
+                  CurrentCoord%SignDihedral = 0
+                  CurrentCoord%At1=I1
+                  CurrentCoord%At2=I2
+                  CurrentCoord%Type="BOND"
+                  IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                     ALLOCATE(CurrentCoord%next)
+                     NULLIFY(CurrentCoord%next%next)
+                  END IF
+                  CurrentCoord => CurrentCoord%next
+        END IF !IE.NE.0
+       if (I3.NE.0) THEN
+
+                       NbAngles=NbAngles+1
+                       ! values of the coordinate (bond) is calculated for the reference geometry
+                       ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.) are 
+                       ! determined using all geometries.
+                       Call vecteur(i2,I3,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+                       Call vecteur(i2,I1,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+!                       CurrentCoord%value=angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+                  WRITE(*,'(1X,A,I5,A,2(1X,F12.6))') "Angle",NbAngles," angle,val_zmat", &
+                       angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2),val_zmat(I,2)
+                       CurrentCoord%value=val_zmat(I,2)*Pi/180.
+                       CurrentCoord%SignDihedral = 0
+                       CurrentCoord%At1=I1
+                       CurrentCoord%At2=I2
+                       CurrentCoord%At3=I3
+                       CurrentCoord%Type="ANGLE"
+                       IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                          ALLOCATE(CurrentCoord%next)
+                          NULLIFY(CurrentCoord%next%next)
+                       END IF
+                       CurrentCoord => CurrentCoord%next
+                    END IF ! matches IF (I3.NE.0)
+         if (I4.NE.0) THEN
+                       NbDihedrals=NbDihedrals+1
+              Call vecteur(I2,I1,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+              Call vecteur(I2,I3,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+              Call vecteur(I3,I4,x_refGeom,y_refGeom,z_refGeom,vx3,vy3,vz3,Norm3)
+                       CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+                            vx4,vy4,vz4,norm4)
+                       CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+                            vx5,vy5,vz5,norm5)
+!                       CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+!                            vx2,vy2,vz2,norm2)*Pi/180.
+                  WRITE(*,'(1X,A,I5,A,2(1X,F12.6))') "Dihedral",NbDihedrals,    &
+                       " angle_d,val_zmat", &
+                       angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+                       vx2,vy2,vz2,norm2) &
+                       ,val_zmat(I,3)
+
+                       CurrentCoord%value = val_zmat(I,3)*Pi/180.
+                       CurrentCoord%SignDihedral = int(sign(1.D0,val_zmat(I,3)))
+                       CurrentCoord%At1=I1
+                       CurrentCoord%At2=I2
+                       CurrentCoord%At3=I3
+                       CurrentCoord%At4=I4
+                       CurrentCoord%Type="DIHEDRAL"
+                       IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                          ALLOCATE(CurrentCoord%next)
+                          NULLIFY(CurrentCoord%next%next)
+                       END IF
+                       CurrentCoord => CurrentCoord%next
+                    END IF ! matches IF (I4.NE.0)
+              END DO ! matches DO I=1,Nat
+      deallocate(indzmat0)
+
+  ELSE !! if (debugPFL)
+
+  DO IGeom=1, NGeomI
+     !IGeom=1 ! need when using only first geometry.
+     x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+     y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+     z(1:Nat) = XyzGeomI(IGeom,3,1:Nat) 
+
+     ! First step: we calculate the connectivity
+     Liaisons=0
+
+     Call CalcCnct(Nat,atome,x,y,z,LIAISONS,r_cov,fact)
+
+     IF (debug) THEN 
+        WRITE(*,*) 'Connectivity done'
+        DO I=1,Nat
+           WRITE(*,'(1X,I5,":",I3,"=",15I4)') I,(Liaisons(I,J),J=0,NMaxL)
+           WRITE(*,'(1X,I5,":",I3,"=",15I4)') I,(Liaisons(I,:))
+        END DO
+        DO I=1,Nat
+           WRITE(*,'(1X,I5,":",I3," r_cov=",F15.6)') I,atome(I),r_cov(atome(I))
+        END DO
+     END IF
+
+     DO I=1,Nat
+        IF (Liaisons(I,0).NE.0) THEN
+           DO J=1,Liaisons(I,0)
+              ! We add the bond
+              Iat=Liaisons(I,J)
+              IF (Iat.GT.I) THEN
+                 ! Checking the uniqueness of bond.
+                 ! Duplicate bonds should not be added.
+                 AddPrimitiveCoord=.True.
+                 ScanCoord=>Coordinate
+                 DO WHILE (Associated(ScanCoord%next))
+                    IF (ScanCoord%Type .EQ. 'BOND') THEN
+                       IF (ScanCoord%At1 .EQ. Iat) THEN
+                          IF (ScanCoord%At2 .EQ. I) THEN
+                             AddPrimitiveCoord=.False.
+                          END IF
+                       END IF
+                    END IF
+                    ScanCoord => ScanCoord%next
+                 END DO
+
+                 IF (AddPrimitiveCoord) THEN
+                    NbBonds=NbBonds+1
+                    ! values of the coordinate (bond) is calculated for the reference geometry
+                    ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.)
+                    ! are determined using all geometries. vecteur is defined in bib_oper.f
+                    Call vecteur(I,Iat,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+                    CurrentCoord%value=Norm2
+                    CurrentCoord%SignDihedral = 0
+                    CurrentCoord%At1=Iat
+                    CurrentCoord%At2=I
+                    CurrentCoord%Type="BOND"
+                    IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                       ALLOCATE(CurrentCoord%next)
+                       NULLIFY(CurrentCoord%next%next)
+                    END IF
+                    CurrentCoord => CurrentCoord%next
+                 END IF ! matches IF (AddPrimitiveCoord) THEN
+              END IF ! matches IF (Iat.GT.I) THEN
+
+              !           Call Annul(Liaisons,IAt,I,Nat,NMaxL)
+              !           Liaisons(Iat,0)=Liaisons(Iat,0)-1
+
+              ! We add the valence angles
+              DO K=J+1,Liaisons(I,0)
+                 Kat=Liaisons(I,K)
+                 IF (Kat.GT.I) THEN
+                    ! Checking the uniqueness of valence angle.
+                    ! Duplicate bonds should not be added.
+                    AddPrimitiveCoord=.True.
+                    ScanCoord=>Coordinate
+                    DO WHILE (Associated(ScanCoord%next))
+                       IF (ScanCoord%Type .EQ. 'ANGLE') THEN
+                          IF (ScanCoord%At1 .EQ. Iat) THEN
+                             IF (ScanCoord%At2 .EQ. I) THEN
+                                IF (ScanCoord%At3 .EQ. Kat) THEN
+                                   AddPrimitiveCoord=.False.
+                                END IF
+                             END IF
+                          END IF
+                       END IF
+                       ScanCoord => ScanCoord%next
+                    END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+                    IF (AddPrimitiveCoord) THEN			
+                       IF (debug) WRITE(*,*) "Adding angle:",Iat,I,Kat
+                       NbAngles=NbAngles+1
+                       ! values of the coordinate (bond) is calculated for the reference geometry
+                       ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.) are 
+                       ! determined using all geometries.
+                       Call vecteur(i,kat,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+                       Call vecteur(i,Iat,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+                       CurrentCoord%value=angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+                       CurrentCoord%SignDihedral = 0
+                       sAngleIatIKat=abs(sin(angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.))
+                       CurrentCoord%At1=Iat
+                       CurrentCoord%At2=I
+                       CurrentCoord%At3=KAt
+                       CurrentCoord%Type="ANGLE"
+                       IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                          ALLOCATE(CurrentCoord%next)
+                          NULLIFY(CurrentCoord%next%next)
+                       END IF
+                       CurrentCoord => CurrentCoord%next
+                    END IF ! matches IF (AddPrimitiveCoord) THEN
+                 ELSE ! matches IF (Kat.GT.I) THEN
+                    ! Kat is less than I. If there is a bond between I and Kat, then this angle
+                    ! has already been taken into account.
+                    if (debug) WRITE(*,*) "Testing angle:",Iat,I,Kat
+                    Bond=.FALSE.
+                    DO L=1,Liaisons(Iat,0)
+                       IF (Liaisons(Iat,L).EQ.Kat) Bond=.TRUE.
+                    END DO
+                    IF (.NOT.Bond) THEN
+                       IF (debug) WRITE(*,*) "Not Bond Adding angle:",Iat,I,Kat
+
+                       ! Checking the uniqueness of valence angle.
+                       ! Duplicate bonds should not be added.				
+                       AddPrimitiveCoord=.True.
+                       ScanCoord=>Coordinate
+                       DO WHILE (Associated(ScanCoord%next))
+                          IF (ScanCoord%Type .EQ. 'ANGLE') THEN
+                             IF (ScanCoord%At1 .EQ. Iat) THEN
+                                IF (ScanCoord%At2 .EQ. I) THEN
+                                   IF (ScanCoord%At3 .EQ. Kat) THEN
+                                      AddPrimitiveCoord=.False.
+                                   END IF
+                                END IF
+                             END IF
+                          END IF
+                          ScanCoord => ScanCoord%next
+                       END DO
+
+                       IF (AddPrimitiveCoord) THEN	
+                          NbAngles=NbAngles+1
+                          ! values of the coordinate (bond) is calculated for the reference geometry
+                          ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.) 
+                          ! are determined using all geometries.
+                          Call vecteur(i,kat,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+                          Call vecteur(i,Iat,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+                          CurrentCoord%value=angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+                           CurrentCoord%SignDihedral = 0
+                          CurrentCoord%At1=Iat
+                          CurrentCoord%At2=I
+                          CurrentCoord%At3=KAt
+                          CurrentCoord%Type="ANGLE"
+                          IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                             ALLOCATE(CurrentCoord%next)
+                             NULLIFY(CurrentCoord%next%next)
+                          END IF
+                          CurrentCoord => CurrentCoord%next
+                       END IF	! matches IF (AddPrimitiveCoord) THEN
+                    END IF ! matches IF (.NOT.Bond) THEN
+                 END IF ! matches IF (Kat.GT.I) THEN, after else
+              END DO ! matches DO K=J+1,Liaisons(I,0)
+           END DO ! matches DO J=1,Liaisons(I,0)
+        END IF ! matches IF (Liaisons(I,0).NE.0) THEN
+
+        ! We add dihedral angles. We do not concentrate on necessary angles, ie those that are
+        ! needed to build the molecule. Instead we collect all of them, and the choice of the best
+        ! ones will be done when diagonalizing the Baker matrix.
+        IF (Liaisons(I,0).GE.3) Then
+           DO J=1,Liaisons(I,0)
+              Iat=Liaisons(I,J)
+              ! values of the coordinate (bond) is calculated for the reference geometry
+              ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.) are 
+              ! determined using all geometries.
+              Call vecteur(Iat,i,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+
+              DO K=J+1,Liaisons(I,0)
+                 Kat=Liaisons(I,K)
+                 Call vecteur(i,kat,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+                 sAngleIatIKat=abs(sin(angle(vx1,vy1,vz1,Norm1,-vx2,-vy2,-vz2,Norm2)*Pi/180.))
+
+                 DO L=K+1,Liaisons(I,0)
+                    Lat=Liaisons(I,L)
+                    if (debug) WRITE(*,*) "0-Dihe Kat,I,Iat:",Kat,I,Iat,angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)
+                    Call vecteur(iat,lat,x_refGeom,y_refGeom,z_refGeom,vx3,vy3,vz3,Norm3)
+                    sAngleIIatLat=abs(sin(angle(vx3,vy3,vz3,Norm3,vx2,vy2,vz2,Norm2)*Pi/180.))
+                    if (debug) WRITE(*,*) "0-Dihe I,Iat,Lat:",angle(vx3,vy3,vz3,Norm3,vx2,vy2,vz2,Norm2)
+                    IF ((sAngleIatIKat.ge.0.01d0).AND.(sAngleIIatLat.ge.0.01d0)) THEN
+                       if (debug) WRITE(*,*) "Adding dihedral:",Kat,I,Iat,Lat
+
+                       ! Checking for the uniqueness of valence angle.
+                       ! Duplicate bonds should not be added.
+                       AddPrimitiveCoord=.True.
+                       ScanCoord=>Coordinate
+                       DO WHILE (Associated(ScanCoord%next))
+                          IF (ScanCoord%Type .EQ. 'DIHEDRAL') THEN
+                             IF (ScanCoord%At1 .EQ. Kat) THEN
+                                IF (ScanCoord%At2 .EQ. I) THEN
+                                   IF (ScanCoord%At3 .EQ. Iat) THEN
+                                      IF (ScanCoord%At4 .EQ. Lat) THEN
+                                         AddPrimitiveCoord=.False.
+                                      END IF
+                                   END IF
+                                END IF
+                             END IF
+                          END IF
+                          ScanCoord => ScanCoord%next
+                       END DO ! matches DO WHILE (Associated(ScanCoord%next))
+
+                       ! IF (AddPrimitiveCoord) THEN
+                       !   NbDihedrals=NbDihedrals+1
+                       !  CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+                            !      vx5,vy5,vz5,norm5)
+                       !CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+                            !    vx4,vy4,vz4,norm4)
+                       !         CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+                       !             vx2,vy2,vz2,norm2)*Pi/180.
+                       !          CurrentCoord%SignDihedral = 0
+                       !       CurrentCoord%At1=Kat
+                       !      CurrentCoord%At2=I
+                       !     CurrentCoord%At3=IAt
+                       !    CurrentCoord%At4=LAt
+                       !WRITE(*,'(1X,":(dihed 1)",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') &
+                       !        ScanCoord%At1,ScanCoord%At2,ScanCoord%At3,ScanCoord%At4,ScanCoord%Value*180./Pi
+                       !         CurrentCoord%Type="DIHEDRAL"
+                       !        IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                       !          ALLOCATE(CurrentCoord%next)
+                       !         NULLIFY(CurrentCoord%next%next)
+                       !     END IF
+                       !    CurrentCoord => CurrentCoord%next
+                       !END IF ! matches IF (AddPrimitiveCoord) THEN
+
+                    END IF ! matches IF ((sAngleIatIKat.ge.0.01d0).AND.(sAngleIIatLat.ge.0.01d0)) THEN
+                 END DO ! matches DO L=K+1,Liaisons(I,0)
+              END DO ! matches DO K=J+1,Liaisons(I,0)
+           END DO ! matches DO J=1,Liaisons(I,0)
+        END IF !matches  IF (Liaisons(I,0).GE.3) Then
+
+        ! we now add other dihedrals
+        DO J=1,Liaisons(I,0)
+           Iat=Liaisons(I,J)
+           If (Iat.LE.I) Cycle
+           ! values of the coordinate (bond) is calculated for the reference geometry
+           ! whereas the coordinates (bonds) (CurrentCoord%At1, CurrentCoord%At2, etc.) are 
+           ! determined using all geometries.
+           Call vecteur(Iat,i,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2)
+
+           DO K=1,Liaisons(I,0)
+              IF (Liaisons(I,K).EQ.Iat) Cycle 
+              Kat=Liaisons(I,K)
+              Call vecteur(i,kat,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1)
+              sAngleIatIKat=abs(sin(angle(vx1,vy1,vz1,Norm1,-vx2,-vy2,-vz2,Norm2)*Pi/180.))
+
+              DO L=1,Liaisons(Iat,0)
+                 Lat=Liaisons(Iat,L)
+                 IF (Lat.eq.I) Cycle
+
+                 if (debug) WRITE(*,*) "Dihe Kat,I,Iat:",angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2),sAngleIatIKat
+                 Call vecteur(iat,lat,x_refGeom,y_refGeom,z_refGeom,vx,vy,vz,Norm)
+
+                 sAngleIIatLat=abs(sin(angle(vx,vy,vz,Norm,vx2,vy2,vz2,Norm2)*Pi/180.))
+                 if (debug) WRITE(*,*) "Dihe I,Iat,Lat:",angle(vx,vy,vz,Norm,vx2,vy2,vz2,Norm2)
+                 ! we add the dihedral angle Kat-I-Iat-Lat
+                 if (debug) WRITE(*,*) "Trying dihedral:",Kat,I,Iat,Lat,sAngleIatIKat,sAngleIIatLat
+                 IF ((Lat.NE.Kat).AND.(Lat.Ne.I).AND.(sAngleIatIKat.ge.0.01d0) &
+                      .AND.(sAngleIIatLat.ge.0.01d0)) THEN
+                    if (debug) WRITE(*,*) "Adding dihedral:",Kat,I,Iat,Lat
+
+                    ! Checking for the uniqueness of valence angle.
+                    ! Duplicate bonds should not be added.
+                    AddPrimitiveCoord=.True.
+                    ScanCoord=>Coordinate
+                    DO WHILE (Associated(ScanCoord%next))
+                       IF (ScanCoord%Type .EQ. 'DIHEDRAL') THEN
+                          IF (ScanCoord%At1 .EQ. Kat) THEN
+                             IF (ScanCoord%At2 .EQ. I) THEN
+                                IF (ScanCoord%At3 .EQ. Iat) THEN
+                                   IF (ScanCoord%At4 .EQ. Lat) THEN
+                                      AddPrimitiveCoord=.False.
+                                   END IF
+                                END IF
+                             END IF
+                          END IF
+                       END IF
+                       ScanCoord => ScanCoord%next
+                    END DO
+
+                    IF (AddPrimitiveCoord) THEN
+                       NbDihedrals=NbDihedrals+1
+                       Call vecteur(iat,lat,x_refGeom,y_refGeom,z_refGeom,vx3,vy3,vz3,Norm3)
+                       CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+                            vx5,vy5,vz5,norm5)
+                       CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+                            vx4,vy4,vz4,norm4)
+                       CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+                            vx2,vy2,vz2,norm2)*Pi/180.
+                       CurrentCoord%At1=Kat
+                       CurrentCoord%At2=I
+                       CurrentCoord%At3=IAt
+                       CurrentCoord%At4=LAt
+                       CurrentCoord%Type="DIHEDRAL"
+                       CurrentCoord%SignDihedral=int(sign(1.d0,angle_d(vx4,vy4,vz4,norm4,   &
+                            vx5,vy5,vz5,norm5, vx2,vy2,vz2,norm2)))
+                       WRITE(*,'(1X,":(dihed 2)",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') ScanCoord%At1,&
+                            ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,ScanCoord%Value*180./Pi
+                       IF (.NOT.ASSOCIATED(CurrentCoord%next)) THEN
+                          ALLOCATE(CurrentCoord%next)
+                          NULLIFY(CurrentCoord%next%next)
+                       END IF
+                       CurrentCoord => CurrentCoord%next
+                    END IF ! matches IF (AddPrimitiveCoord) THEN
+                 END IF ! matches IF ((Lat.NE.Kat).AND.(Lat.Ne.I).AND.(sAngleIatIKat.ge.0.01d0) .....
+              END DO ! matches DO L=1,Liaisons(Iat,0)
+           END DO ! matches DO K=1,Liaisons(I,0)
+        END DO ! matches DO J=1,Liaisons(I,0)
+     END DO ! end of loop over all atoms, DO I=1, Nat
+  END DO ! matches DO IGeom=1, NGeomI
+
+
+
+ END IF ! if (debugPFL)
+  DEALLOCATE(Liaisons)
+
+  WRITE(*,*) "I have found"
+  WRITE(*,*) NbBonds, " bonds"
+  WRITE(*,*) NbAngles, " angles"
+  WRITE(*,*) NbDihedrals, " dihedrals"
+
+  WRITE(*,*) 'All in all...'
+  ScanCoord=>Coordinate
+  I=0
+  DO WHILE (Associated(ScanCoord%next))
+     I=I+1
+     SELECT CASE (ScanCoord%Type)
+     CASE ('BOND')
+        !WRITE(IOOUT,'(1X,I3,":",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,ScanCoord%At2,ScanCoord%Value
+        WRITE(*,'(1X,I3,":(bond )",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,ScanCoord%At2,ScanCoord%Value
+     CASE ('ANGLE')
+        !WRITE(IOOUT,'(1X,I3,":",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1, &
+        !    ScanCoord%At2, ScanCoord%At3,ScanCoord%Value*180./Pi
+        WRITE(*,'(1X,I3,":(angle)",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1, &
+             ScanCoord%At2, ScanCoord%At3,ScanCoord%Value*180./Pi	 
+     CASE ('DIHEDRAL')
+        !WRITE(IOOUT,'(1X,I3,":",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,&
+        !    ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,ScanCoord%Value*180./Pi
+        WRITE(*,'(1X,I3,":(dihed)",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,&
+             ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,ScanCoord%Value*180./Pi
+     END SELECT
+     ScanCoord => ScanCoord%next
+  END DO
+
+  ! NPrim is the number of primitive coordinates.
+  NPrim=NbBonds+NbAngles+NbDihedrals
+
+  ! Now calculating values of all primitive bonds for all geometries:
+  ALLOCATE(Xprimitive(NgeomI,NPrim),XPrimitiveF(NGeomF,NPrim))
+  ALLOCATE(UMatF(NGeomF,NPrim,NCoord))
+  ALLOCATE(BTransInvF(NGeomF,NCoord,3*Nat))
+
+! We calculate the Primitive values for the first geometry, this plays a special role
+! as it will serve as a reference for other geometries !
+
+  x(1:Nat) = XyzGeomI(1,1,1:Nat)
+  y(1:Nat) = XyzGeomI(1,2,1:Nat)
+  z(1:Nat) = XyzGeomI(1,3,1:Nat)
+
+  Call Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive(1,:))
+
+  DO IGeom=2, NGeomI
+
+        x(1:Nat) = XyzGeomI(IGeom,1,1:Nat)
+        y(1:Nat) = XyzGeomI(IGeom,2,1:Nat)
+        z(1:Nat) = XyzGeomI(IGeom,3,1:Nat)
+
+        Call Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive(IGeom,:),Xprimitive(1,:))
+
+!      ScanCoord=>Coordinate
+!      I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+!      DO WHILE (Associated(ScanCoord%next))
+!         I=I+1
+!         SELECT CASE (ScanCoord%Type)
+!         CASE ('BOND')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!            Xprimitive(IGeom,I) = Norm2  
+!         CASE ('ANGLE')
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!            Xprimitive(IGeom,I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+!         CASE ('DIHEDRAL')
+
+
+!            Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1)
+!            Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx2,vy2,vz2,Norm2)
+!            Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3)
+!            Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+!                 vx4,vy4,vz4,norm4)
+!            Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+!                 vx5,vy5,vz5,norm5)
+
+!                  DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+!                          vx2,vy2,vz2,norm2)
+!                  Xprimitive(IGeom,I) = DiheTmp*Pi/180.
+! ! We treat large dihedral angles differently as +180=-180 mathematically and physically
+! ! but this causes lots of troubles when converting baker to cart.
+! ! So we ensure that large dihedral angles always have the same sign
+!                     if (abs(ScanCoord%SignDihedral).NE.1) THEN
+!                         ScanCoord%SignDihedral=Int(Sign(1.D0,DiheTmp))
+!                     ELSE
+!                         If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN
+!                           Xprimitive(IGeom,I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi
+!                        END IF
+!                   END IF
+! ! Another test... will all this be consistent ??? 
+! ! We want the shortest path, so we check that the change in dihedral angles is less than Pi:
+!                   IF (IGeom.GT.1) THEN
+!                      IF (abs(Xprimitive(IGeom,I)-XPrimitive(IGeom-1,I)).GE.Pi) THEN
+!                         if ((Xprimitive(IGeom,I)-XPrimitive(IGeom-1,I)).GE.Pi) THEN
+!                            Xprimitive(IGeom,I)=Xprimitive(IGeom,I)-2.d0*Pi
+!                         ELSE
+!                            Xprimitive(IGeom,I)=Xprimitive(IGeom,I)+2.d0*Pi
+!                         END IF
+!                      END IF
+!                   END IF
+!         END SELECT
+!         ScanCoord => ScanCoord%next
+!      END DO ! matches DO WHILE (Associated(ScanCoord%next))
+  END DO ! matches DO IGeom=1, NGeomI
+
+  IF (debug) THEN
+     WRITE(*,*) "DBG Calc_Baker Xprimitives for all geometries"
+  DO IGeom=1, NGeomI
+     WRITE(*,*) "Geometry ",IGeom
+     ScanCoord=>Coordinate
+     I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,ScanCoord%At2,Xprimitive(IGeom,I)
+        CASE ('ANGLE')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1, &
+            ScanCoord%At2, ScanCoord%At3,Xprimitive(IGeom,I)*180./Pi
+        CASE ('DIHEDRAL')
+           WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," - ",I5," = ",F15.6)') I,ScanCoord%At1,&
+           ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,Xprimitive(IGeom,I)*180./Pi
+        END SELECT
+        ScanCoord => ScanCoord%next
+     END DO ! matches DO WHILE (Associated(ScanCoord%next))
+  END DO ! matches DO IGeom=1, NGeomI
+  END IF
+  ! Here reference geometry is assigned to Geom. Earlier x,y,z(Nat) were assigned from XyzGeomI(...)
+  ! before the call of this (Calc_baker) subroutine and passed to this subroutine as arguments of the
+  ! subroutine.
+! PFL 19 Feb 2008 ->
+! In order to reproduce the B matrix in the Baker article, one has
+! to divide Geom by a0. 
+! However, this is inconsitent with our way of storing geometries
+! so we do not do it !
+
+  Geom(1,:)=XyzGeomI(IGeomRef,1,1:Nat) ! XyzGeomI(NGeomI,3,Nat)
+  Geom(2,:)=XyzGeomI(IGeomRef,2,1:Nat)
+  Geom(3,:)=XyzGeomI(IGeomRef,3,1:Nat)
+
+! <- PFL 19 Feb 2008
+
+  ! We now have to compute dq/dx...
+  ALLOCATE(BprimT(3*Nat,NPrim))
+  BprimT=0.d0
+
+  ScanCoord=>Coordinate
+  I=0
+  DO WHILE (Associated(ScanCoord%next))
+     I=I+1
+     SELECT CASE (ScanCoord%Type)
+     CASE ('BOND') 
+        CALL CONSTRAINTS_BONDLENGTH_DER(Nat,ScanCoord%at1,ScanCoord%AT2, &
+             Geom,BprimT(1,I))
+     CASE ('ANGLE')
+        CALL CONSTRAINTS_BONDANGLE_DER(Nat,ScanCoord%At1,ScanCoord%AT2, &
+             ScanCoord%At3,Geom,BprimT(1,I))
+     CASE ('DIHEDRAL')
+        CALL CONSTRAINTS_TORSION_DER2(Nat,ScanCoord%At1,ScanCoord%AT2, &
+             ScanCoord%At3,ScanCoord%At4,Geom,BprimT(1,I))
+!        CALL CONSTRAINTS_TORSION_DER(Nat,ScanCoord%At1,ScanCoord%AT2, &
+!             ScanCoord%At3,ScanCoord%At4,Geom,BprimT(1,I))
+
+     END SELECT
+     ScanCoord => ScanCoord%next
+  END DO
+
+
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !   PFL Debug
+     !
+!!!!!!!!!!!!!!!!!!!!
+
+     if (debugPFL) THEN
+        WRITe(*,*) "DBG PFL Calc_Baker ====="
+     DzDc=0.d0
+     WRITE(*,*) "PFL DBG, DzdC"
+  do I=1,Nat
+  Geom(1,i)=XyzGeomI(IGeomRef,1,orderInv(i)) ! XyzGeomI(NGeomI,3,Nat)
+  Geom(2,i)=XyzGeomI(IGeomRef,2,OrderInv(i))
+  Geom(3,i)=XyzGeomI(IGeomRef,3,OrderInv(i))
+  WRITE(*,*) I,OrderInv(I),Geom(:,I)
+    end do
+     CALL CalcBMat_int (nat, Geom, indzmat, dzdc, massat,atome)     
+
+     WRITE(*,*) "PFL DBG, BPrimT"
+     DO I=1,NPrim
+        WRITE(*,'(50(1X,F12.6))') BPrimT(:,I)
+     END DO
+        WRITe(*,*) "DBG PFL Calc_Baker ====="
+     END IF
+
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !   PFL Debug
+     !
+!!!!!!!!!!!!!!!!!!!!
+
+  DEALLOCATE(Geom)
+
+  ! BprimT(3*Nat,NPrim)
+  ! We now compute G=B(BT) matrix
+  ALLOCATE(Gmat(NPrim,NPrim))
+  GMat=0.d0
+  DO I=1,NPrim
+     DO J=1,3*Nat
+        GMat(:,I)=Gmat(:,I)+BprimT(J,:)*BprimT(J,I) !*1.d0/mass(atome(int(K/3.d0)))
+     END DO
+  END DO
+
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !   PFL Debug --->
+     !
+!!!!!!!!!!!!!!!!!!!!
+    if (debugPFL) THEN
+  GMat=0.d0
+  DO I=1,NPrim
+        GMat(I,I)=1.
+  END DO
+   END IF
+
+!!!!!!!!!!!!!!!!!!!!
+     !
+     !  <--- PFL Debug
+     !
+!!!!!!!!!!!!!!!!!!!!
+
+  !DO I=1,NPrim
+  !  WRITE(*,'(20(1X,F6.3))') GMat(1:min(20,NPrim),I)
+  !END DO
+
+  ! We diagonalize G
+  ALLOCATE(EigVal(NPrim),EigVec(NPrim,NPrim))
+  Call Jacobi(GMat,NPrim,EigVal,EigVec,NPrim)
+  Call Trie(NPrim,EigVal,EigVec,NPrim)
+  DO I=1,NPrim
+     WRITE(*,'(1X,"Vector ",I3,": e=",F8.3)') I,EigVal(i)
+     WRITE(*,'(20(1X,F8.4))') EigVec(1:min(20,NPrim),I)
+  END DO
+
+  !DO I=1,NPrim
+  ! WRITE(*,'(1X,"Vector ",I3,(20(F8.3)))') I,EigVec(1:min(20,NPrim),I)
+  ! END DO
+
+  !DO I=1,NPrim
+  !  WRITE(*,'(1X,"Vector ",I3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,F8.3,&
+  ! F8.3,F8.3,F8.3,F8.3,F8.3)') I,EigVec(1,I),EigVec(4,I),EigVec(6,I),EigVec(14,I),EigVec(16,I),&
+  !EigVec(2,I),EigVec(3,I),EigVec(5,I),EigVec(12,I),EigVec(13,I),EigVec(15,I),EigVec(7,I),&
+       !EigVec(8,I),EigVec(9,I),EigVec(10,I),EigVec(11,I),EigVec(17,I)
+  !END DO
+
+  ! We construct the new DzDc(b=baker) matrix
+  ! UMat is nonredundant vector set, i.e. set of eigenvectors of BB^T corresponding
+  ! to eigenvalues > zero.
+  ALLOCATE(UMat(NPrim,NCoord))
+  ALLOCATE(UMat_local(NPrim,NCoord))
+  ALLOCATE(UMat_tmp(NPrim,3*Nat-6))
+  ! BMat_BakerT(3*Nat,NCoord), allocated in Path.f90, 
+  ! NCoord=3*Nat-6
+  BMat_BakerT = 0.d0
+  J=0
+  UMat=0.d0
+  UMat_tmp=0.d0
+  DO I=1,NPrim
+     IF (abs(eigval(I))>=1e-6) THEN
+        J=J+1
+        DO K=1,NPrim
+           !DzDcb(:,J)=DzDcb(:,J)+Eigvec(K,I)*BprimT(:,K) ! original
+           ! BprimT is transpose of B^prim.
+           ! B = UMat^T B^prim, B^T = (B^prim)^T UMat
+           BMat_BakerT(:,J)=BMat_BakerT(:,J)+BprimT(:,K)*Eigvec(K,I)
+           !Dzdcb(:,J)=DzDcb(:,J)+Eigvec(K,:)*BprimT(I,K)		   
+        END DO
+        IF(J .GT. 3*Nat-6) THEN
+           WRITE(*,*) 'Number of vectors in Eigvec with eigval .GT. 1e-6(=UMat) (=' &
+                ,J,') exceeded 3*Nat-6=',3*Nat-6, &
+                'Stopping the calculation.'
+           STOP
+        END IF
+        UMat_tmp(:,J) =  Eigvec(:,I)
+     END IF
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "DBG Calc_Baker: UMat"
+     DO I=1,3*Nat-6
+        WRITE(*,'(50(1X,F12.8))') UMat_tmp(:,I)
+     END DO
+  END IF
+
+  ! THIS IS TO BE CORRECTED:
+  UMat = UMat_tmp
+  !J=0
+  !DO I=1, 3*Nat-6
+  !  IF ((I .NE. 6) .AND. (I .NE. 7) .AND. (I .NE. 9)) Then
+  !   J=J+1
+  !  Print *, 'J=', J, ' I=', I
+  ! UMat(:,J) = UMat_tmp(:,I)
+  !END IF
+  !END DO
+  ! BMat_BakerT=0.d0
+  !DO I=1,NCoord
+  !  DO J=1,NPrim
+  ! B = UMat^T B^prim, B^T = (B^prim)^T UMat
+  !   BMat_BakerT(:,I)=BMat_BakerT(:,I)+BprimT(:,J)*UMat(J,I)
+  !    END DO
+  !END DO
+  ! TO BE CORRECTED, ENDS HERE.
+
+  IntCoordI=0.d0
+  DO IGeom=1, NGeomI
+     DO I=1, NPrim
+        ! Transpose of UMat is needed below, that is why UMat(I,:).
+        IntCoordI(IGeom,:) = IntCoordI(IGeom,:) + UMat(I,:)*Xprimitive(IGeom,I)
+     END DO
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "DBG Calc_Baker IntCoordI"
+     DO IGeom=1, NGeomI
+        WRITE(*,'(1X,I5,":",30(1X,F10.6))') IGeom,IntCoordI(IGeom,:)
+     END DO
+  END IF
+
+
+  ! the following might be used to get rid of some coordinates that 
+  ! do not respect the symmetry of the problem.
+
+  ! ! We look at the group symmetry of the molecule. Nothing complicate here
+  ! ! we just look for planar symmetry.
+  ! ! We first place it into the standard orientation
+  !   Call Std_ori(Nat,x,y,z,a,b,c,massat)
+
+  ! ! Is the molecule planar
+  !   DO I=1,Nat
+  !      WRITE(*,*) nom(atome(i)),x(i),y(i),z(i)
+  !      END DO
+  DEALLOCATE(BprimT,GMat,EigVal,EigVec) ! BprimT is B^prim^T
+  ! Calculation of BTransInv starts here:
+  ! Calculation of BBT(3*Nat-6,3*Nat-6)=BB^T:
+  ! BMat_BakerT(3*Nat,NCoord) is Transpose of B = UMat^TB^prim
+  ALLOCATE(BBT(NCoord,NCoord))
+  BBT = 0.d0
+  DO I=1, NCoord
+     DO J=1, 3*Nat
+        ! BBT(:,I) forms BB^T
+        BBT(:,I) = BBT(:,I) + BMat_BakerT(J,:)*BMat_BakerT(J,I)
+     END DO
+  END DO
+
+  !ALLOCATE(V(3*Nat,3*Nat))
+  !Call GINVSE(BBT,3*Nat,3*Nat,BBT_inv,3*Nat,3*Nat,3*Nat,1e-6,V,3*Nat,FAIL,NOUT)
+  !DEALLOCATE(V)
+  ALLOCATE(BBT_inv(NCoord,NCoord))
+  ! GenInv is in Mat_util.f90
+  Call GenInv(NCoord,BBT,BBT_inv,NCoord)
+
+  ! Calculation of (B^T)^-1 = (BB^T)^-1B:
+  !ALLOCATE(BTransInv(3*Nat-6,3*Nat))	  ! allocated in Path.f90
+  BTransInv = 0.d0
+  DO I=1, 3*Nat
+     DO J=1, NCoord
+        BTransInv(:,I) = BTransInv(:,I) + BBT_inv(:,J)*BMat_BakerT(I,J)
+     END DO
+  END DO
+  BTransInv_local = BTransInv
+  UMat_local = UMat
+  DEALLOCATE(BBT,BBT_inv,UMat_tmp)
+  DEALLOCATE(x_refGeom,y_refGeom,z_refGeom,x,y,z)
+  IF (debug) WRITE(*,*) "DBG Calc_baker over."
+END SUBROUTINE Calc_baker
Index: src/Check_step.f90
===================================================================
--- src/Check_step.f90	(revision 0)
+++ src/Check_step.f90	(revision 1)
@@ -0,0 +1,148 @@
+! This subroutine checks that the required step fulfills some conditions:
+! v1.0
+! Only valence angles are checked to remain in to 0:Pi range.
+
+SUBROUTINE Check_step(IGeom,Coord,Nat,NCoord,GeomOld,Step)
+
+  Use Path_module, only : pi,ncart
+
+  IMPLICIT NONE
+
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  INTEGER(KINT), INTENT(IN) :: Nat,NCoord,IGeom
+  CHARACTER(32), INTENT(IN) :: Coord
+  REAL(KREAL), INTENT(INOUT) :: Step(NCoord)
+  REAL(KREAL), INTENT(IN) :: GeomOld(NCoord)
+
+  ! As this subroutine is here for debugging, debug=T !
+  LOGICAL, PARAMETER :: debug=.TRUE.
+  LOGICAL :: Fini
+
+  ! Variables
+  INTEGER(KINT) :: IBeg, Idx,Iat
+  REAL(KREAL) ::  Fact
+
+  ! Parameters
+  REAL(KREAL),PARAMETER :: eps=1e-8
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  if (.NOT.Valid("CheckStep")) RETURN
+
+  if (nat.LE.2) THEN
+     if (debug) WRITE(*,*) "Check-Step useless for 2 or less atoms !"
+     return
+  END IF
+
+  if (debug) WRITE(*,*) "=========================== Entering Check_Step ===================="
+
+  Fact=1.d0
+
+  SELECT CASE(COORD)
+  CASE ('ZMAT')
+     Idx=3
+     IF (STEP(Idx).GT.Eps) THEN
+        If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+           Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+           WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+        END IF
+        If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+           Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+           WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx
+        END IF
+     END IF
+     If (Nat.GT.3) THEN
+        Idx=5
+        IF (STEP(Idx).GE.Eps) THEN
+           If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+              Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+           END IF
+           If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+              Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx
+           END IF
+        END IF
+        DO Iat=5,Nat
+           Idx=Idx+3
+           IF (STEP(Idx).GE.Eps) THEN
+              If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+                 Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+                 WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+              END IF
+              If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+                 Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+                 WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx      
+              END IF
+           END IF
+        END DO
+     END IF
+
+  CASE ('MIXED')
+     SELECT CASE (NCart)
+     CASE (1:2)
+        Idx=3
+        IF (STEP(Idx).GE.Eps) THEN
+           If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+              Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+           END IF
+           If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+              Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx
+           END IF
+        END IF
+        IF (Nat.GT.3) THEN
+           Idx=5
+           IF (STEP(Idx).GE.Eps) THEN
+              If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+                 Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+                 WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+              END IF
+              If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+                 Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+                 WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx
+              END IF
+           END IF
+        END IF
+        IBeg=5
+     CASE (3:)
+        IBeg=NCart+1
+        Idx=3*Ncart+2
+
+     END SELECT
+     DO Iat=5,Nat
+        IF (STEP(Idx).GE.Eps) THEN
+           If (GeomOld(Idx)+Step(Idx).GE.Pi) THEN
+              Fact=min(Fact,0.999d0*(Pi-GeomOld(Idx))/Step(Idx))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle >=180. Idx=",Idx
+           END IF
+           If (GeomOld(Idx)+Step(Idx).LE.0) THEN
+              Fact=min(Fact,abs(0.999d0*GeomOld(Idx)/Step(Idx)))
+              WRITE(*,*) "WARNING: Step reduced to prevent valence angle <=0. Idx=",Idx
+           END IF
+        END IF
+        Idx=Idx+3
+     END DO
+
+  CASE ('CART','HYBRID','BAKER')
+     if (debug) WRITE(*,*) "DBG Check_step:  Check useless for COORD=",TRIM(COORD)
+  CASE DEFAULT
+     WRITE(*,*) "COORD=",TRIM(COORD)," Not recognized in Check_step"
+     STOP
+  END SELECT
+
+  If (debug) WRITE(*,*) "Check_Step: Fact=",Fact
+  Step=Step*Fact
+
+  if (debug) WRITE(*,*) "=========================== Exiting Check_Step ===================="
+
+END SUBROUTINE Check_step
Index: src/CalcCnct.f90
===================================================================
--- src/CalcCnct.f90	(revision 0)
+++ src/CalcCnct.f90	(revision 1)
@@ -0,0 +1,118 @@
+!================================================================
+! Calculation of the connectivity.
+!
+! Input:
+! Na: (INTEGER) Number of atoms in the system
+! Atome: (INTEGER) Number of mass of the atoms.
+!                  Needed to find their covalent raii.
+!  x(Nat), y(nat), z(nat) : (REAL) Cartesian coordinates of the system.
+!  LIAISONS: (INTEGER Na,0:NMaxL) Array containing the connectivity.
+!            That is Liaisons(i,:) contains the atoms linked to i.
+!            Liaisons(i,0) contains the number of atoms linked to i.
+! r_cov(0:Max_Z) (REAL) Covalent radii
+! Fact (REAL) Factor used to determined if two atoms are linked :
+!            i and j are linked if (dist(i,j)*fact <= rcov(i)+rcov(j)
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! Taken from Path_Module
+! NMaxL (INTEGER): Maximum number of bonds for one atome
+! Max_Z (INTEGER): Last atom for which I have the atomic of mass and covalent radii.
+! Nom(Nat) (STRING): Name of the atoms.
+! Prog (SCHARS): Name of the program used to calculate energies and gradients
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! v1.0 (c) PFL
+! v1.1 (c) PFL 11.2007
+! A test has been added for periodic system, ie the linked test
+! is done between i in the central cell, and j in all surrounding cells.
+!
+!================================================================
+
+SUBROUTINE CalcCnct(na,atome,x,y,z,LIAISONS,r_cov,fact)
+
+  use Path_module, only : NMaxL, max_Z,Nom,Prog, KINT, KREAL
+
+  character(2) :: ATOM
+  integer(KINT) :: na,atome(Na),at,ind_zmat(Na,5),long
+  real(KREAL) ::  x(Na),y(Na),z(Na),fact
+  real(KREAL) :: vx,vy,vz,dist
+  REAL(KREAL) :: r_cov(0:Max_Z)
+  INTEGER(KINT) :: LIAISONS(Na,0:NMaxL),Nbli,Nblj
+
+  ! For periodic systems
+  INTEGER(KINT) :: Ka,Kb,Kc
+  LOGICAL   :: Bound
+
+  ! Internals
+  logical(KREAL) ::debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('calccnct')
+  if (debug) WRITE(*,*) "======================= Entering CalcCnct ======================="
+
+  DO i=1,na
+     Liaisons(i,0)=0
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) 'CalcCnct'
+     DO iat=1,na
+        i=atome(iat)
+        WRITE(*,*) Nom(I),I,r_cov(i),r_cov(i)*fact
+     END DO
+  END IF
+
+  IF (PROG/="VASP") THEN
+     DO i=1,na
+        NbLi=LIAISONS(i,0)
+        DO j=i+1,na
+           CALL vecteur(j,i,x,y,z,vx,vy,vz,dist)
+           dist=dist/fact
+           distth=(r_cov(atome(i))+r_cov(atome(j)))/100.
+!           if (debug) WRITE(*,*) atome(i),atome(j),dist,distth
+           if (dist.le.distth) THEN
+              NbLi=NbLi+1
+              LIAISONS(i,NbLi)=j;
+              NBlj=LIAISONS(j,0)+1
+              LIAISONS(j,Nblj)=i;
+              LIAISONS(j,0)=Nblj
+           END IF
+        END DO
+        LIAISONS(i,0)=Nbli
+     END DO
+  ELSE
+     DO i=1,na
+        NbLi=LIAISONS(i,0)
+        DO j=i+1,na
+           Bound=.FALSE.
+           DO ka=-1,1
+              DO Kb=-1,1
+                 DO Kc=-1,1
+                    CALL VectorPer(j,i,ka,kb,kc,x,y,z,vx,vy,vz,dist)
+                    dist=dist/fact
+                    distth=(r_cov(atome(i))+r_cov(atome(j)))/100.
+!                    if (debug) WRITE(*,*) atome(i),atome(j),dist,distth
+                    if (dist.le.distth) Bound=.TRUE.
+                 END DO
+              END DO
+           END DO
+           IF (Bound) THEN
+              if (debug) WRITE(*,*) "Adding a bond between:",i,j
+              NbLi=NbLi+1
+              LIAISONS(i,NbLi)=j;
+              NBlj=LIAISONS(j,0)+1
+              LIAISONS(j,Nblj)=i;
+              LIAISONS(j,0)=Nblj
+           END IF
+        END DO
+        LIAISONS(i,0)=Nbli
+     END DO
+  END IF
+  if (debug) WRITE(*,*) "======================= CalcCnct  over ======================="
+END SUBROUTINE CalcCnct

Property changes on: src/CalcCnct.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/egrad_vasp.f90
===================================================================
--- src/egrad_vasp.f90	(revision 0)
+++ src/egrad_vasp.f90	(revision 1)
@@ -0,0 +1,165 @@
+subroutine egrad_vasp(e,geomcart,gradcart)
+
+  ! This routines calculates the energy and the gradient of 
+  ! a molecule, using VASP
+
+
+  use Path_module, only : Nat, renum,Order,OrderInv,AtName, Coord, dzdc, &
+       indzmat,Nom,Atome, massat, unit,Nfroz,Frozen,ProgExe,Latr,FrozAtoms
+  use Io_module
+
+  !
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: e
+  ! Nb degree of freedom
+  REAL(KREAL), INTENT (IN) :: geomcart(Nat,3)
+  ! Gradient calculated at Geom geometry
+  REAL(KREAL), INTENT (OUT) :: gradcart(3*NAt)
+
+  ! ======================================================================
+
+  character(LCHARS) :: LINE
+
+  REAL(KREAL) :: d, a_val, Pi
+
+  INTEGER(KINT) :: iat, jat, kat, i, j, n3at, Nfr
+  REAL(KREAL) :: RTmp1, RTmp2, RTmp3
+
+  !
+  CHARACTER(132), PARAMETER :: FileIn='POSCAR', FileOut='OUTCAR'
+
+  CHARACTER(VLCHARS), SAVE :: RunCommand
+  INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit
+
+  INTEGER(KINT) :: IGeom, Idx
+!  REAL(KREAL), ALLOCATABLE :: GeomTmpC(:), GeomTmp(:)
+  REAL(KREAL) :: MRot(3,3), Rmsd
+
+  REAL(KREAL) :: X,Y,Z
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  Pi=dacos(-1.0d0)
+  debug=valid('EGRAD')
+  if (debug) Call header('Entering Egrad_VASP')
+
+  n3at=3*nat
+
+!  ALLOCATE(GeomTmpC(n3at))
+
+
+  gradcart=0.
+  E=0.
+  RunCommand=Trim(ProgExe) 
+
+  IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(RunCommand)
+
+  ! we create the input file
+
+!   write(*,*) "Coucou 2"
+
+  OPEN(IOTMP,File=FileIn)
+
+  ! we convert the coordinates into Cartesian coordinates
+!     GeomTmpC=Reshape(GeomCart,SHAPE=(/3*Nat/))
+
+   Call PrintGeomVasp(Vasp_Title,geomcart,Latr,FrozAtoms,IoTmp)
+
+  CLOSE(IOTMP)
+
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG EGRAD ' //  Trim(FileIn),' COORD=',TRIM(COORD)
+     call system('cat ' // Trim(FileIn))
+  END IF
+
+  call system(RunCommand)
+
+  if (debug) WRITE(*,*) 'DBG EGRAD_VASP, back from calculation'
+!  if (debug) WRITE(*,*) "DBG EGRAD_VASP Order(I)",Order(1:Nat)
+
+  ! Whatever the coordinate system, we read the cartesian gradient
+  ! and we convert it to Zmat or other if needed
+
+  OPEN(IOTMP,FILE=FileOut, STATUS='old')
+  ! We first search for the forces
+  READ(IOTMP,'(A)',END=999,ERR=999) LINE
+! We search for the  last part of the OUTCAR file, after wavefunction is converged
+  DO WHILE (INDEX(LINE,'EDIFF is reached')==0)
+     READ(IOTMP,'(A)',END=999,ERR=999) LINE
+  END DO
+  READ(IOTMP,'(A)',END=999,ERR=999) LINE
+  DO WHILE (INDEX(LINE,'TOTEN')==0)
+     READ(IOTMP,'(A)',END=999,ERR=999) LINE
+  END DO
+  Line=Line(26:)
+  READ(LINE,*) E
+  if (debug) WRITE(*,'(1X,A,F20.6)') "DBG Egrad_VASP E=",E
+
+! We search for the forces
+  DO WHILE (INDEX(LINE,'TOTAL-FORCE')==0)
+     READ(IOTMP,'(A)',END=999,ERR=999) LINE
+  END DO
+  READ(IOTMP,'(A)',END=999,ERR=999) LINE
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     READ(IOTMP,*,END=999,ERR=999)  Rtmp1,RTmp2,RTmp3,GradCart(3*Iat-2:3*Iat)
+  END DO
+
+
+  if (debug) THEN
+     WRITE(*,*) "DBG EGRAD_VASP - GradCart=FORCES - original order"
+     DO I=1,Nat
+        Iat=Order(I)
+        WRITE(*,'(1X,I5,3(1X,F20.6))') I,GradCart(3*Iat-2:3*Iat)
+     END DO
+     WRITE(*,*) "DBG EGRAD_VASP - GradCart=FORCES - internal order"
+     DO I=1,Nat
+        Iat=Order(I)
+        WRITE(*,'(3(1X,I5),3(1X,F20.6))') I,Iat,OrderInv(I),GradCart(3*I-2:3*I)
+     END DO
+  END IF
+
+  ! VASP gives the Forces in eV/Angstrom, so we convert it into the 
+  ! gradient in ua/Angstrom 
+    gradCart=-1.0d0*ev2Au*gradCart
+
+  !  if (debug.AND.(COORD.EQ.'ZMAT')) THEN
+  !     DO WHILE (INDEX(LINE,'Internal Coordinate Forces')==0)
+  !        READ(IOTMP,'(A)') LINE
+  !!        WRITE(*,*) 'Pas bon:' // TRIM(LINE)
+  !     END DO
+  !     WRITE(*,*) TRIM(LINE)
+  !     DO I=1,Nat+2
+  !        READ(IOTMP,'(A)') LINE
+  !        WRITE(*,*) TRIM(LINE)
+  !     END DO
+  !  END IF
+
+  CLOSE(IOTMP)
+
+!  DeALLOCATE(GeomTmpC)
+
+
+  if (debug) Call header('Egrad_VASP Over')
+
+  RETURN
+
+999 CONTINUE
+  WRITE(*,*) 'We should not be here !!!!'
+  STOP
+  ! ======================================================================
+end subroutine egrad_vasp
+
+
+
+
Index: src/Step_DIIS_all.f90
===================================================================
--- src/Step_DIIS_all.f90	(revision 0)
+++ src/Step_DIIS_all.f90	(revision 1)
@@ -0,0 +1,422 @@
+!C  HEAT is never used, not even in call of Space(...)
+!C  Geom = input parameter vector (Geometry).
+!C  Grad = input gradient vector.
+!C  Geom_new = New Geometry.
+
+	  SUBROUTINE Step_diis_all(NGeomF,IGeom,Step,Geom,Grad,HP,HEAT,Hess,NCoord,allocation_flag,Tangent)
+!      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+
+	  USE Io_module, only : IoOut 
+      USE Path_module, only : Vfree
+	  
+      IMPLICIT NONE
+      INTEGER, parameter :: KINT = kind(1)
+      INTEGER, parameter :: KREAL = kind(1.0d0)
+
+!      INCLUDE 'SIZES'
+
+      INTEGER(KINT) :: NGeomF,IGeom
+      REAL(KREAL) :: Geom_new(NCoord),Geom(NCoord),Grad(NCoord)
+	  REAL(KREAL) :: Hess(NCoord*NCoord),Step(NCoord)
+      REAL(KREAL) :: HEAT,HP
+	  LOGICAL :: allocation_flag
+	  INTEGER(KINT), INTENT(IN) :: NCoord
+	  REAL(KREAL), INTENT(INOUT) :: Tangent(Ncoord)
+
+!************************************************************************
+!*                                                                      *
+!*     DIIS PERFORMS DIRECT INVERSION IN THE ITERATIVE SUBSPACE         *
+!*                                                                      *
+!*     THIS INVOLVES SOLVING FOR C IN Geom(NEW) = Geom' - HG'			*
+!*                                                                      *
+!*  WHERE Geom' = SUM(C(I)Geom(I), THE C COEFFICIENTES COMING FROM      *
+!*                                                                      *
+!*                   | B   1 | . | C | = | 0 |                          *
+!*                   | 1   0 |   |-L |   | 1 |                          *
+!*                                                                      *
+!*  WHERE B(I,J) =GRAD(I)H(T)HGRAD(J)  GRAD(I) = GRADIENT ON CYCLE I    *
+!*                              Hess    = INVERSE HESSIAN				*
+!*                                                                      *
+!*                          REFERENCE                                   *
+!*                                                                      *
+!*  P. CSASZAR, P. PULAY, J. MOL. STRUCT. (THEOCHEM), 114, 31 (1984)    *
+!*                                                                      *
+!************************************************************************
+!************************************************************************
+!*                                                                      *
+!*     GEOMETRY OPTIMIZATION USING THE METHOD OF DIRECT INVERSION IN    *
+!*     THE ITERATIVE SUBSPACE (GDIIS), COMBINED WITH THE BFGS OPTIMIZER *
+!*     (A VARIABLE METRIC METHOD)                                       *
+!*                                                                      *
+!*     WRITTEN BY PETER L. CUMMINS, UNIVERSITY OF SYDNEY, AUSTRALIA     *
+!*                                                                      *
+!*                              REFERENCE                               *
+!*                                                                      *
+!*      "COMPUTATIONAL STRATEGIES FOR THE OPTIMIZATION OF EQUILIBRIUM   *
+!*     GEOMETRIES AND TRANSITION-STATE STRUCTURES AT THE SEMIEMPIRICAL  *
+!*     LEVEL", PETER L. CUMMINS, JILL E. GREADY, J. COMP. CHEM., 10,    *
+!*     939-950 (1989).                                                  *
+!*                                                                      *
+!*     MODIFIED BY JJPS TO CONFORM TO EXISTING MOPAC CONVENTIONS        *
+!*                                                                      *
+!************************************************************************
+
+      ! MRESET = maximum number of iterations.
+      INTEGER(KINT), PARAMETER :: MRESET=15, M2=(MRESET+1)*(MRESET+1) !M2 = 256
+      REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet(:,:),GradSet(:,:),ERR(:,:) ! MRESET*NCoord
+      REAL(KREAL), SAVE :: ESET(MRESET)
+	  REAL(KREAL), ALLOCATABLE, SAVE :: DXTMP(:,:),GSAVE(:,:) !NCoord, why DXTMP has SAVE attribute??
+      REAL(KREAL) :: B(M2),BS(M2),BST(M2)
+      LOGICAL DEBUG, PRINT
+      INTEGER(KINT), ALLOCATABLE, SAVE :: MSET(:)
+	  LOGICAL, ALLOCATABLE, SAVE :: FRST(:)
+      INTEGER(KINT) :: NDIIS, MPLUS, INV, ITERA, MM, NFree, I, J, K
+      INTEGER(KINT) :: JJ, KJ, JNV, II, IONE, IJ, INK,ITmp, Isch, Idx
+      REAL(KREAL) :: XMax, XNorm, S, DET, THRES, Norm
+	  REAL(KREAL), PARAMETER :: eps=1e-12
+	  REAL(KREAL), PARAMETER :: crit=1e-8
+	  REAL(KREAL), ALLOCATABLE :: Tanf(:) ! NCoord
+	  REAL(KREAL), ALLOCATABLE :: HFree(:) ! NFree*NFree
+	  REAL(KREAL), ALLOCATABLE :: Htmp(:,:) ! NCoord,NFree
+	  REAL(KREAL), ALLOCATABLE :: Grad_free(:),Grad_new_free_inter(:),Step_free(:) ! NFree
+	  REAL(KREAL), ALLOCATABLE :: Geom_free(:),Geom_new_free_inter(:),Geom_new_free(:) ! NFree
+	  REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet_free(:,:),GradSet_free(:,:)
+	  
+      DEBUG=.TRUE.
+      PRINT=.TRUE.
+
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN GDIIS   '')')
+	  
+      ! Initialization
+      IF (allocation_flag) THEN ! allocation_flag = .TRUE. at the begining and effective for all geometries in path.
+      ! FRST(IGeom) will be set to False in Space, so no need to modify it here
+         IF (ALLOCATED(GeomSet)) THEN
+            IF (PRINT)  WRITE(*,'(/,''    In FRST, GDIIS Dealloc  '')')
+            DEALLOCATE(GeomSet,GradSet,ERR,DXTMP,GSave,GeomSet_free,GradSet_free)
+            RETURN
+         ELSE
+		    ! these allocated arrays need to be properly deallocated.
+            IF (PRINT)  WRITE(*,'(/,''     In FRST,  GDIIS Alloc  '')')
+            ALLOCATE(GeomSet(NGeomF,MRESET*NCoord),GradSet(NGeomF,MRESET*NCoord),ERR(NGeomF,MRESET*NCoord))
+			ALLOCATE(GeomSet_free(NGeomF,MRESET*NCoord),GradSet_free(NGeomF,MRESET*NCoord))
+            ALLOCATE(DXTMP(NGeomF,NCoord),GSAVE(NGeomF,NCoord),MSET(NGeomF),FRST(NGeomF))
+			DO I=1,NGeomF
+			   FRST(I) = .TRUE.
+			   GeomSet(I,:) = 0.d0
+			   GradSet(I,:) = 0.d0
+			   ERR(I,:) = 0.d0
+			   GeomSet_free(I,:) = 0.d0
+			   GradSet_free(I,:) = 0.d0
+			   DXTMP(I,:)=0.d0
+			   GSAVE(I,:)=0.d0
+			END DO
+			MSET(:)=0
+         END IF
+		 allocation_flag = .FALSE.
+      END IF
+	  
+      ! Addded from here:
+	  Call FreeMv(NCoord,Vfree) ! VFree(Ncoord,Ncoord)
+      ! we orthogonalize Vfree to the tangent vector of this geom only if Tangent/=0.d0
+      Norm=sqrt(dot_product(Tangent,Tangent))
+      IF (Norm.GT.eps) THEN
+         ALLOCATE(Tanf(NCoord))
+
+         ! We normalize Tangent
+         Tangent=Tangent/Norm
+
+         ! We convert Tangent into Vfree only displacements. This is useless for now (2007.Apr.23)
+		 ! as Vfree=Id matrix but it will be usefull as soon as we introduce constraints.
+         DO I=1,NCoord
+            Tanf(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Tangent)
+         END DO
+         Tangent=0.d0
+         DO I=1,NCoord
+            Tangent=Tangent+Tanf(I)*Vfree(:,I)
+         END DO
+         ! first we subtract Tangent from vfree
+         DO I=1,NCoord
+            Norm=dot_product(reshape(vfree(:,I),(/NCoord/)),Tangent)
+            Vfree(:,I)=Vfree(:,I)-Norm*Tangent
+		 END DO
+
+         Idx=0.
+         ! Schmidt orthogonalization of the Vfree vectors
+         DO I=1,NCoord
+            ! We subtract the first vectors, we do it twice as the Schmidt procedure is not numerically stable.
+            DO Isch=1,2
+               DO J=1,Idx
+                  Norm=dot_product(reshape(Vfree(:,I),(/NCoord/)),reshape(Vfree(:,J),(/NCoord/)))
+                  Vfree(:,I)=Vfree(:,I)-Norm*Vfree(:,J)
+               END DO
+            END DO
+            Norm=dot_product(reshape(Vfree(:,I),(/NCoord/)),reshape(Vfree(:,I),(/NCoord/)))
+            IF (Norm.GE.crit) THEN
+               Idx=Idx+1
+               Vfree(:,Idx)=Vfree(:,I)/sqrt(Norm)
+            END IF
+         END DO
+		   
+         Print *, 'Idx=', Idx
+         IF (Idx/= NCoord-1) THEN
+            WRITE(*,*) "Pb in orthogonalizing Vfree to tangent for geom",IGeom
+            WRITE(IoOut,*) "Pb in orthogonalizing Vfree to tangent for geom",IGeom
+            STOP
+         END IF
+     
+         DEALLOCATE(Tanf)
+         NFree=Idx
+      ELSE ! Tangent =0, matches IF (Norm.GT.eps) THEN
+         if (debug) WRITE(*,*) "Tangent=0, using full displacement"
+         NFree=NCoord
+      END IF !IF (Norm.GT.eps) THEN
+  
+      if (debug) WRITE(*,*) 'DBG Step_DIIS_All, IGeom, NFree=', IGeom, NFree
+
+      ! We now calculate the new step
+      ! we project the hessian onto the free vectors
+      ALLOCATE(HFree(NFree*NFree),Htmp(NCoord,NFree),Grad_free(NFree),Grad_new_free_inter(NFree))
+	  ALLOCATE(Geom_free(NFree),Step_free(NFree),Geom_new_free_inter(NFree),Geom_new_free(NFree))
+      DO J=1,NFree
+        DO I=1,NCoord
+           Htmp(I,J)=0.d0
+           DO K=1,NCoord
+              Htmp(I,J)=Htmp(I,J)+Hess(((I-1)*NCoord)+K)*Vfree(K,J)
+           END DO
+        END DO
+      END DO
+      DO J=1,NFree
+        DO I=1,NFree
+		   HFree(I+((J-1)*NFree))=0.d0
+           DO K=1,NCoord
+			  HFree(I+((J-1)*NFree))=HFree(I+((J-1)*NFree))+Vfree(K,I)*Htmp(K,J)
+           END DO
+        END DO
+      END DO
+
+      DO I=1,NFree
+         Grad_free(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Grad)
+		 Geom_free(I)=dot_product(reshape(Vfree(:,I),(/NCoord/)),Geom)
+      END DO
+      !Added Ends here.***********************************************
+	  
+!C  SPACE SIMPLY LOADS THE CURRENT VALUES OF Geom AND GRAD INTO
+!C  THE ARRAYS GeomSet AND GradSet
+!C  HEAT is never used, not even in Space_all(...)
+
+      CALL Space_all(NGeomF,IGeom,MRESET,MSET,Geom,Grad,HEAT,NCoord,GeomSet,GradSet,ESET,FRST)
+	  
+      IF (PRINT)  WRITE(*,'(/,''       GDIIS after Space  '')')
+	  
+	  DO J=1,MSet(IGeom)
+         DO K=1,NFree
+            GradSet_free(IGeom,((J-1)*NFree)+K)=dot_product(reshape(Vfree(:,K),(/NCoord/)),&
+	     			  GradSet(IGeom,((J-1)*NCoord)+1:((J-1)*NCoord)+NCoord))
+		    GeomSet_free(IGeom,((J-1)*NFree)+K)=dot_product(reshape(Vfree(:,K),(/NCoord/)),&
+			          GeomSet(IGeom,((J-1)*NCoord)+1:((J-1)*NCoord)+NCoord))
+         END DO
+	  END DO	  
+!C
+!C     INITIALIZE SOME VARIABLES AND CONSTANTS
+!C
+      NDIIS = MSET(IGeom)
+      MPLUS = MSET(IGeom) + 1
+      MM = MPLUS * MPLUS	  	  	  
+!C
+!C     COMPUTE THE APPROXIMATE ERROR VECTORS
+!C
+      INV=-NFree
+      DO 30 I=1,MSET(IGeom)
+         INV = INV + NFree
+         DO 30 J=1,NFree
+            S = 0.D0
+            KJ=(J*(J-1))/2
+            DO 10 K=1,J
+               KJ = KJ+1
+   10       S = S - HFree(KJ) * GradSet_free(IGeom,INV+K)
+            DO 20 K=J+1,NFree
+               KJ = (K*(K-1))/2+J
+   20       S = S - HFree(KJ) * GradSet_free(IGeom,INV+K)
+   30 ERR(IGeom,INV+J) = S
+   
+!C
+!C     CONSTRUCT THE GDIIS MATRIX
+!C
+      DO 40 I=1,MM
+   40 B(I) = 1.D0
+   
+      JJ=0
+      INV=-NFree
+      DO 50 I=1,MSET(IGeom)
+         INV=INV+NFree
+         JNV=-NFree
+         DO 50 J=1,MSET(IGeom)
+            JNV=JNV+NFree
+            JJ = JJ + 1
+            B(JJ)=0.D0
+            DO 50 K=1,NFree
+			!Print *, 'B(',JJ,')=', B(JJ) + ERR(IGeom,INV+K) * ERR(IGeom,JNV+K)
+   50 B(JJ) = B(JJ) + ERR(IGeom,INV+K) * ERR(IGeom,JNV+K)
+
+     ! The following shifting is required to correct indices of B_ij elements in the GDIIS matrix.
+	 ! The correction is needed because the last coloumn of the matrix contains all 1 and one zero.
+      DO 60 I=MSET(IGeom)-1,1,-1
+         DO 60 J=MSET(IGeom),1,-1
+   60 B(I*MSET(IGeom)+J+I) = B(I*MSET(IGeom)+J)
+   
+      ! For the last row and last column of GEDIIS matrix:
+      DO 70 I=1,MPLUS
+         B(MPLUS*I) = 1.D0
+   70 B(MPLUS*MSET(IGeom)+I) = 1.D0
+      B(MM) = 0.D0
+!C
+!C     ELIMINATE ERROR VECTORS WITH THE LARGEST NORM
+!C
+   80 CONTINUE
+      DO 90 I=1,MM
+   90 BS(I) = B(I)
+   
+      IF (NDIIS .EQ. MSET(IGeom)) GO TO 140
+      DO 130 II=1,MSET(IGeom)-NDIIS
+         XMAX = -1.D10
+         ITERA = 0
+         DO 110 I=1,MSET(IGeom)
+            XNORM = 0.D0
+            INV = (I-1) * MPLUS
+            DO 100 J=1,MSET(IGeom)
+  100       XNORM = XNORM + ABS(B(INV + J))
+            IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+               XMAX = XNORM
+               ITERA = I
+               IONE = INV + I
+            ENDIF
+  110    CONTINUE
+  
+         DO 120 I=1,MPLUS
+            INV = (I-1) * MPLUS
+            DO 120 J=1,MPLUS
+               JNV = (J-1) * MPLUS
+               IF (J.EQ.ITERA) B(INV + J) = 0.D0
+               B(JNV + I) = B(INV + J)
+			   !Print *,'B(JNV + I)=',B(JNV + I)
+  120    CONTINUE
+         B(IONE) = 1.0D0
+  130 CONTINUE
+  140 CONTINUE
+!C
+!C     OUTPUT THE GDIIS MATRIX
+!C
+      IF (DEBUG) THEN
+         WRITE(*,'(/5X,'' GDIIS MATRIX'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F12.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO
+      ENDIF
+!C
+!C     SCALE DIIS MATRIX BEFORE INVERSION
+!C
+      DO 160 I=1,MPLUS
+         II = MPLUS * (I-1) + I
+		 !Print *, 'B(',II,')=', B(II)
+		 !Print *, 'GSave(',IGeom,',',I,')=', 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+  160 GSAVE(IGeom,I) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+  
+      GSAVE(IGeom,MPLUS) = 1.D0
+      !Print *, 'GSave(',IGeom,',',MPlus,')=1.D0'  
+	  	  
+      DO 170 I=1,MPLUS
+         DO 170 J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+  170 B(IJ) = B(IJ) * GSAVE(IGeom,I) * GSAVE(IGeom,J)  
+!C
+!C     OUTPUT SCALED GDIIS MATRIX
+!C
+      IF (DEBUG) THEN
+         WRITE(*,'(/5X,'' GDIIS MATRIX (SCALED)'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F12.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO            
+      ENDIF
+!C
+!C     INVERT THE GDIIS MATRIX B
+!C
+      CALL MINV(B,MPLUS,DET) ! matrix inversion.
+
+      DO 190 I=1,MPLUS
+         DO 190 J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+			!Print *, 'B(',IJ,')=', B(IJ)
+			!Print *, 'GSAVE(',IGeom,',',I,')=', GSAVE(IGeom,I)
+			!Print *, 'GSAVE(',IGeom,',',J,')=', GSAVE(IGeom,J)
+			!Print *, 'B(',IJ,')=', B(IJ) * GSAVE(I) * GSAVE(J)
+  190 B(IJ) = B(IJ) * GSAVE(IGeom,I) * GSAVE(IGeom,J)
+!C
+!C     COMPUTE THE INTERMEDIATE INTERPOLATED PARAMETER AND GRADIENT VECTORS
+!C
+      !Print *, 'MSET(',IGeom,')=', MSET(IGeom), ' MPLUS=', MPLUS
+      DO 200 K=1,NFree
+         Geom_new_free_inter(K) = 0.D0
+         Grad_new_free_inter(K) = 0.D0
+         DO 200 I=1,MSET(IGeom)
+            INK = (I-1) * NFree + K
+            Geom_new_free_inter(K) = Geom_new_free_inter(K) + B(MPLUS*MSET(IGeom)+I) * GeomSet_free(IGeom,INK)
+			!Print *, 'Geom_new_free_inter(',K,')=', Geom_new_free_inter(K)
+			!Print *, 'B(MPLUS*MSET(',IGeom,')+',I,')=', B(MPLUS*MSET(IGeom)+I)
+			!Print *, 'GeomSet_free(',IGeom,',',INK,')=', GeomSet_free(IGeom,INK)
+  200 Grad_new_free_inter(K) = Grad_new_free_inter(K) + B(MPLUS*MSET(IGeom)+I) * GradSet_free(IGeom,INK)
+      HP=0.D0
+      DO 210 I=1,MSET(IGeom)
+  210 HP=HP+B(MPLUS*MSET(IGeom)+I)*ESET(I)
+      DO 220 K=1,NFree
+  220 DXTMP(IGeom,K) = Geom_free(K) - Geom_new_free_inter(K)
+      XNORM = SQRT(DOT_PRODUCT(DXTMP(IGeom,1:NFree),DXTMP(IGeom,1:NFree)))
+      IF (PRINT) THEN
+         WRITE (6,'(/10X,''DEVIATION IN X '',F10.6, 8X,''DETERMINANT '',G9.3)') XNORM,DET
+         WRITE(*,'(10X,''GDIIS COEFFICIENTS'')')
+         WRITE(*,'(10X,5F12.5)') (B(MPLUS*MSET(IGeom)+I),I=1,MSET(IGeom))
+      ENDIF
+
+!C     THE FOLLOWING TOLERENCES FOR XNORM AND DET ARE SOMEWHAT ARBITRARY!
+      THRES = MAX(10.D0**(-NFree), 1.D-25)
+      IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+         IF (PRINT)THEN
+            WRITE(*,*) "THE DIIS MATRIX IS ILL CONDITIONED"     
+            WRITE(*,*) " - PROBABLY, VECTORS ARE LINEARLY DEPENDENT - "
+            WRITE(*,*) "THE DIIS STEP WILL BE REPEATED WITH A SMALLER SPACE"
+         END IF
+         DO 230 K=1,MM
+  230    B(K) = BS(K)
+         NDIIS = NDIIS - 1
+         IF (NDIIS .GT. 0) GO TO 80
+         IF (PRINT) WRITE(*,'(10X,''NEWTON-RAPHSON STEP TAKEN'')')
+         DO 240 K=1,NFree
+            Geom_new_free_inter(K) = Geom_free(K)
+  240       Grad_new_free_inter(K) = Grad_free(K)
+      ENDIF ! matches IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN, L378
+	  
+	  ! q_{m+1} = q'_{m+1} - H^{-1}g'_{m+1}
+	  Geom_new_free=0.d0
+	  DO I = 1, NFree
+	     DO J = 1, NFree
+	        ! If Hinv=.False., then we need to invert Hess
+		    !Geom_new_free(:) = Geom_new_free(:) + HFree(:,I)*Grad_new_free_inter(I)
+		   Geom_new_free(J) = Geom_new_free(J) + HFree(I+((J-1)*NFree))*Grad_new_free_inter(I)
+		 END DO
+	  END DO
+	  Geom_new_free(:) = Geom_new_free_inter(:) - Geom_new_free(:)
+	  
+	  Step_free = Geom_new_free - Geom_free
+      
+	  Step = 0.d0
+      DO I=1,NFree
+		 Step = Step + Step_free(I)*Vfree(:,I)
+      END DO
+
+      DEALLOCATE(Hfree,Htmp,Grad_free,Grad_new_free_inter,Step_free,Geom_free)
+      DEALLOCATE(Geom_new_free_inter,Geom_new_free)
+	  
+	  IF (PRINT)  WRITE(*,'(/,''       END GDIIS  '',/)')
+	  
+      END SUBROUTINE Step_diis_all

Property changes on: src/Step_DIIS_all.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Calc_baker_allGeomF.f90
===================================================================
--- src/Calc_baker_allGeomF.f90	(revision 0)
+++ src/Calc_baker_allGeomF.f90	(revision 1)
@@ -0,0 +1,280 @@
+SUBROUTINE Calc_baker_allGeomF()
+  !     
+  ! This subroutine analyses a geometry to construct the baker
+  ! delocalized internal coordinates
+  ! v1.0
+  ! We use only one geometry
+  !     
+  Use Path_module, only : Pi,a0,BMat_BakerT,Nat,NCoord,XyzGeomI,NGeomI,UMatF, &
+                          NPrim,BTransInvF,IntCoordI,Coordinate,CurrentCoord, &
+						  ScanCoord,BprimT,BBT,BBT_inv,XprimitiveF,Symmetry_elimination, &
+						  NgeomF,XyzGeomF
+  ! BMat_BakerT(3*Nat,NCoord), NCoord=3*Nat or NFree=3*Nat-6-Symmetry_elimination
+  ! depending upon the coordinate choice. IntCoordI(NGeomI,NCoord) where 
+  ! UMatF(NGeomI,NPrim,NCoord), NCoord number of vectors in UMat matrix, i.e. NCoord
+  ! Baker coordinates. NPrim is the number of primitive internal coordinates.
+  
+  Use Io_module
+  IMPLICIT NONE
+
+  REAL(KREAL), ALLOCATABLE :: Geom(:,:) !(3,Nat)
+  ! NPrim is the number of primitive coordinates and NCoord is the number
+  ! of internal coordinates. BMat is actually (NPrim,3*Nat).
+  REAL(KREAL), ALLOCATABLE :: GMat(:,:) !(NPrim,NPrim)
+  ! EigVec(..) contains ALL eigevectors of BMat times BprimT, NOT only Baker Coordinate vectors.
+  REAL(KREAL), ALLOCATABLE :: EigVec(:,:), EigVal(:) ! EigVec(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:)
+  REAL(KREAL), ALLOCATABLE :: XPrimRef(:) ! NPrim
+  INTEGER(KINT) :: IGeom
+  
+  real(KREAL) ::  vx,vy,vz,dist, Norm
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d, Q, T
+
+  INTEGER(KINT) :: I,J, n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
+  INTEGER(KINT) :: I0, IOld, IAtTmp, Izm, JAt, Kat, Lat, L, NOUT
+
+  REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat
+  REAL(KREAL) :: DiheTmp
+
+  LOGICAL :: debug, bond, AddPrimitiveCoord, FAIL
+  LOGICAL :: DebugPFL
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+
+
+     SUBROUTINE Calc_Xprim(nat,x,y,z,Coordinate,NPrim,XPrimitive,XPrimRef)
+       !     
+       ! This subroutine uses the description of a list of Coordinates
+       ! to compute the values of the coordinates for a given geometry.
+       !
+!!!!!!!!!!
+       ! Input:
+       !   Na: INTEGER, Number of atoms
+       !  x,y,z(Na): REAL, cartesian coordinates of the considered geometry
+       ! Coordinate (Pointer(ListCoord)): description of the wanted coordiantes
+       ! NPrim, INTEGER: Number of coordinates to compute
+       !
+       ! Optional: XPrimRef(NPrim) REAL: array that contains coordinates values for
+       ! a former geometry. Useful for Dihedral angles evolution...
+
+!!!!!!!!!!!
+       ! Output:
+       ! XPrimimite(NPrim) REAL: array that will contain the values of the coordinates
+       !
+!!!!!!!!!
+
+       Use VarTypes
+       Use Io_module
+       Use Path_module, only : pi
+
+       IMPLICIT NONE
+
+       Type (ListCoord), POINTER :: Coordinate
+       INTEGER(KINT), INTENT(IN) :: Nat,NPrim
+       REAL(KREAL), INTENT(IN) :: x(Nat), y(Nat), z(Nat)
+       REAL(KREAL), INTENT(IN), OPTIONAL :: XPrimRef(NPrim) 
+       REAL(KREAL), INTENT(OUT) :: XPrimitive(NPrim)
+
+     END SUBROUTINE CALC_XPRIM
+  END INTERFACE
+
+
+
+
+  debug=valid("Calc_baker_allGeomF")
+  debugPFL=valid("bakerPFL")
+  if (debug) WRITE(*,*) '============ Entering Calc_baker_allGeomF ============='
+
+  ALLOCATE(Geom(3,Nat),x(Nat),y(Nat),z(Nat))
+  ALLOCATE(XPrimRef(NPrim))
+ 
+  ! Now calculating values of all primitive bonds for all final geometries:
+  DO IGeom=1, NGeomF
+     x(1:Nat) = XyzGeomF(IGeom,1,1:Nat)
+     y(1:Nat) = XyzGeomF(IGeom,2,1:Nat)
+     z(1:Nat) = XyzGeomF(IGeom,3,1:Nat)
+     XPrimREf=XPrimitiveF(IGeom,:)
+     Call Calc_XPrim(nat,x,y,z,Coordinate,NPrim,XPrimitiveF(IGeom,:),XPrimRef)
+!    ScanCoord=>Coordinate
+!    I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+!    DO WHILE (Associated(ScanCoord%next))
+!      I=I+1
+!      SELECT CASE (ScanCoord%Type)
+!       CASE ('BOND')
+!	     Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!	          XprimitiveF(IGeom,I) = Norm2  
+!       CASE ('ANGLE')
+!		 Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx1,vy1,vz1,Norm1)
+!		 Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2)
+!		      XprimitiveF(IGeom,I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180.
+!	   CASE ('DIHEDRAL')
+!		 Call vecteur(ScanCoord%At3,ScanCoord%At2,x,y,z,vx2,vy2,vz2,Norm2)
+!		 Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1)
+!		 Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3)
+!		 Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
+!                         vx5,vy5,vz5,norm5)
+!		 Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
+!                         vx4,vy4,vz4,norm4)
+!                 DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, &
+!                         vx2,vy2,vz2,norm2)
+!                 XprimitiveF(IGeom,I) = DiheTmp*Pi/180.
+!! We treat large dihedral angles differently as +180=-180 mathematically and physically
+!! but this causes lots of troubles when converting baker to cart.
+!! So we ensure that large dihedral angles always have the same sign
+!                    if (abs(ScanCoord%SignDihedral).NE.1) THEN
+!                        ScanCoord%SignDihedral=Int(Sign(1.d0,DiheTmp))
+!                    ELSE
+!                         If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN
+!                          XprimitiveF(IGeom,I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi
+!                        END IF
+!                    END IF
+!      END SELECT
+!      ScanCoord => ScanCoord%next
+!    END DO ! matches DO WHILE (Associated(ScanCoord%next))
+  END DO ! matches DO IGeom=1, NGeomF
+   
+  ALLOCATE(BprimT(3*Nat,NPrim))
+  ALLOCATE(Gmat(NPrim,NPrim))
+  ALLOCATE(EigVal(NPrim),EigVec(NPrim,NPrim))
+  ALLOCATE(BBT(NCoord,NCoord))
+  ALLOCATE(BBT_inv(NCoord,NCoord))
+  BTransInvF = 0.d0
+
+  DO IGeom=1, NGeomF 
+     Geom(1,:)=XyzGeomF(IGeom,1,1:Nat) ! XyzGeomI(NGeomI,3,Nat)
+     Geom(2,:)=XyzGeomF(IGeom,2,1:Nat)
+     Geom(3,:)=XyzGeomF(IGeom,3,1:Nat)
+
+	 BprimT=0.d0
+     ScanCoord=>Coordinate
+     I=0
+     DO WHILE (Associated(ScanCoord%next))
+        I=I+1
+        SELECT CASE (ScanCoord%Type)
+        CASE ('BOND') 
+          CALL CONSTRAINTS_BONDLENGTH_DER(Nat,ScanCoord%at1,ScanCoord%AT2, &
+               Geom,BprimT(1,I))
+        CASE ('ANGLE')
+          CALL CONSTRAINTS_BONDANGLE_DER(Nat,ScanCoord%At1,ScanCoord%AT2, &
+               ScanCoord%At3,Geom,BprimT(1,I))
+        CASE ('DIHEDRAL')
+          CALL CONSTRAINTS_TORSION_DER2(Nat,ScanCoord%At1,ScanCoord%AT2, &
+               ScanCoord%At3,ScanCoord%At4,Geom,BprimT(1,I))
+	    END SELECT
+        ScanCoord => ScanCoord%next
+     END DO
+
+	 ! BprimT(3*Nat,NPrim)
+	 ! We now compute G=B(BT) matrix
+	 GMat=0.d0
+	 DO I=1,NPrim
+		DO J=1,3*Nat
+           GMat(:,I)=Gmat(:,I)+BprimT(J,:)*BprimT(J,I) !*1.d0/mass(atome(int(K/3.d0)))
+		END DO
+	 END DO
+  
+	 ! Diagonalize G
+	 EigVal=0.d0
+	 EigVec=0.d0
+	 Call Jacobi(GMat,NPrim,EigVal,EigVec,NPrim)
+	 Call Trie(NPrim,EigVal,EigVec,NPrim)
+	 DO I=1,NPrim
+		!WRITE(*,'(1X,"Vector ",I3,": e=",F8.3)') I,EigVal(i)
+		!WRITE(*,'(20(1X,F8.4))') EigVec(1:min(20,NPrim),I)
+	 END DO
+
+	 ! UMatF is nonredundant vector set, i.e. set of eigenvectors of BB^T
+	 !  corresponding to eigenvalues > zero.
+	 ! BMat_BakerT(3*Nat,NCoord), allocated in Path.f90, 
+	 ! NCoord=3*Nat-6
+	 BMat_BakerT = 0.d0
+	 J=0
+	 DO I=1,NPrim
+		IF (abs(eigval(I))>=1e-6) THEN
+		   J=J+1
+		   DO K=1,NPrim
+			  ! BprimT is transpose of B^prim.
+			  ! B = UMatF^T B^prim, B^T = (B^prim)^T UMatF
+			  BMat_BakerT(:,J)=BMat_BakerT(:,J)+BprimT(:,K)*Eigvec(K,I)
+		   END DO
+		     IF(J .GT. 3*Nat-6) THEN
+		       WRITE(*,*) 'Number of vectors in Eigvec with eigval .GT. 1e-6(=UMatF) (=' &
+                      ,J,') exceeded 3*Nat-6=',3*Nat-6, &
+					  'Stopping the calculation.'
+		       STOP
+		     END IF
+		     UMatF(IGeom,:,J) =  Eigvec(:,I)
+		END IF
+	 END DO
+
+!!!!!!!!!!!!!!!!!!!!
+!
+! Debug purposes
+!
+         if (debugPFL) THEN
+        UMatF(IGeom,:,:)=0.
+        DO J=1,3*Nat-6
+           UMatF(IGeom,J,J)=1.
+        END DO
+        END IF
+
+ 
+	 !DO I=1, NPrim ! This loop is not needed because we already have IntCoordF
+					   ! from interpolation. 
+	 ! Transpose of UMatF is needed below, that is why UMatF(IGeom,I,:).
+	 ! IntCoordF(IGeom,:) = IntCoordF(IGeom,:) + UMat(IGeom,I,:)*XprimitiveF(IGeom,I)
+	 !END DO
+
+	 ! Calculation of BTransInvF starts here:
+	 ! Calculation of BBT(3*Nat-6,3*Nat-6)=BB^T:
+	 ! BMat_BakerT(3*Nat,NCoord) is Transpose of B = UMatF^TB^prim
+	  
+	 BBT = 0.d0
+	 DO I=1, NCoord
+	    DO J=1, 3*Nat
+		   ! BBT(:,I) forms BB^T
+		   BBT(:,I) = BBT(:,I) + BMat_BakerT(J,:)*BMat_BakerT(J,I)
+		END DO
+	 END DO
+		
+	 Call GenInv(NCoord,BBT,BBT_inv,NCoord) ! GenInv is in Mat_util.f90
+
+	 ! Calculation of (B^T)^-1 = (BB^T)^-1B:
+	 DO I=1, 3*Nat
+	    DO J=1, NCoord
+	      BTransInvF(IGeom,:,I) = BTransInvF(IGeom,:,I) + BBT_inv(:,J)*BMat_BakerT(I,J)
+	    END DO
+	 END DO
+	 
+  END DO !matches DO IGeom=1, NGeomF
+  
+  DEALLOCATE(BBT,BBT_inv,BprimT,GMat,EigVal,EigVec)
+  DEALLOCATE(Geom,x,y,z,XprimRef)
+  
+  IF (debug) WRITE(*,*) "DBG Calc_baker_allGeomF over."
+END SUBROUTINE Calc_baker_allGeomF

Property changes on: src/Calc_baker_allGeomF.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Mat_util.f90
===================================================================
--- src/Mat_util.f90	(revision 0)
+++ src/Mat_util.f90	(revision 1)
@@ -0,0 +1,344 @@
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!     
+SUBROUTINE GenInv(N,A,InvA,NReal)
+!!!!!!!!!!!!!!!!
+  !     
+  !     This subroutines calculates the generalized inverse of a matrix
+  !     It first diagonalize the matrix A, then inverse all non-zero
+  !     eigenvalues, and forms the  InvA matrix using these new eigenvalues
+  !     
+  !     Input:
+  !     N : dimension of A
+  !     NReal :Actual dimension of A
+  !     A(N,N) : Initial Matrix, stored in A(Nreal,Nreal)
+  !     
+  !     Output:
+  !     InvA(N,N) : Inversed Matrix, stored in a (Nreal,NReal) matrix
+  !     
+!!!!!!!!!!!!!!!!!!!!!!!
+
+  Use Vartypes
+  IMPLICIT NONE
+
+  INTEGER(KINT), INTENT(IN) :: N,Nreal
+  REAL(KREAL), INTENT(IN) :: A(NReal,NReal)
+  REAL(KREAL), INTENT(OUT) :: InvA(NReal,NReal)
+  !     
+
+  INTEGER(KINT) :: I,J,K
+  REAL(KREAL), ALLOCATABLE :: EigVec(:,:) ! (Nreal,Nreal)
+  REAL(KREAL), ALLOCATABLE :: EigVal(:) ! (Nreal)
+  REAL(KREAL), ALLOCATABLE :: ATmp(:,:) ! (NReal,Nreal)
+  REAL(KREAL) :: ss
+  !     
+  REAL(KREAL), PARAMETER :: eps=1e-12
+
+  ALLOCATE(EigVec(Nreal,Nreal), EigVal(Nreal),ATmp(NReal,NReal))
+! A will be destroyed in Jacobi so we save it
+  ATmp=A
+  CALL JAcobi(ATmp,N,EigVal,EigVec,NReal)
+
+  DO I=1,N
+     IF (abs(EigVal(I)).GT.eps) EigVal(I)=1.d0/EigVal(I)
+  END DO
+
+  InvA=0.d0
+  do k = 1, n
+     do j = 1, n
+        ss = eigval(k) * eigvec(j,k)
+        do i = 1, j
+            InvA(i,j) = InvA(i,j) + ss * eigvec(i,k)
+         end do
+      end do
+   end do
+   do j = 1, n
+      do i = 1, j-1
+         InvA(j,i) = InvA(i,j)
+      end do
+   end do
+
+
+  DEALLOCATE(EigVec, EigVal,ATmp)
+END SUBROUTINE GenInv
+
+!============================================================
+!
+!     ++  Matrix diagonalization Using jacobi
+!  Works only for symmetric matrices
+!     EigvenVectors  : V(i,i)
+!     Eigenvalues : D(i)
+! PFL 30/05/03
+! This versioin uses packed matrices.
+! it unpacks them before calling Jacobi !
+! we have  AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+!
+!============================================================
+!
+      SUBROUTINE JacPacked(N,AP,D,V,nreal)
+
+      Use Vartypes
+      IMPLICIT NONE
+
+      INTEGER(KINT), INTENT(IN) :: N,NREAL
+      INTEGER(KINT), PARAMETER :: Max_it=500
+      REAL(KREAL) :: AP(N*(N+1)/2)
+      REAL(KREAL), ALLOCATABLE ::  A(:,:)
+      REAL(KREAL) :: V(Nreal,Nreal),D(Nreal)
+      INTEGER(KINT) :: i,j,nn
+
+      allocate(A(nreal,nreal))
+      nn=n*(n+1)/2
+!      WRITE(*,*) 'Jacpa 0'
+!      WRITE(*,'(I3,10(1X,F15.6))') n,(AP(i),i=1,min(nn,5))
+ !     WRITE(*,*) 'Jacpa 0'
+      do j=1,n
+         do i=1,j
+!            WRITE(*,*) i,j
+            A(i,J)=AP(i + (j-1)*j/2)
+            A(j,I)=A(i,J)
+         end do
+      end do
+!      do j=1,n
+!         WRITE(*,'(10(1X,F15.6))') (A(i,J),i=1,min(n,5))
+!      end do
+
+!      WRITE(*,*) 'Jacpa 1'
+      call Jacobi(A,n,D,V,Nreal)
+!      WRITE(*,*) 'Jacpa 2'
+!      DO i=1,n
+!         WRITE(*,'(1X,I3,10(1X,F15.6))') i,D(i),(V(j,i),j=1,min(n,5))
+!      end do
+      deallocate(a)
+
+    end SUBROUTINE JacPacked
+
+
+
+!     
+!============================================================
+!     
+!     ++  Matrix diagonalization Using jacobi
+!  Works only for symmetric matrices
+!     EigvenVectors  : V
+!     Eigenvalues : D
+!     
+!============================================================
+!     
+SUBROUTINE JACOBI(A,N,D,V,Nreal)
+
+!!!!!!!!!!!!!!!!
+  !     
+  !     Input:
+  !     N      :  Dimension of A
+  !     NReal  : Actual dimensions of A, D and V.
+  !
+  !     Input/output:
+  !     A(N,N) : Matrix to be diagonalized, store in a (Nreal,Nreal) matrix
+  !              Destroyed in output.
+  !     Output:
+  !     V(N,N) : Eigenvectors, stored in V(NReal, NReal)
+  !     D(N)   : Eigenvalues, stored in D(NReal)
+  !     
+
+  Use Vartypes
+
+  IMPLICIT NONE
+  INTEGER(KINT), parameter :: max_it=500
+  REAL(KREAL), ALLOCATABLE ::  B(:),Z(:)
+
+  INTEGER(KINT) :: N,NReal
+  REAL(KREAL) :: A(NReal,NReal)
+  REAL(KREAL) :: V(Nreal,Nreal),D(Nreal)
+
+  INTEGER(KINT) :: I, J,IP, IQ, NROT
+  REAL(KREAL) :: SM, H, Tresh, G, T, Theta, C, S, Tau
+
+  allocate(B(N),Z(N))
+
+  DO  IP=1,N
+     DO IQ=1,N
+        V(IP,IQ)=0.
+     END DO
+     V(IP,IP)=1.
+  END DO
+  DO  IP=1,N
+     B(IP)=A(IP,IP)
+     D(IP)=B(IP)
+     Z(IP)=0.
+  END DO
+  NROT=0
+  DO  I=1,max_it
+     SM=0.
+     DO  IP=1,N-1
+        DO IQ=IP+1,N
+           SM=SM+ABS(A(IP,IQ))
+        END DO
+     END DO
+     IF(SM.EQ.0.) GOTO 100
+     IF(I.LT.4)THEN
+        TRESH=0.2*SM/N**2
+     ELSE
+        TRESH=0.
+     ENDIF
+     DO  IP=1,N-1
+        DO  IQ=IP+1,N
+           G=100.*ABS(A(IP,IQ))
+           IF((I.GT.4).AND.(ABS(D(IP))+G.EQ.ABS(D(IP))) &
+                .AND.(ABS(D(IQ))+G.EQ.ABS(D(IQ))))THEN
+              A(IP,IQ)=0.
+           ELSE IF(ABS(A(IP,IQ)).GT.TRESH)THEN
+              H=D(IQ)-D(IP)
+              IF(ABS(H)+G.EQ.ABS(H))THEN
+                 T=A(IP,IQ)/H
+              ELSE
+                 THETA=0.5*H/A(IP,IQ)
+                 T=1./(ABS(THETA)+SQRT(1.+THETA**2))
+                 IF(THETA.LT.0.)T=-T
+              ENDIF
+              C=1./SQRT(1+T**2)
+              S=T*C
+              TAU=S/(1.+C)
+              H=T*A(IP,IQ)
+              Z(IP)=Z(IP)-H
+              Z(IQ)=Z(IQ)+H
+              D(IP)=D(IP)-H
+              D(IQ)=D(IQ)+H
+              A(IP,IQ)=0.
+              DO J=1,IP-1
+                 G=A(J,IP)
+                 H=A(J,IQ)
+                 A(J,IP)=G-S*(H+G*TAU)
+                 A(J,IQ)=H+S*(G-H*TAU)
+              END DO
+              DO  J=IP+1,IQ-1
+                 G=A(IP,J)
+                 H=A(J,IQ)
+                 A(IP,J)=G-S*(H+G*TAU)
+                 A(J,IQ)=H+S*(G-H*TAU)
+              END DO
+              DO  J=IQ+1,N
+                 G=A(IP,J)
+                 H=A(IQ,J)
+                 A(IP,J)=G-S*(H+G*TAU)
+                 A(IQ,J)=H+S*(G-H*TAU)
+              END DO
+              DO  J=1,N
+                 G=V(J,IP)
+                 H=V(J,IQ)
+                 V(J,IP)=G-S*(H+G*TAU)
+                 V(J,IQ)=H+S*(G-H*TAU)
+              END DO
+              NROT=NROT+1
+           ENDIF
+        END DO
+     END DO
+     DO  IP=1,N
+        B(IP)=B(IP)+Z(IP)
+        D(IP)=B(IP)
+        Z(IP)=0.
+     END DO
+  END DO
+  write(6,*) max_it,' iterations should never happen'
+  STOP
+100 DEALLOCATE(B,Z)
+  RETURN
+END SUBROUTINE JACOBI
+!
+!============================================================
+!c
+!c ++  Sort Eigenvectors in ascending eigenvalues order
+!c
+!c============================================================
+!c
+SUBROUTINE trie(nb_niv,ene,psi,nreal)
+
+  !
+  ! Input:
+  !   Nb_niv      :  Dimension of Psi
+  !   NReal  : Actual dimensions of Psi, Ene
+  ! Input/output:
+  !   Psi(N,N) : Eigvenvectors, changed in output. Stored in a (Nreal,Nreal) matrix
+  !   Ene(N)   : Eigenvalues, changed in output. Stored in Ene(NReal)
+  !   
+!!!!!!!!!!!!!!!!
+
+  Use VarTypes
+  IMPLICIT NONE
+
+  integer(KINT) :: i,j,k,nb_niv,max_niv, nreal
+  real(KREAL) :: ene(nreal),psi(nreal,nreal)
+  real(KREAL) :: a
+
+
+!!!!!!!!!!!!!!!!
+
+
+  DO i=1,nb_niv
+     DO j=i+1,nb_niv
+        IF (ene(i) .GT. ene(j)) THEN
+           !              permutation
+           a=ene(i)
+           ene(i)=ene(j)
+           ene(j)=a
+
+           DO k=1,nb_niv
+              a=psi(k,i)
+              psi(k,i)=psi(k,j)
+              psi(k,j)=a
+           END DO
+        END IF
+     END DO
+  END DO
+
+END SUBROUTINE trie
+
+!============================================================
+!c
+!c ++  Sort Eigenvectors in ascending eigenvalues order
+!c
+!c============================================================
+!c
+SUBROUTINE SortEigenSys(N,Eigval,Eigvec)
+
+
+  !
+  ! Input/output:
+  !   N : dimension of the system
+  !   EigVec(N,N) : Eigvenvectors, changed in output. Stored in a (N,N) matrix
+  !   EigVal(N)   : Eigenvalues, changed in output. Stored in a (n) vector
+  !   
+ ! Process: 
+ ! We use first a ranking, then a working array to reorder the eigenvalues and eigenvectors
+ 
+!!!!!!!!!!!!!!!!
+
+  Use VarTypes
+  use m_mrgrnk
+  IMPLICIT NONE
+
+
+  INTEGER(KINT), INTENT(IN) :: N
+  REAL(KREAL), INTENT(OUT) :: EigVal(N), Eigvec(N,N)
+
+  integer(KINT) :: i,j,k
+
+  INTEGER(KINT), ALLOCATABLE :: Rank(:) !N
+  REAL(KREAL), ALLOCATABLE :: EigValT(:) !n
+  REAL(KREAL), ALLOCATABLE :: EigVecT(:,:) !n,n
+
+!!!!!!!!!!!!!!!!
+  ALLOCATE(Rank(n),EigValT(n),EigVecT(n,n))
+  CALL MrgRnk(EigVal,Rank)
+
+  DO I=1,N
+     EigValT(I)=EigVal(Rank(I))
+     EigVecT(I,1:N)=EigVec(Rank(I),1:N)
+  END DO
+  EigVal=EigValT
+  EigVec=EigVecT
+
+  DEALLOCATE(Rank,EigValT,EigVecT)
+
+
+END SUBROUTINE SortEigenSys
+
Index: src/Path.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: src/Path.exe
___________________________________________________________________
Added: svn:executable
   + 
Added: svn:mime-type
   + application/octet-stream

Index: src/CalcTangent.f90
===================================================================
--- src/CalcTangent.f90	(revision 0)
+++ src/CalcTangent.f90	(revision 1)
@@ -0,0 +1,168 @@
+!This programs reads a set of geometries, and print the tangent
+! to the path they form
+
+SUBROUTINE CalcTangent(XgeomF,NGeomS,XGeom,Coef)
+
+  use Path_module, only: IntCoordI, Nat, Coord, XyzGeomI, Atome, Order, &
+                         OrderInv, IndZmat, NMaxPtPath, IntTangent, XyzTangent, &
+						 NGeomF, NCoord
+  use Io_module, ONly : IoTmp,PathName, Kint,KReal
+  use VarTypes
+
+  IMPLICIT NONE
+  ! NGeomS: number of geometries.
+  INTEGER(KINT), INTENT(IN) :: NGeomS
+  REAL(KREAL), INTENT(IN) :: XGeomF(NGeomF),Xgeom(NGeomS),Coef(NGeomS,NCoord)
+  
+  REAL(KREAL), ALLOCATABLE :: Path(:,:) ! NGeomS,NCoord
+  REAL(KREAL), ALLOCATABLE :: PathTan(:,:) ! NGeomF,NCoord
+  REAL(KREAL), ALLOCATABLE :: DbgTgt(:),GeomTmp(:) ! NCoord
+
+  INTEGER(KINT) :: i, j, n3at, Idx, iat,igeom,k
+  INTEGER(KINT), SAVE :: icall=-1
+  INTEGER(KINT) :: NMaxPt
+  REAL(KREAL), PARAMETER :: Inf=1e32, h=0.001d0
+  CHARACTER(120) :: Line,File
+  CHARACTER(LCHARS) :: TITLE
+  LOGICAL :: Debug=.False.
+  REAL(KREAL) :: utmp,der
+
+  LOGICAL, EXTERNAL :: valid
+
+  debug=valid('calctangent')
+
+  if (debug) WRITE(*,*) "======================================== Entering CalcTangen ============================"
+  n3at=3*nat
+
+  ALLOCATE(Path(NGeomS,Ncoord),PathTan(NGeomF,NCoord),GeomTMP(NCoord))
+
+ icall=icall+2
+ write(Line,'(I5)') icall
+ File=TRIM(adjustl(PathName)) // '_dbgtgt_' // TRIM(adjustl(Line)) // '.dat'
+ OPEN(IOTMP,File=File)
+
+  ! We construct path, depending on COORD:
+  ! Path(NGeomS,Ncoord), NGeoms is equal to NGeomI
+  ! IntCoordI(:,:) ! (NGeomI,3*Nat-6)
+ SELECT CASE(Coord)
+    CASE ('ZMAT','MIXED')
+     Path(:,:)=IntCoordI(:,:)
+  CASE ('CART','HYBRID')
+     Path=reshape(XyzGeomI,(/NGeomS,NCoord/))
+  CASE ('BAKER')
+	 Path(:,:)=IntCoordI(:,:)
+  CASE DEFAULT
+     WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in CalcTangent. STOP"
+     STOP
+  END SELECT
+
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG CalcTangent. Geometries from Path'
+     DO I=1,NGeomS
+        GeomTmp=Path(I,1:NCoord)
+        WRITE(Title,"('Geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomS
+        Call PrintGeom(Title,Nat,Ncoord,GeomTmp,Coord,6,Atome,Order,OrderInv,IndZmat)
+!         IF (COORD.EQ.'ZMAT') THEN
+!            WRITE(*,"('Geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomS
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+!                 Nom(Atome(OrderInv(indzmat(2,2)))),Path(I,1)
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+!                 Nom(Atome(OrderInv(indzmat(3,2)))),Path(I,2), &
+!                 Nom(Atome(OrderInv(indzmat(3,3)))),Path(I,3)
+!            Idx=4
+!            DO Iat=4,Nat
+!               WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+!                    Nom(Atome(OrderInv(indzmat(iat,2)))),Path(I,Idx), &
+!                    Nom(Atome(OrderInv(indzmat(iat,3)))),Path(I,Idx+1), &
+!                    Nom(Atome(OrderInv(indzmat(iat,4)))),Path(I,Idx+2)
+!               Idx=Idx+3
+!            END DO
+!         ELSE
+!            WRITE(*,*) Nat
+!            WRITE(*,"('Geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomF
+!            DO Iat=1,Nat
+!               WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+!                    Path(I,3*Iat-2:3*Iat)
+!            END DO
+!         END IF
+     END DO
+  END IF
+
+!Debug info
+ IF (debug.AND.(COORD.EQ.'ZMAT')) THEN
+     ALLOCATE(DbgTgt(NCoord))
+     WRITE(*,*) 'DBG CalcTangent. Path written in ' // TRIM(File)
+     WRITE(*,'(A,12(1X,F10.5))') "DBG CalcTangent, XgeomF:",XGeomF
+
+     NMaxPt=min(200,NMaxPtPath)-1
+    DO K=0,NMaxPt
+       utmp=K*Xgeom(NGeomS)/NMaxPt
+       DO J=1,NCoord
+       Call Splint(utmp,DbgTgt(J),NGeomS,Xgeom,Path(1,J),Coef(1,J))
+       END DO
+       WRITE(IOTMP,'(12(1X,F10.5))') utmp,DbgTgt
+    END DO
+    DEALLOCATE(DbgTgt)
+ END IF
+
+!We construct the derivatives
+DO I=1,NGeomF
+  DO J=1,NCoord
+        Call SplinDer(XgeomF(I),PathTan(I,J),NGeomS,Xgeom,Path(1,J),Coef(1,J))
+  END DO
+END DO
+
+ SELECT CASE(Coord)
+    CASE ('ZMAT','MIXED')
+     IntTangent=PathTan
+  CASE ('CART','HYBRID')
+     XyzTangent=Pathtan
+  END SELECT
+
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG CalcTangent. Tangents'
+     DO I=1,NGeomF
+        GeomTmp=PathTan(I,1:NCoord)
+        WRITE(Title,"('Tangents for geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomF
+        Call PrintGeom(Title,Nat,Ncoord,GeomTmp,Coord,6,Atome,Order,OrderInv,IndZmat)
+
+        WRITe(*,'(A,12(1X,F10.6))') "Test:",GeomTmp(1:NCoord)
+
+!         IF (COORD.EQ.'ZMAT') THEN
+!            WRITE(*,"('Tangent for Geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomF
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(1,1))))
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+!                 Nom(Atome(OrderInv(indzmat(2,2)))),IntTangent(I,1)
+!            WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+!                 Nom(Atome(OrderInv(indzmat(3,2)))),IntTangent(I,2), &
+!                 Nom(Atome(OrderInv(indzmat(3,3)))),IntTangent(I,3)
+!            Idx=4
+!            DO Iat=4,Nat
+!               WRITE(*,'(1X,A5,3(1X,A4,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+!                    Nom(Atome(OrderInv(indzmat(iat,2)))),IntTangent(I,Idx), &
+!                    Nom(Atome(OrderInv(indzmat(iat,3)))),IntTangent(I,Idx+1), &
+!                    Nom(Atome(OrderInv(indzmat(iat,4)))),IntTangent(I,Idx+2)
+!               Idx=Idx+3
+!            END DO
+!         ELSE
+!            WRITE(*,*) Nat
+!            WRITE(*,"('Tangent for Geometry ',I3,'/',I3,' for iteration ',I3)") I,NgeomF
+!            DO Iat=1,Nat
+!               WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+!                    XyzTangent(I,3*Iat-2:3*Iat)
+!            END DO
+!         END IF
+     END DO
+  END IF
+
+
+DeALLOCATE(Path) 
+
+ CLOSE(IOTMP)
+  if (debug) WRITE(*,*) "======================================== Ending CalcTangent ============================"
+
+END SUBROUTINE CalcTangent
+
Index: src/Step_DIIS.f90
===================================================================
--- src/Step_DIIS.f90	(revision 0)
+++ src/Step_DIIS.f90	(revision 1)
@@ -0,0 +1,291 @@
+!C  HEAT is never used, not even in call of Space(...)
+!C  XPARAM = input parameter vector (Geometry).
+!C  Grad = input gradient vector.
+      SUBROUTINE Step_DIIS(XP,XPARAM,GP,GRAD,HP,HEAT,Hess,NVAR,FRST)
+	  !SUBROUTINE DIIS(XPARAM,STEP,GRAD,HP,HEAT,Hess,NVAR,FRST)
+!      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT NONE
+      integer, parameter :: KINT = kind(1)
+      integer, parameter :: KREAL = kind(1.0d0)
+
+!      INCLUDE 'SIZES'
+
+      INTEGER(KINT) :: NVAR
+      REAL(KREAL) :: XP(NVAR), XPARAM(NVAR), GP(NVAR), GRAD(NVAR), Hess(NVAR*NVAR)
+	  !REAL(KREAL) :: Hess_inv(NVAR,NVAR),XPARAM_old(NVAR),STEP(NVAR)
+      REAL(KREAL) :: HEAT, HP
+      LOGICAL :: FRST
+	  
+!************************************************************************
+!*                                                                      *
+!*     DIIS PERFORMS DIRECT INVERSION IN THE ITERATIVE SUBSPACE         *
+!*                                                                      *
+!*     THIS INVOLVES SOLVING FOR C IN XPARAM(NEW) = XPARAM' - HG'       *
+!*                                                                      *
+!*  WHERE XPARAM' = SUM(C(I)XPARAM(I), THE C COEFFICIENTES COMING FROM  *
+!*                                                                      *
+!*                   | B   1 | . | C | = | 0 |                          *
+!*                   | 1   0 |   |-L |   | 1 |                          *
+!*                                                                      *
+!* WHERE B(I,J) =GRAD(I)H(T)HGRAD(J)  GRAD(I) = GRADIENT ON CYCLE I     *
+!*                              Hess    = INVERSE HESSIAN                 *
+!*                                                                      *
+!*                          REFERENCE                                   *
+!*                                                                      *
+!*  P. CSASZAR, P. PULAY, J. MOL. STRUCT. (THEOCHEM), 114, 31 (1984)    *
+!*                                                                      *
+!************************************************************************
+!************************************************************************
+!*                                                                      *
+!*     GEOMETRY OPTIMIZATION USING THE METHOD OF DIRECT INVERSION IN    *
+!*     THE ITERATIVE SUBSPACE (GDIIS), COMBINED WITH THE BFGS OPTIMIZER *
+!*     (A VARIABLE METRIC METHOD)                                       *
+!*                                                                      *
+!*     WRITTEN BY PETER L. CUMMINS, UNIVERSITY OF SYDNEY, AUSTRALIA     *
+!*                                                                      *
+!*                              REFERENCE                               *
+!*                                                                      *
+!*      "COMPUTATIONAL STRATEGIES FOR THE OPTIMIZATION OF EQUILIBRIUM   *
+!*     GEOMETRIES AND TRANSITION-STATE STRUCTURES AT THE SEMIEMPIRICAL  *
+!*     LEVEL", PETER L. CUMMINS, JILL E. GREADY, J. COMP. CHEM., 10,    *
+!*     939-950 (1989).                                                  *
+!*                                                                      *
+!*     MODIFIED BY JJPS TO CONFORM TO EXISTING MOPAC CONVENTIONS        *
+!*                                                                      *
+!************************************************************************
+
+      ! MRESET = number of iterations.
+      INTEGER(KINT), PARAMETER :: MRESET=15, M2=(MRESET+1)*(MRESET+1) !M2 = 256
+      REAL(KREAL), ALLOCATABLE, SAVE :: XSET(:),GSET(:),ERR(:) ! MRESET*NVAR
+      REAL(KREAL) :: ESET(MRESET)
+      REAL(KREAL), ALLOCATABLE, SAVE :: DX(:),GSAVE(:) !NVAR
+      REAL(KREAL) :: B(M2),BS(M2),BST(M2)
+      LOGICAL DEBUG, PRINT
+      INTEGER(KINT), SAVE :: MSET
+      INTEGER(KINT) :: NDIIS, MPLUS, INV, ITERA, MM
+      INTEGER(KINT) :: I,J,K, JJ, KJ, JNV, II, IONE, IJ, INK,ITmp
+      REAL(KREAL) :: XMax, XNorm, S, DET, THRES
+
+      DEBUG=.TRUE.
+      PRINT=.TRUE.
+
+      IF (PRINT)  WRITE(*,'(/,''      BEGIN GDIIS   '')')
+	  	 	  
+	  !XPARAM_old = XPARAM
+	  
+! Initialization
+      IF (FRST) THEN
+! FRST will be set to False in Space, so no need to modify it here
+         IF (ALLOCATED(XSET)) THEN
+            IF (PRINT)  WRITE(*,'(/,''    In FRST, GDIIS Dealloc  '')')
+            DEALLOCATE(XSet,GSET,ERR,DX,GSave)
+            RETURN
+         ELSE
+            IF (PRINT)  WRITE(*,'(/,''     In FRST,  GDIIS alloc  '')')
+            ALLOCATE(XSet(MRESET*NVAR), GSet(MRESET*NVAR), ERR(MRESET*NVAR))
+            ALLOCATE(DX(NVAR),GSAVE(NVAR))
+         END IF
+      END IF
+!C
+!C  SPACE SIMPLY LOADS THE CURRENT VALUES OF XPARAM AND GRAD INTO
+!C  THE ARRAYS XSET AND GSET
+!C
+!C  HEAT is never used, not even in Space(...)
+      CALL SPACE(MRESET,MSET,XPARAM,GRAD,HEAT,NVAR,XSET,GSET,ESET,FRST)
+
+      IF (PRINT)  WRITE(*,'(/,''       GDIIS after Space  '')')
+
+   ! INITIALIZE SOME VARIABLES AND CONSTANTS:
+      NDIIS = MSET
+      MPLUS = MSET + 1
+      MM = MPLUS * MPLUS
+
+   ! COMPUTE THE APPROXIMATE ERROR VECTORS:
+      INV=-NVAR
+      DO 30 I=1,MSET
+         INV = INV + NVAR
+         DO 30 J=1,NVAR
+            S = 0.D0
+            KJ=(J*(J-1))/2
+            DO 10 K=1,J
+               KJ = KJ+1
+   10       S = S - Hess(KJ) * GSET(INV+K)
+            DO 20 K=J+1,NVAR
+               KJ = (K*(K-1))/2+J
+   20       S = S - Hess(KJ) * GSET(INV+K)
+   30 ERR(INV+J) = S
+   
+   
+
+    ! CONSTRUCT THE GDIIS MATRIX:
+      ! initialization (not really needed)
+      DO I=1,MM
+         B(I) = 1.D0
+      END DO
+	     
+      ! B_ij calculations from <e_i|e_j>  
+      JJ=0
+      INV=-NVAR
+      DO 50 I=1,MSET
+         INV=INV+NVAR
+         JNV=-NVAR
+         DO 50 J=1,MSET
+            JNV=JNV+NVAR
+            JJ = JJ + 1
+            B(JJ)=0.D0
+            DO 50 K=1,NVAR
+   50 B(JJ) = B(JJ) + ERR(INV+K) * ERR(JNV+K)
+
+     ! The following shifting is required to correct indices of B_ij elements in the GDIIS matrix.
+	 ! The correction is needed because the last coloumn of the matrix contains all 1 and one zero.
+      DO 60 I=MSET-1,1,-1
+         DO 60 J=MSET,1,-1
+   60 B(I*MSET+J+I) = B(I*MSET+J)
+   
+      ! For last row and last column of GDIIS matrix 
+      DO 70 I=1,MPLUS
+         B(MPLUS*I) = 1.D0
+   70 B(MPLUS*MSET+I) = 1.D0
+      B(MM) = 0.D0
+
+   ! ELIMINATE ERROR VECTORS WITH THE LARGEST NORM:
+   80 CONTINUE
+      DO 90 I=1,MM
+   90 BS(I) = B(I)
+      IF (NDIIS .EQ. MSET) GO TO 140
+      DO 130 II=1,MSET-NDIIS
+         XMAX = -1.D10
+         ITERA = 0
+         DO 110 I=1,MSET
+            XNORM = 0.D0
+            INV = (I-1) * MPLUS
+            DO 100 J=1,MSET
+  100       XNORM = XNORM + ABS(B(INV + J))
+            IF (XMAX.LT.XNORM .AND. XNORM.NE.1.0D0) THEN
+               XMAX = XNORM
+               ITERA = I
+               IONE = INV + I
+            ENDIF
+  110    CONTINUE
+         DO 120 I=1,MPLUS
+            INV = (I-1) * MPLUS
+            DO 120 J=1,MPLUS
+               JNV = (J-1) * MPLUS
+               IF (J.EQ.ITERA) B(INV + J) = 0.D0
+               B(JNV + I) = B(INV + J)
+  120    CONTINUE
+         B(IONE) = 1.0D0
+  130 CONTINUE
+  140 CONTINUE
+
+      IF (DEBUG) THEN
+
+      ! OUTPUT THE GDIIS MATRIX:
+         WRITE(*,'(/5X,'' GDIIS MATRIX'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F10.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO
+      ENDIF
+
+     ! SCALE DIIS MATRIX BEFORE INVERSION:
+ 
+      DO I=1,MPLUS
+         II = MPLUS * (I-1) + I
+         GSAVE(I) = 1.D0 / DSQRT(1.D-20+DABS(B(II)))
+      END DO
+	  
+      GSAVE(MPLUS) = 1.D0
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+         END DO
+      END DO
+	  
+      IF (DEBUG) THEN
+     ! OUTPUT SCALED GDIIS MATRIX:
+         WRITE(*,'(/5X,'' GDIIS MATRIX (SCALED)'')')
+         ITmp=min(12,MPLUS)
+         DO IJ=1,MPLUS
+            WRITE(*,'(12(F10.4,1X))') B((IJ-1)*MPLUS+1:(IJ-1)*MPLUS+ITmp)
+         END DO
+            
+      ENDIF ! matches IF (DEBUG) THEN
+
+     ! INVERT THE GDIIS MATRIX B:
+      CALL MINV(B,MPLUS,DET) ! matrix inversion.
+
+      DO I=1,MPLUS
+         DO J=1,MPLUS
+            IJ = MPLUS * (I-1) + J
+            B(IJ) = B(IJ) * GSAVE(I) * GSAVE(J)
+         END DO
+      END DO
+
+      ! COMPUTE THE INTERMEDIATE INTERPOLATED PARAMETER AND GRADIENT VECTORS:
+      DO K=1,NVAR
+         XP(K) = 0.D0
+         GP(K) = 0.D0
+         DO I=1,MSET
+            INK = (I-1) * NVAR + K
+			!Print *, 'B(',MPLUS*MSET+I,')=', B(MPLUS*MSET+I)
+            XP(K) = XP(K) + B(MPLUS*MSET+I) * XSET(INK)
+            GP(K) = GP(K) + B(MPLUS*MSET+I) * GSET(INK)
+         END DO
+	  END DO
+	  
+      HP=0.D0
+      DO I=1,MSET
+         HP=HP+B(MPLUS*MSET+I)*ESET(I)
+      END DO
+	      
+      DO K=1,NVAR
+         DX(K) = XPARAM(K) - XP(K)
+      END DO
+      XNORM = SQRT(DOT_PRODUCT(DX,DX))
+      IF (PRINT) THEN
+         WRITE (6,'(/10X,''DEVIATION IN X '',F7.4,8X,''DETERMINANT '',G9.3)') XNORM,DET
+         WRITE(*,'(10X,''GDIIS COEFFICIENTS'')')
+         WRITE(*,'(10X,5F12.5)') (B(MPLUS*MSET+I),I=1,MSET)
+      ENDIF
+
+      ! THE FOLLOWING TOLERENCES FOR XNORM AND DET ARE SOMEWHAT ARBITRARY!
+      THRES = MAX(10.D0**(-NVAR), 1.D-25)
+      IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+         IF (PRINT)THEN
+            WRITE(*,*) "THE DIIS MATRIX IS ILL CONDITIONED"
+            WRITE(*,*) " - PROBABLY, VECTORS ARE LINEARLY DEPENDENT - "
+            WRITE(*,*) "THE DIIS STEP WILL BE REPEATED WITH A SMALLER SPACE"
+         END IF
+         DO K=1,MM
+	        B(K) = BS(K)
+         END DO
+         NDIIS = NDIIS - 1
+         IF (NDIIS .GT. 0) GO TO 80
+         IF (PRINT) WRITE(*,'(10X,''NEWTON-RAPHSON STEP TAKEN'')')
+         DO K=1,NVAR
+            XP(K) = XPARAM(K)
+            GP(K) = GRAD(K)  
+         END DO
+      ENDIF ! matches IF (XNORM.GT.2.D0 .OR. DABS(DET).LT. THRES) THEN
+	  
+         ! q_{m+1} = q'_{m+1} - H^{-1}g'_{m+1}
+		 ! Hess is a symmetric matrix.
+		 !Hess_inv = 1.d0 ! to be deleted.
+		 !Call GenInv(NVAR,Reshape(Hess,(/NVAR,NVAR/)),Hess_inv,NVAR) ! Implemented in Mat_util.f90
+		 ! H^{-1}g'_{m+1}
+		 !Print *, 'Hess_inv='
+		 !Print *, Hess_inv
+		 !XPARAM=0.d0
+		 !DO I=1, NVAR
+		 !XPARAM(:) = XPARAM(:) + Hess_inv(:,I)*GP(I)
+		 !END DO
+		 !XPARAM(:) = XP(:) - XPARAM(:) ! now XPARAM is a new geometry.
+		 
+		 !STEP is the difference between the new and old geometry and thus "step":
+         !STEP = XPARAM - XPARAM_old
+         
+      IF (PRINT)  WRITE(*,'(/,''       END GDIIS  '',/)')
+
+      END SUBROUTINE Step_DIIS

Property changes on: src/Step_DIIS.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/CheckPeriodicBound.f90
===================================================================
--- src/CheckPeriodicBound.f90	(revision 0)
+++ src/CheckPeriodicBound.f90	(revision 1)
@@ -0,0 +1,89 @@
+ SUBROUTINE CheckPeriodicBound
+! This subroutine is only for periodic systems
+! it checks that the atoms do not change their
+! positions from one side to the other during the simulations.
+! This would ruin the interpolation.
+
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+
+  INTEGER(KINT) :: IGeom, I,J,K
+  REAL(KREAL), ALLOCATABLE :: GeomRef(:,:), GeomTmp(:,:) ! (3,Nat)
+  CHARACTER(SCHARS) :: Line,Line2
+
+  REAL(KREAL) :: Latrloc(3,3),Bloc(3),Xt,Yt,Zt
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('checkperiodicbound')
+if (debug) WRITE(*,*) "========================= Entering CheckPeriodicBound ==========="
+
+  ALLOCATE(GeomRef(3,Nat), GeomTmp(3,Nat))
+
+  V_direct=adjustl(Vasp_direct)
+  Call upcase(V_direct)
+
+! The test is easy in DIRECT space, so we will convert the geometries
+! into this space. 
+! We might optimize this as Read_geom converts geometries into NORMAL
+! coordinates... so it might be that we are converting them back to direct here...
+
+     Latrloc(1:3,1)=Lat_a
+     Latrloc(1:3,2)=Lat_b
+     Latrloc(1:3,3)=Lat_c
+     Bloc=1.
+     CALL Gaussj(Latrloc,3,3,Bloc,1,1)
+
+ ! We put first geometry as the reference
+     GeomRef=0.
+     DO I=1,Nat
+        DO K=1,3
+           DO J=1,3
+              GeomRef(K,I)=GeomRef(K,I)+XyzGeomI(1,J,I)*LatrLoc(K,J)
+           END DO
+        END DO
+     END DO
+
+  DO IGeom=2,NGeomI
+     GeomTmp=0.
+     DO I=1,Nat
+        DO K=1,3
+           DO J=1,3
+              GeomTmp(K,I)=GeomTmp(K,I)+XyzGeomI(IGeom,J,I)*LatrLoc(K,J)
+           END DO
+           if (abs(GeomTmp(K,I)-GeomRef(K,I)).GE.BoxTol) THEN
+              If (debug) & 
+                  WRITE(*,'("Coord ",I1," has been changed for atom ",I5," by ",F4.0," ref:",F9.6," old:",F9.6," new:",F9.6)') &
+                   K,I,Sign(1.d0,GeomRef(K,I)-GeomTmp(K,I)),& 
+                   GeomRef(K,I),GeomTmp(K,I), &
+                   GeomTmp(K,I)+Sign(1.d0,GeomRef(K,I)-GeomTmp(K,I))
+              GeomTmp(K,I)=GeomTmp(K,I)+Sign(1.d0,GeomRef(K,I)-GeomTmp(K,I))
+           END IF
+        END DO
+        Xt=GeomTmp(1,I)
+        Yt=GeomTmp(2,I)
+        Zt=GeomTmp(3,I)
+        XyzGeomI(IGeom,1,I)=Xt*lat_a(1)+Yt*lat_b(1)+Zt*lat_c(1)
+        XyzGeomI(IGeom,2,I)=Xt*lat_a(2)+Yt*lat_b(2)+Zt*lat_c(2)
+        XyzGeomI(IGeom,3,I)=Xt*lat_a(3)+Yt*lat_b(3)+Zt*lat_c(3)
+     END DO
+  END DO
+
+if (debug) WRITE(*,*) "========================= Exiting CheckPeriodicBound ==========="
+END SUBROUTINE CheckPeriodicBound
+
+
+ 
+
+
+   
Index: src/TestCart.f90
===================================================================
--- src/TestCart.f90	(revision 0)
+++ src/TestCart.f90	(revision 1)
@@ -0,0 +1,92 @@
+SUBROUTINE TestCart(SetCart)
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
+  ! This subroutines looks at the displacements for atoms between
+  ! images. If the total displacement is less than the atomic radius
+  ! then it might be a good idea to treat this atom as CART.
+  !
+  ! Input:
+  !        SetCart : if True then Cart list is set by TestCart
+  !              (Normal use : call TestCart with AutoCart as the argument)  
+  !
+  ! Output:
+  !        None
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+
+  LOGICAL, INTENT(IN) :: SetCart
+
+  INTEGER(KINT) :: IGeom, I,J,K,Iat
+  CHARACTER(SCHARS) :: Line,Line2
+
+  REAL(KREAL) :: d
+  LOGICAL, ALLOCATABLE :: TobeCart(:) ! Nat
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('testcart')
+  if (debug) WRITE(*,*) "========================= Entering TestCart ==========="
+
+  ALLOCATE(TobeCart(Nat))
+
+  ToBeCart=.TRUE.
+
+  ! We put first geometry as the reference
+  DO I=1,NGeomI
+     DO J=I+1,NGeomI
+        DO K=1,Nat
+           IF (ToBeCart(K)) THEN
+                Iat=Atome(K)
+              d=100.*sqrt((XyzGeomI(J,1,K)-XyzGeomI(I,1,K))**2+ &
+                   (XyzGeomI(J,2,K)-XyzGeomI(I,2,K))**2+ &
+                   (XyzGeomI(J,3,K)-XyzGeomI(I,3,K))**2) 
+              if (debug) WRITe(*,'(4(1X,I5),10(1X,F12.8))') k,i,j,iat,d,r_cov(iat),r_cov(iat)*fact,d/r_cov(iat)
+              if ((d/r_cov(iat)).GE.0.5d0) ToBeCart(K)=.FALSE.
+           END IF
+        END DO
+     END DO
+  END DO
+
+  If (Debug) THEN
+     WRITE(*,*) "Atoms that might be described in CART"
+     DO K=1,Nat
+        IF (ToBeCart(K)) WRITE(*,'(I5)',ADVANCE="NO") K
+     END DO
+  END IF
+
+  IF (SetCart) THEN
+     WRITE(*,*) "AutoCART=T: Atoms that will be described in CART"
+     K=1
+     DO I=1,Nat
+        If(ToBeCart(I)) THEN
+           Cart(K)=I
+           K=K+1
+           WRITE(*,'(I5)',ADVANCE="NO") I
+        END IF
+     END DO
+     Cart(K)=0
+     Ncart=K-1
+  END IF
+
+  deallocate(tobecart)
+
+if (debug) WRITE(*,*) "========================= Exiting TestCart ==========="
+END SUBROUTINE TestCart
+
+
+ 
+
+
+   
Index: src/Hupdate_MS.f90
===================================================================
--- src/Hupdate_MS.f90	(revision 0)
+++ src/Hupdate_MS.f90	(revision 1)
@@ -0,0 +1,88 @@
+! This program reads an old hessian, old forces, new forces
+! and print the updated hessian and old coordinates.
+! We use the Murtagh-Sargent update
+
+SUBROUTINE Hupdate_MS(Nfree,ds,dgrad,Hess)
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  INTEGER(KINT), INTENT(IN) :: NFREE
+  REAL(KREAL), INTENT(INOUT) :: Hess(Nfree,Nfree)
+  REAL(KREAL), INTENT(IN) :: ds(Nfree)
+  REAL(KREAL), INTENT(IN) :: dGrad(Nfree)
+
+
+  REAL(KREAL), ALLOCATABLE  :: HessOld(:,:) , HupMS(:,:)
+  REAL(KREAL), ALLOCATABLE  :: Hup(:,:)
+  REAL(KREAL), ALLOCATABLE  :: HupInt(:)
+  REAL(KREAL), ALLOCATABLE  :: HS(:), Num(:,:)
+  REAL(KREAL) :: Phi, Num3, Den, Den2,NormDS
+  CHARACTER(120) :: fmt,fmt2,Line
+  INTEGER(KINT) :: i,j, idx
+
+  LOGICAL debug,valid
+  EXTERNAL valid
+
+  debug=valid("Hupdate").OR.Valid("Hupdate_MS")
+
+  if (debug) Call Header("Entering Hupdate_MS")
+
+  ALLOCATE(HessOld(nfree,nfree), HupMS(nfree,nfree),  &
+       Hup(nfree,nfree), &
+       HupInt(nfree), HS(nfree),  &
+       Num(nfree,nfree))
+
+  HessOld=Hess
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG Hupdate HessOld'
+     Idx=min(12,Nfree)
+     DO I=1,NFree
+        WRITE(*,'(12(1X,F8.4))') HessOld(I,1:Idx)
+     END DO
+     WRITE(*,*) 'DBG Hupdate ds'
+     WRITE(*,'(12(1X,F8.4))') ds(1:Idx)
+     WRITE(*,*) 'DBG Hupdate dGrad'
+     WRITE(*,'(12(1X,F8.4))') dGrad(1:Idx)
+  END IF
+
+  NormDS=sqrt(DOT_PRODUCT(DS,DS))
+  if (NormDS>=1e-6) THEN
+
+     HS=0
+     DO I=1,nfree
+        DO J=1,nfree
+           HS(I)=HS(I)+HessOld(i,j)*Ds(j)
+        END DO
+     END DO
+     HupInt=DGrad-HS
+
+     ! WE calculate the MS update
+     Num=0.
+     Den=0.
+     DO I=1,nfree
+        DO J=1,nfree
+           Num(I,J)=HUpInt(i)*HupInt(j)
+        END DO
+        Den=Den+Hupint(i)*Ds(i)
+     END DO
+
+     HupMS=Num/Den
+
+     Hess=HessOld+HupMS
+  ELSE
+     Hess=HessOld
+  END IF
+  !     WRITE(*,*) 'New hess'
+  !     DO I=1,nfree
+  !        WRITE(*,fmt) Hess(i,:)
+  !     END DO
+
+  DEALLOCATE(HessOld, HupMS,HupInt, HS, Num )
+
+  if (debug) Call Header("Hupdate_MS Over")
+
+END SUBROUTINE Hupdate_MS
Index: src/ZmatBuild.f90
===================================================================
--- src/ZmatBuild.f90	(revision 0)
+++ src/ZmatBuild.f90	(revision 1)
@@ -0,0 +1,938 @@
+      SUBROUTINE ZmatBuild(na,atome,ind_zmat,val_zmat,x,y,z,izm, &
+           Liaisons, LIes_CP,LIes_CF,ListAt,DejaFait,debug)
+
+!
+!     This second version enables the user to freeze some atoms
+!     the frozen atoms indices are listed in the frozen array.
+!
+!     The idea is surely too stupid to work all the time... but here it is
+!     we first construct the zmat using only the frozen atoms, and then
+!     we add the other atoms on top of the first ones...
+!
+! 12.06.06
+! Small modification: there was an inconsistency: izm was increased
+! after the atom was added to ind_zmat for the three first atoms,
+! but before for all others. Now, it starts at zero and it
+! is increased before the atom is added to ind_zmat
+!     IMPLICIT NONE
+
+      use Path_module, only : Nat, NMaxL, max_Z, KINT, KREAL
+
+
+      INTEGER(KINT) :: Izm
+      integer(KINT) :: na,atome(NAt),at,ind_zmat(NAt,5),long
+      real(KREAL) ::  x(NAt),y(NAt),z(NAt),fact
+      real(KREAL) ::  val_zmat(NAt,3)
+!     ListAt contains the indices of frozen atoms
+      LOGICAL ListAT(NAt),FIzm1,FFirst
+      INTEGER(KINT) :: Natreat
+
+      real(KREAL) ::  vx,vy,vz,dist
+      INTEGER(KINT) :: LIAISONS(NAt,0:NMaxL),Nbli,Nblj
+      INTEGER(KINT) :: LiaisonsBis(NAt,0:NMaxL)
+      INTEGER(KINT) :: CAFaire(NAt)
+      INTEGER(KINT) :: LieS_CP(NAt,0:NMaxL),LieS_CF(NAt,0:NMaxL)
+      INTEGER(KINT) :: AtCP0(NAt),NbAt0,NbAt0r
+      Integer(KINT) :: AtTypCycl(Max_Z), NbAt3(NAt,2),CyCleAt(NAt)
+      Integer(KINT) :: NbCycle
+      real(KREAL) ::  vx1,vy1,vz1,norm1
+      real(KREAL) ::  vx2,vy2,vz2,norm2
+      real(KREAL) ::  vx3,vy3,vz3,norm3
+      real(KREAL) ::  vx4,vy4,vz4,norm4
+      real(KREAL) ::  vx5,vy5,vz5,norm5
+      real(KREAL) ::  val,val_d
+      Logical AtTerm,Debug,Done
+      Logical DejaFait(NAt)
+      LOGICAL F1213, F1223,F1323,FTmp
+
+!     As we may have to treat only partial molecules, it may happen
+!     that there are no central atoms... so we first check this by looking
+!     for the least number of CP atoms
+      FFirst=.TRUE.
+      NMinCP=na
+      NMaxCF=-1
+      NAtreat=0
+      Izm0=Izm+1
+
+      DO I=1,na
+         if (DEBUG) WRITE(*,*) "DBG ZmatBuild i,listat",i,listAt(i)
+         IF (ListAt(I).AND.(.NOT.(DejaFait(I)))) THEN
+            IF (Lies_CP(I,0).lt.NMinCP)      NMinCP=Lies_CP(I,0)
+            IF (Lies_CF(I,0).gt.NMaxCF)      NMaxCF=Lies_CF(I,0)
+            NATreat=NATreat+1
+         END IF
+      END DO
+      if (debug) WRITE(*,*) 'NMinCP=',NMinCP
+      if (debug) WRITE(*,*) 'NMaxCF=',NMaxCF
+      if (debug) WRITE(*,*) 'NATreat=',NAtreat
+
+
+      IF (Debug) THEN
+         WRITE(*,*) '------------------ Zmat Build -------------------'
+         WRITE(*,*) 'LIAISONS'
+         DO I=1,na
+            WRITE(*,1003) i,(LIAISONS(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(*,*) 'LIes_CF'
+         DO I=1,na
+            WRITE(*,1003) i,(LIeS_CF(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(*,*) 'LIes_CP'
+         DO I=1,na
+            WRITE(*,1003) i,(LIeS_CP(I,J),J=0,NMaxL)
+         END DO
+         WRITE(*,*) '-- Zmat Build : only _To treat_ atoms------------'
+         WRITE(*,*) 'LIAISONS'
+         DO I=1,na
+            IF (ListAt(I).AND.(.NOT.DejaFait(I))) &
+                 WRITE(*,1003) i,(LIAISONS(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(*,*) 'LIes_CF'
+         DO I=1,na
+            IF (ListAt(I).AND.(.NOT.DejaFait(I))) &
+                WRITE(*,1003) i,(LIeS_CF(I,J),J=0,NMaxL)
+         END DO
+
+         WRITE(*,*) 'LIes_CP'
+         DO I=1,na
+            IF (ListAt(I).AND.(.NOT.DejaFait(I))) &
+                WRITE(*,1003) i,(LIeS_CP(I,J),J=0,NMaxL)
+         END DO
+
+      END IF
+
+
+      if (NAtreat.EQ.0) THEN
+         WRITE(*,*) "Foutage de gueule : NAtTreat=0"
+         RETURN
+      END IF
+
+      if (debug) THEN
+         WRITE(*,*) 'DBG ZmatBuil, izm=',izm
+         DO I=1,na
+            WRITE(*,'(1X,I5,1X,L4,1X,L4,12(1X,I4))') i,ListAt(I) &
+                 ,DejaFait(I), &
+                 (Liaisons(I,J),J=0,Liaisons(I,0))
+         END DO
+      END IF
+
+!!!   atraiter NMaxCF=0 :que des atomes separes...
+!     mais faut-il reellement faire un cas a part ?
+
+!     On compte le nb d'atomes sans atomes CP (centripetes)
+      NbAt0=0
+      DO I=1,na
+         IF (ListAt(I).AND.(.NOT.DejaFait(I)).AND. &
+              (Lies_CP(I,0).eq.NMinCP)) THEN
+            NbAt0=NbAt0+1
+            AtCP0(NbAt0)=I
+            IF (DEBUG) WRITE(*,*) "Center atom",NbAt0,I,Atome(I)
+         END IF
+      END DO
+      AtCP0(NbAt0+1)=0
+      NbAt0r=NbAt0
+
+      IF (Debug)  WRITE(*,*) 'DBG ZmatBuld - NCP0,AtCP0 ',NbAt0, &
+           (AtCP0(i),i=1,NbAt0)
+
+!     On va les traiter tous en construisant les molecules en partant d'eux
+!     Le premier atome sans CP est different des autres car il fixe
+!     l'origine
+
+!First atom
+      IF (Izm==0) THEN
+         FFirst=.FALSE.
+         if (debug) WRITE(*,*) 'DBG ZmatBuil - Treating Izm=1'
+!     IZm=1
+!     Boucle pour trouver celui qui a le plus d'atomes CF
+         IdAt0=0
+         VCF=-1
+         DO I=1,NbAt0
+!     WRITE(*,*) 'DBG ZmatB',I,AtCP0(I)
+            if (AtCP0(I).NE.0) THEN
+               ICat=AtCP0(I)
+               if (Lies_CF(ICAt,0).gt.VCF) THEN
+                  IdAt0=ICat
+                  IdxAt0=I
+                  VCF=Lies_CF(ICAt,0)
+               END IF
+            END IF
+         END DO
+
+!     IF (debug) WRITE(*,*) 'DBG ZmatBuil - VCF, IdxAt0,IdAt0',
+!     &        VCF, IdxAt0,IdAt0
+!     all atoms with NMinCP CP links do not have CF links... not a good choice to start
+!     building the molecule(s) around them... we increase NMinCP
+         AtCP0(IdxAt0)=0
+         NbAt0r=NbAt0r-1
+
+!     WRITE(IOOUT,*) 'Atome 1', IdAt0, Nom(Atome(IdAt0))
+         Izm1=IdAt0
+         Izm=Izm+1
+
+         ind_zmat(izm,1)=Izm1
+         ind_zmat(izm,2)=0
+         ind_zmat(izm,3)=0
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=0.0
+         val_zmat(izm,2)=0.0
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm1)=.True.
+
+      END IF                    ! end of izm==1 test
+
+!     On construit la premiere couche qui est speciale car elle fixe les
+!     axes.
+!     Plusieurs cas sont possibles suivant le nb d'atomes CF
+      IdAt0=ind_zmat(1,1)
+      Izm1=IdAt0
+
+!Second atom
+      IF ((izm==1).AND.(NAtreat.ge.2))  THEN
+         Done=.FALSE.
+         if (debug) WRITE(*,*) 'DBG ZmatBuil - Treating Izm=2'
+!     Two cases: 1) We are constructing the first fragment: FIzm1=.T.
+!     2) We are constructing the second fragment: FIzm1=.F.
+!     in this case, we select one CP0 atom to start with
+         IF (FFirst) THEN
+            FFirst=.FALSE.
+!     This is the first atom to be dealt with
+!     We look for a CP0
+            If (NbAt0r.ge.1) THEN
+               IdAt0=0
+               VCF=-1
+               WRITE(*,*) 'DBG  ZBuild Izm=2:AtCP0',(AtCP0(I),I=1,NbAt0)
+               DO I=1,NbAt0
+                  if (AtCP0(I).NE.0) THEN
+                     ICat=AtCP0(I)
+                     if (Lies_CF(I,0).gt.VCF) THEN
+                        Izm2=ICat
+                        IdxAt0=I
+                        VCF=Lies_CF(ICAt,0)
+                     END IF
+                  END IF
+               END DO
+               WRITE(*,*) 'DBG ZBuild Izm=2:izm2,IdxAt0,VCF,AtCP0(1)', &
+                    izm2,IdxAt0,VCF,AtCP0(1)
+               NbAt0r=NbAt0r-1
+               Done=.TRUE.
+            END IF
+
+!     If we do not have a CP0 available the other tests are identical
+!     for cases 1 and 2...
+         END IF
+         IF (.NOT.DONE) THEN
+            IF (Lies_CF(IdAt0,0).ge.1) THEN
+               IZm2=Lies_CF(IdAt0,1)
+               WRITE(*,*) 'DBG ZBuild Lies_CF(IdAt0,0).ge.1', &
+                    Lies_CF(IdAt0,0),izm2
+            ELSE
+!     First atom is not linked to anything... we look for the second CP0 atom
+!     if we have one..
+               If (NbAt0r.ge.1) THEN
+                  IdAt0=0
+                  VCF=-1
+                  IF (DEBUG) WRITE(*,*) 'DBG  ZBuild Izm=2:AtCP0', &
+                       (AtCP0(I),I=1,NbAt0)
+                  DO I=1,NbAt0
+                     if (AtCP0(I).NE.0) THEN
+                        ICat=AtCP0(I)
+                        if (Lies_CF(I,0).gt.VCF) THEN
+                           Izm2=ICat
+                           IdxAt0=I
+                           VCF=Lies_CF(ICAt,0)
+                        END IF
+                     END IF
+                  END DO
+                  IF (DEBUG) WRITE(*,*) 'DBG ZBuild Izm=2:izm2,IdxAt0,VCF,AtCP0(1)', &
+                       izm2,IdxAt0,VCF,AtCP0(1)
+                  NbAt0r=NbAt0r-1
+               ELSE
+!     we do not have another CP0 atom... but we know that there
+!     is at least two atoms... we look for the closest atom to Izm1
+                  Izm2=0
+                  Dist=1.D99
+                  DO I=1,Na
+                     IF (ListAt(I).AND.(.NOT.Dejafait(I))) THEN
+                        CALL vecteur(IZm1,I,x,y,z,vx1,vy1,vz1,norm1)
+                        if (Norm1.lt.Dist) IZm2=I
+                     END IF
+                  END DO
+               END IF
+            END IF
+         END IF
+         CALL vecteur(IZm1,IZm2,x,y,z,vx1,vy1,vz1,norm1)
+
+         Izm=Izm+1
+
+         ind_zmat(izm,1)=izm2
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=0
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm1
+         val_zmat(izm,2)=0.0
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm2)=.TRUE.
+
+      END IF                    ! end of izm==2 test
+
+      Izm1=ind_zmat(1,1)
+      Izm2=ind_zmat(2,1)
+
+! Third atom
+
+      IF ((Izm==2).AND.(NAtreat.ge.3)) THEN
+         Done=.FALSE.
+         if (debug) WRITE(*,*) 'DBG ZmatBuil - Treating Izm=3',FFirst
+!     Two cases: 1) We are constructing the first fragment: FIzm1=.T.
+!     2) We are constructing the second fragment: FIzm1=.F.
+!     in this case, we select one CP0 atom to start with
+         IF (FFirst) THEN
+            FFirst=.FALSE.
+!     This is the first atom to be dealt with
+!     We look for a CP0
+            If (NbAt0r.ge.1) THEN
+               IdAt0=0
+               VCF=-1
+               DO I=1,NbAt0
+                  if (AtCP0(I).NE.0) THEN
+                     ICat=AtCP0(I)
+                     if (Lies_CF(I,0).gt.VCF) THEN
+                        Izm3=ICat
+                        IdxAt0=I
+                        VCF=Lies_CF(ICAt,0)
+                     END IF
+                  END IF
+               END DO
+               NbAt0r=NbAt0r-1
+               Done=.TRUE.
+            END IF
+!     If we do not have a CP0 available the other tests are identical
+!     for cases 1 and 2...
+         END IF
+         IF (.NOT.Done) THEN
+            WRITE(*,*) 'DBG ZmatBuild: Done false for izm=3'
+            IF (Lies_CF(izm1,0).ge.2) THEN
+!     easiest case: the first atom is linked to at least 2 atoms.
+               WRITE(*,*) 'DBG ZmtB-izm3:Lies_CF(izm1,0)>=2 '
+               I=1
+               DO WHILE ((.NOT.ListAt(Lies_CF(izm1,I))) &
+                    .OR.(DejaFait(Lies_CF(izm1,I))))
+                  I=I+1
+               END DO
+               izm3=Lies_CF(Izm1,I)
+               Done=.TRUE.
+            ELSEIF (Lies_CF(Izm2,0).ge.1) THEN
+!     a bit more complex: first atom is linked to one atom (Izm2)
+!     but luckily 2nd atom is linked to at least one atom
+               I=1
+               DO WHILE ((.NOT.ListAt(Lies_CF(izm2,I))) &
+                    .OR.(DejaFait(Lies_CF(izm2,I))).AND.(I.le.Lies_CF(Izm2,0)))
+                  I=I+1
+               END DO
+               IF (I.LE.Lies_CF(Izm2,0)) THEN
+                  Izm3=Lies_CF(izm2,I)
+               WRITE(*,*) 'DBG ZmtB-izm3:Lies_CF(izm2,0)>=1 and ok  '
+!     We exchange Izm1 and Izm2 because the logical order is Izm3 linked
+!     to Izm2  and not to Izm1 as is the default later
+                  IzmTmp=Izm2
+                  Izm2=Izm1
+                  Izm1=IzmTmp
+                  Done=.TRUE.
+               END IF
+            END IF
+         IF (.NOT.Done) THEN
+!     None of the first two atoms has links to a third atom...
+!     we take it from the CP0 if possible...
+               If (NbAt0r.ge.1) THEN
+                  WRITE(*,*) 'DBG ZmatB izm=3',NbAt0r
+                  IdAt0=0
+                  VCF=-1
+                  DO I=1,NbAt0
+                     if (AtCP0(I).NE.0) THEN
+                        ICat=AtCP0(I)
+                        if (Lies_CF(I,0).gt.VCF) THEN
+                           Izm3=ICat
+                           IdxAt0=I
+                           VCF=Lies_CF(ICAt,0)
+                        END IF
+                     END IF
+                  END DO
+                  NbAt0r=NbAt0r-1
+                  WRITE(*,*) 'DBG ZmatB izm=3',NbAt0r,Izm3
+               ELSE
+! Or the  atom closest to 1
+                  Izm3=0
+                  Dist=1.D99
+                  DO I=1,Na
+                     IF (ListAt(I).AND.(.NOT.Dejafait(I))) THEN
+                        CALL vecteur(IZm1,I,x,y,z,vx1,vy1,vz1,norm1)
+                        if (Norm1.lt.Dist) IZm3=I
+                     END IF
+                  END DO
+               END IF
+            END IF
+         END IF
+
+         CALL vecteur(IZm1,IZm2,x,y,z,vx1,vy1,vz1,norm1)
+         CALL vecteur(izm1,izm3,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+!     write(*,11) n1,n2,norm1,n3,val
+
+         Izm=Izm+1
+
+         ind_zmat(izm,1)=izm3
+         ind_zmat(izm,2)=izm1
+         ind_zmat(izm,3)=izm2
+         ind_zmat(izm,4)=0
+         ind_zmat(izm,5)=0
+         val_zmat(izm,1)=norm2
+         val_zmat(izm,2)=val
+         val_zmat(izm,3)=0.0
+         DejaFait(Izm3)=.TRUE.
+
+      END IF                    ! end of test izm=3
+
+!     We add all atoms CF atoms linked to the already present atoms in the zmat to
+!     the "to do" list:
+!     Les atomes CF lies a IdAt0 sont mis en attente pour
+!     etre traites
+
+!     For 'historical' reasons, the first atom links have to be dealt with
+!     in a special way... now !
+
+      if (Izm.ge.NaTreat) Return
+
+
+      WRITE(*,*) 'DBG ZmatBuild Izm0',Izm0
+
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+      END IF
+
+      IF (FFIrst) GOTO 9753
+
+         I=Ind_zmat(Izm0,1)
+         DO IdAtl=1,Lies_CF(I,0)
+            Izm4= Lies_CF(I,IdAtl)
+!      WRITE(IOOUT,*) 'Atome ',Izm+1,Izm4,Nom(Atome(Izm4)),Izm1,
+!     $Izm2,Izm3
+            IF (ListAt(Izm4).AND.(.NOT.DejaFait(Izm4))) THEN
+               Izm=Izm+1
+               Call AddLigne(Izm,Izm4,Izm1,Izm2,Izm3,ind_zmat,val_zmat, &
+                 x,y,z)
+               DejaFait(Izm4)=.TRUE.
+            END IF
+         END DO
+!      END IF
+
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+       END IF
+
+      if (Izm.ge.NaTreat) Return
+
+      IndFin=1
+      DO I=Izm0,Izm
+         Iat=ind_zmat(I,1)
+!         Do iaf=1,Lies_CF(Iat,0)
+!!     if (ListAt(Lies_CF(IAt,iaf)).AND.
+!!     &              (.NOT.DejaFait(Lies_CF(IAt,iaf))))  THEN
+!            if (ListAt(Lies_CF(IAt,iaf))) THEN
+!               CAfaire(IndFin)=Lies_CF(IAt,Iaf)
+               CaFaire(IndFin)=Iat
+               IndFin=IndFin+1
+!            END IF
+!         END DO
+      END DO
+      CAfaire(IndFin)=0
+
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+
+      if (debug) WRITE(*,*) 'DBG ZmatBuil - Treating Izm=4'
+
+!     on a cree la premiere couche autour du premier centre
+!     reste a finir les autres couches
+      IndAFaire=1
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+      Do WHILE (Cafaire(IndAFaire).ne.0)
+         IAt0=Cafaire(IndAfaire)
+         if (debug) WRITE(*,*) "IndAFaire,IAt0,Lies_CF(IAt0,0)", &
+              IndAFaire,IAt0,Lies_CF(IAt0,0)
+         if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+            IAti=Lies_CF(IAt0,1)
+      WRITE(IOOUT,*) 'IAti:',IAti
+            IAtd=IAt0
+      WRITE(IOOUT,*) 'IAtd:',IAtd
+            IAtv=Lies_CP(IAt0,1)
+      WRITE(IOOUT,*) 'IAtv:',IAtv
+            IIAtdh=1
+            IAtdh=Lies_CF(IAtv,IIatdh)
+            DO WHILE (Iatdh.eq.IAt0)
+               IIatdh=IIatdh+1
+               IAtdh=Lies_CF(IAtv,IIatdh)
+            END DO
+            IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+      WRITE(IOOUT,*) 'IAtdh:',IAtdh
+            IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+               Izm=Izm+1
+               if (debug) WRITE(*,*) 'izm,IAti,IAtd,IAtv,IAtdh', &
+                    izm,IAti,IAtd,IAtv,IAtdh
+               Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                    ind_zmat,val_zmat ,x,y,z)
+               DejaFait(IAti)=.TRUE.
+            END IF
+
+            CAfaire(IndFin)=Lies_CF(IAt0,1)
+            IndFin=IndFin+1
+!     Le traitement des autres est plus facile
+            IAtdh=Lies_CF(IAt0,1)
+            DO IAta=2,Lies_CF(IAt0,0)
+               IAtI=Lies_CF(IAt0,IAta)
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+
+               IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh,ind_zmat &
+                       ,val_zmat,x,y,z)
+                  DejaFait(IAti)=.TRUE.
+               END IF
+            END DO
+            CAfaire(IndFin)=0
+         END IF
+         IndAFaire=IndAFaire+1
+         if (debug) WRITE(IOOUT,*) "IndAfaire,CaFaire:",IndAfaire, &
+            CaFaire
+      END DO
+
+      IndFin=1
+      DO I=1,Izm0
+         Iat=ind_zmat(I,1)
+!         Do iaf=1,Lies_CF(Iat,0)
+         if (ListAt(IAt).AND. &
+                    (.NOT.DejaFait(IAt)))  THEN
+!            if (ListAt(Lies_CF(IAt,iaf))) THEN
+!               CAfaire(IndFin)=Lies_CF(IAt,Iaf)
+               CaFaire(IndFin)=Iat
+               IndFin=IndFin+1
+            END IF
+!         END DO
+      END DO
+      CAfaire(IndFin)=0
+
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+
+      if (debug) WRITE(*,*) 'DBG ZmatBuil - Treating Izm=4'
+
+!     on a cree la premiere couche autour du premier centre
+!     reste a finir les autres couches
+      IndAFaire=1
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+      Do WHILE (Cafaire(IndAFaire).ne.0)
+         IAt0=Cafaire(IndAfaire)
+         if (debug) WRITE(*,*) "IndAFaire,IAt0,Lies_CF(IAt0,0)", &
+              IndAFaire,IAt0,Lies_CF(IAt0,0)
+         if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+            IAti=Lies_CF(IAt0,1)
+      WRITE(IOOUT,*) 'IAti:',IAti
+            IAtd=IAt0
+      WRITE(IOOUT,*) 'IAtd:',IAtd
+            IAtv=Lies_CP(IAt0,1)
+      WRITE(IOOUT,*) 'IAtv:',IAtv
+            IIAtdh=1
+            IAtdh=Lies_CF(IAtv,IIatdh)
+            DO WHILE (Iatdh.eq.IAt0)
+               IIatdh=IIatdh+1
+               IAtdh=Lies_CF(IAtv,IIatdh)
+            END DO
+            IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+      WRITE(IOOUT,*) 'IAtdh:',IAtdh
+            IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+               Izm=Izm+1
+               if (debug) WRITE(*,*) 'izm,IAti,IAtd,IAtv,IAtdh', &
+                    izm,IAti,IAtd,IAtv,IAtdh
+               Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                    ind_zmat,val_zmat ,x,y,z)
+               DejaFait(IAti)=.TRUE.
+            END IF
+
+            CAfaire(IndFin)=Lies_CF(IAt0,1)
+            IndFin=IndFin+1
+!     Le traitement des autres est plus facile
+            IAtdh=Lies_CF(IAt0,1)
+            DO IAta=2,Lies_CF(IAt0,0)
+               IAtI=Lies_CF(IAt0,IAta)
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+
+               IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh,ind_zmat &
+                       ,val_zmat,x,y,z)
+                  DejaFait(IAti)=.TRUE.
+               END IF
+            END DO
+            CAfaire(IndFin)=0
+         END IF
+         IndAFaire=IndAFaire+1
+         if (debug) WRITE(IOOUT,*) "IndAfaire,CaFaire:",IndAfaire, &
+            CaFaire
+      END DO
+
+
+!     On a fini de creer la molecule autour du premier atome 'centre'
+!     Pour les autres c'est presque id... sauf que les axes sont deja fixes
+!     On pourrait imaginer de mettre des atomes fictifs pour redefinir des axes
+!     locaux... dans une autre version
+!     V2.0
+ 9753 FFirst=.FALSE.
+      if (debug) THEN
+         WRITE(*,*) 'NbAt0r',NbAt0r,AtCP0
+      END IF
+      DO I=1,NbAt0r
+!     Boucle pour trouver celui qui a le plus d'atomes CF
+         IdAt0=0
+         VCF=-1
+         DO ICP0=1,NbAt0
+            if (AtCP0(ICP0).NE.0) THEN
+               ICat=AtCP0(ICP0)
+               if (Lies_CF(ICAt,0).gt.VCF) THEN
+                  IdAt0=ICat
+                  IdxAt0=ICP0
+                  VCF=Lies_CF(ICAt,0)
+               END IF
+            END IF
+         END DO
+         AtCP0(IdxAt0)=0
+
+         IF (debug) WRITE(*,*) 'Adding fragment centered on ',IdAt0, &
+              LIAISONS(IdAt0,0)
+         IF (debug) WRITE(*,*) 'Center linked to ',Lies_CF(IdAt0,0), &
+              ' atoms'
+!     if (LIAISONS(IdAt0,0).EQ.0) goto 12345
+
+         if (debug) THEN
+            WRITE(IOOUT,*) 'LIAISONS tralala',nbcycle
+            DO IAt=1,na
+               WRITE(IOOUT,1003) iat,(LIAISONS(Iat,Jat),Jat=0,NMaxL)
+            END DO
+         END IF
+ 1003    FORMAT(1X,I5,' - ',12(I5))
+!     Boucle pour voir quel est l'atome du fragment precedent qui est le plus
+!     proche de celui ci
+!     Rq: si ce sont des cycles lies, il pourrait etre malin de rechercher
+!     a quoi il etait lie.
+         norm2=1.e6
+         Idx=0
+         DO ICAt=1,Izm
+            CALL vecteur(Idat0,ind_zmat(icat,1),x,y,z,vx1,vy1,vz1 &
+                 ,norm1)
+            if (norm2.ge.norm1) THEN
+               norm2=norm1
+               Idx=Icat
+            END IF
+         END DO
+         IF (debug) WRITE(*,*) 'Link between fragments ',IdAt0, &
+              ind_zmat(Idx,1), ' -- Idx=',Idx
+
+! Despite the fact that this atom has officialy no CP atom
+! we add one into its list; the one just found
+         Lies_CP(IdAt0,0)=Lies_CP(IdAt0,0)+1
+         Lies_CP(Idat0,Lies_CP(IdAt0,0))= ind_zmat(Idx,1)
+         Lies_CP(Idat0,Lies_CP(IdAt0,0)+1)=0
+
+
+!     on a l'indice... on va rajouter cet atome a la liste !
+         izm=izm+1
+         n1=ind_zmat(Idx,1)
+!     Petit probleme si Idx<=2
+         IF (Idx.EQ.1) THEN
+!     Pb non negligeable ...
+            IF (izm.ge.2) THEN
+               IAtv=ind_zmat(2,1)
+               IAtdh=ind_zmat(3,1)
+            ELSE
+               WRITE(*,*) '2 frag, le 1er a moins de 2 atomes..'
+               WRITE(*,*) "J'ai merde... "
+               STOP
+            END IF
+         ELSEIF (Idx.EQ.2) THEN
+            IAtv=1
+            IF (izm.ge.2) THEN
+               IAtdh=ind_zmat(3,1)
+            ELSE
+               WRITE(*,*) '2 frag, le 1er a moins de 2 atomes...'
+               WRITE(*,*) "J'ai merde... "
+               STOP
+            END IF
+         ELSE
+            IAtv=ind_zmat(Idx,2)
+            IAtdh=ind_zmat(Idx,3)
+         END IF
+
+!     WRITE(*,*) "Outchilou IAtv, IAtdh", IAtv, IAtdh,n1
+         CALL vecteur(n1,IdAt0,x,y,z,vx1,vy1,vz1,norm1)
+         CALL vecteur(n1,IAtv,x,y,z,vx2,vy2,vz2,norm2)
+         val=angle(vx1,vy1,vz1,norm1, &
+              vx2,vy2,vz2,norm2)
+         if (debug) WRITE(*,*) 'Angle val:1',IdAt0,n1,IAtv,val
+         if ((abs(val).LE.10.).OR.(abs(pi-val).le.10.)) THEN
+            IAtv=IAtdh
+!     Ceci pose pb si Idx<=3... a traiter plus tard
+            IF (Idx.ge.3) THEN
+               IAtdh=ind_zmat(Idx,4)
+            ELSE
+               if (izm.ge.4) THEN
+                  IAtdh=4
+               ELSE
+                  WRITE(*,*) 'Pb Angle Val+idx=3+izm<=4'
+                  STOP
+               END IF
+            END IF
+         END IF
+         Call AddLigne(Izm,IdAt0,ind_zmat(Idx,1),IAtv,IAtdh, &
+              ind_zmat,val_zmat,x,y,z)
+         DejaFait(IdAt0)=.TRUE.
+
+         IndFin=1
+         IAtd=IdAt0
+         n1=IAtdh
+         IAtdh=IAtv
+         IAtv=ind_zmat(Idx,1)
+!     On ajoute les atomes lies a cet atome dans la liste a faire
+         Do iaf=1,Lies_CF(IdAt0,0)
+            IatI=Lies_CF(IdAt0,Iaf)
+!     We check that this atom is not the one that is the closest to
+!     the center atom
+            if (IAtv.Ne.IAtI) THEN
+               IF (debug) WRITE(*,*) 'Adding atom',IAtI, &
+                    'to CAFaire in pos',iaf
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+!     On les ajoute aussi dans la zmat
+               If (ListAt(IAtI).AND.(.NOT.DejaFait(IatI))) THEN
+                  izm=izm+1
+       WRITE(*,*) "Outchili IAtv, IAtdh,IAtI", IAtv, IAtdh,IAtI
+                  CALL vecteur(IAtI,IAtD,x,y,z,vx1,vy1,vz1,norm1)
+                  CALL vecteur(IAtI,IAtv,x,y,z,vx2,vy2,vz2,norm2)
+                  val=angle(vx1,vy1,vz1,norm1, vx2,vy2,vz2,norm2)
+                  if (debug) &
+                       WRITE(*,*) 'Angle val:2',IAtI,IAtD,IAtv,val
+                  if ((abs(val).LE.10.).OR. &
+                       (abs(180.-abs(val)).le.10.)) THEN
+                     Call AddLigne(Izm,IAtI,IAtv,IAtdh,n1, &
+                          ind_zmat,val_zmat,x,y,z)
+                     DejaFait(Iati)=.TRUE.
+                  ELSE
+                     Call AddLigne(Izm,IAtI,IAtD,IAtv,IAtdh, &
+                          ind_zmat,val_zmat,x,y,z)
+                     DejaFait(Iati)=.TRUE.
+                  END IF
+               END IF
+            END IF
+         END DO
+         CAfaire(IndFin)=0
+
+!     On traite le reste de ce fragment !!
+         IndAFaire=1
+         WRITE(IOOUT,*) CaFaire
+         Do WHILE (Cafaire(IndAFaire).ne.0)
+            IAt0=Cafaire(IndAfaire)
+            if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+               Itmp=1
+               IAti=Lies_CF(IAt0,Itmp)
+               DO WHILE (DejaFait(IAti).AND. &
+                    (Itmp.Le.Lies_CF(IAt0,0)))
+                  Itmp=Itmp+1
+                  IAti=Lies_CF(IAt0,ITmp)
+               END DO
+               If (ListAt(IAtI).AND.(.NOT.DejaFait(IatI))) THEN
+                  IF (debug) WRITE(IOOUT,*) 'IAti:',IAti
+                  IAtd=IAt0
+                  IF (debug)     WRITE(IOOUT,*) 'IAtd:',IAtd
+                  IAtv=Lies_CP(IAt0,1)
+                  IF (debug)     WRITE(IOOUT,*) 'IAtv:',IAtv
+                  IIAtdh=1
+                  IAtdh=Lies_CF(IAtv,IIatdh)
+                  DO WHILE (Iatdh.eq.IAt0)
+                     IIatdh=IIatdh+1
+                     IAtdh=Lies_CF(IAtv,IIatdh)
+                  END DO
+                  IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+                  IF (debug) WRITE(IOOUT,*) 'IAtdh:',IAtdh
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                       ind_zmat,val_zmat,x,y,z)
+                     DejaFait(Iati)=.TRUE.
+!     Le traitement des autres est plus facile
+                  IAtdh=Lies_CF(IAt0,ITmp)
+                  DO IAta=ITmp+1,Lies_CF(IAt0,0)
+                     IAtI=Lies_CF(IAt0,IAta)
+                     If (ListAt(IAtI).AND.(.NOT.DejaFait(IatI))) &
+                          THEN
+                        Izm=Izm+1
+                        Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                             ind_zmat,val_zmat,x,y,z)
+                        DejaFait(Iati)=.TRUE.
+                     END IF
+                  END DO
+               END IF
+
+!     On ajoute les atomes lies a cet atome dans la liste a faire
+               Do iaf=1,Lies_CF(IAt0,0)
+                  CAfaire(IndFin)=Lies_CF(IAt0,Iaf)
+                  IndFin=IndFin+1
+               END DO
+               CAfaire(IndFin)=0
+            END IF
+            IndAFaire=IndAFaire+1
+         END DO
+12345    CONTINUE
+      END DO
+
+      WRITE(*,*) 'TOTOTOTOTOTOTOTOT'
+
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+      END IF
+
+      IndFin=1
+      DO I=1,Izm0
+         Iat=ind_zmat(I,1)
+         Do iaf=1,Lies_CF(Iat,0)
+            IIat=Lies_CF(Iat,iaf)
+            if (ListAt(iIAt).AND. &
+                 (.NOT.DejaFait(iIAt)))  THEN
+               IAti=IIat
+               WRITE(IOOUT,*) 'IAti:',IAti
+               IAtd=IAt0
+               WRITE(IOOUT,*) 'IAtd:',IAtd
+               IAtv=Lies_CP(IAt0,1)
+               WRITE(IOOUT,*) 'IAtv:',IAtv
+               IIAtdh=1
+               IAtdh=Lies_CF(IAtv,IIatdh)
+               DO WHILE (Iatdh.eq.IAt0)
+                  IIatdh=IIatdh+1
+                  IAtdh=Lies_CF(IAtv,IIatdh)
+               END DO
+               IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+               WRITE(IOOUT,*) 'IAtdh:',IAtdh
+               IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+                  Izm=Izm+1
+                  if (debug) WRITE(*,*) 'izm,IAti,IAtd,IAtv,IAtdh', &
+                       izm,IAti,IAtd,IAtv,IAtdh
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                       ind_zmat,val_zmat ,x,y,z)
+                  DejaFait(IAti)=.TRUE.
+                  CaFaire(IndFin)=iIat
+                  IndFin=IndFin+1
+               END IF
+            END IF
+         END DO
+      END DO
+      CAfaire(IndFin)=0
+
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+
+      if (debug) WRITE(*,*) 'DBG ZmatBuil - Toto'
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+      END IF
+
+!     on a cree la premiere couche autour du premier centre
+!     reste a finir les autres couches
+      IndAFaire=1
+      if (debug) WRITE(IOOUT,*) "CaFaire:",CaFaire
+      Do WHILE (Cafaire(IndAFaire).ne.0)
+         IAt0=Cafaire(IndAfaire)
+         if (debug) WRITE(*,*) "IndAFaire,IAt0,Lies_CF(IAt0,0)", &
+              IndAFaire,IAt0,Lies_CF(IAt0,0)
+         if (Lies_CF(IAt0,0).ge.1) THEN
+!     IAt0 est l'atome pour lequel on construit la couche suivante
+!     le premier atome lie est particulier car il definit l'orientation
+!     de ce fragment
+            IAti=Lies_CF(IAt0,1)
+      WRITE(IOOUT,*) 'IAti:',IAti
+            IAtd=IAt0
+      WRITE(IOOUT,*) 'IAtd:',IAtd
+            IAtv=Lies_CP(IAt0,1)
+      WRITE(IOOUT,*) 'IAtv:',IAtv
+            IIAtdh=1
+            IAtdh=Lies_CF(IAtv,IIatdh)
+            DO WHILE (Iatdh.eq.IAt0)
+               IIatdh=IIatdh+1
+               IAtdh=Lies_CF(IAtv,IIatdh)
+            END DO
+            IF (IAtdh.eq.0) IAtdh=Lies_CP(IAtv,1)
+      WRITE(IOOUT,*) 'IAtdh:',IAtdh
+            IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+               Izm=Izm+1
+               if (debug) WRITE(*,*) 'izm,IAti,IAtd,IAtv,IAtdh', &
+                    izm,IAti,IAtd,IAtv,IAtdh
+               Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh, &
+                    ind_zmat,val_zmat ,x,y,z)
+               DejaFait(IAti)=.TRUE.
+            END IF
+
+            CAfaire(IndFin)=Lies_CF(IAt0,1)
+            IndFin=IndFin+1
+!     Le traitement des autres est plus facile
+            IAtdh=Lies_CF(IAt0,1)
+            DO IAta=2,Lies_CF(IAt0,0)
+               IAtI=Lies_CF(IAt0,IAta)
+               CAfaire(IndFin)=IAtI
+               IndFin=IndFin+1
+
+               IF (ListAt(IAti).AND.(.NOT.DejaFait(IAti))) THEN
+                  IF (debug) &
+         WRITE(*,*) 'DBG ZmatBuil Toto adding',Iati,Izm
+                  Izm=Izm+1
+                  Call AddLigne(Izm,IAti,IAtd,IAtv,IAtdh,ind_zmat &
+                       ,val_zmat,x,y,z)
+                  DejaFait(IAti)=.TRUE.
+               END IF
+            END DO
+            CAfaire(IndFin)=0
+         END IF
+         IndAFaire=IndAFaire+1
+         if (debug) WRITE(IOOUT,*) "Toto IndAfaire,CaFaire:",IndAfaire, &
+            CaFaire
+      END DO
+
+
+      if (debug) THEN
+         WRITE(*,*) 'ind_zmat'
+         DO I=1,na
+            WRITE(*,'(1X,5I5)') (ind_zmat(i,j),j=1,5)
+         END DO
+      END IF
+
+      END

Property changes on: src/ZmatBuild.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Path.valid
===================================================================
--- src/Path.valid	(revision 0)
+++ src/Path.valid	(revision 1)
@@ -0,0 +1,47 @@
+# This file contains the option used by the valid subroutine
+# This file is read at each run of the program, so that you can easily
+# add or remove some options.
+# The structure of this file is the followin
+# Comment lines MUST start by a #. The rest of the line is dismissed
+# by the program
+# The program is not sensitive to the case of the lines
+# For lines that are not comments, the program expects to read first
+# the value of the option and then the option.
+# For example : F DEBUG GEOSTEP
+# The first letter of the value should be f or t  (the . is dismissed)
+# If the option is * then all the REMAINING lines are read, and their
+# values are put to the value of '*'.
+#F *
+T Read_geom
+T DMRGRNK
+T valid
+F PathCreate
+T Hupdate
+T Hess
+T Main
+F Spline
+F Splinder
+F Splint
+F Step_RFO
+F PrintTangent
+F CalcRmsd
+T ztocd
+T ggc2gz
+F geostep
+F mling
+F Add2indzmat
+F PrintGeom
+T Egrad
+T EGRAD_baker
+T EGRAD_test
+T EGRAD_mopac
+T EGradPath
+F Calc_baker
+F Calc_zmat
+F Extrapol_baker
+F Calc_baker_allGeomF
+F ConvertBakerInternal_cart
+F Ginvse
+#T *
+F Calc_zmat_constr_frag
+F CalcTangent
Index: src/lapack/double/dlasq1.f
===================================================================
--- src/lapack/double/dlasq1.f	(revision 0)
+++ src/lapack/double/dlasq1.f	(revision 1)
@@ -0,0 +1,154 @@
+      SUBROUTINE DLASQ1( N, D, E, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- November 2008                                                   --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( * ), E( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ1 computes the singular values of a real N-by-N bidiagonal
+*  matrix with diagonal D and off-diagonal E. The singular values
+*  are computed to high relative accuracy, in the absence of
+*  denormalization, underflow and overflow. The algorithm was first
+*  presented in
+*
+*  "Accurate singular values and differential qd algorithms" by K. V.
+*  Fernando and B. N. Parlett, Numer. Math., Vol-67, No. 2, pp. 191-230,
+*  1994,
+*
+*  and the present implementation is described in "An implementation of
+*  the dqds Algorithm (Positive Case)", LAPACK Working Note.
+*
+*  Arguments
+*  =========
+*
+*  N     (input) INTEGER
+*        The number of rows and columns in the matrix. N >= 0.
+*
+*  D     (input/output) DOUBLE PRECISION array, dimension (N)
+*        On entry, D contains the diagonal elements of the
+*        bidiagonal matrix whose SVD is desired. On normal exit,
+*        D contains the singular values in decreasing order.
+*
+*  E     (input/output) DOUBLE PRECISION array, dimension (N)
+*        On entry, elements E(1:N-1) contain the off-diagonal elements
+*        of the bidiagonal matrix whose SVD is desired.
+*        On exit, E is overwritten.
+*
+*  WORK  (workspace) DOUBLE PRECISION array, dimension (4*N)
+*
+*  INFO  (output) INTEGER
+*        = 0: successful exit
+*        < 0: if INFO = -i, the i-th argument had an illegal value
+*        > 0: the algorithm failed
+*             = 1, a split was marked by a positive value in E
+*             = 2, current block of Z not diagonalized after 30*N
+*                  iterations (in inner while loop)
+*             = 3, termination criterion of outer while loop not met 
+*                  (program created more than N unreduced blocks)
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, IINFO
+      DOUBLE PRECISION   EPS, SCALE, SAFMIN, SIGMN, SIGMX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DLAS2, DLASCL, DLASQ2, DLASRT, XERBLA
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      INFO = 0
+      IF( N.LT.0 ) THEN
+         INFO = -2
+         CALL XERBLA( 'DLASQ1', -INFO )
+         RETURN
+      ELSE IF( N.EQ.0 ) THEN
+         RETURN
+      ELSE IF( N.EQ.1 ) THEN
+         D( 1 ) = ABS( D( 1 ) )
+         RETURN
+      ELSE IF( N.EQ.2 ) THEN
+         CALL DLAS2( D( 1 ), E( 1 ), D( 2 ), SIGMN, SIGMX )
+         D( 1 ) = SIGMX
+         D( 2 ) = SIGMN
+         RETURN
+      END IF
+*
+*     Estimate the largest singular value.
+*
+      SIGMX = ZERO
+      DO 10 I = 1, N - 1
+         D( I ) = ABS( D( I ) )
+         SIGMX = MAX( SIGMX, ABS( E( I ) ) )
+   10 CONTINUE
+      D( N ) = ABS( D( N ) )
+*
+*     Early return if SIGMX is zero (matrix is already diagonal).
+*
+      IF( SIGMX.EQ.ZERO ) THEN
+         CALL DLASRT( 'D', N, D, IINFO )
+         RETURN
+      END IF
+*
+      DO 20 I = 1, N
+         SIGMX = MAX( SIGMX, D( I ) )
+   20 CONTINUE
+*
+*     Copy D and E into WORK (in the Z format) and scale (squaring the
+*     input data makes scaling by a power of the radix pointless).
+*
+      EPS = DLAMCH( 'Precision' )
+      SAFMIN = DLAMCH( 'Safe minimum' )
+      SCALE = SQRT( EPS / SAFMIN )
+      CALL DCOPY( N, D, 1, WORK( 1 ), 2 )
+      CALL DCOPY( N-1, E, 1, WORK( 2 ), 2 )
+      CALL DLASCL( 'G', 0, 0, SIGMX, SCALE, 2*N-1, 1, WORK, 2*N-1,
+     $             IINFO )
+*         
+*     Compute the q's and e's.
+*
+      DO 30 I = 1, 2*N - 1
+         WORK( I ) = WORK( I )**2
+   30 CONTINUE
+      WORK( 2*N ) = ZERO
+*
+      CALL DLASQ2( N, WORK, INFO )
+*
+      IF( INFO.EQ.0 ) THEN
+         DO 40 I = 1, N
+            D( I ) = SQRT( WORK( I ) )
+   40    CONTINUE
+         CALL DLASCL( 'G', 0, 0, SCALE, SIGMX, N, 1, D, N, IINFO )
+      END IF
+*
+      RETURN
+*
+*     End of DLASQ1
+*
+      END
Index: src/lapack/double/dgebd2.f
===================================================================
--- src/lapack/double/dgebd2.f	(revision 0)
+++ src/lapack/double/dgebd2.f	(revision 1)
@@ -0,0 +1,240 @@
+      SUBROUTINE DGEBD2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), D( * ), E( * ), TAUP( * ),
+     $                   TAUQ( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEBD2 reduces a real general m by n matrix A to upper or lower
+*  bidiagonal form B by an orthogonal transformation: Q' * A * P = B.
+*
+*  If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows in the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns in the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the m by n general matrix to be reduced.
+*          On exit,
+*          if m >= n, the diagonal and the first superdiagonal are
+*            overwritten with the upper bidiagonal matrix B; the
+*            elements below the diagonal, with the array TAUQ, represent
+*            the orthogonal matrix Q as a product of elementary
+*            reflectors, and the elements above the first superdiagonal,
+*            with the array TAUP, represent the orthogonal matrix P as
+*            a product of elementary reflectors;
+*          if m < n, the diagonal and the first subdiagonal are
+*            overwritten with the lower bidiagonal matrix B; the
+*            elements below the first subdiagonal, with the array TAUQ,
+*            represent the orthogonal matrix Q as a product of
+*            elementary reflectors, and the elements above the diagonal,
+*            with the array TAUP, represent the orthogonal matrix P as
+*            a product of elementary reflectors.
+*          See Further Details.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  D       (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The diagonal elements of the bidiagonal matrix B:
+*          D(i) = A(i,i).
+*
+*  E       (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*          The off-diagonal elements of the bidiagonal matrix B:
+*          if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+*          if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+*  TAUQ    (output) DOUBLE PRECISION array dimension (min(M,N))
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix Q. See Further Details.
+*
+*  TAUP    (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix P. See Further Details.
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (max(M,N))
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit.
+*          < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  The matrices Q and P are represented as products of elementary
+*  reflectors:
+*
+*  If m >= n,
+*
+*     Q = H(1) H(2) . . . H(n)  and  P = G(1) G(2) . . . G(n-1)
+*
+*  Each H(i) and G(i) has the form:
+*
+*     H(i) = I - tauq * v * v'  and G(i) = I - taup * u * u'
+*
+*  where tauq and taup are real scalars, and v and u are real vectors;
+*  v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i);
+*  u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in A(i,i+2:n);
+*  tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  If m < n,
+*
+*     Q = H(1) H(2) . . . H(m-1)  and  P = G(1) G(2) . . . G(m)
+*
+*  Each H(i) and G(i) has the form:
+*
+*     H(i) = I - tauq * v * v'  and G(i) = I - taup * u * u'
+*
+*  where tauq and taup are real scalars, and v and u are real vectors;
+*  v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i);
+*  u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
+*  tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  The contents of A on exit are illustrated by the following examples:
+*
+*  m = 6 and n = 5 (m > n):          m = 5 and n = 6 (m < n):
+*
+*    (  d   e   u1  u1  u1 )           (  d   u1  u1  u1  u1  u1 )
+*    (  v1  d   e   u2  u2 )           (  e   d   u2  u2  u2  u2 )
+*    (  v1  v2  d   e   u3 )           (  v1  e   d   u3  u3  u3 )
+*    (  v1  v2  v3  d   e  )           (  v1  v2  e   d   u4  u4 )
+*    (  v1  v2  v3  v4  d  )           (  v1  v2  v3  e   d   u5 )
+*    (  v1  v2  v3  v4  v5 )
+*
+*  where d and e denote diagonal and off-diagonal elements of B, vi
+*  denotes an element of the vector defining H(i), and ui an element of
+*  the vector defining G(i).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, DLARFG, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters
+*
+      INFO = 0
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      END IF
+      IF( INFO.LT.0 ) THEN
+         CALL XERBLA( 'DGEBD2', -INFO )
+         RETURN
+      END IF
+*
+      IF( M.GE.N ) THEN
+*
+*        Reduce to upper bidiagonal form
+*
+         DO 10 I = 1, N
+*
+*           Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+            CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+     $                   TAUQ( I ) )
+            D( I ) = A( I, I )
+            A( I, I ) = ONE
+*
+*           Apply H(i) to A(i:m,i+1:n) from the left
+*
+            IF( I.LT.N )
+     $         CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAUQ( I ),
+     $                     A( I, I+1 ), LDA, WORK )
+            A( I, I ) = D( I )
+*
+            IF( I.LT.N ) THEN
+*
+*              Generate elementary reflector G(i) to annihilate
+*              A(i,i+2:n)
+*
+               CALL DLARFG( N-I, A( I, I+1 ), A( I, MIN( I+2, N ) ),
+     $                      LDA, TAUP( I ) )
+               E( I ) = A( I, I+1 )
+               A( I, I+1 ) = ONE
+*
+*              Apply G(i) to A(i+1:m,i+1:n) from the right
+*
+               CALL DLARF( 'Right', M-I, N-I, A( I, I+1 ), LDA,
+     $                     TAUP( I ), A( I+1, I+1 ), LDA, WORK )
+               A( I, I+1 ) = E( I )
+            ELSE
+               TAUP( I ) = ZERO
+            END IF
+   10    CONTINUE
+      ELSE
+*
+*        Reduce to lower bidiagonal form
+*
+         DO 20 I = 1, M
+*
+*           Generate elementary reflector G(i) to annihilate A(i,i+1:n)
+*
+            CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+     $                   TAUP( I ) )
+            D( I ) = A( I, I )
+            A( I, I ) = ONE
+*
+*           Apply G(i) to A(i+1:m,i:n) from the right
+*
+            IF( I.LT.M )
+     $         CALL DLARF( 'Right', M-I, N-I+1, A( I, I ), LDA,
+     $                     TAUP( I ), A( I+1, I ), LDA, WORK )
+            A( I, I ) = D( I )
+*
+            IF( I.LT.M ) THEN
+*
+*              Generate elementary reflector H(i) to annihilate
+*              A(i+2:m,i)
+*
+               CALL DLARFG( M-I, A( I+1, I ), A( MIN( I+2, M ), I ), 1,
+     $                      TAUQ( I ) )
+               E( I ) = A( I+1, I )
+               A( I+1, I ) = ONE
+*
+*              Apply H(i) to A(i+1:m,i+1:n) from the left
+*
+               CALL DLARF( 'Left', M-I, N-I, A( I+1, I ), 1, TAUQ( I ),
+     $                     A( I+1, I+1 ), LDA, WORK )
+               A( I+1, I ) = E( I )
+            ELSE
+               TAUQ( I ) = ZERO
+            END IF
+   20    CONTINUE
+      END IF
+      RETURN
+*
+*     End of DGEBD2
+*
+      END
Index: src/lapack/double/dgebrd.f
===================================================================
--- src/lapack/double/dgebrd.f	(revision 0)
+++ src/lapack/double/dgebrd.f	(revision 1)
@@ -0,0 +1,269 @@
+      SUBROUTINE DGEBRD( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,
+     $                   INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), D( * ), E( * ), TAUP( * ),
+     $                   TAUQ( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEBRD reduces a general real M-by-N matrix A to upper or lower
+*  bidiagonal form B by an orthogonal transformation: Q**T * A * P = B.
+*
+*  If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows in the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns in the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N general matrix to be reduced.
+*          On exit,
+*          if m >= n, the diagonal and the first superdiagonal are
+*            overwritten with the upper bidiagonal matrix B; the
+*            elements below the diagonal, with the array TAUQ, represent
+*            the orthogonal matrix Q as a product of elementary
+*            reflectors, and the elements above the first superdiagonal,
+*            with the array TAUP, represent the orthogonal matrix P as
+*            a product of elementary reflectors;
+*          if m < n, the diagonal and the first subdiagonal are
+*            overwritten with the lower bidiagonal matrix B; the
+*            elements below the first subdiagonal, with the array TAUQ,
+*            represent the orthogonal matrix Q as a product of
+*            elementary reflectors, and the elements above the diagonal,
+*            with the array TAUP, represent the orthogonal matrix P as
+*            a product of elementary reflectors.
+*          See Further Details.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  D       (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The diagonal elements of the bidiagonal matrix B:
+*          D(i) = A(i,i).
+*
+*  E       (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*          The off-diagonal elements of the bidiagonal matrix B:
+*          if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
+*          if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*
+*  TAUQ    (output) DOUBLE PRECISION array dimension (min(M,N))
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix Q. See Further Details.
+*
+*  TAUP    (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix P. See Further Details.
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The length of the array WORK.  LWORK >= max(1,M,N).
+*          For optimum performance LWORK >= (M+N)*NB, where NB
+*          is the optimal blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  The matrices Q and P are represented as products of elementary
+*  reflectors:
+*
+*  If m >= n,
+*
+*     Q = H(1) H(2) . . . H(n)  and  P = G(1) G(2) . . . G(n-1)
+*
+*  Each H(i) and G(i) has the form:
+*
+*     H(i) = I - tauq * v * v'  and G(i) = I - taup * u * u'
+*
+*  where tauq and taup are real scalars, and v and u are real vectors;
+*  v(1:i-1) = 0, v(i) = 1, and v(i+1:m) is stored on exit in A(i+1:m,i);
+*  u(1:i) = 0, u(i+1) = 1, and u(i+2:n) is stored on exit in A(i,i+2:n);
+*  tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  If m < n,
+*
+*     Q = H(1) H(2) . . . H(m-1)  and  P = G(1) G(2) . . . G(m)
+*
+*  Each H(i) and G(i) has the form:
+*
+*     H(i) = I - tauq * v * v'  and G(i) = I - taup * u * u'
+*
+*  where tauq and taup are real scalars, and v and u are real vectors;
+*  v(1:i) = 0, v(i+1) = 1, and v(i+2:m) is stored on exit in A(i+2:m,i);
+*  u(1:i-1) = 0, u(i) = 1, and u(i+1:n) is stored on exit in A(i,i+1:n);
+*  tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  The contents of A on exit are illustrated by the following examples:
+*
+*  m = 6 and n = 5 (m > n):          m = 5 and n = 6 (m < n):
+*
+*    (  d   e   u1  u1  u1 )           (  d   u1  u1  u1  u1  u1 )
+*    (  v1  d   e   u2  u2 )           (  e   d   u2  u2  u2  u2 )
+*    (  v1  v2  d   e   u3 )           (  v1  e   d   u3  u3  u3 )
+*    (  v1  v2  v3  d   e  )           (  v1  v2  e   d   u4  u4 )
+*    (  v1  v2  v3  v4  d  )           (  v1  v2  v3  e   d   u5 )
+*    (  v1  v2  v3  v4  v5 )
+*
+*  where d and e denote diagonal and off-diagonal elements of B, vi
+*  denotes an element of the vector defining H(i), and ui an element of
+*  the vector defining G(i).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            I, IINFO, J, LDWRKX, LDWRKY, LWKOPT, MINMN, NB,
+     $                   NBMIN, NX
+      DOUBLE PRECISION   WS
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEBD2, DGEMM, DLABRD, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          DBLE, MAX, MIN
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      EXTERNAL           ILAENV
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters
+*
+      INFO = 0
+      NB = MAX( 1, ILAENV( 1, 'DGEBRD', ' ', M, N, -1, -1 ) )
+      LWKOPT = ( M+N )*NB
+      WORK( 1 ) = DBLE( LWKOPT )
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      ELSE IF( LWORK.LT.MAX( 1, M, N ) .AND. .NOT.LQUERY ) THEN
+         INFO = -10
+      END IF
+      IF( INFO.LT.0 ) THEN
+         CALL XERBLA( 'DGEBRD', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      MINMN = MIN( M, N )
+      IF( MINMN.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      WS = MAX( M, N )
+      LDWRKX = M
+      LDWRKY = N
+*
+      IF( NB.GT.1 .AND. NB.LT.MINMN ) THEN
+*
+*        Set the crossover point NX.
+*
+         NX = MAX( NB, ILAENV( 3, 'DGEBRD', ' ', M, N, -1, -1 ) )
+*
+*        Determine when to switch from blocked to unblocked code.
+*
+         IF( NX.LT.MINMN ) THEN
+            WS = ( M+N )*NB
+            IF( LWORK.LT.WS ) THEN
+*
+*              Not enough work space for the optimal NB, consider using
+*              a smaller block size.
+*
+               NBMIN = ILAENV( 2, 'DGEBRD', ' ', M, N, -1, -1 )
+               IF( LWORK.GE.( M+N )*NBMIN ) THEN
+                  NB = LWORK / ( M+N )
+               ELSE
+                  NB = 1
+                  NX = MINMN
+               END IF
+            END IF
+         END IF
+      ELSE
+         NX = MINMN
+      END IF
+*
+      DO 30 I = 1, MINMN - NX, NB
+*
+*        Reduce rows and columns i:i+nb-1 to bidiagonal form and return
+*        the matrices X and Y which are needed to update the unreduced
+*        part of the matrix
+*
+         CALL DLABRD( M-I+1, N-I+1, NB, A( I, I ), LDA, D( I ), E( I ),
+     $                TAUQ( I ), TAUP( I ), WORK, LDWRKX,
+     $                WORK( LDWRKX*NB+1 ), LDWRKY )
+*
+*        Update the trailing submatrix A(i+nb:m,i+nb:n), using an update
+*        of the form  A := A - V*Y' - X*U'
+*
+         CALL DGEMM( 'No transpose', 'Transpose', M-I-NB+1, N-I-NB+1,
+     $               NB, -ONE, A( I+NB, I ), LDA,
+     $               WORK( LDWRKX*NB+NB+1 ), LDWRKY, ONE,
+     $               A( I+NB, I+NB ), LDA )
+         CALL DGEMM( 'No transpose', 'No transpose', M-I-NB+1, N-I-NB+1,
+     $               NB, -ONE, WORK( NB+1 ), LDWRKX, A( I, I+NB ), LDA,
+     $               ONE, A( I+NB, I+NB ), LDA )
+*
+*        Copy diagonal and off-diagonal elements of B back into A
+*
+         IF( M.GE.N ) THEN
+            DO 10 J = I, I + NB - 1
+               A( J, J ) = D( J )
+               A( J, J+1 ) = E( J )
+   10       CONTINUE
+         ELSE
+            DO 20 J = I, I + NB - 1
+               A( J, J ) = D( J )
+               A( J+1, J ) = E( J )
+   20       CONTINUE
+         END IF
+   30 CONTINUE
+*
+*     Use unblocked code to reduce the remainder of the matrix
+*
+      CALL DGEBD2( M-I+1, N-I+1, A( I, I ), LDA, D( I ), E( I ),
+     $             TAUQ( I ), TAUP( I ), WORK, IINFO )
+      WORK( 1 ) = WS
+      RETURN
+*
+*     End of DGEBRD
+*
+      END
Index: src/lapack/double/dlasq3.f
===================================================================
--- src/lapack/double/dlasq3.f	(revision 0)
+++ src/lapack/double/dlasq3.f	(revision 1)
@@ -0,0 +1,315 @@
+      SUBROUTINE DLASQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
+     $                   ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
+     $                   DN2, G, TAU )
+*
+*  -- LAPACK routine (version 3.2.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- June 2010                                                       --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      LOGICAL            IEEE
+      INTEGER            I0, ITER, N0, NDIV, NFAIL, PP
+      DOUBLE PRECISION   DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G,
+     $                   QMAX, SIGMA, TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ3 checks for deflation, computes a shift (TAU) and calls dqds.
+*  In case of failure it changes shifts, and tries again until output
+*  is positive.
+*
+*  Arguments
+*  =========
+*
+*  I0     (input) INTEGER
+*         First index.
+*
+*  N0     (input/output) INTEGER
+*         Last index.
+*
+*  Z      (input) DOUBLE PRECISION array, dimension ( 4*N )
+*         Z holds the qd array.
+*
+*  PP     (input/output) INTEGER
+*         PP=0 for ping, PP=1 for pong.
+*         PP=2 indicates that flipping was applied to the Z array   
+*         and that the initial tests for deflation should not be 
+*         performed.
+*
+*  DMIN   (output) DOUBLE PRECISION
+*         Minimum value of d.
+*
+*  SIGMA  (output) DOUBLE PRECISION
+*         Sum of shifts used in current segment.
+*
+*  DESIG  (input/output) DOUBLE PRECISION
+*         Lower order part of SIGMA
+*
+*  QMAX   (input) DOUBLE PRECISION
+*         Maximum value of q.
+*
+*  NFAIL  (output) INTEGER
+*         Number of times shift was too big.
+*
+*  ITER   (output) INTEGER
+*         Number of iterations.
+*
+*  NDIV   (output) INTEGER
+*         Number of divisions.
+*
+*  IEEE   (input) LOGICAL
+*         Flag for IEEE or non IEEE arithmetic (passed to DLASQ5).
+*
+*  TTYPE  (input/output) INTEGER
+*         Shift type.
+*
+*  DMIN1  (input/output) DOUBLE PRECISION
+*
+*  DMIN2  (input/output) DOUBLE PRECISION
+*
+*  DN     (input/output) DOUBLE PRECISION
+*
+*  DN1    (input/output) DOUBLE PRECISION
+*
+*  DN2    (input/output) DOUBLE PRECISION
+*
+*  G      (input/output) DOUBLE PRECISION
+*
+*  TAU    (input/output) DOUBLE PRECISION
+*
+*         These are passed as arguments in order to save their values
+*         between calls to DLASQ3.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   CBIAS
+      PARAMETER          ( CBIAS = 1.50D0 )
+      DOUBLE PRECISION   ZERO, QURTR, HALF, ONE, TWO, HUNDRD
+      PARAMETER          ( ZERO = 0.0D0, QURTR = 0.250D0, HALF = 0.5D0,
+     $                     ONE = 1.0D0, TWO = 2.0D0, HUNDRD = 100.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            IPN4, J4, N0IN, NN, TTYPE
+      DOUBLE PRECISION   EPS, S, T, TEMP, TOL, TOL2
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLASQ4, DLASQ5, DLASQ6
+*     ..
+*     .. External Function ..
+      DOUBLE PRECISION   DLAMCH
+      LOGICAL            DISNAN
+      EXTERNAL           DISNAN, DLAMCH
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      N0IN = N0
+      EPS = DLAMCH( 'Precision' )
+      TOL = EPS*HUNDRD
+      TOL2 = TOL**2
+*
+*     Check for deflation.
+*
+   10 CONTINUE
+*
+      IF( N0.LT.I0 )
+     $   RETURN
+      IF( N0.EQ.I0 )
+     $   GO TO 20
+      NN = 4*N0 + PP
+      IF( N0.EQ.( I0+1 ) )
+     $   GO TO 40
+*
+*     Check whether E(N0-1) is negligible, 1 eigenvalue.
+*
+      IF( Z( NN-5 ).GT.TOL2*( SIGMA+Z( NN-3 ) ) .AND.
+     $    Z( NN-2*PP-4 ).GT.TOL2*Z( NN-7 ) )
+     $   GO TO 30
+*
+   20 CONTINUE
+*
+      Z( 4*N0-3 ) = Z( 4*N0+PP-3 ) + SIGMA
+      N0 = N0 - 1
+      GO TO 10
+*
+*     Check  whether E(N0-2) is negligible, 2 eigenvalues.
+*
+   30 CONTINUE
+*
+      IF( Z( NN-9 ).GT.TOL2*SIGMA .AND.
+     $    Z( NN-2*PP-8 ).GT.TOL2*Z( NN-11 ) )
+     $   GO TO 50
+*
+   40 CONTINUE
+*
+      IF( Z( NN-3 ).GT.Z( NN-7 ) ) THEN
+         S = Z( NN-3 )
+         Z( NN-3 ) = Z( NN-7 )
+         Z( NN-7 ) = S
+      END IF
+      IF( Z( NN-5 ).GT.Z( NN-3 )*TOL2 ) THEN
+         T = HALF*( ( Z( NN-7 )-Z( NN-3 ) )+Z( NN-5 ) )
+         S = Z( NN-3 )*( Z( NN-5 ) / T )
+         IF( S.LE.T ) THEN
+            S = Z( NN-3 )*( Z( NN-5 ) /
+     $          ( T*( ONE+SQRT( ONE+S / T ) ) ) )
+         ELSE
+            S = Z( NN-3 )*( Z( NN-5 ) / ( T+SQRT( T )*SQRT( T+S ) ) )
+         END IF
+         T = Z( NN-7 ) + ( S+Z( NN-5 ) )
+         Z( NN-3 ) = Z( NN-3 )*( Z( NN-7 ) / T )
+         Z( NN-7 ) = T
+      END IF
+      Z( 4*N0-7 ) = Z( NN-7 ) + SIGMA
+      Z( 4*N0-3 ) = Z( NN-3 ) + SIGMA
+      N0 = N0 - 2
+      GO TO 10
+*
+   50 CONTINUE
+      IF( PP.EQ.2 ) 
+     $   PP = 0
+*
+*     Reverse the qd-array, if warranted.
+*
+      IF( DMIN.LE.ZERO .OR. N0.LT.N0IN ) THEN
+         IF( CBIAS*Z( 4*I0+PP-3 ).LT.Z( 4*N0+PP-3 ) ) THEN
+            IPN4 = 4*( I0+N0 )
+            DO 60 J4 = 4*I0, 2*( I0+N0-1 ), 4
+               TEMP = Z( J4-3 )
+               Z( J4-3 ) = Z( IPN4-J4-3 )
+               Z( IPN4-J4-3 ) = TEMP
+               TEMP = Z( J4-2 )
+               Z( J4-2 ) = Z( IPN4-J4-2 )
+               Z( IPN4-J4-2 ) = TEMP
+               TEMP = Z( J4-1 )
+               Z( J4-1 ) = Z( IPN4-J4-5 )
+               Z( IPN4-J4-5 ) = TEMP
+               TEMP = Z( J4 )
+               Z( J4 ) = Z( IPN4-J4-4 )
+               Z( IPN4-J4-4 ) = TEMP
+   60       CONTINUE
+            IF( N0-I0.LE.4 ) THEN
+               Z( 4*N0+PP-1 ) = Z( 4*I0+PP-1 )
+               Z( 4*N0-PP ) = Z( 4*I0-PP )
+            END IF
+            DMIN2 = MIN( DMIN2, Z( 4*N0+PP-1 ) )
+            Z( 4*N0+PP-1 ) = MIN( Z( 4*N0+PP-1 ), Z( 4*I0+PP-1 ),
+     $                            Z( 4*I0+PP+3 ) )
+            Z( 4*N0-PP ) = MIN( Z( 4*N0-PP ), Z( 4*I0-PP ),
+     $                          Z( 4*I0-PP+4 ) )
+            QMAX = MAX( QMAX, Z( 4*I0+PP-3 ), Z( 4*I0+PP+1 ) )
+            DMIN = -ZERO
+         END IF
+      END IF
+*
+*     Choose a shift.
+*
+      CALL DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, DN1,
+     $             DN2, TAU, TTYPE, G )
+*
+*     Call dqds until DMIN > 0.
+*
+   70 CONTINUE
+*
+      CALL DLASQ5( I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN,
+     $             DN1, DN2, IEEE )
+*
+      NDIV = NDIV + ( N0-I0+2 )
+      ITER = ITER + 1
+*
+*     Check status.
+*
+      IF( DMIN.GE.ZERO .AND. DMIN1.GT.ZERO ) THEN
+*
+*        Success.
+*
+         GO TO 90
+*
+      ELSE IF( DMIN.LT.ZERO .AND. DMIN1.GT.ZERO .AND. 
+     $         Z( 4*( N0-1 )-PP ).LT.TOL*( SIGMA+DN1 ) .AND.
+     $         ABS( DN ).LT.TOL*SIGMA ) THEN
+*
+*        Convergence hidden by negative DN.
+*
+         Z( 4*( N0-1 )-PP+2 ) = ZERO
+         DMIN = ZERO
+         GO TO 90
+      ELSE IF( DMIN.LT.ZERO ) THEN
+*
+*        TAU too big. Select new TAU and try again.
+*
+         NFAIL = NFAIL + 1
+         IF( TTYPE.LT.-22 ) THEN
+*
+*           Failed twice. Play it safe.
+*
+            TAU = ZERO
+         ELSE IF( DMIN1.GT.ZERO ) THEN
+*
+*           Late failure. Gives excellent shift.
+*
+            TAU = ( TAU+DMIN )*( ONE-TWO*EPS )
+            TTYPE = TTYPE - 11
+         ELSE
+*
+*           Early failure. Divide by 4.
+*
+            TAU = QURTR*TAU
+            TTYPE = TTYPE - 12
+         END IF
+         GO TO 70
+      ELSE IF( DISNAN( DMIN ) ) THEN
+*
+*        NaN.
+*
+         IF( TAU.EQ.ZERO ) THEN
+            GO TO 80
+         ELSE
+            TAU = ZERO
+            GO TO 70
+         END IF
+      ELSE
+*            
+*        Possible underflow. Play it safe.
+*
+         GO TO 80
+      END IF
+*
+*     Risk of underflow.
+*
+   80 CONTINUE
+      CALL DLASQ6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DN1, DN2 )
+      NDIV = NDIV + ( N0-I0+2 )
+      ITER = ITER + 1
+      TAU = ZERO
+*
+   90 CONTINUE
+      IF( TAU.LT.SIGMA ) THEN
+         DESIG = DESIG + TAU
+         T = SIGMA + DESIG
+         DESIG = DESIG - ( T-SIGMA )
+      ELSE
+         T = SIGMA + TAU
+         DESIG = SIGMA - ( T-TAU ) + DESIG
+      END IF
+      SIGMA = T
+*
+      RETURN
+*
+*     End of DLASQ3
+*
+      END
Index: src/lapack/double/dlassq.f
===================================================================
--- src/lapack/double/dlassq.f	(revision 0)
+++ src/lapack/double/dlassq.f	(revision 1)
@@ -0,0 +1,89 @@
+      SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INCX, N
+      DOUBLE PRECISION   SCALE, SUMSQ
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   X( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASSQ  returns the values  scl  and  smsq  such that
+*
+*     ( scl**2 )*smsq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq,
+*
+*  where  x( i ) = X( 1 + ( i - 1 )*INCX ). The value of  sumsq  is
+*  assumed to be non-negative and  scl  returns the value
+*
+*     scl = max( scale, abs( x( i ) ) ).
+*
+*  scale and sumsq must be supplied in SCALE and SUMSQ and
+*  scl and smsq are overwritten on SCALE and SUMSQ respectively.
+*
+*  The routine makes only one pass through the vector x.
+*
+*  Arguments
+*  =========
+*
+*  N       (input) INTEGER
+*          The number of elements to be used from the vector X.
+*
+*  X       (input) DOUBLE PRECISION array, dimension (N)
+*          The vector for which a scaled sum of squares is computed.
+*             x( i )  = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n.
+*
+*  INCX    (input) INTEGER
+*          The increment between successive values of the vector X.
+*          INCX > 0.
+*
+*  SCALE   (input/output) DOUBLE PRECISION
+*          On entry, the value  scale  in the equation above.
+*          On exit, SCALE is overwritten with  scl , the scaling factor
+*          for the sum of squares.
+*
+*  SUMSQ   (input/output) DOUBLE PRECISION
+*          On entry, the value  sumsq  in the equation above.
+*          On exit, SUMSQ is overwritten with  smsq , the basic sum of
+*          squares from which  scl  has been factored out.
+*
+* =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            IX
+      DOUBLE PRECISION   ABSXI
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS
+*     ..
+*     .. Executable Statements ..
+*
+      IF( N.GT.0 ) THEN
+         DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX
+            IF( X( IX ).NE.ZERO ) THEN
+               ABSXI = ABS( X( IX ) )
+               IF( SCALE.LT.ABSXI ) THEN
+                  SUMSQ = 1 + SUMSQ*( SCALE / ABSXI )**2
+                  SCALE = ABSXI
+               ELSE
+                  SUMSQ = SUMSQ + ( ABSXI / SCALE )**2
+               END IF
+            END IF
+   10    CONTINUE
+      END IF
+      RETURN
+*
+*     End of DLASSQ
+*
+      END
Index: src/lapack/double/dlarf.f
===================================================================
--- src/lapack/double/dlarf.f	(revision 0)
+++ src/lapack/double/dlarf.f	(revision 1)
@@ -0,0 +1,153 @@
+      SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
+      IMPLICIT NONE
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE
+      INTEGER            INCV, LDC, M, N
+      DOUBLE PRECISION   TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), V( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARF applies a real elementary reflector H to a real m by n matrix
+*  C, from either the left or the right. H is represented in the form
+*
+*        H = I - tau * v * v'
+*
+*  where tau is a real scalar and v is a real vector.
+*
+*  If tau = 0, then H is taken to be the unit matrix.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': form  H * C
+*          = 'R': form  C * H
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C.
+*
+*  V       (input) DOUBLE PRECISION array, dimension
+*                     (1 + (M-1)*abs(INCV)) if SIDE = 'L'
+*                  or (1 + (N-1)*abs(INCV)) if SIDE = 'R'
+*          The vector v in the representation of H. V is not used if
+*          TAU = 0.
+*
+*  INCV    (input) INTEGER
+*          The increment between elements of v. INCV <> 0.
+*
+*  TAU     (input) DOUBLE PRECISION
+*          The value tau in the representation of H.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the m by n matrix C.
+*          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+*          or C * H if SIDE = 'R'.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension
+*                         (N) if SIDE = 'L'
+*                      or (M) if SIDE = 'R'
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            APPLYLEFT
+      INTEGER            I, LASTV, LASTC
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEMV, DGER
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILADLR, ILADLC
+      EXTERNAL           LSAME, ILADLR, ILADLC
+*     ..
+*     .. Executable Statements ..
+*
+      APPLYLEFT = LSAME( SIDE, 'L' )
+      LASTV = 0
+      LASTC = 0
+      IF( TAU.NE.ZERO ) THEN
+!     Set up variables for scanning V.  LASTV begins pointing to the end
+!     of V.
+         IF( APPLYLEFT ) THEN
+            LASTV = M
+         ELSE
+            LASTV = N
+         END IF
+         IF( INCV.GT.0 ) THEN
+            I = 1 + (LASTV-1) * INCV
+         ELSE
+            I = 1
+         END IF
+!     Look for the last non-zero row in V.
+         DO WHILE( LASTV.GT.0 .AND. V( I ).EQ.ZERO )
+            LASTV = LASTV - 1
+            I = I - INCV
+         END DO
+         IF( APPLYLEFT ) THEN
+!     Scan for the last non-zero column in C(1:lastv,:).
+            LASTC = ILADLC(LASTV, N, C, LDC)
+         ELSE
+!     Scan for the last non-zero row in C(:,1:lastv).
+            LASTC = ILADLR(M, LASTV, C, LDC)
+         END IF
+      END IF
+!     Note that lastc.eq.0 renders the BLAS operations null; no special
+!     case is needed at this level.
+      IF( APPLYLEFT ) THEN
+*
+*        Form  H * C
+*
+         IF( LASTV.GT.0 ) THEN
+*
+*           w(1:lastc,1) := C(1:lastv,1:lastc)' * v(1:lastv,1)
+*
+            CALL DGEMV( 'Transpose', LASTV, LASTC, ONE, C, LDC, V, INCV,
+     $           ZERO, WORK, 1 )
+*
+*           C(1:lastv,1:lastc) := C(...) - v(1:lastv,1) * w(1:lastc,1)'
+*
+            CALL DGER( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC )
+         END IF
+      ELSE
+*
+*        Form  C * H
+*
+         IF( LASTV.GT.0 ) THEN
+*
+*           w(1:lastc,1) := C(1:lastc,1:lastv) * v(1:lastv,1)
+*
+            CALL DGEMV( 'No transpose', LASTC, LASTV, ONE, C, LDC,
+     $           V, INCV, ZERO, WORK, 1 )
+*
+*           C(1:lastc,1:lastv) := C(...) - w(1:lastc,1) * v(1:lastv,1)'
+*
+            CALL DGER( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC )
+         END IF
+      END IF
+      RETURN
+*
+*     End of DLARF
+*
+      END
Index: src/lapack/double/dlasq5.f
===================================================================
--- src/lapack/double/dlasq5.f	(revision 0)
+++ src/lapack/double/dlasq5.f	(revision 1)
@@ -0,0 +1,201 @@
+      SUBROUTINE DLASQ5( I0, N0, Z, PP, TAU, DMIN, DMIN1, DMIN2, DN,
+     $                   DNM1, DNM2, IEEE )
+*
+*  -- LAPACK routine (version 3.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- November 2008                                                   --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      LOGICAL            IEEE
+      INTEGER            I0, N0, PP
+      DOUBLE PRECISION   DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ5 computes one dqds transform in ping-pong form, one
+*  version for IEEE machines another for non IEEE machines.
+*
+*  Arguments
+*  =========
+*
+*  I0    (input) INTEGER
+*        First index.
+*
+*  N0    (input) INTEGER
+*        Last index.
+*
+*  Z     (input) DOUBLE PRECISION array, dimension ( 4*N )
+*        Z holds the qd array. EMIN is stored in Z(4*N0) to avoid
+*        an extra argument.
+*
+*  PP    (input) INTEGER
+*        PP=0 for ping, PP=1 for pong.
+*
+*  TAU   (input) DOUBLE PRECISION
+*        This is the shift.
+*
+*  DMIN  (output) DOUBLE PRECISION
+*        Minimum value of d.
+*
+*  DMIN1 (output) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ).
+*
+*  DMIN2 (output) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+*  DN    (output) DOUBLE PRECISION
+*        d(N0), the last value of d.
+*
+*  DNM1  (output) DOUBLE PRECISION
+*        d(N0-1).
+*
+*  DNM2  (output) DOUBLE PRECISION
+*        d(N0-2).
+*
+*  IEEE  (input) LOGICAL
+*        Flag for IEEE or non IEEE arithmetic.
+*
+*  =====================================================================
+*
+*     .. Parameter ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            J4, J4P2
+      DOUBLE PRECISION   D, EMIN, TEMP
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MIN
+*     ..
+*     .. Executable Statements ..
+*
+      IF( ( N0-I0-1 ).LE.0 )
+     $   RETURN
+*
+      J4 = 4*I0 + PP - 3
+      EMIN = Z( J4+4 ) 
+      D = Z( J4 ) - TAU
+      DMIN = D
+      DMIN1 = -Z( J4 )
+*
+      IF( IEEE ) THEN
+*
+*        Code for IEEE arithmetic.
+*
+         IF( PP.EQ.0 ) THEN
+            DO 10 J4 = 4*I0, 4*( N0-3 ), 4
+               Z( J4-2 ) = D + Z( J4-1 ) 
+               TEMP = Z( J4+1 ) / Z( J4-2 )
+               D = D*TEMP - TAU
+               DMIN = MIN( DMIN, D )
+               Z( J4 ) = Z( J4-1 )*TEMP
+               EMIN = MIN( Z( J4 ), EMIN )
+   10       CONTINUE
+         ELSE
+            DO 20 J4 = 4*I0, 4*( N0-3 ), 4
+               Z( J4-3 ) = D + Z( J4 ) 
+               TEMP = Z( J4+2 ) / Z( J4-3 )
+               D = D*TEMP - TAU
+               DMIN = MIN( DMIN, D )
+               Z( J4-1 ) = Z( J4 )*TEMP
+               EMIN = MIN( Z( J4-1 ), EMIN )
+   20       CONTINUE
+         END IF
+*
+*        Unroll last two steps. 
+*
+         DNM2 = D
+         DMIN2 = DMIN
+         J4 = 4*( N0-2 ) - PP
+         J4P2 = J4 + 2*PP - 1
+         Z( J4-2 ) = DNM2 + Z( J4P2 )
+         Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+         DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
+         DMIN = MIN( DMIN, DNM1 )
+*
+         DMIN1 = DMIN
+         J4 = J4 + 4
+         J4P2 = J4 + 2*PP - 1
+         Z( J4-2 ) = DNM1 + Z( J4P2 )
+         Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+         DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
+         DMIN = MIN( DMIN, DN )
+*
+      ELSE
+*
+*        Code for non IEEE arithmetic.
+*
+         IF( PP.EQ.0 ) THEN
+            DO 30 J4 = 4*I0, 4*( N0-3 ), 4
+               Z( J4-2 ) = D + Z( J4-1 ) 
+               IF( D.LT.ZERO ) THEN
+                  RETURN
+               ELSE 
+                  Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
+                  D = Z( J4+1 )*( D / Z( J4-2 ) ) - TAU
+               END IF
+               DMIN = MIN( DMIN, D )
+               EMIN = MIN( EMIN, Z( J4 ) )
+   30       CONTINUE
+         ELSE
+            DO 40 J4 = 4*I0, 4*( N0-3 ), 4
+               Z( J4-3 ) = D + Z( J4 ) 
+               IF( D.LT.ZERO ) THEN
+                  RETURN
+               ELSE 
+                  Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
+                  D = Z( J4+2 )*( D / Z( J4-3 ) ) - TAU
+               END IF
+               DMIN = MIN( DMIN, D )
+               EMIN = MIN( EMIN, Z( J4-1 ) )
+   40       CONTINUE
+         END IF
+*
+*        Unroll last two steps. 
+*
+         DNM2 = D
+         DMIN2 = DMIN
+         J4 = 4*( N0-2 ) - PP
+         J4P2 = J4 + 2*PP - 1
+         Z( J4-2 ) = DNM2 + Z( J4P2 )
+         IF( DNM2.LT.ZERO ) THEN
+            RETURN
+         ELSE
+            Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+            DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
+         END IF
+         DMIN = MIN( DMIN, DNM1 )
+*
+         DMIN1 = DMIN
+         J4 = J4 + 4
+         J4P2 = J4 + 2*PP - 1
+         Z( J4-2 ) = DNM1 + Z( J4P2 )
+         IF( DNM1.LT.ZERO ) THEN
+            RETURN
+         ELSE
+            Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+            DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
+         END IF
+         DMIN = MIN( DMIN, DN )
+*
+      END IF
+*
+      Z( J4+2 ) = DN
+      Z( 4*N0-PP ) = EMIN
+      RETURN
+*
+*     End of DLASQ5
+*
+      END
Index: src/lapack/double/dlarfg.f
===================================================================
--- src/lapack/double/dlarfg.f	(revision 0)
+++ src/lapack/double/dlarfg.f	(revision 1)
@@ -0,0 +1,134 @@
+      SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INCX, N
+      DOUBLE PRECISION   ALPHA, TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   X( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARFG generates a real elementary reflector H of order n, such
+*  that
+*
+*        H * ( alpha ) = ( beta ),   H' * H = I.
+*            (   x   )   (   0  )
+*
+*  where alpha and beta are scalars, and x is an (n-1)-element real
+*  vector. H is represented in the form
+*
+*        H = I - tau * ( 1 ) * ( 1 v' ) ,
+*                      ( v )
+*
+*  where tau is a real scalar and v is a real (n-1)-element
+*  vector.
+*
+*  If the elements of x are all zero, then tau = 0 and H is taken to be
+*  the unit matrix.
+*
+*  Otherwise  1 <= tau <= 2.
+*
+*  Arguments
+*  =========
+*
+*  N       (input) INTEGER
+*          The order of the elementary reflector.
+*
+*  ALPHA   (input/output) DOUBLE PRECISION
+*          On entry, the value alpha.
+*          On exit, it is overwritten with the value beta.
+*
+*  X       (input/output) DOUBLE PRECISION array, dimension
+*                         (1+(N-2)*abs(INCX))
+*          On entry, the vector x.
+*          On exit, it is overwritten with the vector v.
+*
+*  INCX    (input) INTEGER
+*          The increment between elements of X. INCX > 0.
+*
+*  TAU     (output) DOUBLE PRECISION
+*          The value tau.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            J, KNT
+      DOUBLE PRECISION   BETA, RSAFMN, SAFMIN, XNORM
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH, DLAPY2, DNRM2
+      EXTERNAL           DLAMCH, DLAPY2, DNRM2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, SIGN
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DSCAL
+*     ..
+*     .. Executable Statements ..
+*
+      IF( N.LE.1 ) THEN
+         TAU = ZERO
+         RETURN
+      END IF
+*
+      XNORM = DNRM2( N-1, X, INCX )
+*
+      IF( XNORM.EQ.ZERO ) THEN
+*
+*        H  =  I
+*
+         TAU = ZERO
+      ELSE
+*
+*        general case
+*
+         BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA )
+         SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' )
+         KNT = 0
+         IF( ABS( BETA ).LT.SAFMIN ) THEN
+*
+*           XNORM, BETA may be inaccurate; scale X and recompute them
+*
+            RSAFMN = ONE / SAFMIN
+   10       CONTINUE
+            KNT = KNT + 1
+            CALL DSCAL( N-1, RSAFMN, X, INCX )
+            BETA = BETA*RSAFMN
+            ALPHA = ALPHA*RSAFMN
+            IF( ABS( BETA ).LT.SAFMIN )
+     $         GO TO 10
+*
+*           New BETA is at most 1, at least SAFMIN
+*
+            XNORM = DNRM2( N-1, X, INCX )
+            BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA )
+         END IF
+         TAU = ( BETA-ALPHA ) / BETA
+         CALL DSCAL( N-1, ONE / ( ALPHA-BETA ), X, INCX )
+*
+*        If ALPHA is subnormal, it may lose relative accuracy
+*
+         DO 20 J = 1, KNT
+            BETA = BETA*SAFMIN
+ 20      CONTINUE
+         ALPHA = BETA
+      END IF
+*
+      RETURN
+*
+*     End of DLARFG
+*
+      END
Index: src/lapack/double/dorm2r.f
===================================================================
--- src/lapack/double/dorm2r.f	(revision 0)
+++ src/lapack/double/dorm2r.f	(revision 1)
@@ -0,0 +1,198 @@
+      SUBROUTINE DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, LDA, LDC, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORM2R overwrites the general real m by n matrix C with
+*
+*        Q * C  if SIDE = 'L' and TRANS = 'N', or
+*
+*        Q'* C  if SIDE = 'L' and TRANS = 'T', or
+*
+*        C * Q  if SIDE = 'R' and TRANS = 'N', or
+*
+*        C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(1) H(2) . . . H(k)
+*
+*  as returned by DGEQRF. Q is of order m if SIDE = 'L' and of order n
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q' from the Left
+*          = 'R': apply Q or Q' from the Right
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N': apply Q  (No transpose)
+*          = 'T': apply Q' (Transpose)
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension (LDA,K)
+*          The i-th column must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DGEQRF in the first k columns of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.
+*          If SIDE = 'L', LDA >= max(1,M);
+*          if SIDE = 'R', LDA >= max(1,N).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DGEQRF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the m by n matrix C.
+*          On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension
+*                                   (N) if SIDE = 'L',
+*                                   (M) if SIDE = 'R'
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LEFT, NOTRAN
+      INTEGER            I, I1, I2, I3, IC, JC, MI, NI, NQ
+      DOUBLE PRECISION   AII
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+*
+*     NQ is the order of Q
+*
+      IF( LEFT ) THEN
+         NQ = M
+      ELSE
+         NQ = N
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+         INFO = -7
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -10
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORM2R', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+     $   RETURN
+*
+      IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. ( .NOT.LEFT .AND. NOTRAN ) )
+     $     THEN
+         I1 = 1
+         I2 = K
+         I3 = 1
+      ELSE
+         I1 = K
+         I2 = 1
+         I3 = -1
+      END IF
+*
+      IF( LEFT ) THEN
+         NI = N
+         JC = 1
+      ELSE
+         MI = M
+         IC = 1
+      END IF
+*
+      DO 10 I = I1, I2, I3
+         IF( LEFT ) THEN
+*
+*           H(i) is applied to C(i:m,1:n)
+*
+            MI = M - I + 1
+            IC = I
+         ELSE
+*
+*           H(i) is applied to C(1:m,i:n)
+*
+            NI = N - I + 1
+            JC = I
+         END IF
+*
+*        Apply H(i)
+*
+         AII = A( I, I )
+         A( I, I ) = ONE
+         CALL DLARF( SIDE, MI, NI, A( I, I ), 1, TAU( I ), C( IC, JC ),
+     $               LDC, WORK )
+         A( I, I ) = AII
+   10 CONTINUE
+      RETURN
+*
+*     End of DORM2R
+*
+      END
Index: src/lapack/double/dlamrg.f
===================================================================
--- src/lapack/double/dlamrg.f	(revision 0)
+++ src/lapack/double/dlamrg.f	(revision 1)
@@ -0,0 +1,104 @@
+      SUBROUTINE DLAMRG( N1, N2, A, DTRD1, DTRD2, INDEX )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            DTRD1, DTRD2, N1, N2
+*     ..
+*     .. Array Arguments ..
+      INTEGER            INDEX( * )
+      DOUBLE PRECISION   A( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMRG will create a permutation list which will merge the elements
+*  of A (which is composed of two independently sorted sets) into a
+*  single set which is sorted in ascending order.
+*
+*  Arguments
+*  =========
+*
+*  N1     (input) INTEGER
+*  N2     (input) INTEGER
+*         These arguements contain the respective lengths of the two
+*         sorted lists to be merged.
+*
+*  A      (input) DOUBLE PRECISION array, dimension (N1+N2)
+*         The first N1 elements of A contain a list of numbers which
+*         are sorted in either ascending or descending order.  Likewise
+*         for the final N2 elements.
+*
+*  DTRD1  (input) INTEGER
+*  DTRD2  (input) INTEGER
+*         These are the strides to be taken through the array A.
+*         Allowable strides are 1 and -1.  They indicate whether a
+*         subset of A is sorted in ascending (DTRDx = 1) or descending
+*         (DTRDx = -1) order.
+*
+*  INDEX  (output) INTEGER array, dimension (N1+N2)
+*         On exit this array will contain a permutation such that
+*         if B( I ) = A( INDEX( I ) ) for I=1,N1+N2, then B will be
+*         sorted in ascending order.
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I, IND1, IND2, N1SV, N2SV
+*     ..
+*     .. Executable Statements ..
+*
+      N1SV = N1
+      N2SV = N2
+      IF( DTRD1.GT.0 ) THEN
+         IND1 = 1
+      ELSE
+         IND1 = N1
+      END IF
+      IF( DTRD2.GT.0 ) THEN
+         IND2 = 1 + N1
+      ELSE
+         IND2 = N1 + N2
+      END IF
+      I = 1
+*     while ( (N1SV > 0) & (N2SV > 0) )
+   10 CONTINUE
+      IF( N1SV.GT.0 .AND. N2SV.GT.0 ) THEN
+         IF( A( IND1 ).LE.A( IND2 ) ) THEN
+            INDEX( I ) = IND1
+            I = I + 1
+            IND1 = IND1 + DTRD1
+            N1SV = N1SV - 1
+         ELSE
+            INDEX( I ) = IND2
+            I = I + 1
+            IND2 = IND2 + DTRD2
+            N2SV = N2SV - 1
+         END IF
+         GO TO 10
+      END IF
+*     end while
+      IF( N1SV.EQ.0 ) THEN
+         DO 20 N1SV = 1, N2SV
+            INDEX( I ) = IND2
+            I = I + 1
+            IND2 = IND2 + DTRD2
+   20    CONTINUE
+      ELSE
+*     N2SV .EQ. 0
+         DO 30 N2SV = 1, N1SV
+            INDEX( I ) = IND1
+            I = I + 1
+            IND1 = IND1 + DTRD1
+   30    CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of DLAMRG
+*
+      END
Index: src/lapack/double/dgeqrf.f
===================================================================
--- src/lapack/double/dgeqrf.f	(revision 0)
+++ src/lapack/double/dgeqrf.f	(revision 1)
@@ -0,0 +1,197 @@
+      SUBROUTINE DGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEQRF computes a QR factorization of a real M-by-N matrix A:
+*  A = Q * R.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, the elements on and above the diagonal of the array
+*          contain the min(M,N)-by-N upper trapezoidal matrix R (R is
+*          upper triangular if m >= n); the elements below the diagonal,
+*          with the array TAU, represent the orthogonal matrix Q as a
+*          product of min(m,n) elementary reflectors (see Further
+*          Details).
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors (see Further
+*          Details).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.  LWORK >= max(1,N).
+*          For optimum performance LWORK >= N*NB, where NB is
+*          the optimal blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  The matrix Q is represented as a product of elementary reflectors
+*
+*     Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+*  Each H(i) has the form
+*
+*     H(i) = I - tau * v * v'
+*
+*  where tau is a real scalar, and v is a real vector with
+*  v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+*  and tau in TAU(i).
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+     $                   NBMIN, NX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEQR2, DLARFB, DLARFT, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      EXTERNAL           ILAENV
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      NB = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+      LWKOPT = N*NB
+      WORK( 1 ) = LWKOPT
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
+         INFO = -7
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGEQRF', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      K = MIN( M, N )
+      IF( K.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      NX = 0
+      IWS = N
+      IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+*        Determine when to cross over from blocked to unblocked code.
+*
+         NX = MAX( 0, ILAENV( 3, 'DGEQRF', ' ', M, N, -1, -1 ) )
+         IF( NX.LT.K ) THEN
+*
+*           Determine if workspace is large enough for blocked code.
+*
+            LDWORK = N
+            IWS = LDWORK*NB
+            IF( LWORK.LT.IWS ) THEN
+*
+*              Not enough workspace to use optimal NB:  reduce NB and
+*              determine the minimum value of NB.
+*
+               NB = LWORK / LDWORK
+               NBMIN = MAX( 2, ILAENV( 2, 'DGEQRF', ' ', M, N, -1,
+     $                 -1 ) )
+            END IF
+         END IF
+      END IF
+*
+      IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+*        Use blocked code initially
+*
+         DO 10 I = 1, K - NX, NB
+            IB = MIN( K-I+1, NB )
+*
+*           Compute the QR factorization of the current block
+*           A(i:m,i:i+ib-1)
+*
+            CALL DGEQR2( M-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
+     $                   IINFO )
+            IF( I+IB.LE.N ) THEN
+*
+*              Form the triangular factor of the block reflector
+*              H = H(i) H(i+1) . . . H(i+ib-1)
+*
+               CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB,
+     $                      A( I, I ), LDA, TAU( I ), WORK, LDWORK )
+*
+*              Apply H' to A(i:m,i+ib:n) from the left
+*
+               CALL DLARFB( 'Left', 'Transpose', 'Forward',
+     $                      'Columnwise', M-I+1, N-I-IB+1, IB,
+     $                      A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
+     $                      LDA, WORK( IB+1 ), LDWORK )
+            END IF
+   10    CONTINUE
+      ELSE
+         I = 1
+      END IF
+*
+*     Use unblocked code to factor the last or only block.
+*
+      IF( I.LE.K )
+     $   CALL DGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+     $                IINFO )
+*
+      WORK( 1 ) = IWS
+      RETURN
+*
+*     End of DGEQRF
+*
+      END
Index: src/lapack/double/dlasdt.f
===================================================================
--- src/lapack/double/dlasdt.f	(revision 0)
+++ src/lapack/double/dlasdt.f	(revision 1)
@@ -0,0 +1,106 @@
+      SUBROUTINE DLASDT( N, LVL, ND, INODE, NDIML, NDIMR, MSUB )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            LVL, MSUB, N, ND
+*     ..
+*     .. Array Arguments ..
+      INTEGER            INODE( * ), NDIML( * ), NDIMR( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASDT creates a tree of subproblems for bidiagonal divide and
+*  conquer.
+*
+*  Arguments
+*  =========
+*
+*   N      (input) INTEGER
+*          On entry, the number of diagonal elements of the
+*          bidiagonal matrix.
+*
+*   LVL    (output) INTEGER
+*          On exit, the number of levels on the computation tree.
+*
+*   ND     (output) INTEGER
+*          On exit, the number of nodes on the tree.
+*
+*   INODE  (output) INTEGER array, dimension ( N )
+*          On exit, centers of subproblems.
+*
+*   NDIML  (output) INTEGER array, dimension ( N )
+*          On exit, row dimensions of left children.
+*
+*   NDIMR  (output) INTEGER array, dimension ( N )
+*          On exit, row dimensions of right children.
+*
+*   MSUB   (input) INTEGER
+*          On entry, the maximum row dimension each subproblem at the
+*          bottom of the tree can be of.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   TWO
+      PARAMETER          ( TWO = 2.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, IL, IR, LLST, MAXN, NCRNT, NLVL
+      DOUBLE PRECISION   TEMP
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          DBLE, INT, LOG, MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Find the number of levels on the tree.
+*
+      MAXN = MAX( 1, N )
+      TEMP = LOG( DBLE( MAXN ) / DBLE( MSUB+1 ) ) / LOG( TWO )
+      LVL = INT( TEMP ) + 1
+*
+      I = N / 2
+      INODE( 1 ) = I + 1
+      NDIML( 1 ) = I
+      NDIMR( 1 ) = N - I - 1
+      IL = 0
+      IR = 1
+      LLST = 1
+      DO 20 NLVL = 1, LVL - 1
+*
+*        Constructing the tree at (NLVL+1)-st level. The number of
+*        nodes created on this level is LLST * 2.
+*
+         DO 10 I = 0, LLST - 1
+            IL = IL + 2
+            IR = IR + 2
+            NCRNT = LLST + I
+            NDIML( IL ) = NDIML( NCRNT ) / 2
+            NDIMR( IL ) = NDIML( NCRNT ) - NDIML( IL ) - 1
+            INODE( IL ) = INODE( NCRNT ) - NDIMR( IL ) - 1
+            NDIML( IR ) = NDIMR( NCRNT ) / 2
+            NDIMR( IR ) = NDIMR( NCRNT ) - NDIML( IR ) - 1
+            INODE( IR ) = INODE( NCRNT ) + NDIML( IR ) + 1
+   10    CONTINUE
+         LLST = LLST*2
+   20 CONTINUE
+      ND = LLST*2 - 1
+*
+      RETURN
+*
+*     End of DLASDT
+*
+      END
Index: src/lapack/double/dlarz.f
===================================================================
--- src/lapack/double/dlarz.f	(revision 0)
+++ src/lapack/double/dlarz.f	(revision 1)
@@ -0,0 +1,153 @@
+      SUBROUTINE DLARZ( SIDE, M, N, L, V, INCV, TAU, C, LDC, WORK )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE
+      INTEGER            INCV, L, LDC, M, N
+      DOUBLE PRECISION   TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), V( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARZ applies a real elementary reflector H to a real M-by-N
+*  matrix C, from either the left or the right. H is represented in the
+*  form
+*
+*        H = I - tau * v * v'
+*
+*  where tau is a real scalar and v is a real vector.
+*
+*  If tau = 0, then H is taken to be the unit matrix.
+*
+*
+*  H is a product of k elementary reflectors as returned by DTZRZF.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': form  H * C
+*          = 'R': form  C * H
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C.
+*
+*  L       (input) INTEGER
+*          The number of entries of the vector V containing
+*          the meaningful part of the Householder vectors.
+*          If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+*  V       (input) DOUBLE PRECISION array, dimension (1+(L-1)*abs(INCV))
+*          The vector v in the representation of H as returned by
+*          DTZRZF. V is not used if TAU = 0.
+*
+*  INCV    (input) INTEGER
+*          The increment between elements of v. INCV <> 0.
+*
+*  TAU     (input) DOUBLE PRECISION
+*          The value tau in the representation of H.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
+*          or C * H if SIDE = 'R'.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension
+*                         (N) if SIDE = 'L'
+*                      or (M) if SIDE = 'R'
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DAXPY, DCOPY, DGEMV, DGER
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Executable Statements ..
+*
+      IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*        Form  H * C
+*
+         IF( TAU.NE.ZERO ) THEN
+*
+*           w( 1:n ) = C( 1, 1:n )
+*
+            CALL DCOPY( N, C, LDC, WORK, 1 )
+*
+*           w( 1:n ) = w( 1:n ) + C( m-l+1:m, 1:n )' * v( 1:l )
+*
+            CALL DGEMV( 'Transpose', L, N, ONE, C( M-L+1, 1 ), LDC, V,
+     $                  INCV, ONE, WORK, 1 )
+*
+*           C( 1, 1:n ) = C( 1, 1:n ) - tau * w( 1:n )
+*
+            CALL DAXPY( N, -TAU, WORK, 1, C, LDC )
+*
+*           C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+*                               tau * v( 1:l ) * w( 1:n )'
+*
+            CALL DGER( L, N, -TAU, V, INCV, WORK, 1, C( M-L+1, 1 ),
+     $                 LDC )
+         END IF
+*
+      ELSE
+*
+*        Form  C * H
+*
+         IF( TAU.NE.ZERO ) THEN
+*
+*           w( 1:m ) = C( 1:m, 1 )
+*
+            CALL DCOPY( M, C, 1, WORK, 1 )
+*
+*           w( 1:m ) = w( 1:m ) + C( 1:m, n-l+1:n, 1:n ) * v( 1:l )
+*
+            CALL DGEMV( 'No transpose', M, L, ONE, C( 1, N-L+1 ), LDC,
+     $                  V, INCV, ONE, WORK, 1 )
+*
+*           C( 1:m, 1 ) = C( 1:m, 1 ) - tau * w( 1:m )
+*
+            CALL DAXPY( M, -TAU, WORK, 1, C, 1 )
+*
+*           C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+*                               tau * w( 1:m ) * v( 1:l )'
+*
+            CALL DGER( M, L, -TAU, WORK, 1, V, INCV, C( 1, N-L+1 ),
+     $                 LDC )
+*
+         END IF
+*
+      END IF
+*
+      RETURN
+*
+*     End of DLARZ
+*
+      END
Index: src/lapack/double/dlasd5.f
===================================================================
--- src/lapack/double/dlasd5.f	(revision 0)
+++ src/lapack/double/dlasd5.f	(revision 1)
@@ -0,0 +1,164 @@
+      SUBROUTINE DLASD5( I, D, Z, DELTA, RHO, DSIGMA, WORK )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            I
+      DOUBLE PRECISION   DSIGMA, RHO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( 2 ), DELTA( 2 ), WORK( 2 ), Z( 2 )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  This subroutine computes the square root of the I-th eigenvalue
+*  of a positive symmetric rank-one modification of a 2-by-2 diagonal
+*  matrix
+*
+*             diag( D ) * diag( D ) +  RHO *  Z * transpose(Z) .
+*
+*  The diagonal entries in the array D are assumed to satisfy
+*
+*             0 <= D(i) < D(j)  for  i < j .
+*
+*  We also assume RHO > 0 and that the Euclidean norm of the vector
+*  Z is one.
+*
+*  Arguments
+*  =========
+*
+*  I      (input) INTEGER
+*         The index of the eigenvalue to be computed.  I = 1 or I = 2.
+*
+*  D      (input) DOUBLE PRECISION array, dimension ( 2 )
+*         The original eigenvalues.  We assume 0 <= D(1) < D(2).
+*
+*  Z      (input) DOUBLE PRECISION array, dimension ( 2 )
+*         The components of the updating vector.
+*
+*  DELTA  (output) DOUBLE PRECISION array, dimension ( 2 )
+*         Contains (D(j) - sigma_I) in its  j-th component.
+*         The vector DELTA contains the information necessary
+*         to construct the eigenvectors.
+*
+*  RHO    (input) DOUBLE PRECISION
+*         The scalar in the symmetric updating formula.
+*
+*  DSIGMA (output) DOUBLE PRECISION
+*         The computed sigma_I, the I-th updated eigenvalue.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension ( 2 )
+*         WORK contains (D(j) + sigma_I) in its  j-th component.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ren-Cang Li, Computer Science Division, University of California
+*     at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE, TWO, THREE, FOUR
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0,
+     $                   THREE = 3.0D+0, FOUR = 4.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION   B, C, DEL, DELSQ, TAU, W
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      DEL = D( 2 ) - D( 1 )
+      DELSQ = DEL*( D( 2 )+D( 1 ) )
+      IF( I.EQ.1 ) THEN
+         W = ONE + FOUR*RHO*( Z( 2 )*Z( 2 ) / ( D( 1 )+THREE*D( 2 ) )-
+     $       Z( 1 )*Z( 1 ) / ( THREE*D( 1 )+D( 2 ) ) ) / DEL
+         IF( W.GT.ZERO ) THEN
+            B = DELSQ + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
+            C = RHO*Z( 1 )*Z( 1 )*DELSQ
+*
+*           B > ZERO, always
+*
+*           The following TAU is DSIGMA * DSIGMA - D( 1 ) * D( 1 )
+*
+            TAU = TWO*C / ( B+SQRT( ABS( B*B-FOUR*C ) ) )
+*
+*           The following TAU is DSIGMA - D( 1 )
+*
+            TAU = TAU / ( D( 1 )+SQRT( D( 1 )*D( 1 )+TAU ) )
+            DSIGMA = D( 1 ) + TAU
+            DELTA( 1 ) = -TAU
+            DELTA( 2 ) = DEL - TAU
+            WORK( 1 ) = TWO*D( 1 ) + TAU
+            WORK( 2 ) = ( D( 1 )+TAU ) + D( 2 )
+*           DELTA( 1 ) = -Z( 1 ) / TAU
+*           DELTA( 2 ) = Z( 2 ) / ( DEL-TAU )
+         ELSE
+            B = -DELSQ + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
+            C = RHO*Z( 2 )*Z( 2 )*DELSQ
+*
+*           The following TAU is DSIGMA * DSIGMA - D( 2 ) * D( 2 )
+*
+            IF( B.GT.ZERO ) THEN
+               TAU = -TWO*C / ( B+SQRT( B*B+FOUR*C ) )
+            ELSE
+               TAU = ( B-SQRT( B*B+FOUR*C ) ) / TWO
+            END IF
+*
+*           The following TAU is DSIGMA - D( 2 )
+*
+            TAU = TAU / ( D( 2 )+SQRT( ABS( D( 2 )*D( 2 )+TAU ) ) )
+            DSIGMA = D( 2 ) + TAU
+            DELTA( 1 ) = -( DEL+TAU )
+            DELTA( 2 ) = -TAU
+            WORK( 1 ) = D( 1 ) + TAU + D( 2 )
+            WORK( 2 ) = TWO*D( 2 ) + TAU
+*           DELTA( 1 ) = -Z( 1 ) / ( DEL+TAU )
+*           DELTA( 2 ) = -Z( 2 ) / TAU
+         END IF
+*        TEMP = SQRT( DELTA( 1 )*DELTA( 1 )+DELTA( 2 )*DELTA( 2 ) )
+*        DELTA( 1 ) = DELTA( 1 ) / TEMP
+*        DELTA( 2 ) = DELTA( 2 ) / TEMP
+      ELSE
+*
+*        Now I=2
+*
+         B = -DELSQ + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
+         C = RHO*Z( 2 )*Z( 2 )*DELSQ
+*
+*        The following TAU is DSIGMA * DSIGMA - D( 2 ) * D( 2 )
+*
+         IF( B.GT.ZERO ) THEN
+            TAU = ( B+SQRT( B*B+FOUR*C ) ) / TWO
+         ELSE
+            TAU = TWO*C / ( -B+SQRT( B*B+FOUR*C ) )
+         END IF
+*
+*        The following TAU is DSIGMA - D( 2 )
+*
+         TAU = TAU / ( D( 2 )+SQRT( D( 2 )*D( 2 )+TAU ) )
+         DSIGMA = D( 2 ) + TAU
+         DELTA( 1 ) = -( DEL+TAU )
+         DELTA( 2 ) = -TAU
+         WORK( 1 ) = D( 1 ) + TAU + D( 2 )
+         WORK( 2 ) = TWO*D( 2 ) + TAU
+*        DELTA( 1 ) = -Z( 1 ) / ( DEL+TAU )
+*        DELTA( 2 ) = -Z( 2 ) / TAU
+*        TEMP = SQRT( DELTA( 1 )*DELTA( 1 )+DELTA( 2 )*DELTA( 2 ) )
+*        DELTA( 1 ) = DELTA( 1 ) / TEMP
+*        DELTA( 2 ) = DELTA( 2 ) / TEMP
+      END IF
+      RETURN
+*
+*     End of DLASD5
+*
+      END
Index: src/lapack/double/dlasd7.f
===================================================================
--- src/lapack/double/dlasd7.f	(revision 0)
+++ src/lapack/double/dlasd7.f	(revision 1)
@@ -0,0 +1,445 @@
+      SUBROUTINE DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL,
+     $                   VLW, ALPHA, BETA, DSIGMA, IDX, IDXP, IDXQ,
+     $                   PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM,
+     $                   C, S, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL,
+     $                   NR, SQRE
+      DOUBLE PRECISION   ALPHA, BETA, C, S
+*     ..
+*     .. Array Arguments ..
+      INTEGER            GIVCOL( LDGCOL, * ), IDX( * ), IDXP( * ),
+     $                   IDXQ( * ), PERM( * )
+      DOUBLE PRECISION   D( * ), DSIGMA( * ), GIVNUM( LDGNUM, * ),
+     $                   VF( * ), VFW( * ), VL( * ), VLW( * ), Z( * ),
+     $                   ZW( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASD7 merges the two sets of singular values together into a single
+*  sorted set. Then it tries to deflate the size of the problem. There
+*  are two ways in which deflation can occur:  when two or more singular
+*  values are close together or if there is a tiny entry in the Z
+*  vector. For each such occurrence the order of the related
+*  secular equation problem is reduced by one.
+*
+*  DLASD7 is called from DLASD6.
+*
+*  Arguments
+*  =========
+*
+*  ICOMPQ  (input) INTEGER
+*          Specifies whether singular vectors are to be computed
+*          in compact form, as follows:
+*          = 0: Compute singular values only.
+*          = 1: Compute singular vectors of upper
+*               bidiagonal matrix in compact form.
+*
+*  NL     (input) INTEGER
+*         The row dimension of the upper block. NL >= 1.
+*
+*  NR     (input) INTEGER
+*         The row dimension of the lower block. NR >= 1.
+*
+*  SQRE   (input) INTEGER
+*         = 0: the lower block is an NR-by-NR square matrix.
+*         = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
+*
+*         The bidiagonal matrix has
+*         N = NL + NR + 1 rows and
+*         M = N + SQRE >= N columns.
+*
+*  K      (output) INTEGER
+*         Contains the dimension of the non-deflated matrix, this is
+*         the order of the related secular equation. 1 <= K <=N.
+*
+*  D      (input/output) DOUBLE PRECISION array, dimension ( N )
+*         On entry D contains the singular values of the two submatrices
+*         to be combined. On exit D contains the trailing (N-K) updated
+*         singular values (those which were deflated) sorted into
+*         increasing order.
+*
+*  Z      (output) DOUBLE PRECISION array, dimension ( M )
+*         On exit Z contains the updating row vector in the secular
+*         equation.
+*
+*  ZW     (workspace) DOUBLE PRECISION array, dimension ( M )
+*         Workspace for Z.
+*
+*  VF     (input/output) DOUBLE PRECISION array, dimension ( M )
+*         On entry, VF(1:NL+1) contains the first components of all
+*         right singular vectors of the upper block; and VF(NL+2:M)
+*         contains the first components of all right singular vectors
+*         of the lower block. On exit, VF contains the first components
+*         of all right singular vectors of the bidiagonal matrix.
+*
+*  VFW    (workspace) DOUBLE PRECISION array, dimension ( M )
+*         Workspace for VF.
+*
+*  VL     (input/output) DOUBLE PRECISION array, dimension ( M )
+*         On entry, VL(1:NL+1) contains the  last components of all
+*         right singular vectors of the upper block; and VL(NL+2:M)
+*         contains the last components of all right singular vectors
+*         of the lower block. On exit, VL contains the last components
+*         of all right singular vectors of the bidiagonal matrix.
+*
+*  VLW    (workspace) DOUBLE PRECISION array, dimension ( M )
+*         Workspace for VL.
+*
+*  ALPHA  (input) DOUBLE PRECISION
+*         Contains the diagonal element associated with the added row.
+*
+*  BETA   (input) DOUBLE PRECISION
+*         Contains the off-diagonal element associated with the added
+*         row.
+*
+*  DSIGMA (output) DOUBLE PRECISION array, dimension ( N )
+*         Contains a copy of the diagonal elements (K-1 singular values
+*         and one zero) in the secular equation.
+*
+*  IDX    (workspace) INTEGER array, dimension ( N )
+*         This will contain the permutation used to sort the contents of
+*         D into ascending order.
+*
+*  IDXP   (workspace) INTEGER array, dimension ( N )
+*         This will contain the permutation used to place deflated
+*         values of D at the end of the array. On output IDXP(2:K)
+*         points to the nondeflated D-values and IDXP(K+1:N)
+*         points to the deflated singular values.
+*
+*  IDXQ   (input) INTEGER array, dimension ( N )
+*         This contains the permutation which separately sorts the two
+*         sub-problems in D into ascending order.  Note that entries in
+*         the first half of this permutation must first be moved one
+*         position backward; and entries in the second half
+*         must first have NL+1 added to their values.
+*
+*  PERM   (output) INTEGER array, dimension ( N )
+*         The permutations (from deflation and sorting) to be applied
+*         to each singular block. Not referenced if ICOMPQ = 0.
+*
+*  GIVPTR (output) INTEGER
+*         The number of Givens rotations which took place in this
+*         subproblem. Not referenced if ICOMPQ = 0.
+*
+*  GIVCOL (output) INTEGER array, dimension ( LDGCOL, 2 )
+*         Each pair of numbers indicates a pair of columns to take place
+*         in a Givens rotation. Not referenced if ICOMPQ = 0.
+*
+*  LDGCOL (input) INTEGER
+*         The leading dimension of GIVCOL, must be at least N.
+*
+*  GIVNUM (output) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
+*         Each number indicates the C or S value to be used in the
+*         corresponding Givens rotation. Not referenced if ICOMPQ = 0.
+*
+*  LDGNUM (input) INTEGER
+*         The leading dimension of GIVNUM, must be at least N.
+*
+*  C      (output) DOUBLE PRECISION
+*         C contains garbage if SQRE =0 and the C-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  S      (output) DOUBLE PRECISION
+*         S contains garbage if SQRE =0 and the S-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  INFO   (output) INTEGER
+*         = 0:  successful exit.
+*         < 0:  if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE, TWO, EIGHT
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0,
+     $                   EIGHT = 8.0D+0 )
+*     ..
+*     .. Local Scalars ..
+*
+      INTEGER            I, IDXI, IDXJ, IDXJP, J, JP, JPREV, K2, M, N,
+     $                   NLP1, NLP2
+      DOUBLE PRECISION   EPS, HLFTOL, TAU, TOL, Z1
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DLAMRG, DROT, XERBLA
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH, DLAPY2
+      EXTERNAL           DLAMCH, DLAPY2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      N = NL + NR + 1
+      M = N + SQRE
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( NL.LT.1 ) THEN
+         INFO = -2
+      ELSE IF( NR.LT.1 ) THEN
+         INFO = -3
+      ELSE IF( ( SQRE.LT.0 ) .OR. ( SQRE.GT.1 ) ) THEN
+         INFO = -4
+      ELSE IF( LDGCOL.LT.N ) THEN
+         INFO = -22
+      ELSE IF( LDGNUM.LT.N ) THEN
+         INFO = -24
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASD7', -INFO )
+         RETURN
+      END IF
+*
+      NLP1 = NL + 1
+      NLP2 = NL + 2
+      IF( ICOMPQ.EQ.1 ) THEN
+         GIVPTR = 0
+      END IF
+*
+*     Generate the first part of the vector Z and move the singular
+*     values in the first part of D one position backward.
+*
+      Z1 = ALPHA*VL( NLP1 )
+      VL( NLP1 ) = ZERO
+      TAU = VF( NLP1 )
+      DO 10 I = NL, 1, -1
+         Z( I+1 ) = ALPHA*VL( I )
+         VL( I ) = ZERO
+         VF( I+1 ) = VF( I )
+         D( I+1 ) = D( I )
+         IDXQ( I+1 ) = IDXQ( I ) + 1
+   10 CONTINUE
+      VF( 1 ) = TAU
+*
+*     Generate the second part of the vector Z.
+*
+      DO 20 I = NLP2, M
+         Z( I ) = BETA*VF( I )
+         VF( I ) = ZERO
+   20 CONTINUE
+*
+*     Sort the singular values into increasing order
+*
+      DO 30 I = NLP2, N
+         IDXQ( I ) = IDXQ( I ) + NLP1
+   30 CONTINUE
+*
+*     DSIGMA, IDXC, IDXC, and ZW are used as storage space.
+*
+      DO 40 I = 2, N
+         DSIGMA( I ) = D( IDXQ( I ) )
+         ZW( I ) = Z( IDXQ( I ) )
+         VFW( I ) = VF( IDXQ( I ) )
+         VLW( I ) = VL( IDXQ( I ) )
+   40 CONTINUE
+*
+      CALL DLAMRG( NL, NR, DSIGMA( 2 ), 1, 1, IDX( 2 ) )
+*
+      DO 50 I = 2, N
+         IDXI = 1 + IDX( I )
+         D( I ) = DSIGMA( IDXI )
+         Z( I ) = ZW( IDXI )
+         VF( I ) = VFW( IDXI )
+         VL( I ) = VLW( IDXI )
+   50 CONTINUE
+*
+*     Calculate the allowable deflation tolerence
+*
+      EPS = DLAMCH( 'Epsilon' )
+      TOL = MAX( ABS( ALPHA ), ABS( BETA ) )
+      TOL = EIGHT*EIGHT*EPS*MAX( ABS( D( N ) ), TOL )
+*
+*     There are 2 kinds of deflation -- first a value in the z-vector
+*     is small, second two (or more) singular values are very close
+*     together (their difference is small).
+*
+*     If the value in the z-vector is small, we simply permute the
+*     array so that the corresponding singular value is moved to the
+*     end.
+*
+*     If two values in the D-vector are close, we perform a two-sided
+*     rotation designed to make one of the corresponding z-vector
+*     entries zero, and then permute the array so that the deflated
+*     singular value is moved to the end.
+*
+*     If there are multiple singular values then the problem deflates.
+*     Here the number of equal singular values are found.  As each equal
+*     singular value is found, an elementary reflector is computed to
+*     rotate the corresponding singular subspace so that the
+*     corresponding components of Z are zero in this new basis.
+*
+      K = 1
+      K2 = N + 1
+      DO 60 J = 2, N
+         IF( ABS( Z( J ) ).LE.TOL ) THEN
+*
+*           Deflate due to small z component.
+*
+            K2 = K2 - 1
+            IDXP( K2 ) = J
+            IF( J.EQ.N )
+     $         GO TO 100
+         ELSE
+            JPREV = J
+            GO TO 70
+         END IF
+   60 CONTINUE
+   70 CONTINUE
+      J = JPREV
+   80 CONTINUE
+      J = J + 1
+      IF( J.GT.N )
+     $   GO TO 90
+      IF( ABS( Z( J ) ).LE.TOL ) THEN
+*
+*        Deflate due to small z component.
+*
+         K2 = K2 - 1
+         IDXP( K2 ) = J
+      ELSE
+*
+*        Check if singular values are close enough to allow deflation.
+*
+         IF( ABS( D( J )-D( JPREV ) ).LE.TOL ) THEN
+*
+*           Deflation is possible.
+*
+            S = Z( JPREV )
+            C = Z( J )
+*
+*           Find sqrt(a**2+b**2) without overflow or
+*           destructive underflow.
+*
+            TAU = DLAPY2( C, S )
+            Z( J ) = TAU
+            Z( JPREV ) = ZERO
+            C = C / TAU
+            S = -S / TAU
+*
+*           Record the appropriate Givens rotation
+*
+            IF( ICOMPQ.EQ.1 ) THEN
+               GIVPTR = GIVPTR + 1
+               IDXJP = IDXQ( IDX( JPREV )+1 )
+               IDXJ = IDXQ( IDX( J )+1 )
+               IF( IDXJP.LE.NLP1 ) THEN
+                  IDXJP = IDXJP - 1
+               END IF
+               IF( IDXJ.LE.NLP1 ) THEN
+                  IDXJ = IDXJ - 1
+               END IF
+               GIVCOL( GIVPTR, 2 ) = IDXJP
+               GIVCOL( GIVPTR, 1 ) = IDXJ
+               GIVNUM( GIVPTR, 2 ) = C
+               GIVNUM( GIVPTR, 1 ) = S
+            END IF
+            CALL DROT( 1, VF( JPREV ), 1, VF( J ), 1, C, S )
+            CALL DROT( 1, VL( JPREV ), 1, VL( J ), 1, C, S )
+            K2 = K2 - 1
+            IDXP( K2 ) = JPREV
+            JPREV = J
+         ELSE
+            K = K + 1
+            ZW( K ) = Z( JPREV )
+            DSIGMA( K ) = D( JPREV )
+            IDXP( K ) = JPREV
+            JPREV = J
+         END IF
+      END IF
+      GO TO 80
+   90 CONTINUE
+*
+*     Record the last singular value.
+*
+      K = K + 1
+      ZW( K ) = Z( JPREV )
+      DSIGMA( K ) = D( JPREV )
+      IDXP( K ) = JPREV
+*
+  100 CONTINUE
+*
+*     Sort the singular values into DSIGMA. The singular values which
+*     were not deflated go into the first K slots of DSIGMA, except
+*     that DSIGMA(1) is treated separately.
+*
+      DO 110 J = 2, N
+         JP = IDXP( J )
+         DSIGMA( J ) = D( JP )
+         VFW( J ) = VF( JP )
+         VLW( J ) = VL( JP )
+  110 CONTINUE
+      IF( ICOMPQ.EQ.1 ) THEN
+         DO 120 J = 2, N
+            JP = IDXP( J )
+            PERM( J ) = IDXQ( IDX( JP )+1 )
+            IF( PERM( J ).LE.NLP1 ) THEN
+               PERM( J ) = PERM( J ) - 1
+            END IF
+  120    CONTINUE
+      END IF
+*
+*     The deflated singular values go back into the last N - K slots of
+*     D.
+*
+      CALL DCOPY( N-K, DSIGMA( K+1 ), 1, D( K+1 ), 1 )
+*
+*     Determine DSIGMA(1), DSIGMA(2), Z(1), VF(1), VL(1), VF(M), and
+*     VL(M).
+*
+      DSIGMA( 1 ) = ZERO
+      HLFTOL = TOL / TWO
+      IF( ABS( DSIGMA( 2 ) ).LE.HLFTOL )
+     $   DSIGMA( 2 ) = HLFTOL
+      IF( M.GT.N ) THEN
+         Z( 1 ) = DLAPY2( Z1, Z( M ) )
+         IF( Z( 1 ).LE.TOL ) THEN
+            C = ONE
+            S = ZERO
+            Z( 1 ) = TOL
+         ELSE
+            C = Z1 / Z( 1 )
+            S = -Z( M ) / Z( 1 )
+         END IF
+         CALL DROT( 1, VF( M ), 1, VF( 1 ), 1, C, S )
+         CALL DROT( 1, VL( M ), 1, VL( 1 ), 1, C, S )
+      ELSE
+         IF( ABS( Z1 ).LE.TOL ) THEN
+            Z( 1 ) = TOL
+         ELSE
+            Z( 1 ) = Z1
+         END IF
+      END IF
+*
+*     Restore Z, VF, and VL.
+*
+      CALL DCOPY( K-1, ZW( 2 ), 1, Z( 2 ), 1 )
+      CALL DCOPY( N-1, VFW( 2 ), 1, VF( 2 ), 1 )
+      CALL DCOPY( N-1, VLW( 2 ), 1, VL( 2 ), 1 )
+*
+      RETURN
+*
+*     End of DLASD7
+*
+      END
Index: src/lapack/double/dtzrzf.f
===================================================================
--- src/lapack/double/dtzrzf.f	(revision 0)
+++ src/lapack/double/dtzrzf.f	(revision 1)
@@ -0,0 +1,245 @@
+      SUBROUTINE DTZRZF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DTZRZF reduces the M-by-N ( M<=N ) real upper trapezoidal matrix A
+*  to upper triangular form by means of orthogonal transformations.
+*
+*  The upper trapezoidal matrix A is factored as
+*
+*     A = ( R  0 ) * Z,
+*
+*  where Z is an N-by-N orthogonal matrix and R is an M-by-M upper
+*  triangular matrix.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= M.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the leading M-by-N upper trapezoidal part of the
+*          array A must contain the matrix to be factorized.
+*          On exit, the leading M-by-M upper triangular part of A
+*          contains the upper triangular matrix R, and elements M+1 to
+*          N of the first M rows of A, with the array TAU, represent the
+*          orthogonal matrix Z as a product of M elementary reflectors.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (M)
+*          The scalar factors of the elementary reflectors.
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.  LWORK >= max(1,M).
+*          For optimum performance LWORK >= M*NB, where NB is
+*          the optimal blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  The factorization is obtained by Householder's method.  The kth
+*  transformation matrix, Z( k ), which is used to introduce zeros into
+*  the ( m - k + 1 )th row of A, is given in the form
+*
+*     Z( k ) = ( I     0   ),
+*              ( 0  T( k ) )
+*
+*  where
+*
+*     T( k ) = I - tau*u( k )*u( k )',   u( k ) = (   1    ),
+*                                                 (   0    )
+*                                                 ( z( k ) )
+*
+*  tau is a scalar and z( k ) is an ( n - m ) element vector.
+*  tau and z( k ) are chosen to annihilate the elements of the kth row
+*  of X.
+*
+*  The scalar tau is returned in the kth element of TAU and the vector
+*  u( k ) in the kth row of A, such that the elements of z( k ) are
+*  in  a( k, m + 1 ), ..., a( k, n ). The elements of R are returned in
+*  the upper triangular part of A.
+*
+*  Z is given by
+*
+*     Z =  Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            I, IB, IWS, KI, KK, LDWORK, LWKOPT, M1, MU, NB,
+     $                   NBMIN, NX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARZB, DLARZT, DLATRZ, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      EXTERNAL           ILAENV
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.M ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+         IF( M.EQ.0 .OR. M.EQ.N ) THEN
+            LWKOPT = 1
+         ELSE
+*
+*           Determine the block size.
+*
+            NB = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+            LWKOPT = M*NB
+         END IF
+         WORK( 1 ) = LWKOPT
+*
+         IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+            INFO = -7
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DTZRZF', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 ) THEN
+         RETURN
+      ELSE IF( M.EQ.N ) THEN
+         DO 10 I = 1, N
+            TAU( I ) = ZERO
+   10    CONTINUE
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      NX = 1
+      IWS = M
+      IF( NB.GT.1 .AND. NB.LT.M ) THEN
+*
+*        Determine when to cross over from blocked to unblocked code.
+*
+         NX = MAX( 0, ILAENV( 3, 'DGERQF', ' ', M, N, -1, -1 ) )
+         IF( NX.LT.M ) THEN
+*
+*           Determine if workspace is large enough for blocked code.
+*
+            LDWORK = M
+            IWS = LDWORK*NB
+            IF( LWORK.LT.IWS ) THEN
+*
+*              Not enough workspace to use optimal NB:  reduce NB and
+*              determine the minimum value of NB.
+*
+               NB = LWORK / LDWORK
+               NBMIN = MAX( 2, ILAENV( 2, 'DGERQF', ' ', M, N, -1,
+     $                 -1 ) )
+            END IF
+         END IF
+      END IF
+*
+      IF( NB.GE.NBMIN .AND. NB.LT.M .AND. NX.LT.M ) THEN
+*
+*        Use blocked code initially.
+*        The last kk rows are handled by the block method.
+*
+         M1 = MIN( M+1, N )
+         KI = ( ( M-NX-1 ) / NB )*NB
+         KK = MIN( M, KI+NB )
+*
+         DO 20 I = M - KK + KI + 1, M - KK + 1, -NB
+            IB = MIN( M-I+1, NB )
+*
+*           Compute the TZ factorization of the current block
+*           A(i:i+ib-1,i:n)
+*
+            CALL DLATRZ( IB, N-I+1, N-M, A( I, I ), LDA, TAU( I ),
+     $                   WORK )
+            IF( I.GT.1 ) THEN
+*
+*              Form the triangular factor of the block reflector
+*              H = H(i+ib-1) . . . H(i+1) H(i)
+*
+               CALL DLARZT( 'Backward', 'Rowwise', N-M, IB, A( I, M1 ),
+     $                      LDA, TAU( I ), WORK, LDWORK )
+*
+*              Apply H to A(1:i-1,i:n) from the right
+*
+               CALL DLARZB( 'Right', 'No transpose', 'Backward',
+     $                      'Rowwise', I-1, N-I+1, IB, N-M, A( I, M1 ),
+     $                      LDA, WORK, LDWORK, A( 1, I ), LDA,
+     $                      WORK( IB+1 ), LDWORK )
+            END IF
+   20    CONTINUE
+         MU = I + NB - 1
+      ELSE
+         MU = M
+      END IF
+*
+*     Use unblocked code to factor the last or only block
+*
+      IF( MU.GT.0 )
+     $   CALL DLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
+*
+      WORK( 1 ) = LWKOPT
+*
+      RETURN
+*
+*     End of DTZRZF
+*
+      END
Index: src/lapack/double/dlaisnan.f
===================================================================
--- src/lapack/double/dlaisnan.f	(revision 0)
+++ src/lapack/double/dlaisnan.f	(revision 1)
@@ -0,0 +1,42 @@
+      LOGICAL FUNCTION DLAISNAN( DIN1, DIN2 )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   DIN1, DIN2
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  This routine is not for general use.  It exists solely to avoid
+*  over-optimization in DISNAN.
+*
+*  DLAISNAN checks for NaNs by comparing its two arguments for
+*  inequality.  NaN is the only floating-point value where NaN != NaN
+*  returns .TRUE.  To check for NaNs, pass the same variable as both
+*  arguments.
+*
+*  A compiler must assume that the two arguments are
+*  not the same variable, and the test will not be optimized away.
+*  Interprocedural or whole-program optimization may delete this
+*  test.  The ISNAN functions will be replaced by the correct
+*  Fortran 03 intrinsic once the intrinsic is widely available.
+*
+*  Arguments
+*  =========
+*
+*  DIN1    (input) DOUBLE PRECISION
+*
+*  DIN2    (input) DOUBLE PRECISION
+*          Two numbers to compare for inequality.
+*
+*  =====================================================================
+*
+*  .. Executable Statements ..
+      DLAISNAN = (DIN1.NE.DIN2)
+      RETURN
+      END
Index: src/lapack/double/dlasv2.f
===================================================================
--- src/lapack/double/dlasv2.f	(revision 0)
+++ src/lapack/double/dlasv2.f	(revision 1)
@@ -0,0 +1,250 @@
+      SUBROUTINE DLASV2( F, G, H, SSMIN, SSMAX, SNR, CSR, SNL, CSL )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   CSL, CSR, F, G, H, SNL, SNR, SSMAX, SSMIN
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASV2 computes the singular value decomposition of a 2-by-2
+*  triangular matrix
+*     [  F   G  ]
+*     [  0   H  ].
+*  On return, abs(SSMAX) is the larger singular value, abs(SSMIN) is the
+*  smaller singular value, and (CSL,SNL) and (CSR,SNR) are the left and
+*  right singular vectors for abs(SSMAX), giving the decomposition
+*
+*     [ CSL  SNL ] [  F   G  ] [ CSR -SNR ]  =  [ SSMAX   0   ]
+*     [-SNL  CSL ] [  0   H  ] [ SNR  CSR ]     [  0    SSMIN ].
+*
+*  Arguments
+*  =========
+*
+*  F       (input) DOUBLE PRECISION
+*          The (1,1) element of the 2-by-2 matrix.
+*
+*  G       (input) DOUBLE PRECISION
+*          The (1,2) element of the 2-by-2 matrix.
+*
+*  H       (input) DOUBLE PRECISION
+*          The (2,2) element of the 2-by-2 matrix.
+*
+*  SSMIN   (output) DOUBLE PRECISION
+*          abs(SSMIN) is the smaller singular value.
+*
+*  SSMAX   (output) DOUBLE PRECISION
+*          abs(SSMAX) is the larger singular value.
+*
+*  SNL     (output) DOUBLE PRECISION
+*  CSL     (output) DOUBLE PRECISION
+*          The vector (CSL, SNL) is a unit left singular vector for the
+*          singular value abs(SSMAX).
+*
+*  SNR     (output) DOUBLE PRECISION
+*  CSR     (output) DOUBLE PRECISION
+*          The vector (CSR, SNR) is a unit right singular vector for the
+*          singular value abs(SSMAX).
+*
+*  Further Details
+*  ===============
+*
+*  Any input parameter may be aliased with any output parameter.
+*
+*  Barring over/underflow and assuming a guard digit in subtraction, all
+*  output quantities are correct to within a few units in the last
+*  place (ulps).
+*
+*  In IEEE arithmetic, the code works correctly if one matrix element is
+*  infinite.
+*
+*  Overflow will not occur unless the largest singular value itself
+*  overflows or is within a few ulps of overflow. (On machines with
+*  partial overflow, like the Cray, overflow may occur if the largest
+*  singular value is within a factor of 2 of overflow.)
+*
+*  Underflow is harmless if underflow is gradual. Otherwise, results
+*  may correspond to a matrix modified by perturbations of size near
+*  the underflow threshold.
+*
+* =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+      DOUBLE PRECISION   HALF
+      PARAMETER          ( HALF = 0.5D0 )
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D0 )
+      DOUBLE PRECISION   TWO
+      PARAMETER          ( TWO = 2.0D0 )
+      DOUBLE PRECISION   FOUR
+      PARAMETER          ( FOUR = 4.0D0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            GASMAL, SWAP
+      INTEGER            PMAX
+      DOUBLE PRECISION   A, CLT, CRT, D, FA, FT, GA, GT, HA, HT, L, M,
+     $                   MM, R, S, SLT, SRT, T, TEMP, TSIGN, TT
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, SIGN, SQRT
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Executable Statements ..
+*
+      FT = F
+      FA = ABS( FT )
+      HT = H
+      HA = ABS( H )
+*
+*     PMAX points to the maximum absolute element of matrix
+*       PMAX = 1 if F largest in absolute values
+*       PMAX = 2 if G largest in absolute values
+*       PMAX = 3 if H largest in absolute values
+*
+      PMAX = 1
+      SWAP = ( HA.GT.FA )
+      IF( SWAP ) THEN
+         PMAX = 3
+         TEMP = FT
+         FT = HT
+         HT = TEMP
+         TEMP = FA
+         FA = HA
+         HA = TEMP
+*
+*        Now FA .ge. HA
+*
+      END IF
+      GT = G
+      GA = ABS( GT )
+      IF( GA.EQ.ZERO ) THEN
+*
+*        Diagonal matrix
+*
+         SSMIN = HA
+         SSMAX = FA
+         CLT = ONE
+         CRT = ONE
+         SLT = ZERO
+         SRT = ZERO
+      ELSE
+         GASMAL = .TRUE.
+         IF( GA.GT.FA ) THEN
+            PMAX = 2
+            IF( ( FA / GA ).LT.DLAMCH( 'EPS' ) ) THEN
+*
+*              Case of very large GA
+*
+               GASMAL = .FALSE.
+               SSMAX = GA
+               IF( HA.GT.ONE ) THEN
+                  SSMIN = FA / ( GA / HA )
+               ELSE
+                  SSMIN = ( FA / GA )*HA
+               END IF
+               CLT = ONE
+               SLT = HT / GT
+               SRT = ONE
+               CRT = FT / GT
+            END IF
+         END IF
+         IF( GASMAL ) THEN
+*
+*           Normal case
+*
+            D = FA - HA
+            IF( D.EQ.FA ) THEN
+*
+*              Copes with infinite F or H
+*
+               L = ONE
+            ELSE
+               L = D / FA
+            END IF
+*
+*           Note that 0 .le. L .le. 1
+*
+            M = GT / FT
+*
+*           Note that abs(M) .le. 1/macheps
+*
+            T = TWO - L
+*
+*           Note that T .ge. 1
+*
+            MM = M*M
+            TT = T*T
+            S = SQRT( TT+MM )
+*
+*           Note that 1 .le. S .le. 1 + 1/macheps
+*
+            IF( L.EQ.ZERO ) THEN
+               R = ABS( M )
+            ELSE
+               R = SQRT( L*L+MM )
+            END IF
+*
+*           Note that 0 .le. R .le. 1 + 1/macheps
+*
+            A = HALF*( S+R )
+*
+*           Note that 1 .le. A .le. 1 + abs(M)
+*
+            SSMIN = HA / A
+            SSMAX = FA*A
+            IF( MM.EQ.ZERO ) THEN
+*
+*              Note that M is very tiny
+*
+               IF( L.EQ.ZERO ) THEN
+                  T = SIGN( TWO, FT )*SIGN( ONE, GT )
+               ELSE
+                  T = GT / SIGN( D, FT ) + M / T
+               END IF
+            ELSE
+               T = ( M / ( S+T )+M / ( R+L ) )*( ONE+A )
+            END IF
+            L = SQRT( T*T+FOUR )
+            CRT = TWO / L
+            SRT = T / L
+            CLT = ( CRT+SRT*M ) / A
+            SLT = ( HT / FT )*SRT / A
+         END IF
+      END IF
+      IF( SWAP ) THEN
+         CSL = SRT
+         SNL = CRT
+         CSR = SLT
+         SNR = CLT
+      ELSE
+         CSL = CLT
+         SNL = SLT
+         CSR = CRT
+         SNR = SRT
+      END IF
+*
+*     Correct signs of SSMAX and SSMIN
+*
+      IF( PMAX.EQ.1 )
+     $   TSIGN = SIGN( ONE, CSR )*SIGN( ONE, CSL )*SIGN( ONE, F )
+      IF( PMAX.EQ.2 )
+     $   TSIGN = SIGN( ONE, SNR )*SIGN( ONE, CSL )*SIGN( ONE, G )
+      IF( PMAX.EQ.3 )
+     $   TSIGN = SIGN( ONE, SNR )*SIGN( ONE, SNL )*SIGN( ONE, H )
+      SSMAX = SIGN( SSMAX, TSIGN )
+      SSMIN = SIGN( SSMIN, TSIGN*SIGN( ONE, F )*SIGN( ONE, H ) )
+      RETURN
+*
+*     End of DLASV2
+*
+      END
Index: src/lapack/double/dlaic1.f
===================================================================
--- src/lapack/double/dlaic1.f	(revision 0)
+++ src/lapack/double/dlaic1.f	(revision 1)
@@ -0,0 +1,293 @@
+      SUBROUTINE DLAIC1( JOB, J, X, SEST, W, GAMMA, SESTPR, S, C )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            J, JOB
+      DOUBLE PRECISION   C, GAMMA, S, SEST, SESTPR
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   W( J ), X( J )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAIC1 applies one step of incremental condition estimation in
+*  its simplest version:
+*
+*  Let x, twonorm(x) = 1, be an approximate singular vector of an j-by-j
+*  lower triangular matrix L, such that
+*           twonorm(L*x) = sest
+*  Then DLAIC1 computes sestpr, s, c such that
+*  the vector
+*                  [ s*x ]
+*           xhat = [  c  ]
+*  is an approximate singular vector of
+*                  [ L     0  ]
+*           Lhat = [ w' gamma ]
+*  in the sense that
+*           twonorm(Lhat*xhat) = sestpr.
+*
+*  Depending on JOB, an estimate for the largest or smallest singular
+*  value is computed.
+*
+*  Note that [s c]' and sestpr**2 is an eigenpair of the system
+*
+*      diag(sest*sest, 0) + [alpha  gamma] * [ alpha ]
+*                                            [ gamma ]
+*
+*  where  alpha =  x'*w.
+*
+*  Arguments
+*  =========
+*
+*  JOB     (input) INTEGER
+*          = 1: an estimate for the largest singular value is computed.
+*          = 2: an estimate for the smallest singular value is computed.
+*
+*  J       (input) INTEGER
+*          Length of X and W
+*
+*  X       (input) DOUBLE PRECISION array, dimension (J)
+*          The j-vector x.
+*
+*  SEST    (input) DOUBLE PRECISION
+*          Estimated singular value of j by j matrix L
+*
+*  W       (input) DOUBLE PRECISION array, dimension (J)
+*          The j-vector w.
+*
+*  GAMMA   (input) DOUBLE PRECISION
+*          The diagonal element gamma.
+*
+*  SESTPR  (output) DOUBLE PRECISION
+*          Estimated singular value of (j+1) by (j+1) matrix Lhat.
+*
+*  S       (output) DOUBLE PRECISION
+*          Sine needed in forming xhat.
+*
+*  C       (output) DOUBLE PRECISION
+*          Cosine needed in forming xhat.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE, TWO
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
+      DOUBLE PRECISION   HALF, FOUR
+      PARAMETER          ( HALF = 0.5D0, FOUR = 4.0D0 )
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION   ABSALP, ABSEST, ABSGAM, ALPHA, B, COSINE, EPS,
+     $                   NORMA, S1, S2, SINE, T, TEST, TMP, ZETA1, ZETA2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, SIGN, SQRT
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DDOT, DLAMCH
+      EXTERNAL           DDOT, DLAMCH
+*     ..
+*     .. Executable Statements ..
+*
+      EPS = DLAMCH( 'Epsilon' )
+      ALPHA = DDOT( J, X, 1, W, 1 )
+*
+      ABSALP = ABS( ALPHA )
+      ABSGAM = ABS( GAMMA )
+      ABSEST = ABS( SEST )
+*
+      IF( JOB.EQ.1 ) THEN
+*
+*        Estimating largest singular value
+*
+*        special cases
+*
+         IF( SEST.EQ.ZERO ) THEN
+            S1 = MAX( ABSGAM, ABSALP )
+            IF( S1.EQ.ZERO ) THEN
+               S = ZERO
+               C = ONE
+               SESTPR = ZERO
+            ELSE
+               S = ALPHA / S1
+               C = GAMMA / S1
+               TMP = SQRT( S*S+C*C )
+               S = S / TMP
+               C = C / TMP
+               SESTPR = S1*TMP
+            END IF
+            RETURN
+         ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+            S = ONE
+            C = ZERO
+            TMP = MAX( ABSEST, ABSALP )
+            S1 = ABSEST / TMP
+            S2 = ABSALP / TMP
+            SESTPR = TMP*SQRT( S1*S1+S2*S2 )
+            RETURN
+         ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+            S1 = ABSGAM
+            S2 = ABSEST
+            IF( S1.LE.S2 ) THEN
+               S = ONE
+               C = ZERO
+               SESTPR = S2
+            ELSE
+               S = ZERO
+               C = ONE
+               SESTPR = S1
+            END IF
+            RETURN
+         ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+            S1 = ABSGAM
+            S2 = ABSALP
+            IF( S1.LE.S2 ) THEN
+               TMP = S1 / S2
+               S = SQRT( ONE+TMP*TMP )
+               SESTPR = S2*S
+               C = ( GAMMA / S2 ) / S
+               S = SIGN( ONE, ALPHA ) / S
+            ELSE
+               TMP = S2 / S1
+               C = SQRT( ONE+TMP*TMP )
+               SESTPR = S1*C
+               S = ( ALPHA / S1 ) / C
+               C = SIGN( ONE, GAMMA ) / C
+            END IF
+            RETURN
+         ELSE
+*
+*           normal case
+*
+            ZETA1 = ALPHA / ABSEST
+            ZETA2 = GAMMA / ABSEST
+*
+            B = ( ONE-ZETA1*ZETA1-ZETA2*ZETA2 )*HALF
+            C = ZETA1*ZETA1
+            IF( B.GT.ZERO ) THEN
+               T = C / ( B+SQRT( B*B+C ) )
+            ELSE
+               T = SQRT( B*B+C ) - B
+            END IF
+*
+            SINE = -ZETA1 / T
+            COSINE = -ZETA2 / ( ONE+T )
+            TMP = SQRT( SINE*SINE+COSINE*COSINE )
+            S = SINE / TMP
+            C = COSINE / TMP
+            SESTPR = SQRT( T+ONE )*ABSEST
+            RETURN
+         END IF
+*
+      ELSE IF( JOB.EQ.2 ) THEN
+*
+*        Estimating smallest singular value
+*
+*        special cases
+*
+         IF( SEST.EQ.ZERO ) THEN
+            SESTPR = ZERO
+            IF( MAX( ABSGAM, ABSALP ).EQ.ZERO ) THEN
+               SINE = ONE
+               COSINE = ZERO
+            ELSE
+               SINE = -GAMMA
+               COSINE = ALPHA
+            END IF
+            S1 = MAX( ABS( SINE ), ABS( COSINE ) )
+            S = SINE / S1
+            C = COSINE / S1
+            TMP = SQRT( S*S+C*C )
+            S = S / TMP
+            C = C / TMP
+            RETURN
+         ELSE IF( ABSGAM.LE.EPS*ABSEST ) THEN
+            S = ZERO
+            C = ONE
+            SESTPR = ABSGAM
+            RETURN
+         ELSE IF( ABSALP.LE.EPS*ABSEST ) THEN
+            S1 = ABSGAM
+            S2 = ABSEST
+            IF( S1.LE.S2 ) THEN
+               S = ZERO
+               C = ONE
+               SESTPR = S1
+            ELSE
+               S = ONE
+               C = ZERO
+               SESTPR = S2
+            END IF
+            RETURN
+         ELSE IF( ABSEST.LE.EPS*ABSALP .OR. ABSEST.LE.EPS*ABSGAM ) THEN
+            S1 = ABSGAM
+            S2 = ABSALP
+            IF( S1.LE.S2 ) THEN
+               TMP = S1 / S2
+               C = SQRT( ONE+TMP*TMP )
+               SESTPR = ABSEST*( TMP / C )
+               S = -( GAMMA / S2 ) / C
+               C = SIGN( ONE, ALPHA ) / C
+            ELSE
+               TMP = S2 / S1
+               S = SQRT( ONE+TMP*TMP )
+               SESTPR = ABSEST / S
+               C = ( ALPHA / S1 ) / S
+               S = -SIGN( ONE, GAMMA ) / S
+            END IF
+            RETURN
+         ELSE
+*
+*           normal case
+*
+            ZETA1 = ALPHA / ABSEST
+            ZETA2 = GAMMA / ABSEST
+*
+            NORMA = MAX( ONE+ZETA1*ZETA1+ABS( ZETA1*ZETA2 ),
+     $              ABS( ZETA1*ZETA2 )+ZETA2*ZETA2 )
+*
+*           See if root is closer to zero or to ONE
+*
+            TEST = ONE + TWO*( ZETA1-ZETA2 )*( ZETA1+ZETA2 )
+            IF( TEST.GE.ZERO ) THEN
+*
+*              root is close to zero, compute directly
+*
+               B = ( ZETA1*ZETA1+ZETA2*ZETA2+ONE )*HALF
+               C = ZETA2*ZETA2
+               T = C / ( B+SQRT( ABS( B*B-C ) ) )
+               SINE = ZETA1 / ( ONE-T )
+               COSINE = -ZETA2 / T
+               SESTPR = SQRT( T+FOUR*EPS*EPS*NORMA )*ABSEST
+            ELSE
+*
+*              root is closer to ONE, shift by that amount
+*
+               B = ( ZETA2*ZETA2+ZETA1*ZETA1-ONE )*HALF
+               C = ZETA1*ZETA1
+               IF( B.GE.ZERO ) THEN
+                  T = -C / ( B+SQRT( B*B+C ) )
+               ELSE
+                  T = B - SQRT( B*B+C )
+               END IF
+               SINE = -ZETA1 / T
+               COSINE = -ZETA2 / ( ONE+T )
+               SESTPR = SQRT( ONE+T+FOUR*EPS*EPS*NORMA )*ABSEST
+            END IF
+            TMP = SQRT( SINE*SINE+COSINE*COSINE )
+            S = SINE / TMP
+            C = COSINE / TMP
+            RETURN
+*
+         END IF
+      END IF
+      RETURN
+*
+*     End of DLAIC1
+*
+      END
Index: src/lapack/double/dlascl.f
===================================================================
--- src/lapack/double/dlascl.f	(revision 0)
+++ src/lapack/double/dlascl.f	(revision 1)
@@ -0,0 +1,284 @@
+      SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          TYPE
+      INTEGER            INFO, KL, KU, LDA, M, N
+      DOUBLE PRECISION   CFROM, CTO
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASCL multiplies the M by N real matrix A by the real scalar
+*  CTO/CFROM.  This is done without over/underflow as long as the final
+*  result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that
+*  A may be full, upper triangular, lower triangular, upper Hessenberg,
+*  or banded.
+*
+*  Arguments
+*  =========
+*
+*  TYPE    (input) CHARACTER*1
+*          TYPE indices the storage type of the input matrix.
+*          = 'G':  A is a full matrix.
+*          = 'L':  A is a lower triangular matrix.
+*          = 'U':  A is an upper triangular matrix.
+*          = 'H':  A is an upper Hessenberg matrix.
+*          = 'B':  A is a symmetric band matrix with lower bandwidth KL
+*                  and upper bandwidth KU and with the only the lower
+*                  half stored.
+*          = 'Q':  A is a symmetric band matrix with lower bandwidth KL
+*                  and upper bandwidth KU and with the only the upper
+*                  half stored.
+*          = 'Z':  A is a band matrix with lower bandwidth KL and upper
+*                  bandwidth KU.
+*
+*  KL      (input) INTEGER
+*          The lower bandwidth of A.  Referenced only if TYPE = 'B',
+*          'Q' or 'Z'.
+*
+*  KU      (input) INTEGER
+*          The upper bandwidth of A.  Referenced only if TYPE = 'B',
+*          'Q' or 'Z'.
+*
+*  CFROM   (input) DOUBLE PRECISION
+*  CTO     (input) DOUBLE PRECISION
+*          The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
+*          without over/underflow if the final result CTO*A(I,J)/CFROM
+*          can be represented without over/underflow.  CFROM must be
+*          nonzero.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          The matrix to be multiplied by CTO/CFROM.  See TYPE for the
+*          storage type.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  INFO    (output) INTEGER
+*          0  - successful exit
+*          <0 - if INFO = -i, the i-th argument had an illegal value.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            DONE
+      INTEGER            I, ITYPE, J, K1, K2, K3, K4
+      DOUBLE PRECISION   BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME, DISNAN
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           LSAME, DLAMCH, DISNAN
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           XERBLA
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+*
+      IF( LSAME( TYPE, 'G' ) ) THEN
+         ITYPE = 0
+      ELSE IF( LSAME( TYPE, 'L' ) ) THEN
+         ITYPE = 1
+      ELSE IF( LSAME( TYPE, 'U' ) ) THEN
+         ITYPE = 2
+      ELSE IF( LSAME( TYPE, 'H' ) ) THEN
+         ITYPE = 3
+      ELSE IF( LSAME( TYPE, 'B' ) ) THEN
+         ITYPE = 4
+      ELSE IF( LSAME( TYPE, 'Q' ) ) THEN
+         ITYPE = 5
+      ELSE IF( LSAME( TYPE, 'Z' ) ) THEN
+         ITYPE = 6
+      ELSE
+         ITYPE = -1
+      END IF
+*
+      IF( ITYPE.EQ.-1 ) THEN
+         INFO = -1
+      ELSE IF( CFROM.EQ.ZERO .OR. DISNAN(CFROM) ) THEN
+         INFO = -4
+      ELSE IF( DISNAN(CTO) ) THEN
+         INFO = -5
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -6
+      ELSE IF( N.LT.0 .OR. ( ITYPE.EQ.4 .AND. N.NE.M ) .OR.
+     $         ( ITYPE.EQ.5 .AND. N.NE.M ) ) THEN
+         INFO = -7
+      ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -9
+      ELSE IF( ITYPE.GE.4 ) THEN
+         IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN
+            INFO = -2
+         ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR.
+     $            ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) )
+     $             THEN
+            INFO = -3
+         ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR.
+     $            ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR.
+     $            ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN
+            INFO = -9
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASCL', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( N.EQ.0 .OR. M.EQ.0 )
+     $   RETURN
+*
+*     Get machine parameters
+*
+      SMLNUM = DLAMCH( 'S' )
+      BIGNUM = ONE / SMLNUM
+*
+      CFROMC = CFROM
+      CTOC = CTO
+*
+   10 CONTINUE
+      CFROM1 = CFROMC*SMLNUM
+      IF( CFROM1.EQ.CFROMC ) THEN
+!        CFROMC is an inf.  Multiply by a correctly signed zero for
+!        finite CTOC, or a NaN if CTOC is infinite.
+         MUL = CTOC / CFROMC
+         DONE = .TRUE.
+         CTO1 = CTOC
+      ELSE
+         CTO1 = CTOC / BIGNUM
+         IF( CTO1.EQ.CTOC ) THEN
+!           CTOC is either 0 or an inf.  In both cases, CTOC itself
+!           serves as the correct multiplication factor.
+            MUL = CTOC
+            DONE = .TRUE.
+            CFROMC = ONE
+         ELSE IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN
+            MUL = SMLNUM
+            DONE = .FALSE.
+            CFROMC = CFROM1
+         ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN
+            MUL = BIGNUM
+            DONE = .FALSE.
+            CTOC = CTO1
+         ELSE
+            MUL = CTOC / CFROMC
+            DONE = .TRUE.
+         END IF
+      END IF
+*
+      IF( ITYPE.EQ.0 ) THEN
+*
+*        Full matrix
+*
+         DO 30 J = 1, N
+            DO 20 I = 1, M
+               A( I, J ) = A( I, J )*MUL
+   20       CONTINUE
+   30    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.1 ) THEN
+*
+*        Lower triangular matrix
+*
+         DO 50 J = 1, N
+            DO 40 I = J, M
+               A( I, J ) = A( I, J )*MUL
+   40       CONTINUE
+   50    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.2 ) THEN
+*
+*        Upper triangular matrix
+*
+         DO 70 J = 1, N
+            DO 60 I = 1, MIN( J, M )
+               A( I, J ) = A( I, J )*MUL
+   60       CONTINUE
+   70    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.3 ) THEN
+*
+*        Upper Hessenberg matrix
+*
+         DO 90 J = 1, N
+            DO 80 I = 1, MIN( J+1, M )
+               A( I, J ) = A( I, J )*MUL
+   80       CONTINUE
+   90    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.4 ) THEN
+*
+*        Lower half of a symmetric band matrix
+*
+         K3 = KL + 1
+         K4 = N + 1
+         DO 110 J = 1, N
+            DO 100 I = 1, MIN( K3, K4-J )
+               A( I, J ) = A( I, J )*MUL
+  100       CONTINUE
+  110    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.5 ) THEN
+*
+*        Upper half of a symmetric band matrix
+*
+         K1 = KU + 2
+         K3 = KU + 1
+         DO 130 J = 1, N
+            DO 120 I = MAX( K1-J, 1 ), K3
+               A( I, J ) = A( I, J )*MUL
+  120       CONTINUE
+  130    CONTINUE
+*
+      ELSE IF( ITYPE.EQ.6 ) THEN
+*
+*        Band matrix
+*
+         K1 = KL + KU + 2
+         K2 = KL + 1
+         K3 = 2*KL + KU + 1
+         K4 = KL + KU + 1 + M
+         DO 150 J = 1, N
+            DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J )
+               A( I, J ) = A( I, J )*MUL
+  140       CONTINUE
+  150    CONTINUE
+*
+      END IF
+*
+      IF( .NOT.DONE )
+     $   GO TO 10
+*
+      RETURN
+*
+*     End of DLASCL
+*
+      END
Index: src/lapack/double/dgelqf.f
===================================================================
--- src/lapack/double/dgelqf.f	(revision 0)
+++ src/lapack/double/dgelqf.f	(revision 1)
@@ -0,0 +1,196 @@
+      SUBROUTINE DGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGELQF computes an LQ factorization of a real M-by-N matrix A:
+*  A = L * Q.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, the elements on and below the diagonal of the array
+*          contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+*          lower triangular if m <= n); the elements above the diagonal,
+*          with the array TAU, represent the orthogonal matrix Q as a
+*          product of elementary reflectors (see Further Details).
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors (see Further
+*          Details).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.  LWORK >= max(1,M).
+*          For optimum performance LWORK >= M*NB, where NB is the
+*          optimal blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  The matrix Q is represented as a product of elementary reflectors
+*
+*     Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+*  Each H(i) has the form
+*
+*     H(i) = I - tau * v * v'
+*
+*  where tau is a real scalar, and v is a real vector with
+*  v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i,i+1:n),
+*  and tau in TAU(i).
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
+     $                   NBMIN, NX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGELQ2, DLARFB, DLARFT, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      EXTERNAL           ILAENV
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      NB = ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+      LWKOPT = M*NB
+      WORK( 1 ) = LWKOPT
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      ELSE IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
+         INFO = -7
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGELQF', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      K = MIN( M, N )
+      IF( K.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      NX = 0
+      IWS = M
+      IF( NB.GT.1 .AND. NB.LT.K ) THEN
+*
+*        Determine when to cross over from blocked to unblocked code.
+*
+         NX = MAX( 0, ILAENV( 3, 'DGELQF', ' ', M, N, -1, -1 ) )
+         IF( NX.LT.K ) THEN
+*
+*           Determine if workspace is large enough for blocked code.
+*
+            LDWORK = M
+            IWS = LDWORK*NB
+            IF( LWORK.LT.IWS ) THEN
+*
+*              Not enough workspace to use optimal NB:  reduce NB and
+*              determine the minimum value of NB.
+*
+               NB = LWORK / LDWORK
+               NBMIN = MAX( 2, ILAENV( 2, 'DGELQF', ' ', M, N, -1,
+     $                 -1 ) )
+            END IF
+         END IF
+      END IF
+*
+      IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN
+*
+*        Use blocked code initially
+*
+         DO 10 I = 1, K - NX, NB
+            IB = MIN( K-I+1, NB )
+*
+*           Compute the LQ factorization of the current block
+*           A(i:i+ib-1,i:n)
+*
+            CALL DGELQ2( IB, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+     $                   IINFO )
+            IF( I+IB.LE.M ) THEN
+*
+*              Form the triangular factor of the block reflector
+*              H = H(i) H(i+1) . . . H(i+ib-1)
+*
+               CALL DLARFT( 'Forward', 'Rowwise', N-I+1, IB, A( I, I ),
+     $                      LDA, TAU( I ), WORK, LDWORK )
+*
+*              Apply H to A(i+ib:m,i:n) from the right
+*
+               CALL DLARFB( 'Right', 'No transpose', 'Forward',
+     $                      'Rowwise', M-I-IB+1, N-I+1, IB, A( I, I ),
+     $                      LDA, WORK, LDWORK, A( I+IB, I ), LDA,
+     $                      WORK( IB+1 ), LDWORK )
+            END IF
+   10    CONTINUE
+      ELSE
+         I = 1
+      END IF
+*
+*     Use unblocked code to factor the last or only block.
+*
+      IF( I.LE.K )
+     $   CALL DGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
+     $                IINFO )
+*
+      WORK( 1 ) = IWS
+      RETURN
+*
+*     End of DGELQF
+*
+      END
Index: src/lapack/double/dlalsd.f
===================================================================
--- src/lapack/double/dlalsd.f	(revision 0)
+++ src/lapack/double/dlalsd.f	(revision 1)
@@ -0,0 +1,435 @@
+      SUBROUTINE DLALSD( UPLO, SMLSIZ, N, NRHS, D, E, B, LDB, RCOND,
+     $                   RANK, WORK, IWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      CHARACTER          UPLO
+      INTEGER            INFO, LDB, N, NRHS, RANK, SMLSIZ
+      DOUBLE PRECISION   RCOND
+*     ..
+*     .. Array Arguments ..
+      INTEGER            IWORK( * )
+      DOUBLE PRECISION   B( LDB, * ), D( * ), E( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLALSD uses the singular value decomposition of A to solve the least
+*  squares problem of finding X to minimize the Euclidean norm of each
+*  column of A*X-B, where A is N-by-N upper bidiagonal, and X and B
+*  are N-by-NRHS. The solution X overwrites B.
+*
+*  The singular values of A smaller than RCOND times the largest
+*  singular value are treated as zero in solving the least squares
+*  problem; in this case a minimum norm solution is returned.
+*  The actual singular values are returned in D in ascending order.
+*
+*  This code makes very mild assumptions about floating point
+*  arithmetic. It will work on machines with a guard digit in
+*  add/subtract, or on those binary machines without guard digits
+*  which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2.
+*  It could conceivably fail on hexadecimal or decimal machines
+*  without guard digits, but we know of none.
+*
+*  Arguments
+*  =========
+*
+*  UPLO   (input) CHARACTER*1
+*         = 'U': D and E define an upper bidiagonal matrix.
+*         = 'L': D and E define a  lower bidiagonal matrix.
+*
+*  SMLSIZ (input) INTEGER
+*         The maximum size of the subproblems at the bottom of the
+*         computation tree.
+*
+*  N      (input) INTEGER
+*         The dimension of the  bidiagonal matrix.  N >= 0.
+*
+*  NRHS   (input) INTEGER
+*         The number of columns of B. NRHS must be at least 1.
+*
+*  D      (input/output) DOUBLE PRECISION array, dimension (N)
+*         On entry D contains the main diagonal of the bidiagonal
+*         matrix. On exit, if INFO = 0, D contains its singular values.
+*
+*  E      (input/output) DOUBLE PRECISION array, dimension (N-1)
+*         Contains the super-diagonal entries of the bidiagonal matrix.
+*         On exit, E has been destroyed.
+*
+*  B      (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+*         On input, B contains the right hand sides of the least
+*         squares problem. On output, B contains the solution X.
+*
+*  LDB    (input) INTEGER
+*         The leading dimension of B in the calling subprogram.
+*         LDB must be at least max(1,N).
+*
+*  RCOND  (input) DOUBLE PRECISION
+*         The singular values of A less than or equal to RCOND times
+*         the largest singular value are treated as zero in solving
+*         the least squares problem. If RCOND is negative,
+*         machine precision is used instead.
+*         For example, if diag(S)*X=B were the least squares problem,
+*         where diag(S) is a diagonal matrix of singular values, the
+*         solution would be X(i) = B(i) / S(i) if S(i) is greater than
+*         RCOND*max(S), and X(i) = 0 if S(i) is less than or equal to
+*         RCOND*max(S).
+*
+*  RANK   (output) INTEGER
+*         The number of singular values of A greater than RCOND times
+*         the largest singular value.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension at least
+*         (9*N + 2*N*SMLSIZ + 8*N*NLVL + N*NRHS + (SMLSIZ+1)**2),
+*         where NLVL = max(0, INT(log_2 (N/(SMLSIZ+1))) + 1).
+*
+*  IWORK  (workspace) INTEGER array, dimension at least
+*         (3*N*NLVL + 11*N)
+*
+*  INFO   (output) INTEGER
+*         = 0:  successful exit.
+*         < 0:  if INFO = -i, the i-th argument had an illegal value.
+*         > 0:  The algorithm failed to compute a singular value while
+*               working on the submatrix lying in rows and columns
+*               INFO/(N+1) through MOD(INFO,N+1).
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Ren-Cang Li, Computer Science Division, University of
+*       California at Berkeley, USA
+*     Osni Marques, LBNL/NERSC, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE, TWO
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            BX, BXST, C, DIFL, DIFR, GIVCOL, GIVNUM,
+     $                   GIVPTR, I, ICMPQ1, ICMPQ2, IWK, J, K, NLVL,
+     $                   NM1, NSIZE, NSUB, NWORK, PERM, POLES, S, SIZEI,
+     $                   SMLSZP, SQRE, ST, ST1, U, VT, Z
+      DOUBLE PRECISION   CS, EPS, ORGNRM, R, RCND, SN, TOL
+*     ..
+*     .. External Functions ..
+      INTEGER            IDAMAX
+      DOUBLE PRECISION   DLAMCH, DLANST
+      EXTERNAL           IDAMAX, DLAMCH, DLANST
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEMM, DLACPY, DLALSA, DLARTG, DLASCL,
+     $                   DLASDA, DLASDQ, DLASET, DLASRT, DROT, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, DBLE, INT, LOG, SIGN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+*
+      IF( N.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( NRHS.LT.1 ) THEN
+         INFO = -4
+      ELSE IF( ( LDB.LT.1 ) .OR. ( LDB.LT.N ) ) THEN
+         INFO = -8
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLALSD', -INFO )
+         RETURN
+      END IF
+*
+      EPS = DLAMCH( 'Epsilon' )
+*
+*     Set up the tolerance.
+*
+      IF( ( RCOND.LE.ZERO ) .OR. ( RCOND.GE.ONE ) ) THEN
+         RCND = EPS
+      ELSE
+         RCND = RCOND
+      END IF
+*
+      RANK = 0
+*
+*     Quick return if possible.
+*
+      IF( N.EQ.0 ) THEN
+         RETURN
+      ELSE IF( N.EQ.1 ) THEN
+         IF( D( 1 ).EQ.ZERO ) THEN
+            CALL DLASET( 'A', 1, NRHS, ZERO, ZERO, B, LDB )
+         ELSE
+            RANK = 1
+            CALL DLASCL( 'G', 0, 0, D( 1 ), ONE, 1, NRHS, B, LDB, INFO )
+            D( 1 ) = ABS( D( 1 ) )
+         END IF
+         RETURN
+      END IF
+*
+*     Rotate the matrix if it is lower bidiagonal.
+*
+      IF( UPLO.EQ.'L' ) THEN
+         DO 10 I = 1, N - 1
+            CALL DLARTG( D( I ), E( I ), CS, SN, R )
+            D( I ) = R
+            E( I ) = SN*D( I+1 )
+            D( I+1 ) = CS*D( I+1 )
+            IF( NRHS.EQ.1 ) THEN
+               CALL DROT( 1, B( I, 1 ), 1, B( I+1, 1 ), 1, CS, SN )
+            ELSE
+               WORK( I*2-1 ) = CS
+               WORK( I*2 ) = SN
+            END IF
+   10    CONTINUE
+         IF( NRHS.GT.1 ) THEN
+            DO 30 I = 1, NRHS
+               DO 20 J = 1, N - 1
+                  CS = WORK( J*2-1 )
+                  SN = WORK( J*2 )
+                  CALL DROT( 1, B( J, I ), 1, B( J+1, I ), 1, CS, SN )
+   20          CONTINUE
+   30       CONTINUE
+         END IF
+      END IF
+*
+*     Scale.
+*
+      NM1 = N - 1
+      ORGNRM = DLANST( 'M', N, D, E )
+      IF( ORGNRM.EQ.ZERO ) THEN
+         CALL DLASET( 'A', N, NRHS, ZERO, ZERO, B, LDB )
+         RETURN
+      END IF
+*
+      CALL DLASCL( 'G', 0, 0, ORGNRM, ONE, N, 1, D, N, INFO )
+      CALL DLASCL( 'G', 0, 0, ORGNRM, ONE, NM1, 1, E, NM1, INFO )
+*
+*     If N is smaller than the minimum divide size SMLSIZ, then solve
+*     the problem with another solver.
+*
+      IF( N.LE.SMLSIZ ) THEN
+         NWORK = 1 + N*N
+         CALL DLASET( 'A', N, N, ZERO, ONE, WORK, N )
+         CALL DLASDQ( 'U', 0, N, N, 0, NRHS, D, E, WORK, N, WORK, N, B,
+     $                LDB, WORK( NWORK ), INFO )
+         IF( INFO.NE.0 ) THEN
+            RETURN
+         END IF
+         TOL = RCND*ABS( D( IDAMAX( N, D, 1 ) ) )
+         DO 40 I = 1, N
+            IF( D( I ).LE.TOL ) THEN
+               CALL DLASET( 'A', 1, NRHS, ZERO, ZERO, B( I, 1 ), LDB )
+            ELSE
+               CALL DLASCL( 'G', 0, 0, D( I ), ONE, 1, NRHS, B( I, 1 ),
+     $                      LDB, INFO )
+               RANK = RANK + 1
+            END IF
+   40    CONTINUE
+         CALL DGEMM( 'T', 'N', N, NRHS, N, ONE, WORK, N, B, LDB, ZERO,
+     $               WORK( NWORK ), N )
+         CALL DLACPY( 'A', N, NRHS, WORK( NWORK ), N, B, LDB )
+*
+*        Unscale.
+*
+         CALL DLASCL( 'G', 0, 0, ONE, ORGNRM, N, 1, D, N, INFO )
+         CALL DLASRT( 'D', N, D, INFO )
+         CALL DLASCL( 'G', 0, 0, ORGNRM, ONE, N, NRHS, B, LDB, INFO )
+*
+         RETURN
+      END IF
+*
+*     Book-keeping and setting up some constants.
+*
+      NLVL = INT( LOG( DBLE( N ) / DBLE( SMLSIZ+1 ) ) / LOG( TWO ) ) + 1
+*
+      SMLSZP = SMLSIZ + 1
+*
+      U = 1
+      VT = 1 + SMLSIZ*N
+      DIFL = VT + SMLSZP*N
+      DIFR = DIFL + NLVL*N
+      Z = DIFR + NLVL*N*2
+      C = Z + NLVL*N
+      S = C + N
+      POLES = S + N
+      GIVNUM = POLES + 2*NLVL*N
+      BX = GIVNUM + 2*NLVL*N
+      NWORK = BX + N*NRHS
+*
+      SIZEI = 1 + N
+      K = SIZEI + N
+      GIVPTR = K + N
+      PERM = GIVPTR + N
+      GIVCOL = PERM + NLVL*N
+      IWK = GIVCOL + NLVL*N*2
+*
+      ST = 1
+      SQRE = 0
+      ICMPQ1 = 1
+      ICMPQ2 = 0
+      NSUB = 0
+*
+      DO 50 I = 1, N
+         IF( ABS( D( I ) ).LT.EPS ) THEN
+            D( I ) = SIGN( EPS, D( I ) )
+         END IF
+   50 CONTINUE
+*
+      DO 60 I = 1, NM1
+         IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN
+            NSUB = NSUB + 1
+            IWORK( NSUB ) = ST
+*
+*           Subproblem found. First determine its size and then
+*           apply divide and conquer on it.
+*
+            IF( I.LT.NM1 ) THEN
+*
+*              A subproblem with E(I) small for I < NM1.
+*
+               NSIZE = I - ST + 1
+               IWORK( SIZEI+NSUB-1 ) = NSIZE
+            ELSE IF( ABS( E( I ) ).GE.EPS ) THEN
+*
+*              A subproblem with E(NM1) not too small but I = NM1.
+*
+               NSIZE = N - ST + 1
+               IWORK( SIZEI+NSUB-1 ) = NSIZE
+            ELSE
+*
+*              A subproblem with E(NM1) small. This implies an
+*              1-by-1 subproblem at D(N), which is not solved
+*              explicitly.
+*
+               NSIZE = I - ST + 1
+               IWORK( SIZEI+NSUB-1 ) = NSIZE
+               NSUB = NSUB + 1
+               IWORK( NSUB ) = N
+               IWORK( SIZEI+NSUB-1 ) = 1
+               CALL DCOPY( NRHS, B( N, 1 ), LDB, WORK( BX+NM1 ), N )
+            END IF
+            ST1 = ST - 1
+            IF( NSIZE.EQ.1 ) THEN
+*
+*              This is a 1-by-1 subproblem and is not solved
+*              explicitly.
+*
+               CALL DCOPY( NRHS, B( ST, 1 ), LDB, WORK( BX+ST1 ), N )
+            ELSE IF( NSIZE.LE.SMLSIZ ) THEN
+*
+*              This is a small subproblem and is solved by DLASDQ.
+*
+               CALL DLASET( 'A', NSIZE, NSIZE, ZERO, ONE,
+     $                      WORK( VT+ST1 ), N )
+               CALL DLASDQ( 'U', 0, NSIZE, NSIZE, 0, NRHS, D( ST ),
+     $                      E( ST ), WORK( VT+ST1 ), N, WORK( NWORK ),
+     $                      N, B( ST, 1 ), LDB, WORK( NWORK ), INFO )
+               IF( INFO.NE.0 ) THEN
+                  RETURN
+               END IF
+               CALL DLACPY( 'A', NSIZE, NRHS, B( ST, 1 ), LDB,
+     $                      WORK( BX+ST1 ), N )
+            ELSE
+*
+*              A large problem. Solve it using divide and conquer.
+*
+               CALL DLASDA( ICMPQ1, SMLSIZ, NSIZE, SQRE, D( ST ),
+     $                      E( ST ), WORK( U+ST1 ), N, WORK( VT+ST1 ),
+     $                      IWORK( K+ST1 ), WORK( DIFL+ST1 ),
+     $                      WORK( DIFR+ST1 ), WORK( Z+ST1 ),
+     $                      WORK( POLES+ST1 ), IWORK( GIVPTR+ST1 ),
+     $                      IWORK( GIVCOL+ST1 ), N, IWORK( PERM+ST1 ),
+     $                      WORK( GIVNUM+ST1 ), WORK( C+ST1 ),
+     $                      WORK( S+ST1 ), WORK( NWORK ), IWORK( IWK ),
+     $                      INFO )
+               IF( INFO.NE.0 ) THEN
+                  RETURN
+               END IF
+               BXST = BX + ST1
+               CALL DLALSA( ICMPQ2, SMLSIZ, NSIZE, NRHS, B( ST, 1 ),
+     $                      LDB, WORK( BXST ), N, WORK( U+ST1 ), N,
+     $                      WORK( VT+ST1 ), IWORK( K+ST1 ),
+     $                      WORK( DIFL+ST1 ), WORK( DIFR+ST1 ),
+     $                      WORK( Z+ST1 ), WORK( POLES+ST1 ),
+     $                      IWORK( GIVPTR+ST1 ), IWORK( GIVCOL+ST1 ), N,
+     $                      IWORK( PERM+ST1 ), WORK( GIVNUM+ST1 ),
+     $                      WORK( C+ST1 ), WORK( S+ST1 ), WORK( NWORK ),
+     $                      IWORK( IWK ), INFO )
+               IF( INFO.NE.0 ) THEN
+                  RETURN
+               END IF
+            END IF
+            ST = I + 1
+         END IF
+   60 CONTINUE
+*
+*     Apply the singular values and treat the tiny ones as zero.
+*
+      TOL = RCND*ABS( D( IDAMAX( N, D, 1 ) ) )
+*
+      DO 70 I = 1, N
+*
+*        Some of the elements in D can be negative because 1-by-1
+*        subproblems were not solved explicitly.
+*
+         IF( ABS( D( I ) ).LE.TOL ) THEN
+            CALL DLASET( 'A', 1, NRHS, ZERO, ZERO, WORK( BX+I-1 ), N )
+         ELSE
+            RANK = RANK + 1
+            CALL DLASCL( 'G', 0, 0, D( I ), ONE, 1, NRHS,
+     $                   WORK( BX+I-1 ), N, INFO )
+         END IF
+         D( I ) = ABS( D( I ) )
+   70 CONTINUE
+*
+*     Now apply back the right singular vectors.
+*
+      ICMPQ2 = 1
+      DO 80 I = 1, NSUB
+         ST = IWORK( I )
+         ST1 = ST - 1
+         NSIZE = IWORK( SIZEI+I-1 )
+         BXST = BX + ST1
+         IF( NSIZE.EQ.1 ) THEN
+            CALL DCOPY( NRHS, WORK( BXST ), N, B( ST, 1 ), LDB )
+         ELSE IF( NSIZE.LE.SMLSIZ ) THEN
+            CALL DGEMM( 'T', 'N', NSIZE, NRHS, NSIZE, ONE,
+     $                  WORK( VT+ST1 ), N, WORK( BXST ), N, ZERO,
+     $                  B( ST, 1 ), LDB )
+         ELSE
+            CALL DLALSA( ICMPQ2, SMLSIZ, NSIZE, NRHS, WORK( BXST ), N,
+     $                   B( ST, 1 ), LDB, WORK( U+ST1 ), N,
+     $                   WORK( VT+ST1 ), IWORK( K+ST1 ),
+     $                   WORK( DIFL+ST1 ), WORK( DIFR+ST1 ),
+     $                   WORK( Z+ST1 ), WORK( POLES+ST1 ),
+     $                   IWORK( GIVPTR+ST1 ), IWORK( GIVCOL+ST1 ), N,
+     $                   IWORK( PERM+ST1 ), WORK( GIVNUM+ST1 ),
+     $                   WORK( C+ST1 ), WORK( S+ST1 ), WORK( NWORK ),
+     $                   IWORK( IWK ), INFO )
+            IF( INFO.NE.0 ) THEN
+               RETURN
+            END IF
+         END IF
+   80 CONTINUE
+*
+*     Unscale and sort the singular values.
+*
+      CALL DLASCL( 'G', 0, 0, ONE, ORGNRM, N, 1, D, N, INFO )
+      CALL DLASRT( 'D', N, D, INFO )
+      CALL DLASCL( 'G', 0, 0, ORGNRM, ONE, N, NRHS, B, LDB, INFO )
+*
+      RETURN
+*
+*     End of DLALSD
+*
+      END
Index: src/lapack/double/dlas2.f
===================================================================
--- src/lapack/double/dlas2.f	(revision 0)
+++ src/lapack/double/dlas2.f	(revision 1)
@@ -0,0 +1,122 @@
+      SUBROUTINE DLAS2( F, G, H, SSMIN, SSMAX )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   F, G, H, SSMAX, SSMIN
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAS2  computes the singular values of the 2-by-2 matrix
+*     [  F   G  ]
+*     [  0   H  ].
+*  On return, SSMIN is the smaller singular value and SSMAX is the
+*  larger singular value.
+*
+*  Arguments
+*  =========
+*
+*  F       (input) DOUBLE PRECISION
+*          The (1,1) element of the 2-by-2 matrix.
+*
+*  G       (input) DOUBLE PRECISION
+*          The (1,2) element of the 2-by-2 matrix.
+*
+*  H       (input) DOUBLE PRECISION
+*          The (2,2) element of the 2-by-2 matrix.
+*
+*  SSMIN   (output) DOUBLE PRECISION
+*          The smaller singular value.
+*
+*  SSMAX   (output) DOUBLE PRECISION
+*          The larger singular value.
+*
+*  Further Details
+*  ===============
+*
+*  Barring over/underflow, all output quantities are correct to within
+*  a few units in the last place (ulps), even in the absence of a guard
+*  digit in addition/subtraction.
+*
+*  In IEEE arithmetic, the code works correctly if one matrix element is
+*  infinite.
+*
+*  Overflow will not occur unless the largest singular value itself
+*  overflows, or is within a few ulps of overflow. (On machines with
+*  partial overflow, like the Cray, overflow may occur if the largest
+*  singular value is within a factor of 2 of overflow.)
+*
+*  Underflow is harmless if underflow is gradual. Otherwise, results
+*  may correspond to a matrix modified by perturbations of size near
+*  the underflow threshold.
+*
+*  ====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D0 )
+      DOUBLE PRECISION   TWO
+      PARAMETER          ( TWO = 2.0D0 )
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION   AS, AT, AU, C, FA, FHMN, FHMX, GA, HA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      FA = ABS( F )
+      GA = ABS( G )
+      HA = ABS( H )
+      FHMN = MIN( FA, HA )
+      FHMX = MAX( FA, HA )
+      IF( FHMN.EQ.ZERO ) THEN
+         SSMIN = ZERO
+         IF( FHMX.EQ.ZERO ) THEN
+            SSMAX = GA
+         ELSE
+            SSMAX = MAX( FHMX, GA )*SQRT( ONE+
+     $              ( MIN( FHMX, GA ) / MAX( FHMX, GA ) )**2 )
+         END IF
+      ELSE
+         IF( GA.LT.FHMX ) THEN
+            AS = ONE + FHMN / FHMX
+            AT = ( FHMX-FHMN ) / FHMX
+            AU = ( GA / FHMX )**2
+            C = TWO / ( SQRT( AS*AS+AU )+SQRT( AT*AT+AU ) )
+            SSMIN = FHMN*C
+            SSMAX = FHMX / C
+         ELSE
+            AU = FHMX / GA
+            IF( AU.EQ.ZERO ) THEN
+*
+*              Avoid possible harmful underflow if exponent range
+*              asymmetric (true SSMIN may not underflow even if
+*              AU underflows)
+*
+               SSMIN = ( FHMN*FHMX ) / GA
+               SSMAX = GA
+            ELSE
+               AS = ONE + FHMN / FHMX
+               AT = ( FHMX-FHMN ) / FHMX
+               C = ONE / ( SQRT( ONE+( AS*AU )**2 )+
+     $             SQRT( ONE+( AT*AU )**2 ) )
+               SSMIN = ( FHMN*C )*AU
+               SSMIN = SSMIN + SSMIN
+               SSMAX = GA / ( C+C )
+            END IF
+         END IF
+      END IF
+      RETURN
+*
+*     End of DLAS2
+*
+      END
Index: src/lapack/double/dormbr.f
===================================================================
--- src/lapack/double/dormbr.f	(revision 0)
+++ src/lapack/double/dormbr.f	(revision 1)
@@ -0,0 +1,282 @@
+      SUBROUTINE DORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
+     $                   LDC, WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS, VECT
+      INTEGER            INFO, K, LDA, LDC, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  If VECT = 'Q', DORMBR overwrites the general real M-by-N matrix C
+*  with
+*                  SIDE = 'L'     SIDE = 'R'
+*  TRANS = 'N':      Q * C          C * Q
+*  TRANS = 'T':      Q**T * C       C * Q**T
+*
+*  If VECT = 'P', DORMBR overwrites the general real M-by-N matrix C
+*  with
+*                  SIDE = 'L'     SIDE = 'R'
+*  TRANS = 'N':      P * C          C * P
+*  TRANS = 'T':      P**T * C       C * P**T
+*
+*  Here Q and P**T are the orthogonal matrices determined by DGEBRD when
+*  reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and
+*  P**T are defined as products of elementary reflectors H(i) and G(i)
+*  respectively.
+*
+*  Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the
+*  order of the orthogonal matrix Q or P**T that is applied.
+*
+*  If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:
+*  if nq >= k, Q = H(1) H(2) . . . H(k);
+*  if nq < k, Q = H(1) H(2) . . . H(nq-1).
+*
+*  If VECT = 'P', A is assumed to have been a K-by-NQ matrix:
+*  if k < nq, P = G(1) G(2) . . . G(k);
+*  if k >= nq, P = G(1) G(2) . . . G(nq-1).
+*
+*  Arguments
+*  =========
+*
+*  VECT    (input) CHARACTER*1
+*          = 'Q': apply Q or Q**T;
+*          = 'P': apply P or P**T.
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q, Q**T, P or P**T from the Left;
+*          = 'R': apply Q, Q**T, P or P**T from the Right.
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N':  No transpose, apply Q  or P;
+*          = 'T':  Transpose, apply Q**T or P**T.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          If VECT = 'Q', the number of columns in the original
+*          matrix reduced by DGEBRD.
+*          If VECT = 'P', the number of rows in the original
+*          matrix reduced by DGEBRD.
+*          K >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension
+*                                (LDA,min(nq,K)) if VECT = 'Q'
+*                                (LDA,nq)        if VECT = 'P'
+*          The vectors which define the elementary reflectors H(i) and
+*          G(i), whose products determine the matrices Q and P, as
+*          returned by DGEBRD.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.
+*          If VECT = 'Q', LDA >= max(1,nq);
+*          if VECT = 'P', LDA >= max(1,min(nq,K)).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (min(nq,K))
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i) or G(i) which determines Q or P, as returned
+*          by DGEBRD in the array argument TAUQ or TAUP.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q
+*          or P*C or P**T*C or C*P or C*P**T.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.
+*          If SIDE = 'L', LWORK >= max(1,N);
+*          if SIDE = 'R', LWORK >= max(1,M).
+*          For optimum performance LWORK >= N*NB if SIDE = 'L', and
+*          LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+*          blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            APPLYQ, LEFT, LQUERY, NOTRAN
+      CHARACTER          TRANST
+      INTEGER            I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILAENV
+      EXTERNAL           LSAME, ILAENV
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DORMLQ, DORMQR, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      APPLYQ = LSAME( VECT, 'Q' )
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+      LQUERY = ( LWORK.EQ.-1 )
+*
+*     NQ is the order of Q or P and NW is the minimum dimension of WORK
+*
+      IF( LEFT ) THEN
+         NQ = M
+         NW = N
+      ELSE
+         NQ = N
+         NW = M
+      END IF
+      IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -2
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -3
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -5
+      ELSE IF( K.LT.0 ) THEN
+         INFO = -6
+      ELSE IF( ( APPLYQ .AND. LDA.LT.MAX( 1, NQ ) ) .OR.
+     $         ( .NOT.APPLYQ .AND. LDA.LT.MAX( 1, MIN( NQ, K ) ) ) )
+     $          THEN
+         INFO = -8
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -11
+      ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+         INFO = -13
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+         IF( APPLYQ ) THEN
+            IF( LEFT ) THEN
+               NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M-1, N, M-1,
+     $              -1 )
+            ELSE
+               NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N-1, N-1,
+     $              -1 )
+            END IF
+         ELSE
+            IF( LEFT ) THEN
+               NB = ILAENV( 1, 'DORMLQ', SIDE // TRANS, M-1, N, M-1,
+     $              -1 )
+            ELSE
+               NB = ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N-1, N-1,
+     $              -1 )
+            END IF
+         END IF
+         LWKOPT = MAX( 1, NW )*NB
+         WORK( 1 ) = LWKOPT
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORMBR', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      WORK( 1 ) = 1
+      IF( M.EQ.0 .OR. N.EQ.0 )
+     $   RETURN
+*
+      IF( APPLYQ ) THEN
+*
+*        Apply Q
+*
+         IF( NQ.GE.K ) THEN
+*
+*           Q was determined by a call to DGEBRD with nq >= k
+*
+            CALL DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, LWORK, IINFO )
+         ELSE IF( NQ.GT.1 ) THEN
+*
+*           Q was determined by a call to DGEBRD with nq < k
+*
+            IF( LEFT ) THEN
+               MI = M - 1
+               NI = N
+               I1 = 2
+               I2 = 1
+            ELSE
+               MI = M
+               NI = N - 1
+               I1 = 1
+               I2 = 2
+            END IF
+            CALL DORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
+     $                   C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+         END IF
+      ELSE
+*
+*        Apply P
+*
+         IF( NOTRAN ) THEN
+            TRANST = 'T'
+         ELSE
+            TRANST = 'N'
+         END IF
+         IF( NQ.GT.K ) THEN
+*
+*           P was determined by a call to DGEBRD with nq > k
+*
+            CALL DORMLQ( SIDE, TRANST, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, LWORK, IINFO )
+         ELSE IF( NQ.GT.1 ) THEN
+*
+*           P was determined by a call to DGEBRD with nq <= k
+*
+            IF( LEFT ) THEN
+               MI = M - 1
+               NI = N
+               I1 = 2
+               I2 = 1
+            ELSE
+               MI = M
+               NI = N - 1
+               I1 = 1
+               I2 = 2
+            END IF
+            CALL DORMLQ( SIDE, TRANST, MI, NI, NQ-1, A( 1, 2 ), LDA,
+     $                   TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
+         END IF
+      END IF
+      WORK( 1 ) = LWKOPT
+      RETURN
+*
+*     End of DORMBR
+*
+      END
Index: src/lapack/double/dlanst.f
===================================================================
--- src/lapack/double/dlanst.f	(revision 0)
+++ src/lapack/double/dlanst.f	(revision 1)
@@ -0,0 +1,125 @@
+      DOUBLE PRECISION FUNCTION DLANST( NORM, N, D, E )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          NORM
+      INTEGER            N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( * ), E( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLANST  returns the value of the one norm,  or the Frobenius norm, or
+*  the  infinity norm,  or the  element of  largest absolute value  of a
+*  real symmetric tridiagonal matrix A.
+*
+*  Description
+*  ===========
+*
+*  DLANST returns the value
+*
+*     DLANST = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+*              (
+*              ( norm1(A),         NORM = '1', 'O' or 'o'
+*              (
+*              ( normI(A),         NORM = 'I' or 'i'
+*              (
+*              ( normF(A),         NORM = 'F', 'f', 'E' or 'e'
+*
+*  where  norm1  denotes the  one norm of a matrix (maximum column sum),
+*  normI  denotes the  infinity norm  of a matrix  (maximum row sum) and
+*  normF  denotes the  Frobenius norm of a matrix (square root of sum of
+*  squares).  Note that  max(abs(A(i,j)))  is not a consistent matrix norm.
+*
+*  Arguments
+*  =========
+*
+*  NORM    (input) CHARACTER*1
+*          Specifies the value to be returned in DLANST as described
+*          above.
+*
+*  N       (input) INTEGER
+*          The order of the matrix A.  N >= 0.  When N = 0, DLANST is
+*          set to zero.
+*
+*  D       (input) DOUBLE PRECISION array, dimension (N)
+*          The diagonal elements of A.
+*
+*  E       (input) DOUBLE PRECISION array, dimension (N-1)
+*          The (n-1) sub-diagonal or super-diagonal elements of A.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I
+      DOUBLE PRECISION   ANORM, SCALE, SUM
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLASSQ
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      IF( N.LE.0 ) THEN
+         ANORM = ZERO
+      ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+*        Find max(abs(A(i,j))).
+*
+         ANORM = ABS( D( N ) )
+         DO 10 I = 1, N - 1
+            ANORM = MAX( ANORM, ABS( D( I ) ) )
+            ANORM = MAX( ANORM, ABS( E( I ) ) )
+   10    CONTINUE
+      ELSE IF( LSAME( NORM, 'O' ) .OR. NORM.EQ.'1' .OR.
+     $         LSAME( NORM, 'I' ) ) THEN
+*
+*        Find norm1(A).
+*
+         IF( N.EQ.1 ) THEN
+            ANORM = ABS( D( 1 ) )
+         ELSE
+            ANORM = MAX( ABS( D( 1 ) )+ABS( E( 1 ) ),
+     $              ABS( E( N-1 ) )+ABS( D( N ) ) )
+            DO 20 I = 2, N - 1
+               ANORM = MAX( ANORM, ABS( D( I ) )+ABS( E( I ) )+
+     $                 ABS( E( I-1 ) ) )
+   20       CONTINUE
+         END IF
+      ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+*        Find normF(A).
+*
+         SCALE = ZERO
+         SUM = ONE
+         IF( N.GT.1 ) THEN
+            CALL DLASSQ( N-1, E, 1, SCALE, SUM )
+            SUM = 2*SUM
+         END IF
+         CALL DLASSQ( N, D, 1, SCALE, SUM )
+         ANORM = SCALE*SQRT( SUM )
+      END IF
+*
+      DLANST = ANORM
+      RETURN
+*
+*     End of DLANST
+*
+      END
Index: src/lapack/double/dlasq2.f
===================================================================
--- src/lapack/double/dlasq2.f	(revision 0)
+++ src/lapack/double/dlasq2.f	(revision 1)
@@ -0,0 +1,485 @@
+      SUBROUTINE DLASQ2( N, Z, INFO )
+*
+*  -- LAPACK routine (version 3.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- November 2008                                                   --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ2 computes all the eigenvalues of the symmetric positive 
+*  definite tridiagonal matrix associated with the qd array Z to high
+*  relative accuracy are computed to high relative accuracy, in the
+*  absence of denormalization, underflow and overflow.
+*
+*  To see the relation of Z to the tridiagonal matrix, let L be a
+*  unit lower bidiagonal matrix with subdiagonals Z(2,4,6,,..) and
+*  let U be an upper bidiagonal matrix with 1's above and diagonal
+*  Z(1,3,5,,..). The tridiagonal is L*U or, if you prefer, the
+*  symmetric tridiagonal to which it is similar.
+*
+*  Note : DLASQ2 defines a logical variable, IEEE, which is true
+*  on machines which follow ieee-754 floating-point standard in their
+*  handling of infinities and NaNs, and false otherwise. This variable
+*  is passed to DLASQ3.
+*
+*  Arguments
+*  =========
+*
+*  N     (input) INTEGER
+*        The number of rows and columns in the matrix. N >= 0.
+*
+*  Z     (input/output) DOUBLE PRECISION array, dimension ( 4*N )
+*        On entry Z holds the qd array. On exit, entries 1 to N hold
+*        the eigenvalues in decreasing order, Z( 2*N+1 ) holds the
+*        trace, and Z( 2*N+2 ) holds the sum of the eigenvalues. If
+*        N > 2, then Z( 2*N+3 ) holds the iteration count, Z( 2*N+4 )
+*        holds NDIVS/NIN^2, and Z( 2*N+5 ) holds the percentage of
+*        shifts that failed.
+*
+*  INFO  (output) INTEGER
+*        = 0: successful exit
+*        < 0: if the i-th argument is a scalar and had an illegal
+*             value, then INFO = -i, if the i-th argument is an
+*             array and the j-entry had an illegal value, then
+*             INFO = -(i*100+j)
+*        > 0: the algorithm failed
+*              = 1, a split was marked by a positive value in E
+*              = 2, current block of Z not diagonalized after 30*N
+*                   iterations (in inner while loop)
+*              = 3, termination criterion of outer while loop not met 
+*                   (program created more than N unreduced blocks)
+*
+*  Further Details
+*  ===============
+*  Local Variables: I0:N0 defines a current unreduced segment of Z.
+*  The shifts are accumulated in SIGMA. Iteration count is in ITER.
+*  Ping-pong is controlled by PP (alternates between 0 and 1).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   CBIAS
+      PARAMETER          ( CBIAS = 1.50D0 )
+      DOUBLE PRECISION   ZERO, HALF, ONE, TWO, FOUR, HUNDRD
+      PARAMETER          ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0,
+     $                     TWO = 2.0D0, FOUR = 4.0D0, HUNDRD = 100.0D0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            IEEE
+      INTEGER            I0, I4, IINFO, IPN4, ITER, IWHILA, IWHILB, K,
+     $                   KMIN, N0, NBIG, NDIV, NFAIL, PP, SPLT, TTYPE
+      DOUBLE PRECISION   D, DEE, DEEMIN, DESIG, DMIN, DMIN1, DMIN2, DN,
+     $                   DN1, DN2, E, EMAX, EMIN, EPS, G, OLDEMN, QMAX,
+     $                   QMIN, S, SAFMIN, SIGMA, T, TAU, TEMP, TOL,
+     $                   TOL2, TRACE, ZMAX
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLASQ3, DLASRT, XERBLA
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH, ILAENV
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, DBLE, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*      
+*     Test the input arguments.
+*     (in case DLASQ2 is not called by DLASQ1)
+*
+      INFO = 0
+      EPS = DLAMCH( 'Precision' )
+      SAFMIN = DLAMCH( 'Safe minimum' )
+      TOL = EPS*HUNDRD
+      TOL2 = TOL**2
+*
+      IF( N.LT.0 ) THEN
+         INFO = -1
+         CALL XERBLA( 'DLASQ2', 1 )
+         RETURN
+      ELSE IF( N.EQ.0 ) THEN
+         RETURN
+      ELSE IF( N.EQ.1 ) THEN
+*
+*        1-by-1 case.
+*
+         IF( Z( 1 ).LT.ZERO ) THEN
+            INFO = -201
+            CALL XERBLA( 'DLASQ2', 2 )
+         END IF
+         RETURN
+      ELSE IF( N.EQ.2 ) THEN
+*
+*        2-by-2 case.
+*
+         IF( Z( 2 ).LT.ZERO .OR. Z( 3 ).LT.ZERO ) THEN
+            INFO = -2
+            CALL XERBLA( 'DLASQ2', 2 )
+            RETURN
+         ELSE IF( Z( 3 ).GT.Z( 1 ) ) THEN
+            D = Z( 3 )
+            Z( 3 ) = Z( 1 )
+            Z( 1 ) = D
+         END IF
+         Z( 5 ) = Z( 1 ) + Z( 2 ) + Z( 3 )
+         IF( Z( 2 ).GT.Z( 3 )*TOL2 ) THEN
+            T = HALF*( ( Z( 1 )-Z( 3 ) )+Z( 2 ) ) 
+            S = Z( 3 )*( Z( 2 ) / T )
+            IF( S.LE.T ) THEN
+               S = Z( 3 )*( Z( 2 ) / ( T*( ONE+SQRT( ONE+S / T ) ) ) )
+            ELSE
+               S = Z( 3 )*( Z( 2 ) / ( T+SQRT( T )*SQRT( T+S ) ) )
+            END IF
+            T = Z( 1 ) + ( S+Z( 2 ) )
+            Z( 3 ) = Z( 3 )*( Z( 1 ) / T )
+            Z( 1 ) = T
+         END IF
+         Z( 2 ) = Z( 3 )
+         Z( 6 ) = Z( 2 ) + Z( 1 )
+         RETURN
+      END IF
+*
+*     Check for negative data and compute sums of q's and e's.
+*
+      Z( 2*N ) = ZERO
+      EMIN = Z( 2 )
+      QMAX = ZERO
+      ZMAX = ZERO
+      D = ZERO
+      E = ZERO
+*
+      DO 10 K = 1, 2*( N-1 ), 2
+         IF( Z( K ).LT.ZERO ) THEN
+            INFO = -( 200+K )
+            CALL XERBLA( 'DLASQ2', 2 )
+            RETURN
+         ELSE IF( Z( K+1 ).LT.ZERO ) THEN
+            INFO = -( 200+K+1 )
+            CALL XERBLA( 'DLASQ2', 2 )
+            RETURN
+         END IF
+         D = D + Z( K )
+         E = E + Z( K+1 )
+         QMAX = MAX( QMAX, Z( K ) )
+         EMIN = MIN( EMIN, Z( K+1 ) )
+         ZMAX = MAX( QMAX, ZMAX, Z( K+1 ) )
+   10 CONTINUE
+      IF( Z( 2*N-1 ).LT.ZERO ) THEN
+         INFO = -( 200+2*N-1 )
+         CALL XERBLA( 'DLASQ2', 2 )
+         RETURN
+      END IF
+      D = D + Z( 2*N-1 )
+      QMAX = MAX( QMAX, Z( 2*N-1 ) )
+      ZMAX = MAX( QMAX, ZMAX )
+*
+*     Check for diagonality.
+*
+      IF( E.EQ.ZERO ) THEN
+         DO 20 K = 2, N
+            Z( K ) = Z( 2*K-1 )
+   20    CONTINUE
+         CALL DLASRT( 'D', N, Z, IINFO )
+         Z( 2*N-1 ) = D
+         RETURN
+      END IF
+*
+      TRACE = D + E
+*
+*     Check for zero data.
+*
+      IF( TRACE.EQ.ZERO ) THEN
+         Z( 2*N-1 ) = ZERO
+         RETURN
+      END IF
+*         
+*     Check whether the machine is IEEE conformable.
+*         
+      IEEE = ILAENV( 10, 'DLASQ2', 'N', 1, 2, 3, 4 ).EQ.1 .AND.
+     $       ILAENV( 11, 'DLASQ2', 'N', 1, 2, 3, 4 ).EQ.1      
+*         
+*     Rearrange data for locality: Z=(q1,qq1,e1,ee1,q2,qq2,e2,ee2,...).
+*
+      DO 30 K = 2*N, 2, -2
+         Z( 2*K ) = ZERO 
+         Z( 2*K-1 ) = Z( K ) 
+         Z( 2*K-2 ) = ZERO 
+         Z( 2*K-3 ) = Z( K-1 ) 
+   30 CONTINUE
+*
+      I0 = 1
+      N0 = N
+*
+*     Reverse the qd-array, if warranted.
+*
+      IF( CBIAS*Z( 4*I0-3 ).LT.Z( 4*N0-3 ) ) THEN
+         IPN4 = 4*( I0+N0 )
+         DO 40 I4 = 4*I0, 2*( I0+N0-1 ), 4
+            TEMP = Z( I4-3 )
+            Z( I4-3 ) = Z( IPN4-I4-3 )
+            Z( IPN4-I4-3 ) = TEMP
+            TEMP = Z( I4-1 )
+            Z( I4-1 ) = Z( IPN4-I4-5 )
+            Z( IPN4-I4-5 ) = TEMP
+   40    CONTINUE
+      END IF
+*
+*     Initial split checking via dqd and Li's test.
+*
+      PP = 0
+*
+      DO 80 K = 1, 2
+*
+         D = Z( 4*N0+PP-3 )
+         DO 50 I4 = 4*( N0-1 ) + PP, 4*I0 + PP, -4
+            IF( Z( I4-1 ).LE.TOL2*D ) THEN
+               Z( I4-1 ) = -ZERO
+               D = Z( I4-3 )
+            ELSE
+               D = Z( I4-3 )*( D / ( D+Z( I4-1 ) ) )
+            END IF
+   50    CONTINUE
+*
+*        dqd maps Z to ZZ plus Li's test.
+*
+         EMIN = Z( 4*I0+PP+1 )
+         D = Z( 4*I0+PP-3 )
+         DO 60 I4 = 4*I0 + PP, 4*( N0-1 ) + PP, 4
+            Z( I4-2*PP-2 ) = D + Z( I4-1 )
+            IF( Z( I4-1 ).LE.TOL2*D ) THEN
+               Z( I4-1 ) = -ZERO
+               Z( I4-2*PP-2 ) = D
+               Z( I4-2*PP ) = ZERO
+               D = Z( I4+1 )
+            ELSE IF( SAFMIN*Z( I4+1 ).LT.Z( I4-2*PP-2 ) .AND.
+     $               SAFMIN*Z( I4-2*PP-2 ).LT.Z( I4+1 ) ) THEN
+               TEMP = Z( I4+1 ) / Z( I4-2*PP-2 )
+               Z( I4-2*PP ) = Z( I4-1 )*TEMP
+               D = D*TEMP
+            ELSE
+               Z( I4-2*PP ) = Z( I4+1 )*( Z( I4-1 ) / Z( I4-2*PP-2 ) )
+               D = Z( I4+1 )*( D / Z( I4-2*PP-2 ) )
+            END IF
+            EMIN = MIN( EMIN, Z( I4-2*PP ) )
+   60    CONTINUE 
+         Z( 4*N0-PP-2 ) = D
+*
+*        Now find qmax.
+*
+         QMAX = Z( 4*I0-PP-2 )
+         DO 70 I4 = 4*I0 - PP + 2, 4*N0 - PP - 2, 4
+            QMAX = MAX( QMAX, Z( I4 ) )
+   70    CONTINUE
+*
+*        Prepare for the next iteration on K.
+*
+         PP = 1 - PP
+   80 CONTINUE
+*
+*     Initialise variables to pass to DLASQ3.
+*
+      TTYPE = 0
+      DMIN1 = ZERO
+      DMIN2 = ZERO
+      DN    = ZERO
+      DN1   = ZERO
+      DN2   = ZERO
+      G     = ZERO
+      TAU   = ZERO
+*
+      ITER = 2
+      NFAIL = 0
+      NDIV = 2*( N0-I0 )
+*
+      DO 160 IWHILA = 1, N + 1
+         IF( N0.LT.1 ) 
+     $      GO TO 170
+*
+*        While array unfinished do 
+*
+*        E(N0) holds the value of SIGMA when submatrix in I0:N0
+*        splits from the rest of the array, but is negated.
+*      
+         DESIG = ZERO
+         IF( N0.EQ.N ) THEN
+            SIGMA = ZERO
+         ELSE
+            SIGMA = -Z( 4*N0-1 )
+         END IF
+         IF( SIGMA.LT.ZERO ) THEN
+            INFO = 1
+            RETURN
+         END IF
+*
+*        Find last unreduced submatrix's top index I0, find QMAX and
+*        EMIN. Find Gershgorin-type bound if Q's much greater than E's.
+*
+         EMAX = ZERO 
+         IF( N0.GT.I0 ) THEN
+            EMIN = ABS( Z( 4*N0-5 ) )
+         ELSE
+            EMIN = ZERO
+         END IF
+         QMIN = Z( 4*N0-3 )
+         QMAX = QMIN
+         DO 90 I4 = 4*N0, 8, -4
+            IF( Z( I4-5 ).LE.ZERO )
+     $         GO TO 100
+            IF( QMIN.GE.FOUR*EMAX ) THEN
+               QMIN = MIN( QMIN, Z( I4-3 ) )
+               EMAX = MAX( EMAX, Z( I4-5 ) )
+            END IF
+            QMAX = MAX( QMAX, Z( I4-7 )+Z( I4-5 ) )
+            EMIN = MIN( EMIN, Z( I4-5 ) )
+   90    CONTINUE
+         I4 = 4 
+*
+  100    CONTINUE
+         I0 = I4 / 4
+         PP = 0
+*
+         IF( N0-I0.GT.1 ) THEN
+            DEE = Z( 4*I0-3 )
+            DEEMIN = DEE
+            KMIN = I0
+            DO 110 I4 = 4*I0+1, 4*N0-3, 4
+               DEE = Z( I4 )*( DEE /( DEE+Z( I4-2 ) ) )
+               IF( DEE.LE.DEEMIN ) THEN
+                  DEEMIN = DEE
+                  KMIN = ( I4+3 )/4
+               END IF
+  110       CONTINUE
+            IF( (KMIN-I0)*2.LT.N0-KMIN .AND. 
+     $         DEEMIN.LE.HALF*Z(4*N0-3) ) THEN
+               IPN4 = 4*( I0+N0 )
+               PP = 2
+               DO 120 I4 = 4*I0, 2*( I0+N0-1 ), 4
+                  TEMP = Z( I4-3 )
+                  Z( I4-3 ) = Z( IPN4-I4-3 )
+                  Z( IPN4-I4-3 ) = TEMP
+                  TEMP = Z( I4-2 )
+                  Z( I4-2 ) = Z( IPN4-I4-2 )
+                  Z( IPN4-I4-2 ) = TEMP
+                  TEMP = Z( I4-1 )
+                  Z( I4-1 ) = Z( IPN4-I4-5 )
+                  Z( IPN4-I4-5 ) = TEMP
+                  TEMP = Z( I4 )
+                  Z( I4 ) = Z( IPN4-I4-4 )
+                  Z( IPN4-I4-4 ) = TEMP
+  120          CONTINUE
+            END IF
+         END IF
+*
+*        Put -(initial shift) into DMIN.
+*
+         DMIN = -MAX( ZERO, QMIN-TWO*SQRT( QMIN )*SQRT( EMAX ) )
+*
+*        Now I0:N0 is unreduced. 
+*        PP = 0 for ping, PP = 1 for pong.
+*        PP = 2 indicates that flipping was applied to the Z array and
+*               and that the tests for deflation upon entry in DLASQ3 
+*               should not be performed.
+*
+         NBIG = 30*( N0-I0+1 )
+         DO 140 IWHILB = 1, NBIG
+            IF( I0.GT.N0 ) 
+     $         GO TO 150
+*
+*           While submatrix unfinished take a good dqds step.
+*
+            CALL DLASQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
+     $                   ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
+     $                   DN2, G, TAU )
+*
+            PP = 1 - PP
+*
+*           When EMIN is very small check for splits.
+*
+            IF( PP.EQ.0 .AND. N0-I0.GE.3 ) THEN
+               IF( Z( 4*N0 ).LE.TOL2*QMAX .OR.
+     $             Z( 4*N0-1 ).LE.TOL2*SIGMA ) THEN
+                  SPLT = I0 - 1
+                  QMAX = Z( 4*I0-3 )
+                  EMIN = Z( 4*I0-1 )
+                  OLDEMN = Z( 4*I0 )
+                  DO 130 I4 = 4*I0, 4*( N0-3 ), 4
+                     IF( Z( I4 ).LE.TOL2*Z( I4-3 ) .OR.
+     $                   Z( I4-1 ).LE.TOL2*SIGMA ) THEN
+                        Z( I4-1 ) = -SIGMA
+                        SPLT = I4 / 4
+                        QMAX = ZERO
+                        EMIN = Z( I4+3 )
+                        OLDEMN = Z( I4+4 )
+                     ELSE
+                        QMAX = MAX( QMAX, Z( I4+1 ) )
+                        EMIN = MIN( EMIN, Z( I4-1 ) )
+                        OLDEMN = MIN( OLDEMN, Z( I4 ) )
+                     END IF
+  130             CONTINUE
+                  Z( 4*N0-1 ) = EMIN
+                  Z( 4*N0 ) = OLDEMN
+                  I0 = SPLT + 1
+               END IF
+            END IF
+*
+  140    CONTINUE
+*
+         INFO = 2
+         RETURN
+*
+*        end IWHILB
+*
+  150    CONTINUE
+*
+  160 CONTINUE
+*
+      INFO = 3
+      RETURN
+*
+*     end IWHILA   
+*
+  170 CONTINUE
+*      
+*     Move q's to the front.
+*      
+      DO 180 K = 2, N
+         Z( K ) = Z( 4*K-3 )
+  180 CONTINUE
+*      
+*     Sort and compute sum of eigenvalues.
+*
+      CALL DLASRT( 'D', N, Z, IINFO )
+*
+      E = ZERO
+      DO 190 K = N, 1, -1
+         E = E + Z( K )
+  190 CONTINUE
+*
+*     Store trace, sum(eigenvalues) and information on performance.
+*
+      Z( 2*N+1 ) = TRACE 
+      Z( 2*N+2 ) = E
+      Z( 2*N+3 ) = DBLE( ITER )
+      Z( 2*N+4 ) = DBLE( NDIV ) / DBLE( N**2 )
+      Z( 2*N+5 ) = HUNDRD*NFAIL / DBLE( ITER )
+      RETURN
+*
+*     End of DLASQ2
+*
+      END
Index: src/lapack/double/dgelsy.f
===================================================================
--- src/lapack/double/dgelsy.f	(revision 0)
+++ src/lapack/double/dgelsy.f	(revision 1)
@@ -0,0 +1,392 @@
+      SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+     $                   WORK, LWORK, INFO )
+*
+*  -- LAPACK driver routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+      DOUBLE PRECISION   RCOND
+*     ..
+*     .. Array Arguments ..
+      INTEGER            JPVT( * )
+      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGELSY computes the minimum-norm solution to a real linear least
+*  squares problem:
+*      minimize || A * X - B ||
+*  using a complete orthogonal factorization of A.  A is an M-by-N
+*  matrix which may be rank-deficient.
+*
+*  Several right hand side vectors b and solution vectors x can be
+*  handled in a single call; they are stored as the columns of the
+*  M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+*  matrix X.
+*
+*  The routine first computes a QR factorization with column pivoting:
+*      A * P = Q * [ R11 R12 ]
+*                  [  0  R22 ]
+*  with R11 defined as the largest leading submatrix whose estimated
+*  condition number is less than 1/RCOND.  The order of R11, RANK,
+*  is the effective rank of A.
+*
+*  Then, R22 is considered to be negligible, and R12 is annihilated
+*  by orthogonal transformations from the right, arriving at the
+*  complete orthogonal factorization:
+*     A * P = Q * [ T11 0 ] * Z
+*                 [  0  0 ]
+*  The minimum-norm solution is then
+*     X = P * Z' [ inv(T11)*Q1'*B ]
+*                [        0       ]
+*  where Q1 consists of the first RANK columns of Q.
+*
+*  This routine is basically identical to the original xGELSX except
+*  three differences:
+*    o The call to the subroutine xGEQPF has been substituted by the
+*      the call to the subroutine xGEQP3. This subroutine is a Blas-3
+*      version of the QR factorization with column pivoting.
+*    o Matrix B (the right hand side) is updated with Blas-3.
+*    o The permutation of matrix B (the right hand side) is faster and
+*      more simple.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  NRHS    (input) INTEGER
+*          The number of right hand sides, i.e., the number of
+*          columns of matrices B and X. NRHS >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, A has been overwritten by details of its
+*          complete orthogonal factorization.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  B       (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+*          On entry, the M-by-NRHS right hand side matrix B.
+*          On exit, the N-by-NRHS solution matrix X.
+*
+*  LDB     (input) INTEGER
+*          The leading dimension of the array B. LDB >= max(1,M,N).
+*
+*  JPVT    (input/output) INTEGER array, dimension (N)
+*          On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+*          to the front of AP, otherwise column i is a free column.
+*          On exit, if JPVT(i) = k, then the i-th column of AP
+*          was the k-th column of A.
+*
+*  RCOND   (input) DOUBLE PRECISION
+*          RCOND is used to determine the effective rank of A, which
+*          is defined as the order of the largest leading triangular
+*          submatrix R11 in the QR factorization with pivoting of A,
+*          whose estimated condition number < 1/RCOND.
+*
+*  RANK    (output) INTEGER
+*          The effective rank of A, i.e., the order of the submatrix
+*          R11.  This is the same as the order of the submatrix T11
+*          in the complete orthogonal factorization of A.
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.
+*          The unblocked strategy requires that:
+*             LWORK >= MAX( MN+3*N+1, 2*MN+NRHS ),
+*          where MN = min( M, N ).
+*          The block algorithm requires that:
+*             LWORK >= MAX( MN+2*N+NB*(N+1), 2*MN+NB*NRHS ),
+*          where NB is an upper bound on the blocksize returned
+*          by ILAENV for the routines DGEQP3, DTZRZF, STZRQF, DORMQR,
+*          and DORMRZ.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: If INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*    E. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*    G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            IMAX, IMIN
+      PARAMETER          ( IMAX = 1, IMIN = 2 )
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            I, IASCL, IBSCL, ISMAX, ISMIN, J, LWKMIN,
+     $                   LWKOPT, MN, NB, NB1, NB2, NB3, NB4
+      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, C1, C2, S1, S2, SMAX,
+     $                   SMAXPR, SMIN, SMINPR, SMLNUM, WSIZE
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      DOUBLE PRECISION   DLAMCH, DLANGE
+      EXTERNAL           ILAENV, DLAMCH, DLANGE
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEQP3, DLABAD, DLAIC1, DLASCL, DLASET,
+     $                   DORMQR, DORMRZ, DTRSM, DTZRZF, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+      MN = MIN( M, N )
+      ISMIN = MN + 1
+      ISMAX = 2*MN + 1
+*
+*     Test the input arguments.
+*
+      INFO = 0
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( NRHS.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -5
+      ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+         INFO = -7
+      END IF
+*
+*     Figure out optimal block size
+*
+      IF( INFO.EQ.0 ) THEN
+         IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+            LWKMIN = 1
+            LWKOPT = 1
+         ELSE
+            NB1 = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+            NB2 = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+            NB3 = ILAENV( 1, 'DORMQR', ' ', M, N, NRHS, -1 )
+            NB4 = ILAENV( 1, 'DORMRQ', ' ', M, N, NRHS, -1 )
+            NB = MAX( NB1, NB2, NB3, NB4 )
+            LWKMIN = MN + MAX( 2*MN, N + 1, MN + NRHS )
+            LWKOPT = MAX( LWKMIN,
+     $                    MN + 2*N + NB*( N + 1 ), 2*MN + NB*NRHS )
+         END IF
+         WORK( 1 ) = LWKOPT
+*
+         IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
+            INFO = -12
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGELSY', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+         RANK = 0
+         RETURN
+      END IF
+*
+*     Get machine parameters
+*
+      SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+      BIGNUM = ONE / SMLNUM
+      CALL DLABAD( SMLNUM, BIGNUM )
+*
+*     Scale A, B if max entries outside range [SMLNUM,BIGNUM]
+*
+      ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+      IASCL = 0
+      IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+*        Scale matrix norm up to SMLNUM
+*
+         CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+         IASCL = 1
+      ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+*        Scale matrix norm down to BIGNUM
+*
+         CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+         IASCL = 2
+      ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+*        Matrix all zero. Return zero solution.
+*
+         CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+         RANK = 0
+         GO TO 70
+      END IF
+*
+      BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+      IBSCL = 0
+      IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+*        Scale matrix norm up to SMLNUM
+*
+         CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+         IBSCL = 1
+      ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+*        Scale matrix norm down to BIGNUM
+*
+         CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+         IBSCL = 2
+      END IF
+*
+*     Compute QR factorization with column pivoting of A:
+*        A * P = Q * R
+*
+      CALL DGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
+     $             LWORK-MN, INFO )
+      WSIZE = MN + WORK( MN+1 )
+*
+*     workspace: MN+2*N+NB*(N+1).
+*     Details of Householder rotations stored in WORK(1:MN).
+*
+*     Determine RANK using incremental condition estimation
+*
+      WORK( ISMIN ) = ONE
+      WORK( ISMAX ) = ONE
+      SMAX = ABS( A( 1, 1 ) )
+      SMIN = SMAX
+      IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+         RANK = 0
+         CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+         GO TO 70
+      ELSE
+         RANK = 1
+      END IF
+*
+   10 CONTINUE
+      IF( RANK.LT.MN ) THEN
+         I = RANK + 1
+         CALL DLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+     $                A( I, I ), SMINPR, S1, C1 )
+         CALL DLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+     $                A( I, I ), SMAXPR, S2, C2 )
+*
+         IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+            DO 20 I = 1, RANK
+               WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+               WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+   20       CONTINUE
+            WORK( ISMIN+RANK ) = C1
+            WORK( ISMAX+RANK ) = C2
+            SMIN = SMINPR
+            SMAX = SMAXPR
+            RANK = RANK + 1
+            GO TO 10
+         END IF
+      END IF
+*
+*     workspace: 3*MN.
+*
+*     Logically partition R = [ R11 R12 ]
+*                             [  0  R22 ]
+*     where R11 = R(1:RANK,1:RANK)
+*
+*     [R11,R12] = [ T11, 0 ] * Y
+*
+      IF( RANK.LT.N )
+     $   CALL DTZRZF( RANK, N, A, LDA, WORK( MN+1 ), WORK( 2*MN+1 ),
+     $                LWORK-2*MN, INFO )
+*
+*     workspace: 2*MN.
+*     Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+*     B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+      CALL DORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
+     $             B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+      WSIZE = MAX( WSIZE, 2*MN+WORK( 2*MN+1 ) )
+*
+*     workspace: 2*MN+NB*NRHS.
+*
+*     B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+      CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+     $            NRHS, ONE, A, LDA, B, LDB )
+*
+      DO 40 J = 1, NRHS
+         DO 30 I = RANK + 1, N
+            B( I, J ) = ZERO
+   30    CONTINUE
+   40 CONTINUE
+*
+*     B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+      IF( RANK.LT.N ) THEN
+         CALL DORMRZ( 'Left', 'Transpose', N, NRHS, RANK, N-RANK, A,
+     $                LDA, WORK( MN+1 ), B, LDB, WORK( 2*MN+1 ),
+     $                LWORK-2*MN, INFO )
+      END IF
+*
+*     workspace: 2*MN+NRHS.
+*
+*     B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+      DO 60 J = 1, NRHS
+         DO 50 I = 1, N
+            WORK( JPVT( I ) ) = B( I, J )
+   50    CONTINUE
+         CALL DCOPY( N, WORK( 1 ), 1, B( 1, J ), 1 )
+   60 CONTINUE
+*
+*     workspace: N.
+*
+*     Undo scaling
+*
+      IF( IASCL.EQ.1 ) THEN
+         CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+         CALL DLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+     $                INFO )
+      ELSE IF( IASCL.EQ.2 ) THEN
+         CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+         CALL DLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+     $                INFO )
+      END IF
+      IF( IBSCL.EQ.1 ) THEN
+         CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+      ELSE IF( IBSCL.EQ.2 ) THEN
+         CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+      END IF
+*
+   70 CONTINUE
+      WORK( 1 ) = LWKOPT
+*
+      RETURN
+*
+*     End of DGELSY
+*
+      END
Index: src/lapack/double/dlasq4.f
===================================================================
--- src/lapack/double/dlasq4.f	(revision 0)
+++ src/lapack/double/dlasq4.f	(revision 1)
@@ -0,0 +1,333 @@
+      SUBROUTINE DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN,
+     $                   DN1, DN2, TAU, TTYPE, G )
+*
+*  -- LAPACK routine (version 3.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- November 2008                                                   --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      INTEGER            I0, N0, N0IN, PP, TTYPE
+      DOUBLE PRECISION   DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ4 computes an approximation TAU to the smallest eigenvalue
+*  using values of d from the previous transform.
+*
+*  I0    (input) INTEGER
+*        First index.
+*
+*  N0    (input) INTEGER
+*        Last index.
+*
+*  Z     (input) DOUBLE PRECISION array, dimension ( 4*N )
+*        Z holds the qd array.
+*
+*  PP    (input) INTEGER
+*        PP=0 for ping, PP=1 for pong.
+*
+*  NOIN  (input) INTEGER
+*        The value of N0 at start of EIGTEST.
+*
+*  DMIN  (input) DOUBLE PRECISION
+*        Minimum value of d.
+*
+*  DMIN1 (input) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ).
+*
+*  DMIN2 (input) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+*  DN    (input) DOUBLE PRECISION
+*        d(N)
+*
+*  DN1   (input) DOUBLE PRECISION
+*        d(N-1)
+*
+*  DN2   (input) DOUBLE PRECISION
+*        d(N-2)
+*
+*  TAU   (output) DOUBLE PRECISION
+*        This is the shift.
+*
+*  TTYPE (output) INTEGER
+*        Shift type.
+*
+*  G     (input/output) REAL
+*        G is passed as an argument in order to save its value between
+*        calls to DLASQ4.
+*
+*  Further Details
+*  ===============
+*  CNST1 = 9/16
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   CNST1, CNST2, CNST3
+      PARAMETER          ( CNST1 = 0.5630D0, CNST2 = 1.010D0,
+     $                   CNST3 = 1.050D0 )
+      DOUBLE PRECISION   QURTR, THIRD, HALF, ZERO, ONE, TWO, HUNDRD
+      PARAMETER          ( QURTR = 0.250D0, THIRD = 0.3330D0,
+     $                   HALF = 0.50D0, ZERO = 0.0D0, ONE = 1.0D0,
+     $                   TWO = 2.0D0, HUNDRD = 100.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I4, NN, NP
+      DOUBLE PRECISION   A2, B1, B2, GAM, GAP1, GAP2, S
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+*     A negative DMIN forces the shift to take that absolute value
+*     TTYPE records the type of shift.
+*
+      IF( DMIN.LE.ZERO ) THEN
+         TAU = -DMIN
+         TTYPE = -1
+         RETURN
+      END IF
+*       
+      NN = 4*N0 + PP
+      IF( N0IN.EQ.N0 ) THEN
+*
+*        No eigenvalues deflated.
+*
+         IF( DMIN.EQ.DN .OR. DMIN.EQ.DN1 ) THEN
+*
+            B1 = SQRT( Z( NN-3 ) )*SQRT( Z( NN-5 ) )
+            B2 = SQRT( Z( NN-7 ) )*SQRT( Z( NN-9 ) )
+            A2 = Z( NN-7 ) + Z( NN-5 )
+*
+*           Cases 2 and 3.
+*
+            IF( DMIN.EQ.DN .AND. DMIN1.EQ.DN1 ) THEN
+               GAP2 = DMIN2 - A2 - DMIN2*QURTR
+               IF( GAP2.GT.ZERO .AND. GAP2.GT.B2 ) THEN
+                  GAP1 = A2 - DN - ( B2 / GAP2 )*B2
+               ELSE
+                  GAP1 = A2 - DN - ( B1+B2 )
+               END IF
+               IF( GAP1.GT.ZERO .AND. GAP1.GT.B1 ) THEN
+                  S = MAX( DN-( B1 / GAP1 )*B1, HALF*DMIN )
+                  TTYPE = -2
+               ELSE
+                  S = ZERO
+                  IF( DN.GT.B1 )
+     $               S = DN - B1
+                  IF( A2.GT.( B1+B2 ) )
+     $               S = MIN( S, A2-( B1+B2 ) )
+                  S = MAX( S, THIRD*DMIN )
+                  TTYPE = -3
+               END IF
+            ELSE
+*
+*              Case 4.
+*
+               TTYPE = -4
+               S = QURTR*DMIN
+               IF( DMIN.EQ.DN ) THEN
+                  GAM = DN
+                  A2 = ZERO
+                  IF( Z( NN-5 ) .GT. Z( NN-7 ) )
+     $               RETURN
+                  B2 = Z( NN-5 ) / Z( NN-7 )
+                  NP = NN - 9
+               ELSE
+                  NP = NN - 2*PP
+                  B2 = Z( NP-2 )
+                  GAM = DN1
+                  IF( Z( NP-4 ) .GT. Z( NP-2 ) )
+     $               RETURN
+                  A2 = Z( NP-4 ) / Z( NP-2 )
+                  IF( Z( NN-9 ) .GT. Z( NN-11 ) )
+     $               RETURN
+                  B2 = Z( NN-9 ) / Z( NN-11 )
+                  NP = NN - 13
+               END IF
+*
+*              Approximate contribution to norm squared from I < NN-1.
+*
+               A2 = A2 + B2
+               DO 10 I4 = NP, 4*I0 - 1 + PP, -4
+                  IF( B2.EQ.ZERO )
+     $               GO TO 20
+                  B1 = B2
+                  IF( Z( I4 ) .GT. Z( I4-2 ) )
+     $               RETURN
+                  B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+                  A2 = A2 + B2
+                  IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 ) 
+     $               GO TO 20
+   10          CONTINUE
+   20          CONTINUE
+               A2 = CNST3*A2
+*
+*              Rayleigh quotient residual bound.
+*
+               IF( A2.LT.CNST1 )
+     $            S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+            END IF
+         ELSE IF( DMIN.EQ.DN2 ) THEN
+*
+*           Case 5.
+*
+            TTYPE = -5
+            S = QURTR*DMIN
+*
+*           Compute contribution to norm squared from I > NN-2.
+*
+            NP = NN - 2*PP
+            B1 = Z( NP-2 )
+            B2 = Z( NP-6 )
+            GAM = DN2
+            IF( Z( NP-8 ).GT.B2 .OR. Z( NP-4 ).GT.B1 )
+     $         RETURN
+            A2 = ( Z( NP-8 ) / B2 )*( ONE+Z( NP-4 ) / B1 )
+*
+*           Approximate contribution to norm squared from I < NN-2.
+*
+            IF( N0-I0.GT.2 ) THEN
+               B2 = Z( NN-13 ) / Z( NN-15 )
+               A2 = A2 + B2
+               DO 30 I4 = NN - 17, 4*I0 - 1 + PP, -4
+                  IF( B2.EQ.ZERO )
+     $               GO TO 40
+                  B1 = B2
+                  IF( Z( I4 ) .GT. Z( I4-2 ) )
+     $               RETURN
+                  B2 = B2*( Z( I4 ) / Z( I4-2 ) )
+                  A2 = A2 + B2
+                  IF( HUNDRD*MAX( B2, B1 ).LT.A2 .OR. CNST1.LT.A2 ) 
+     $               GO TO 40
+   30          CONTINUE
+   40          CONTINUE
+               A2 = CNST3*A2
+            END IF
+*
+            IF( A2.LT.CNST1 )
+     $         S = GAM*( ONE-SQRT( A2 ) ) / ( ONE+A2 )
+         ELSE
+*
+*           Case 6, no information to guide us.
+*
+            IF( TTYPE.EQ.-6 ) THEN
+               G = G + THIRD*( ONE-G )
+            ELSE IF( TTYPE.EQ.-18 ) THEN
+               G = QURTR*THIRD
+            ELSE
+               G = QURTR
+            END IF
+            S = G*DMIN
+            TTYPE = -6
+         END IF
+*
+      ELSE IF( N0IN.EQ.( N0+1 ) ) THEN
+*
+*        One eigenvalue just deflated. Use DMIN1, DN1 for DMIN and DN.
+*
+         IF( DMIN1.EQ.DN1 .AND. DMIN2.EQ.DN2 ) THEN 
+*
+*           Cases 7 and 8.
+*
+            TTYPE = -7
+            S = THIRD*DMIN1
+            IF( Z( NN-5 ).GT.Z( NN-7 ) )
+     $         RETURN
+            B1 = Z( NN-5 ) / Z( NN-7 )
+            B2 = B1
+            IF( B2.EQ.ZERO )
+     $         GO TO 60
+            DO 50 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+               A2 = B1
+               IF( Z( I4 ).GT.Z( I4-2 ) )
+     $            RETURN
+               B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+               B2 = B2 + B1
+               IF( HUNDRD*MAX( B1, A2 ).LT.B2 ) 
+     $            GO TO 60
+   50       CONTINUE
+   60       CONTINUE
+            B2 = SQRT( CNST3*B2 )
+            A2 = DMIN1 / ( ONE+B2**2 )
+            GAP2 = HALF*DMIN2 - A2
+            IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+               S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+            ELSE 
+               S = MAX( S, A2*( ONE-CNST2*B2 ) )
+               TTYPE = -8
+            END IF
+         ELSE
+*
+*           Case 9.
+*
+            S = QURTR*DMIN1
+            IF( DMIN1.EQ.DN1 )
+     $         S = HALF*DMIN1
+            TTYPE = -9
+         END IF
+*
+      ELSE IF( N0IN.EQ.( N0+2 ) ) THEN
+*
+*        Two eigenvalues deflated. Use DMIN2, DN2 for DMIN and DN.
+*
+*        Cases 10 and 11.
+*
+         IF( DMIN2.EQ.DN2 .AND. TWO*Z( NN-5 ).LT.Z( NN-7 ) ) THEN 
+            TTYPE = -10
+            S = THIRD*DMIN2
+            IF( Z( NN-5 ).GT.Z( NN-7 ) )
+     $         RETURN
+            B1 = Z( NN-5 ) / Z( NN-7 )
+            B2 = B1
+            IF( B2.EQ.ZERO )
+     $         GO TO 80
+            DO 70 I4 = 4*N0 - 9 + PP, 4*I0 - 1 + PP, -4
+               IF( Z( I4 ).GT.Z( I4-2 ) )
+     $            RETURN
+               B1 = B1*( Z( I4 ) / Z( I4-2 ) )
+               B2 = B2 + B1
+               IF( HUNDRD*B1.LT.B2 )
+     $            GO TO 80
+   70       CONTINUE
+   80       CONTINUE
+            B2 = SQRT( CNST3*B2 )
+            A2 = DMIN2 / ( ONE+B2**2 )
+            GAP2 = Z( NN-7 ) + Z( NN-9 ) -
+     $             SQRT( Z( NN-11 ) )*SQRT( Z( NN-9 ) ) - A2
+            IF( GAP2.GT.ZERO .AND. GAP2.GT.B2*A2 ) THEN
+               S = MAX( S, A2*( ONE-CNST2*A2*( B2 / GAP2 )*B2 ) )
+            ELSE 
+               S = MAX( S, A2*( ONE-CNST2*B2 ) )
+            END IF
+         ELSE
+            S = QURTR*DMIN2
+            TTYPE = -11
+         END IF
+      ELSE IF( N0IN.GT.( N0+2 ) ) THEN
+*
+*        Case 12, more than two eigenvalues deflated. No information.
+*
+         S = ZERO 
+         TTYPE = -12
+      END IF
+*
+      TAU = S
+      RETURN
+*
+*     End of DLASQ4
+*
+      END
Index: src/lapack/double/dlasda.f
===================================================================
--- src/lapack/double/dlasda.f	(revision 0)
+++ src/lapack/double/dlasda.f	(revision 1)
@@ -0,0 +1,391 @@
+      SUBROUTINE DLASDA( ICOMPQ, SMLSIZ, N, SQRE, D, E, U, LDU, VT, K,
+     $                   DIFL, DIFR, Z, POLES, GIVPTR, GIVCOL, LDGCOL,
+     $                   PERM, GIVNUM, C, S, WORK, IWORK, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            ICOMPQ, INFO, LDGCOL, LDU, N, SMLSIZ, SQRE
+*     ..
+*     .. Array Arguments ..
+      INTEGER            GIVCOL( LDGCOL, * ), GIVPTR( * ), IWORK( * ),
+     $                   K( * ), PERM( LDGCOL, * )
+      DOUBLE PRECISION   C( * ), D( * ), DIFL( LDU, * ), DIFR( LDU, * ),
+     $                   E( * ), GIVNUM( LDU, * ), POLES( LDU, * ),
+     $                   S( * ), U( LDU, * ), VT( LDU, * ), WORK( * ),
+     $                   Z( LDU, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  Using a divide and conquer approach, DLASDA computes the singular
+*  value decomposition (SVD) of a real upper bidiagonal N-by-M matrix
+*  B with diagonal D and offdiagonal E, where M = N + SQRE. The
+*  algorithm computes the singular values in the SVD B = U * S * VT.
+*  The orthogonal matrices U and VT are optionally computed in
+*  compact form.
+*
+*  A related subroutine, DLASD0, computes the singular values and
+*  the singular vectors in explicit form.
+*
+*  Arguments
+*  =========
+*
+*  ICOMPQ (input) INTEGER
+*         Specifies whether singular vectors are to be computed
+*         in compact form, as follows
+*         = 0: Compute singular values only.
+*         = 1: Compute singular vectors of upper bidiagonal
+*              matrix in compact form.
+*
+*  SMLSIZ (input) INTEGER
+*         The maximum size of the subproblems at the bottom of the
+*         computation tree.
+*
+*  N      (input) INTEGER
+*         The row dimension of the upper bidiagonal matrix. This is
+*         also the dimension of the main diagonal array D.
+*
+*  SQRE   (input) INTEGER
+*         Specifies the column dimension of the bidiagonal matrix.
+*         = 0: The bidiagonal matrix has column dimension M = N;
+*         = 1: The bidiagonal matrix has column dimension M = N + 1.
+*
+*  D      (input/output) DOUBLE PRECISION array, dimension ( N )
+*         On entry D contains the main diagonal of the bidiagonal
+*         matrix. On exit D, if INFO = 0, contains its singular values.
+*
+*  E      (input) DOUBLE PRECISION array, dimension ( M-1 )
+*         Contains the subdiagonal entries of the bidiagonal matrix.
+*         On exit, E has been destroyed.
+*
+*  U      (output) DOUBLE PRECISION array,
+*         dimension ( LDU, SMLSIZ ) if ICOMPQ = 1, and not referenced
+*         if ICOMPQ = 0. If ICOMPQ = 1, on exit, U contains the left
+*         singular vector matrices of all subproblems at the bottom
+*         level.
+*
+*  LDU    (input) INTEGER, LDU = > N.
+*         The leading dimension of arrays U, VT, DIFL, DIFR, POLES,
+*         GIVNUM, and Z.
+*
+*  VT     (output) DOUBLE PRECISION array,
+*         dimension ( LDU, SMLSIZ+1 ) if ICOMPQ = 1, and not referenced
+*         if ICOMPQ = 0. If ICOMPQ = 1, on exit, VT' contains the right
+*         singular vector matrices of all subproblems at the bottom
+*         level.
+*
+*  K      (output) INTEGER array,
+*         dimension ( N ) if ICOMPQ = 1 and dimension 1 if ICOMPQ = 0.
+*         If ICOMPQ = 1, on exit, K(I) is the dimension of the I-th
+*         secular equation on the computation tree.
+*
+*  DIFL   (output) DOUBLE PRECISION array, dimension ( LDU, NLVL ),
+*         where NLVL = floor(log_2 (N/SMLSIZ))).
+*
+*  DIFR   (output) DOUBLE PRECISION array,
+*                  dimension ( LDU, 2 * NLVL ) if ICOMPQ = 1 and
+*                  dimension ( N ) if ICOMPQ = 0.
+*         If ICOMPQ = 1, on exit, DIFL(1:N, I) and DIFR(1:N, 2 * I - 1)
+*         record distances between singular values on the I-th
+*         level and singular values on the (I -1)-th level, and
+*         DIFR(1:N, 2 * I ) contains the normalizing factors for
+*         the right singular vector matrix. See DLASD8 for details.
+*
+*  Z      (output) DOUBLE PRECISION array,
+*                  dimension ( LDU, NLVL ) if ICOMPQ = 1 and
+*                  dimension ( N ) if ICOMPQ = 0.
+*         The first K elements of Z(1, I) contain the components of
+*         the deflation-adjusted updating row vector for subproblems
+*         on the I-th level.
+*
+*  POLES  (output) DOUBLE PRECISION array,
+*         dimension ( LDU, 2 * NLVL ) if ICOMPQ = 1, and not referenced
+*         if ICOMPQ = 0. If ICOMPQ = 1, on exit, POLES(1, 2*I - 1) and
+*         POLES(1, 2*I) contain  the new and old singular values
+*         involved in the secular equations on the I-th level.
+*
+*  GIVPTR (output) INTEGER array,
+*         dimension ( N ) if ICOMPQ = 1, and not referenced if
+*         ICOMPQ = 0. If ICOMPQ = 1, on exit, GIVPTR( I ) records
+*         the number of Givens rotations performed on the I-th
+*         problem on the computation tree.
+*
+*  GIVCOL (output) INTEGER array,
+*         dimension ( LDGCOL, 2 * NLVL ) if ICOMPQ = 1, and not
+*         referenced if ICOMPQ = 0. If ICOMPQ = 1, on exit, for each I,
+*         GIVCOL(1, 2 *I - 1) and GIVCOL(1, 2 *I) record the locations
+*         of Givens rotations performed on the I-th level on the
+*         computation tree.
+*
+*  LDGCOL (input) INTEGER, LDGCOL = > N.
+*         The leading dimension of arrays GIVCOL and PERM.
+*
+*  PERM   (output) INTEGER array,
+*         dimension ( LDGCOL, NLVL ) if ICOMPQ = 1, and not referenced
+*         if ICOMPQ = 0. If ICOMPQ = 1, on exit, PERM(1, I) records
+*         permutations done on the I-th level of the computation tree.
+*
+*  GIVNUM (output) DOUBLE PRECISION array,
+*         dimension ( LDU,  2 * NLVL ) if ICOMPQ = 1, and not
+*         referenced if ICOMPQ = 0. If ICOMPQ = 1, on exit, for each I,
+*         GIVNUM(1, 2 *I - 1) and GIVNUM(1, 2 *I) record the C- and S-
+*         values of Givens rotations performed on the I-th level on
+*         the computation tree.
+*
+*  C      (output) DOUBLE PRECISION array,
+*         dimension ( N ) if ICOMPQ = 1, and dimension 1 if ICOMPQ = 0.
+*         If ICOMPQ = 1 and the I-th subproblem is not square, on exit,
+*         C( I ) contains the C-value of a Givens rotation related to
+*         the right null space of the I-th subproblem.
+*
+*  S      (output) DOUBLE PRECISION array, dimension ( N ) if
+*         ICOMPQ = 1, and dimension 1 if ICOMPQ = 0. If ICOMPQ = 1
+*         and the I-th subproblem is not square, on exit, S( I )
+*         contains the S-value of a Givens rotation related to
+*         the right null space of the I-th subproblem.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension
+*         (6 * N + (SMLSIZ + 1)*(SMLSIZ + 1)).
+*
+*  IWORK  (workspace) INTEGER array.
+*         Dimension must be at least (7 * N).
+*
+*  INFO   (output) INTEGER
+*          = 0:  successful exit.
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*          > 0:  if INFO = 1, a singular value did not converge
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, I1, IC, IDXQ, IDXQI, IM1, INODE, ITEMP, IWK,
+     $                   J, LF, LL, LVL, LVL2, M, NCC, ND, NDB1, NDIML,
+     $                   NDIMR, NL, NLF, NLP1, NLVL, NR, NRF, NRP1, NRU,
+     $                   NWORK1, NWORK2, SMLSZP, SQREI, VF, VFI, VL, VLI
+      DOUBLE PRECISION   ALPHA, BETA
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DLASD6, DLASDQ, DLASDT, DLASET, XERBLA
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( SMLSIZ.LT.3 ) THEN
+         INFO = -2
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( ( SQRE.LT.0 ) .OR. ( SQRE.GT.1 ) ) THEN
+         INFO = -4
+      ELSE IF( LDU.LT.( N+SQRE ) ) THEN
+         INFO = -8
+      ELSE IF( LDGCOL.LT.N ) THEN
+         INFO = -17
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASDA', -INFO )
+         RETURN
+      END IF
+*
+      M = N + SQRE
+*
+*     If the input matrix is too small, call DLASDQ to find the SVD.
+*
+      IF( N.LE.SMLSIZ ) THEN
+         IF( ICOMPQ.EQ.0 ) THEN
+            CALL DLASDQ( 'U', SQRE, N, 0, 0, 0, D, E, VT, LDU, U, LDU,
+     $                   U, LDU, WORK, INFO )
+         ELSE
+            CALL DLASDQ( 'U', SQRE, N, M, N, 0, D, E, VT, LDU, U, LDU,
+     $                   U, LDU, WORK, INFO )
+         END IF
+         RETURN
+      END IF
+*
+*     Book-keeping and  set up the computation tree.
+*
+      INODE = 1
+      NDIML = INODE + N
+      NDIMR = NDIML + N
+      IDXQ = NDIMR + N
+      IWK = IDXQ + N
+*
+      NCC = 0
+      NRU = 0
+*
+      SMLSZP = SMLSIZ + 1
+      VF = 1
+      VL = VF + M
+      NWORK1 = VL + M
+      NWORK2 = NWORK1 + SMLSZP*SMLSZP
+*
+      CALL DLASDT( N, NLVL, ND, IWORK( INODE ), IWORK( NDIML ),
+     $             IWORK( NDIMR ), SMLSIZ )
+*
+*     for the nodes on bottom level of the tree, solve
+*     their subproblems by DLASDQ.
+*
+      NDB1 = ( ND+1 ) / 2
+      DO 30 I = NDB1, ND
+*
+*        IC : center row of each node
+*        NL : number of rows of left  subproblem
+*        NR : number of rows of right subproblem
+*        NLF: starting row of the left   subproblem
+*        NRF: starting row of the right  subproblem
+*
+         I1 = I - 1
+         IC = IWORK( INODE+I1 )
+         NL = IWORK( NDIML+I1 )
+         NLP1 = NL + 1
+         NR = IWORK( NDIMR+I1 )
+         NLF = IC - NL
+         NRF = IC + 1
+         IDXQI = IDXQ + NLF - 2
+         VFI = VF + NLF - 1
+         VLI = VL + NLF - 1
+         SQREI = 1
+         IF( ICOMPQ.EQ.0 ) THEN
+            CALL DLASET( 'A', NLP1, NLP1, ZERO, ONE, WORK( NWORK1 ),
+     $                   SMLSZP )
+            CALL DLASDQ( 'U', SQREI, NL, NLP1, NRU, NCC, D( NLF ),
+     $                   E( NLF ), WORK( NWORK1 ), SMLSZP,
+     $                   WORK( NWORK2 ), NL, WORK( NWORK2 ), NL,
+     $                   WORK( NWORK2 ), INFO )
+            ITEMP = NWORK1 + NL*SMLSZP
+            CALL DCOPY( NLP1, WORK( NWORK1 ), 1, WORK( VFI ), 1 )
+            CALL DCOPY( NLP1, WORK( ITEMP ), 1, WORK( VLI ), 1 )
+         ELSE
+            CALL DLASET( 'A', NL, NL, ZERO, ONE, U( NLF, 1 ), LDU )
+            CALL DLASET( 'A', NLP1, NLP1, ZERO, ONE, VT( NLF, 1 ), LDU )
+            CALL DLASDQ( 'U', SQREI, NL, NLP1, NL, NCC, D( NLF ),
+     $                   E( NLF ), VT( NLF, 1 ), LDU, U( NLF, 1 ), LDU,
+     $                   U( NLF, 1 ), LDU, WORK( NWORK1 ), INFO )
+            CALL DCOPY( NLP1, VT( NLF, 1 ), 1, WORK( VFI ), 1 )
+            CALL DCOPY( NLP1, VT( NLF, NLP1 ), 1, WORK( VLI ), 1 )
+         END IF
+         IF( INFO.NE.0 ) THEN
+            RETURN
+         END IF
+         DO 10 J = 1, NL
+            IWORK( IDXQI+J ) = J
+   10    CONTINUE
+         IF( ( I.EQ.ND ) .AND. ( SQRE.EQ.0 ) ) THEN
+            SQREI = 0
+         ELSE
+            SQREI = 1
+         END IF
+         IDXQI = IDXQI + NLP1
+         VFI = VFI + NLP1
+         VLI = VLI + NLP1
+         NRP1 = NR + SQREI
+         IF( ICOMPQ.EQ.0 ) THEN
+            CALL DLASET( 'A', NRP1, NRP1, ZERO, ONE, WORK( NWORK1 ),
+     $                   SMLSZP )
+            CALL DLASDQ( 'U', SQREI, NR, NRP1, NRU, NCC, D( NRF ),
+     $                   E( NRF ), WORK( NWORK1 ), SMLSZP,
+     $                   WORK( NWORK2 ), NR, WORK( NWORK2 ), NR,
+     $                   WORK( NWORK2 ), INFO )
+            ITEMP = NWORK1 + ( NRP1-1 )*SMLSZP
+            CALL DCOPY( NRP1, WORK( NWORK1 ), 1, WORK( VFI ), 1 )
+            CALL DCOPY( NRP1, WORK( ITEMP ), 1, WORK( VLI ), 1 )
+         ELSE
+            CALL DLASET( 'A', NR, NR, ZERO, ONE, U( NRF, 1 ), LDU )
+            CALL DLASET( 'A', NRP1, NRP1, ZERO, ONE, VT( NRF, 1 ), LDU )
+            CALL DLASDQ( 'U', SQREI, NR, NRP1, NR, NCC, D( NRF ),
+     $                   E( NRF ), VT( NRF, 1 ), LDU, U( NRF, 1 ), LDU,
+     $                   U( NRF, 1 ), LDU, WORK( NWORK1 ), INFO )
+            CALL DCOPY( NRP1, VT( NRF, 1 ), 1, WORK( VFI ), 1 )
+            CALL DCOPY( NRP1, VT( NRF, NRP1 ), 1, WORK( VLI ), 1 )
+         END IF
+         IF( INFO.NE.0 ) THEN
+            RETURN
+         END IF
+         DO 20 J = 1, NR
+            IWORK( IDXQI+J ) = J
+   20    CONTINUE
+   30 CONTINUE
+*
+*     Now conquer each subproblem bottom-up.
+*
+      J = 2**NLVL
+      DO 50 LVL = NLVL, 1, -1
+         LVL2 = LVL*2 - 1
+*
+*        Find the first node LF and last node LL on
+*        the current level LVL.
+*
+         IF( LVL.EQ.1 ) THEN
+            LF = 1
+            LL = 1
+         ELSE
+            LF = 2**( LVL-1 )
+            LL = 2*LF - 1
+         END IF
+         DO 40 I = LF, LL
+            IM1 = I - 1
+            IC = IWORK( INODE+IM1 )
+            NL = IWORK( NDIML+IM1 )
+            NR = IWORK( NDIMR+IM1 )
+            NLF = IC - NL
+            NRF = IC + 1
+            IF( I.EQ.LL ) THEN
+               SQREI = SQRE
+            ELSE
+               SQREI = 1
+            END IF
+            VFI = VF + NLF - 1
+            VLI = VL + NLF - 1
+            IDXQI = IDXQ + NLF - 1
+            ALPHA = D( IC )
+            BETA = E( IC )
+            IF( ICOMPQ.EQ.0 ) THEN
+               CALL DLASD6( ICOMPQ, NL, NR, SQREI, D( NLF ),
+     $                      WORK( VFI ), WORK( VLI ), ALPHA, BETA,
+     $                      IWORK( IDXQI ), PERM, GIVPTR( 1 ), GIVCOL,
+     $                      LDGCOL, GIVNUM, LDU, POLES, DIFL, DIFR, Z,
+     $                      K( 1 ), C( 1 ), S( 1 ), WORK( NWORK1 ),
+     $                      IWORK( IWK ), INFO )
+            ELSE
+               J = J - 1
+               CALL DLASD6( ICOMPQ, NL, NR, SQREI, D( NLF ),
+     $                      WORK( VFI ), WORK( VLI ), ALPHA, BETA,
+     $                      IWORK( IDXQI ), PERM( NLF, LVL ),
+     $                      GIVPTR( J ), GIVCOL( NLF, LVL2 ), LDGCOL,
+     $                      GIVNUM( NLF, LVL2 ), LDU,
+     $                      POLES( NLF, LVL2 ), DIFL( NLF, LVL ),
+     $                      DIFR( NLF, LVL2 ), Z( NLF, LVL ), K( J ),
+     $                      C( J ), S( J ), WORK( NWORK1 ),
+     $                      IWORK( IWK ), INFO )
+            END IF
+            IF( INFO.NE.0 ) THEN
+               RETURN
+            END IF
+   40    CONTINUE
+   50 CONTINUE
+*
+      RETURN
+*
+*     End of DLASDA
+*
+      END
Index: src/lapack/double/dlabrd.f
===================================================================
--- src/lapack/double/dlabrd.f	(revision 0)
+++ src/lapack/double/dlabrd.f	(revision 1)
@@ -0,0 +1,291 @@
+      SUBROUTINE DLABRD( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,
+     $                   LDY )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            LDA, LDX, LDY, M, N, NB
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), D( * ), E( * ), TAUP( * ),
+     $                   TAUQ( * ), X( LDX, * ), Y( LDY, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLABRD reduces the first NB rows and columns of a real general
+*  m by n matrix A to upper or lower bidiagonal form by an orthogonal
+*  transformation Q' * A * P, and returns the matrices X and Y which
+*  are needed to apply the transformation to the unreduced part of A.
+*
+*  If m >= n, A is reduced to upper bidiagonal form; if m < n, to lower
+*  bidiagonal form.
+*
+*  This is an auxiliary routine called by DGEBRD
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows in the matrix A.
+*
+*  N       (input) INTEGER
+*          The number of columns in the matrix A.
+*
+*  NB      (input) INTEGER
+*          The number of leading rows and columns of A to be reduced.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the m by n general matrix to be reduced.
+*          On exit, the first NB rows and columns of the matrix are
+*          overwritten; the rest of the array is unchanged.
+*          If m >= n, elements on and below the diagonal in the first NB
+*            columns, with the array TAUQ, represent the orthogonal
+*            matrix Q as a product of elementary reflectors; and
+*            elements above the diagonal in the first NB rows, with the
+*            array TAUP, represent the orthogonal matrix P as a product
+*            of elementary reflectors.
+*          If m < n, elements below the diagonal in the first NB
+*            columns, with the array TAUQ, represent the orthogonal
+*            matrix Q as a product of elementary reflectors, and
+*            elements on and above the diagonal in the first NB rows,
+*            with the array TAUP, represent the orthogonal matrix P as
+*            a product of elementary reflectors.
+*          See Further Details.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  D       (output) DOUBLE PRECISION array, dimension (NB)
+*          The diagonal elements of the first NB rows and columns of
+*          the reduced matrix.  D(i) = A(i,i).
+*
+*  E       (output) DOUBLE PRECISION array, dimension (NB)
+*          The off-diagonal elements of the first NB rows and columns of
+*          the reduced matrix.
+*
+*  TAUQ    (output) DOUBLE PRECISION array dimension (NB)
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix Q. See Further Details.
+*
+*  TAUP    (output) DOUBLE PRECISION array, dimension (NB)
+*          The scalar factors of the elementary reflectors which
+*          represent the orthogonal matrix P. See Further Details.
+*
+*  X       (output) DOUBLE PRECISION array, dimension (LDX,NB)
+*          The m-by-nb matrix X required to update the unreduced part
+*          of A.
+*
+*  LDX     (input) INTEGER
+*          The leading dimension of the array X. LDX >= M.
+*
+*  Y       (output) DOUBLE PRECISION array, dimension (LDY,NB)
+*          The n-by-nb matrix Y required to update the unreduced part
+*          of A.
+*
+*  LDY     (input) INTEGER
+*          The leading dimension of the array Y. LDY >= N.
+*
+*  Further Details
+*  ===============
+*
+*  The matrices Q and P are represented as products of elementary
+*  reflectors:
+*
+*     Q = H(1) H(2) . . . H(nb)  and  P = G(1) G(2) . . . G(nb)
+*
+*  Each H(i) and G(i) has the form:
+*
+*     H(i) = I - tauq * v * v'  and G(i) = I - taup * u * u'
+*
+*  where tauq and taup are real scalars, and v and u are real vectors.
+*
+*  If m >= n, v(1:i-1) = 0, v(i) = 1, and v(i:m) is stored on exit in
+*  A(i:m,i); u(1:i) = 0, u(i+1) = 1, and u(i+1:n) is stored on exit in
+*  A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  If m < n, v(1:i) = 0, v(i+1) = 1, and v(i+1:m) is stored on exit in
+*  A(i+2:m,i); u(1:i-1) = 0, u(i) = 1, and u(i:n) is stored on exit in
+*  A(i,i+1:n); tauq is stored in TAUQ(i) and taup in TAUP(i).
+*
+*  The elements of the vectors v and u together form the m-by-nb matrix
+*  V and the nb-by-n matrix U' which are needed, with X and Y, to apply
+*  the transformation to the unreduced part of the matrix, using a block
+*  update of the form:  A := A - V*Y' - X*U'.
+*
+*  The contents of A on exit are illustrated by the following examples
+*  with nb = 2:
+*
+*  m = 6 and n = 5 (m > n):          m = 5 and n = 6 (m < n):
+*
+*    (  1   1   u1  u1  u1 )           (  1   u1  u1  u1  u1  u1 )
+*    (  v1  1   1   u2  u2 )           (  1   1   u2  u2  u2  u2 )
+*    (  v1  v2  a   a   a  )           (  v1  1   a   a   a   a  )
+*    (  v1  v2  a   a   a  )           (  v1  v2  a   a   a   a  )
+*    (  v1  v2  a   a   a  )           (  v1  v2  a   a   a   a  )
+*    (  v1  v2  a   a   a  )
+*
+*  where a denotes an element of the original matrix which is unchanged,
+*  vi denotes an element of the vector defining H(i), and ui an element
+*  of the vector defining G(i).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEMV, DLARFG, DSCAL
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Quick return if possible
+*
+      IF( M.LE.0 .OR. N.LE.0 )
+     $   RETURN
+*
+      IF( M.GE.N ) THEN
+*
+*        Reduce to upper bidiagonal form
+*
+         DO 10 I = 1, NB
+*
+*           Update A(i:m,i)
+*
+            CALL DGEMV( 'No transpose', M-I+1, I-1, -ONE, A( I, 1 ),
+     $                  LDA, Y( I, 1 ), LDY, ONE, A( I, I ), 1 )
+            CALL DGEMV( 'No transpose', M-I+1, I-1, -ONE, X( I, 1 ),
+     $                  LDX, A( 1, I ), 1, ONE, A( I, I ), 1 )
+*
+*           Generate reflection Q(i) to annihilate A(i+1:m,i)
+*
+            CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+     $                   TAUQ( I ) )
+            D( I ) = A( I, I )
+            IF( I.LT.N ) THEN
+               A( I, I ) = ONE
+*
+*              Compute Y(i+1:n,i)
+*
+               CALL DGEMV( 'Transpose', M-I+1, N-I, ONE, A( I, I+1 ),
+     $                     LDA, A( I, I ), 1, ZERO, Y( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', M-I+1, I-1, ONE, A( I, 1 ), LDA,
+     $                     A( I, I ), 1, ZERO, Y( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+     $                     LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', M-I+1, I-1, ONE, X( I, 1 ), LDX,
+     $                     A( I, I ), 1, ZERO, Y( 1, I ), 1 )
+               CALL DGEMV( 'Transpose', I-1, N-I, -ONE, A( 1, I+1 ),
+     $                     LDA, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+               CALL DSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+*
+*              Update A(i,i+1:n)
+*
+               CALL DGEMV( 'No transpose', N-I, I, -ONE, Y( I+1, 1 ),
+     $                     LDY, A( I, 1 ), LDA, ONE, A( I, I+1 ), LDA )
+               CALL DGEMV( 'Transpose', I-1, N-I, -ONE, A( 1, I+1 ),
+     $                     LDA, X( I, 1 ), LDX, ONE, A( I, I+1 ), LDA )
+*
+*              Generate reflection P(i) to annihilate A(i,i+2:n)
+*
+               CALL DLARFG( N-I, A( I, I+1 ), A( I, MIN( I+2, N ) ),
+     $                      LDA, TAUP( I ) )
+               E( I ) = A( I, I+1 )
+               A( I, I+1 ) = ONE
+*
+*              Compute X(i+1:m,i)
+*
+               CALL DGEMV( 'No transpose', M-I, N-I, ONE, A( I+1, I+1 ),
+     $                     LDA, A( I, I+1 ), LDA, ZERO, X( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', N-I, I, ONE, Y( I+1, 1 ), LDY,
+     $                     A( I, I+1 ), LDA, ZERO, X( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', M-I, I, -ONE, A( I+1, 1 ),
+     $                     LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+               CALL DGEMV( 'No transpose', I-1, N-I, ONE, A( 1, I+1 ),
+     $                     LDA, A( I, I+1 ), LDA, ZERO, X( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+     $                     LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+               CALL DSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+            END IF
+   10    CONTINUE
+      ELSE
+*
+*        Reduce to lower bidiagonal form
+*
+         DO 20 I = 1, NB
+*
+*           Update A(i,i:n)
+*
+            CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, Y( I, 1 ),
+     $                  LDY, A( I, 1 ), LDA, ONE, A( I, I ), LDA )
+            CALL DGEMV( 'Transpose', I-1, N-I+1, -ONE, A( 1, I ), LDA,
+     $                  X( I, 1 ), LDX, ONE, A( I, I ), LDA )
+*
+*           Generate reflection P(i) to annihilate A(i,i+1:n)
+*
+            CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+     $                   TAUP( I ) )
+            D( I ) = A( I, I )
+            IF( I.LT.M ) THEN
+               A( I, I ) = ONE
+*
+*              Compute X(i+1:m,i)
+*
+               CALL DGEMV( 'No transpose', M-I, N-I+1, ONE, A( I+1, I ),
+     $                     LDA, A( I, I ), LDA, ZERO, X( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', N-I+1, I-1, ONE, Y( I, 1 ), LDY,
+     $                     A( I, I ), LDA, ZERO, X( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+     $                     LDA, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+               CALL DGEMV( 'No transpose', I-1, N-I+1, ONE, A( 1, I ),
+     $                     LDA, A( I, I ), LDA, ZERO, X( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', M-I, I-1, -ONE, X( I+1, 1 ),
+     $                     LDX, X( 1, I ), 1, ONE, X( I+1, I ), 1 )
+               CALL DSCAL( M-I, TAUP( I ), X( I+1, I ), 1 )
+*
+*              Update A(i+1:m,i)
+*
+               CALL DGEMV( 'No transpose', M-I, I-1, -ONE, A( I+1, 1 ),
+     $                     LDA, Y( I, 1 ), LDY, ONE, A( I+1, I ), 1 )
+               CALL DGEMV( 'No transpose', M-I, I, -ONE, X( I+1, 1 ),
+     $                     LDX, A( 1, I ), 1, ONE, A( I+1, I ), 1 )
+*
+*              Generate reflection Q(i) to annihilate A(i+2:m,i)
+*
+               CALL DLARFG( M-I, A( I+1, I ), A( MIN( I+2, M ), I ), 1,
+     $                      TAUQ( I ) )
+               E( I ) = A( I+1, I )
+               A( I+1, I ) = ONE
+*
+*              Compute Y(i+1:n,i)
+*
+               CALL DGEMV( 'Transpose', M-I, N-I, ONE, A( I+1, I+1 ),
+     $                     LDA, A( I+1, I ), 1, ZERO, Y( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', M-I, I-1, ONE, A( I+1, 1 ), LDA,
+     $                     A( I+1, I ), 1, ZERO, Y( 1, I ), 1 )
+               CALL DGEMV( 'No transpose', N-I, I-1, -ONE, Y( I+1, 1 ),
+     $                     LDY, Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+               CALL DGEMV( 'Transpose', M-I, I, ONE, X( I+1, 1 ), LDX,
+     $                     A( I+1, I ), 1, ZERO, Y( 1, I ), 1 )
+               CALL DGEMV( 'Transpose', I, N-I, -ONE, A( 1, I+1 ), LDA,
+     $                     Y( 1, I ), 1, ONE, Y( I+1, I ), 1 )
+               CALL DSCAL( N-I, TAUQ( I ), Y( I+1, I ), 1 )
+            END IF
+   20    CONTINUE
+      END IF
+      RETURN
+*
+*     End of DLABRD
+*
+      END
Index: src/lapack/double/dlasq6.f
===================================================================
--- src/lapack/double/dlasq6.f	(revision 0)
+++ src/lapack/double/dlasq6.f	(revision 1)
@@ -0,0 +1,181 @@
+      SUBROUTINE DLASQ6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN,
+     $                   DNM1, DNM2 )
+*
+*  -- LAPACK routine (version 3.2)                                    --
+*
+*  -- Contributed by Osni Marques of the Lawrence Berkeley National   --
+*  -- Laboratory and Beresford Parlett of the Univ. of California at  --
+*  -- Berkeley                                                        --
+*  -- November 2008                                                   --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      INTEGER            I0, N0, PP
+      DOUBLE PRECISION   DMIN, DMIN1, DMIN2, DN, DNM1, DNM2
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASQ6 computes one dqd (shift equal to zero) transform in
+*  ping-pong form, with protection against underflow and overflow.
+*
+*  Arguments
+*  =========
+*
+*  I0    (input) INTEGER
+*        First index.
+*
+*  N0    (input) INTEGER
+*        Last index.
+*
+*  Z     (input) DOUBLE PRECISION array, dimension ( 4*N )
+*        Z holds the qd array. EMIN is stored in Z(4*N0) to avoid
+*        an extra argument.
+*
+*  PP    (input) INTEGER
+*        PP=0 for ping, PP=1 for pong.
+*
+*  DMIN  (output) DOUBLE PRECISION
+*        Minimum value of d.
+*
+*  DMIN1 (output) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ).
+*
+*  DMIN2 (output) DOUBLE PRECISION
+*        Minimum value of d, excluding D( N0 ) and D( N0-1 ).
+*
+*  DN    (output) DOUBLE PRECISION
+*        d(N0), the last value of d.
+*
+*  DNM1  (output) DOUBLE PRECISION
+*        d(N0-1).
+*
+*  DNM2  (output) DOUBLE PRECISION
+*        d(N0-2).
+*
+*  =====================================================================
+*
+*     .. Parameter ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            J4, J4P2
+      DOUBLE PRECISION   D, EMIN, SAFMIN, TEMP
+*     ..
+*     .. External Function ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MIN
+*     ..
+*     .. Executable Statements ..
+*
+      IF( ( N0-I0-1 ).LE.0 )
+     $   RETURN
+*
+      SAFMIN = DLAMCH( 'Safe minimum' )
+      J4 = 4*I0 + PP - 3
+      EMIN = Z( J4+4 ) 
+      D = Z( J4 )
+      DMIN = D
+*
+      IF( PP.EQ.0 ) THEN
+         DO 10 J4 = 4*I0, 4*( N0-3 ), 4
+            Z( J4-2 ) = D + Z( J4-1 ) 
+            IF( Z( J4-2 ).EQ.ZERO ) THEN
+               Z( J4 ) = ZERO
+               D = Z( J4+1 )
+               DMIN = D
+               EMIN = ZERO
+            ELSE IF( SAFMIN*Z( J4+1 ).LT.Z( J4-2 ) .AND.
+     $               SAFMIN*Z( J4-2 ).LT.Z( J4+1 ) ) THEN
+               TEMP = Z( J4+1 ) / Z( J4-2 )
+               Z( J4 ) = Z( J4-1 )*TEMP
+               D = D*TEMP
+            ELSE 
+               Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
+               D = Z( J4+1 )*( D / Z( J4-2 ) )
+            END IF
+            DMIN = MIN( DMIN, D )
+            EMIN = MIN( EMIN, Z( J4 ) )
+   10    CONTINUE
+      ELSE
+         DO 20 J4 = 4*I0, 4*( N0-3 ), 4
+            Z( J4-3 ) = D + Z( J4 ) 
+            IF( Z( J4-3 ).EQ.ZERO ) THEN
+               Z( J4-1 ) = ZERO
+               D = Z( J4+2 )
+               DMIN = D
+               EMIN = ZERO
+            ELSE IF( SAFMIN*Z( J4+2 ).LT.Z( J4-3 ) .AND.
+     $               SAFMIN*Z( J4-3 ).LT.Z( J4+2 ) ) THEN
+               TEMP = Z( J4+2 ) / Z( J4-3 )
+               Z( J4-1 ) = Z( J4 )*TEMP
+               D = D*TEMP
+            ELSE 
+               Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
+               D = Z( J4+2 )*( D / Z( J4-3 ) )
+            END IF
+            DMIN = MIN( DMIN, D )
+            EMIN = MIN( EMIN, Z( J4-1 ) )
+   20    CONTINUE
+      END IF
+*
+*     Unroll last two steps. 
+*
+      DNM2 = D
+      DMIN2 = DMIN
+      J4 = 4*( N0-2 ) - PP
+      J4P2 = J4 + 2*PP - 1
+      Z( J4-2 ) = DNM2 + Z( J4P2 )
+      IF( Z( J4-2 ).EQ.ZERO ) THEN
+         Z( J4 ) = ZERO
+         DNM1 = Z( J4P2+2 )
+         DMIN = DNM1
+         EMIN = ZERO
+      ELSE IF( SAFMIN*Z( J4P2+2 ).LT.Z( J4-2 ) .AND.
+     $         SAFMIN*Z( J4-2 ).LT.Z( J4P2+2 ) ) THEN
+         TEMP = Z( J4P2+2 ) / Z( J4-2 )
+         Z( J4 ) = Z( J4P2 )*TEMP
+         DNM1 = DNM2*TEMP
+      ELSE
+         Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+         DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) )
+      END IF
+      DMIN = MIN( DMIN, DNM1 )
+*
+      DMIN1 = DMIN
+      J4 = J4 + 4
+      J4P2 = J4 + 2*PP - 1
+      Z( J4-2 ) = DNM1 + Z( J4P2 )
+      IF( Z( J4-2 ).EQ.ZERO ) THEN
+         Z( J4 ) = ZERO
+         DN = Z( J4P2+2 )
+         DMIN = DN
+         EMIN = ZERO
+      ELSE IF( SAFMIN*Z( J4P2+2 ).LT.Z( J4-2 ) .AND.
+     $         SAFMIN*Z( J4-2 ).LT.Z( J4P2+2 ) ) THEN
+         TEMP = Z( J4P2+2 ) / Z( J4-2 )
+         Z( J4 ) = Z( J4P2 )*TEMP
+         DN = DNM1*TEMP
+      ELSE
+         Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
+         DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) )
+      END IF
+      DMIN = MIN( DMIN, DN )
+*
+      Z( J4+2 ) = DN
+      Z( 4*N0-PP ) = EMIN
+      RETURN
+*
+*     End of DLASQ6
+*
+      END
Index: src/lapack/double/dlarfb.f
===================================================================
--- src/lapack/double/dlarfb.f	(revision 0)
+++ src/lapack/double/dlarfb.f	(revision 1)
@@ -0,0 +1,641 @@
+      SUBROUTINE DLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV,
+     $                   T, LDT, C, LDC, WORK, LDWORK )
+      IMPLICIT NONE
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          DIRECT, SIDE, STOREV, TRANS
+      INTEGER            K, LDC, LDT, LDV, LDWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), T( LDT, * ), V( LDV, * ),
+     $                   WORK( LDWORK, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARFB applies a real block reflector H or its transpose H' to a
+*  real m by n matrix C, from either the left or the right.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply H or H' from the Left
+*          = 'R': apply H or H' from the Right
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N': apply H (No transpose)
+*          = 'T': apply H' (Transpose)
+*
+*  DIRECT  (input) CHARACTER*1
+*          Indicates how H is formed from a product of elementary
+*          reflectors
+*          = 'F': H = H(1) H(2) . . . H(k) (Forward)
+*          = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+*  STOREV  (input) CHARACTER*1
+*          Indicates how the vectors which define the elementary
+*          reflectors are stored:
+*          = 'C': Columnwise
+*          = 'R': Rowwise
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C.
+*
+*  K       (input) INTEGER
+*          The order of the matrix T (= the number of elementary
+*          reflectors whose product defines the block reflector).
+*
+*  V       (input) DOUBLE PRECISION array, dimension
+*                                (LDV,K) if STOREV = 'C'
+*                                (LDV,M) if STOREV = 'R' and SIDE = 'L'
+*                                (LDV,N) if STOREV = 'R' and SIDE = 'R'
+*          The matrix V. See further details.
+*
+*  LDV     (input) INTEGER
+*          The leading dimension of the array V.
+*          If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
+*          if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
+*          if STOREV = 'R', LDV >= K.
+*
+*  T       (input) DOUBLE PRECISION array, dimension (LDT,K)
+*          The triangular k by k matrix T in the representation of the
+*          block reflector.
+*
+*  LDT     (input) INTEGER
+*          The leading dimension of the array T. LDT >= K.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the m by n matrix C.
+*          On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDA >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (LDWORK,K)
+*
+*  LDWORK  (input) INTEGER
+*          The leading dimension of the array WORK.
+*          If SIDE = 'L', LDWORK >= max(1,N);
+*          if SIDE = 'R', LDWORK >= max(1,M).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      CHARACTER          TRANST
+      INTEGER            I, J, LASTV, LASTC
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILADLR, ILADLC
+      EXTERNAL           LSAME, ILADLR, ILADLC
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEMM, DTRMM
+*     ..
+*     .. Executable Statements ..
+*
+*     Quick return if possible
+*
+      IF( M.LE.0 .OR. N.LE.0 )
+     $   RETURN
+*
+      IF( LSAME( TRANS, 'N' ) ) THEN
+         TRANST = 'T'
+      ELSE
+         TRANST = 'N'
+      END IF
+*
+      IF( LSAME( STOREV, 'C' ) ) THEN
+*
+         IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+*           Let  V =  ( V1 )    (first K rows)
+*                     ( V2 )
+*           where  V1  is unit lower triangular.
+*
+            IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*              Form  H * C  or  H' * C  where  C = ( C1 )
+*                                                  ( C2 )
+*
+               LASTV = MAX( K, ILADLR( M, K, V, LDV ) )
+               LASTC = ILADLC( LASTV, N, C, LDC )
+*
+*              W := C' * V  =  (C1'*V1 + C2'*V2)  (stored in WORK)
+*
+*              W := C1'
+*
+               DO 10 J = 1, K
+                  CALL DCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+   10          CONTINUE
+*
+*              W := W * V1
+*
+               CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C2'*V2
+*
+                  CALL DGEMM( 'Transpose', 'No transpose',
+     $                 LASTC, K, LASTV-K,
+     $                 ONE, C( K+1, 1 ), LDC, V( K+1, 1 ), LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T'  or  W * T
+*
+               CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - V * W'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C2 := C2 - V2 * W'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTV-K, LASTC, K,
+     $                 -ONE, V( K+1, 1 ), LDV, WORK, LDWORK, ONE,
+     $                 C( K+1, 1 ), LDC )
+               END IF
+*
+*              W := W * V1'
+*
+               CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+*
+*              C1 := C1 - W'
+*
+               DO 30 J = 1, K
+                  DO 20 I = 1, LASTC
+                     C( J, I ) = C( J, I ) - WORK( I, J )
+   20             CONTINUE
+   30          CONTINUE
+*
+            ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*              Form  C * H  or  C * H'  where  C = ( C1  C2 )
+*
+               LASTV = MAX( K, ILADLR( N, K, V, LDV ) )
+               LASTC = ILADLR( M, LASTV, C, LDC )
+*
+*              W := C * V  =  (C1*V1 + C2*V2)  (stored in WORK)
+*
+*              W := C1
+*
+               DO 40 J = 1, K
+                  CALL DCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 )
+   40          CONTINUE
+*
+*              W := W * V1
+*
+               CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C2 * V2
+*
+                  CALL DGEMM( 'No transpose', 'No transpose',
+     $                 LASTC, K, LASTV-K,
+     $                 ONE, C( 1, K+1 ), LDC, V( K+1, 1 ), LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T  or  W * T'
+*
+               CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - W * V'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C2 := C2 - W * V2'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTC, LASTV-K, K,
+     $                 -ONE, WORK, LDWORK, V( K+1, 1 ), LDV, ONE,
+     $                 C( 1, K+1 ), LDC )
+               END IF
+*
+*              W := W * V1'
+*
+               CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+*
+*              C1 := C1 - W
+*
+               DO 60 J = 1, K
+                  DO 50 I = 1, LASTC
+                     C( I, J ) = C( I, J ) - WORK( I, J )
+   50             CONTINUE
+   60          CONTINUE
+            END IF
+*
+         ELSE
+*
+*           Let  V =  ( V1 )
+*                     ( V2 )    (last K rows)
+*           where  V2  is unit upper triangular.
+*
+            IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*              Form  H * C  or  H' * C  where  C = ( C1 )
+*                                                  ( C2 )
+*
+               LASTV = MAX( K, ILADLR( M, K, V, LDV ) )
+               LASTC = ILADLC( LASTV, N, C, LDC )
+*
+*              W := C' * V  =  (C1'*V1 + C2'*V2)  (stored in WORK)
+*
+*              W := C2'
+*
+               DO 70 J = 1, K
+                  CALL DCOPY( LASTC, C( LASTV-K+J, 1 ), LDC,
+     $                 WORK( 1, J ), 1 )
+   70          CONTINUE
+*
+*              W := W * V2
+*
+               CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V( LASTV-K+1, 1 ), LDV,
+     $              WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C1'*V1
+*
+                  CALL DGEMM( 'Transpose', 'No transpose',
+     $                 LASTC, K, LASTV-K, ONE, C, LDC, V, LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T'  or  W * T
+*
+               CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - V * W'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C1 := C1 - V1 * W'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTV-K, LASTC, K, -ONE, V, LDV, WORK, LDWORK,
+     $                 ONE, C, LDC )
+               END IF
+*
+*              W := W * V2'
+*
+               CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V( LASTV-K+1, 1 ), LDV,
+     $              WORK, LDWORK )
+*
+*              C2 := C2 - W'
+*
+               DO 90 J = 1, K
+                  DO 80 I = 1, LASTC
+                     C( LASTV-K+J, I ) = C( LASTV-K+J, I ) - WORK(I, J)
+   80             CONTINUE
+   90          CONTINUE
+*
+            ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*              Form  C * H  or  C * H'  where  C = ( C1  C2 )
+*
+               LASTV = MAX( K, ILADLR( N, K, V, LDV ) )
+               LASTC = ILADLR( M, LASTV, C, LDC )
+*
+*              W := C * V  =  (C1*V1 + C2*V2)  (stored in WORK)
+*
+*              W := C2
+*
+               DO 100 J = 1, K
+                  CALL DCOPY( LASTC, C( 1, N-K+J ), 1, WORK( 1, J ), 1 )
+  100          CONTINUE
+*
+*              W := W * V2
+*
+               CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V( LASTV-K+1, 1 ), LDV,
+     $              WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C1 * V1
+*
+                  CALL DGEMM( 'No transpose', 'No transpose',
+     $                 LASTC, K, LASTV-K, ONE, C, LDC, V, LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T  or  W * T'
+*
+               CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - W * V'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C1 := C1 - W * V1'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTC, LASTV-K, K, -ONE, WORK, LDWORK, V, LDV,
+     $                 ONE, C, LDC )
+               END IF
+*
+*              W := W * V2'
+*
+               CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V( LASTV-K+1, 1 ), LDV,
+     $              WORK, LDWORK )
+*
+*              C2 := C2 - W
+*
+               DO 120 J = 1, K
+                  DO 110 I = 1, LASTC
+                     C( I, LASTV-K+J ) = C( I, LASTV-K+J ) - WORK(I, J)
+  110             CONTINUE
+  120          CONTINUE
+            END IF
+         END IF
+*
+      ELSE IF( LSAME( STOREV, 'R' ) ) THEN
+*
+         IF( LSAME( DIRECT, 'F' ) ) THEN
+*
+*           Let  V =  ( V1  V2 )    (V1: first K columns)
+*           where  V1  is unit upper triangular.
+*
+            IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*              Form  H * C  or  H' * C  where  C = ( C1 )
+*                                                  ( C2 )
+*
+               LASTV = MAX( K, ILADLC( K, M, V, LDV ) )
+               LASTC = ILADLC( LASTV, N, C, LDC )
+*
+*              W := C' * V'  =  (C1'*V1' + C2'*V2') (stored in WORK)
+*
+*              W := C1'
+*
+               DO 130 J = 1, K
+                  CALL DCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+  130          CONTINUE
+*
+*              W := W * V1'
+*
+               CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C2'*V2'
+*
+                  CALL DGEMM( 'Transpose', 'Transpose',
+     $                 LASTC, K, LASTV-K,
+     $                 ONE, C( K+1, 1 ), LDC, V( 1, K+1 ), LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T'  or  W * T
+*
+               CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - V' * W'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C2 := C2 - V2' * W'
+*
+                  CALL DGEMM( 'Transpose', 'Transpose',
+     $                 LASTV-K, LASTC, K,
+     $                 -ONE, V( 1, K+1 ), LDV, WORK, LDWORK,
+     $                 ONE, C( K+1, 1 ), LDC )
+               END IF
+*
+*              W := W * V1
+*
+               CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+*
+*              C1 := C1 - W'
+*
+               DO 150 J = 1, K
+                  DO 140 I = 1, LASTC
+                     C( J, I ) = C( J, I ) - WORK( I, J )
+  140             CONTINUE
+  150          CONTINUE
+*
+            ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*              Form  C * H  or  C * H'  where  C = ( C1  C2 )
+*
+               LASTV = MAX( K, ILADLC( K, N, V, LDV ) )
+               LASTC = ILADLR( M, LASTV, C, LDC )
+*
+*              W := C * V'  =  (C1*V1' + C2*V2')  (stored in WORK)
+*
+*              W := C1
+*
+               DO 160 J = 1, K
+                  CALL DCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 )
+  160          CONTINUE
+*
+*              W := W * V1'
+*
+               CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C2 * V2'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTC, K, LASTV-K,
+     $                 ONE, C( 1, K+1 ), LDC, V( 1, K+1 ), LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T  or  W * T'
+*
+               CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - W * V
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C2 := C2 - W * V2
+*
+                  CALL DGEMM( 'No transpose', 'No transpose',
+     $                 LASTC, LASTV-K, K,
+     $                 -ONE, WORK, LDWORK, V( 1, K+1 ), LDV,
+     $                 ONE, C( 1, K+1 ), LDC )
+               END IF
+*
+*              W := W * V1
+*
+               CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V, LDV, WORK, LDWORK )
+*
+*              C1 := C1 - W
+*
+               DO 180 J = 1, K
+                  DO 170 I = 1, LASTC
+                     C( I, J ) = C( I, J ) - WORK( I, J )
+  170             CONTINUE
+  180          CONTINUE
+*
+            END IF
+*
+         ELSE
+*
+*           Let  V =  ( V1  V2 )    (V2: last K columns)
+*           where  V2  is unit lower triangular.
+*
+            IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*              Form  H * C  or  H' * C  where  C = ( C1 )
+*                                                  ( C2 )
+*
+               LASTV = MAX( K, ILADLC( K, M, V, LDV ) )
+               LASTC = ILADLC( LASTV, N, C, LDC )
+*
+*              W := C' * V'  =  (C1'*V1' + C2'*V2') (stored in WORK)
+*
+*              W := C2'
+*
+               DO 190 J = 1, K
+                  CALL DCOPY( LASTC, C( LASTV-K+J, 1 ), LDC,
+     $                 WORK( 1, J ), 1 )
+  190          CONTINUE
+*
+*              W := W * V2'
+*
+               CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V( 1, LASTV-K+1 ), LDV,
+     $              WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C1'*V1'
+*
+                  CALL DGEMM( 'Transpose', 'Transpose',
+     $                 LASTC, K, LASTV-K, ONE, C, LDC, V, LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T'  or  W * T
+*
+               CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - V' * W'
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C1 := C1 - V1' * W'
+*
+                  CALL DGEMM( 'Transpose', 'Transpose',
+     $                 LASTV-K, LASTC, K, -ONE, V, LDV, WORK, LDWORK,
+     $                 ONE, C, LDC )
+               END IF
+*
+*              W := W * V2
+*
+               CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V( 1, LASTV-K+1 ), LDV,
+     $              WORK, LDWORK )
+*
+*              C2 := C2 - W'
+*
+               DO 210 J = 1, K
+                  DO 200 I = 1, LASTC
+                     C( LASTV-K+J, I ) = C( LASTV-K+J, I ) - WORK(I, J)
+  200             CONTINUE
+  210          CONTINUE
+*
+            ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*              Form  C * H  or  C * H'  where  C = ( C1  C2 )
+*
+               LASTV = MAX( K, ILADLC( K, N, V, LDV ) )
+               LASTC = ILADLR( M, LASTV, C, LDC )
+*
+*              W := C * V'  =  (C1*V1' + C2*V2')  (stored in WORK)
+*
+*              W := C2
+*
+               DO 220 J = 1, K
+                  CALL DCOPY( LASTC, C( 1, LASTV-K+J ), 1,
+     $                 WORK( 1, J ), 1 )
+  220          CONTINUE
+*
+*              W := W * V2'
+*
+               CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit',
+     $              LASTC, K, ONE, V( 1, LASTV-K+1 ), LDV,
+     $              WORK, LDWORK )
+               IF( LASTV.GT.K ) THEN
+*
+*                 W := W + C1 * V1'
+*
+                  CALL DGEMM( 'No transpose', 'Transpose',
+     $                 LASTC, K, LASTV-K, ONE, C, LDC, V, LDV,
+     $                 ONE, WORK, LDWORK )
+               END IF
+*
+*              W := W * T  or  W * T'
+*
+               CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit',
+     $              LASTC, K, ONE, T, LDT, WORK, LDWORK )
+*
+*              C := C - W * V
+*
+               IF( LASTV.GT.K ) THEN
+*
+*                 C1 := C1 - W * V1
+*
+                  CALL DGEMM( 'No transpose', 'No transpose',
+     $                 LASTC, LASTV-K, K, -ONE, WORK, LDWORK, V, LDV,
+     $                 ONE, C, LDC )
+               END IF
+*
+*              W := W * V2
+*
+               CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit',
+     $              LASTC, K, ONE, V( 1, LASTV-K+1 ), LDV,
+     $              WORK, LDWORK )
+*
+*              C1 := C1 - W
+*
+               DO 240 J = 1, K
+                  DO 230 I = 1, LASTC
+                     C( I, LASTV-K+J ) = C( I, LASTV-K+J ) - WORK(I, J)
+  230             CONTINUE
+  240          CONTINUE
+*
+            END IF
+*
+         END IF
+      END IF
+*
+      RETURN
+*
+*     End of DLARFB
+*
+      END
Index: src/lapack/double/dlapy2.f
===================================================================
--- src/lapack/double/dlapy2.f	(revision 0)
+++ src/lapack/double/dlapy2.f	(revision 1)
@@ -0,0 +1,54 @@
+      DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   X, Y
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
+*  overflow.
+*
+*  Arguments
+*  =========
+*
+*  X       (input) DOUBLE PRECISION
+*  Y       (input) DOUBLE PRECISION
+*          X and Y specify the values x and y.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      DOUBLE PRECISION   W, XABS, YABS, Z
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      XABS = ABS( X )
+      YABS = ABS( Y )
+      W = MAX( XABS, YABS )
+      Z = MIN( XABS, YABS )
+      IF( Z.EQ.ZERO ) THEN
+         DLAPY2 = W
+      ELSE
+         DLAPY2 = W*SQRT( ONE+( Z / W )**2 )
+      END IF
+      RETURN
+*
+*     End of DLAPY2
+*
+      END
Index: src/lapack/double/dormlq.f
===================================================================
--- src/lapack/double/dormlq.f	(revision 0)
+++ src/lapack/double/dormlq.f	(revision 1)
@@ -0,0 +1,268 @@
+      SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, LDA, LDC, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORMLQ overwrites the general real M-by-N matrix C with
+*
+*                  SIDE = 'L'     SIDE = 'R'
+*  TRANS = 'N':      Q * C          C * Q
+*  TRANS = 'T':      Q**T * C       C * Q**T
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(k) . . . H(2) H(1)
+*
+*  as returned by DGELQF. Q is of order M if SIDE = 'L' and of order N
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q**T from the Left;
+*          = 'R': apply Q or Q**T from the Right.
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N':  No transpose, apply Q;
+*          = 'T':  Transpose, apply Q**T.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension
+*                               (LDA,M) if SIDE = 'L',
+*                               (LDA,N) if SIDE = 'R'
+*          The i-th row must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DGELQF in the first k rows of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,K).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DGELQF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.
+*          If SIDE = 'L', LWORK >= max(1,N);
+*          if SIDE = 'R', LWORK >= max(1,M).
+*          For optimum performance LWORK >= N*NB if SIDE = 'L', and
+*          LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+*          blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            NBMAX, LDT
+      PARAMETER          ( NBMAX = 64, LDT = NBMAX+1 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LEFT, LQUERY, NOTRAN
+      CHARACTER          TRANST
+      INTEGER            I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+     $                   LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+*     ..
+*     .. Local Arrays ..
+      DOUBLE PRECISION   T( LDT, NBMAX )
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILAENV
+      EXTERNAL           LSAME, ILAENV
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARFB, DLARFT, DORML2, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+      LQUERY = ( LWORK.EQ.-1 )
+*
+*     NQ is the order of Q and NW is the minimum dimension of WORK
+*
+      IF( LEFT ) THEN
+         NQ = M
+         NW = N
+      ELSE
+         NQ = N
+         NW = M
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+         INFO = -7
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -10
+      ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+         INFO = -12
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+*
+*        Determine the block size.  NB may be at most NBMAX, where NBMAX
+*        is used to define the local array T.
+*
+         NB = MIN( NBMAX, ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N, K,
+     $        -1 ) )
+         LWKOPT = MAX( 1, NW )*NB
+         WORK( 1 ) = LWKOPT
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORMLQ', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      LDWORK = NW
+      IF( NB.GT.1 .AND. NB.LT.K ) THEN
+         IWS = NW*NB
+         IF( LWORK.LT.IWS ) THEN
+            NB = LWORK / LDWORK
+            NBMIN = MAX( 2, ILAENV( 2, 'DORMLQ', SIDE // TRANS, M, N, K,
+     $              -1 ) )
+         END IF
+      ELSE
+         IWS = NW
+      END IF
+*
+      IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+*        Use unblocked code
+*
+         CALL DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+     $                IINFO )
+      ELSE
+*
+*        Use blocked code
+*
+         IF( ( LEFT .AND. NOTRAN ) .OR.
+     $       ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN
+            I1 = 1
+            I2 = K
+            I3 = NB
+         ELSE
+            I1 = ( ( K-1 ) / NB )*NB + 1
+            I2 = 1
+            I3 = -NB
+         END IF
+*
+         IF( LEFT ) THEN
+            NI = N
+            JC = 1
+         ELSE
+            MI = M
+            IC = 1
+         END IF
+*
+         IF( NOTRAN ) THEN
+            TRANST = 'T'
+         ELSE
+            TRANST = 'N'
+         END IF
+*
+         DO 10 I = I1, I2, I3
+            IB = MIN( NB, K-I+1 )
+*
+*           Form the triangular factor of the block reflector
+*           H = H(i) H(i+1) . . . H(i+ib-1)
+*
+            CALL DLARFT( 'Forward', 'Rowwise', NQ-I+1, IB, A( I, I ),
+     $                   LDA, TAU( I ), T, LDT )
+            IF( LEFT ) THEN
+*
+*              H or H' is applied to C(i:m,1:n)
+*
+               MI = M - I + 1
+               IC = I
+            ELSE
+*
+*              H or H' is applied to C(1:m,i:n)
+*
+               NI = N - I + 1
+               JC = I
+            END IF
+*
+*           Apply H or H'
+*
+            CALL DLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB,
+     $                   A( I, I ), LDA, T, LDT, C( IC, JC ), LDC, WORK,
+     $                   LDWORK )
+   10    CONTINUE
+      END IF
+      WORK( 1 ) = LWKOPT
+      RETURN
+*
+*     End of DORMLQ
+*
+      END
Index: src/lapack/double/dlaed6.f
===================================================================
--- src/lapack/double/dlaed6.f	(revision 0)
+++ src/lapack/double/dlaed6.f	(revision 1)
@@ -0,0 +1,328 @@
+      SUBROUTINE DLAED6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     February 2007
+*
+*     .. Scalar Arguments ..
+      LOGICAL            ORGATI
+      INTEGER            INFO, KNITER
+      DOUBLE PRECISION   FINIT, RHO, TAU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( 3 ), Z( 3 )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAED6 computes the positive or negative root (closest to the origin)
+*  of
+*                   z(1)        z(2)        z(3)
+*  f(x) =   rho + --------- + ---------- + ---------
+*                  d(1)-x      d(2)-x      d(3)-x
+*
+*  It is assumed that
+*
+*        if ORGATI = .true. the root is between d(2) and d(3);
+*        otherwise it is between d(1) and d(2)
+*
+*  This routine will be called by DLAED4 when necessary. In most cases,
+*  the root sought is the smallest in magnitude, though it might not be
+*  in some extremely rare situations.
+*
+*  Arguments
+*  =========
+*
+*  KNITER       (input) INTEGER
+*               Refer to DLAED4 for its significance.
+*
+*  ORGATI       (input) LOGICAL
+*               If ORGATI is true, the needed root is between d(2) and
+*               d(3); otherwise it is between d(1) and d(2).  See
+*               DLAED4 for further details.
+*
+*  RHO          (input) DOUBLE PRECISION
+*               Refer to the equation f(x) above.
+*
+*  D            (input) DOUBLE PRECISION array, dimension (3)
+*               D satisfies d(1) < d(2) < d(3).
+*
+*  Z            (input) DOUBLE PRECISION array, dimension (3)
+*               Each of the elements in z must be positive.
+*
+*  FINIT        (input) DOUBLE PRECISION
+*               The value of f at 0. It is more accurate than the one
+*               evaluated inside this routine (if someone wants to do
+*               so).
+*
+*  TAU          (output) DOUBLE PRECISION
+*               The root of the equation f(x).
+*
+*  INFO         (output) INTEGER
+*               = 0: successful exit
+*               > 0: if INFO = 1, failure to converge
+*
+*  Further Details
+*  ===============
+*
+*  30/06/99: Based on contributions by
+*     Ren-Cang Li, Computer Science Division, University of California
+*     at Berkeley, USA
+*
+*  10/02/03: This version has a few statements commented out for thread
+*  safety (machine parameters are computed on each entry). SJH.
+*
+*  05/10/06: Modified from a new version of Ren-Cang Li, use
+*     Gragg-Thornton-Warner cubic convergent scheme for better stability.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            MAXIT
+      PARAMETER          ( MAXIT = 40 )
+      DOUBLE PRECISION   ZERO, ONE, TWO, THREE, FOUR, EIGHT
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0,
+     $                   THREE = 3.0D0, FOUR = 4.0D0, EIGHT = 8.0D0 )
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Local Arrays ..
+      DOUBLE PRECISION   DSCALE( 3 ), ZSCALE( 3 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            SCALE
+      INTEGER            I, ITER, NITER
+      DOUBLE PRECISION   A, B, BASE, C, DDF, DF, EPS, ERRETM, ETA, F,
+     $                   FC, SCLFAC, SCLINV, SMALL1, SMALL2, SMINV1,
+     $                   SMINV2, TEMP, TEMP1, TEMP2, TEMP3, TEMP4, 
+     $                   LBD, UBD
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, INT, LOG, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      INFO = 0
+*
+      IF( ORGATI ) THEN
+         LBD = D(2)
+         UBD = D(3)
+      ELSE
+         LBD = D(1)
+         UBD = D(2)
+      END IF
+      IF( FINIT .LT. ZERO )THEN
+         LBD = ZERO
+      ELSE
+         UBD = ZERO 
+      END IF
+*
+      NITER = 1
+      TAU = ZERO
+      IF( KNITER.EQ.2 ) THEN
+         IF( ORGATI ) THEN
+            TEMP = ( D( 3 )-D( 2 ) ) / TWO
+            C = RHO + Z( 1 ) / ( ( D( 1 )-D( 2 ) )-TEMP )
+            A = C*( D( 2 )+D( 3 ) ) + Z( 2 ) + Z( 3 )
+            B = C*D( 2 )*D( 3 ) + Z( 2 )*D( 3 ) + Z( 3 )*D( 2 )
+         ELSE
+            TEMP = ( D( 1 )-D( 2 ) ) / TWO
+            C = RHO + Z( 3 ) / ( ( D( 3 )-D( 2 ) )-TEMP )
+            A = C*( D( 1 )+D( 2 ) ) + Z( 1 ) + Z( 2 )
+            B = C*D( 1 )*D( 2 ) + Z( 1 )*D( 2 ) + Z( 2 )*D( 1 )
+         END IF
+         TEMP = MAX( ABS( A ), ABS( B ), ABS( C ) )
+         A = A / TEMP
+         B = B / TEMP
+         C = C / TEMP
+         IF( C.EQ.ZERO ) THEN
+            TAU = B / A
+         ELSE IF( A.LE.ZERO ) THEN
+            TAU = ( A-SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+         ELSE
+            TAU = TWO*B / ( A+SQRT( ABS( A*A-FOUR*B*C ) ) )
+         END IF
+         IF( TAU .LT. LBD .OR. TAU .GT. UBD )
+     $      TAU = ( LBD+UBD )/TWO
+         IF( D(1).EQ.TAU .OR. D(2).EQ.TAU .OR. D(3).EQ.TAU ) THEN
+            TAU = ZERO
+         ELSE
+            TEMP = FINIT + TAU*Z(1)/( D(1)*( D( 1 )-TAU ) ) +
+     $                     TAU*Z(2)/( D(2)*( D( 2 )-TAU ) ) +
+     $                     TAU*Z(3)/( D(3)*( D( 3 )-TAU ) )
+            IF( TEMP .LE. ZERO )THEN
+               LBD = TAU
+            ELSE
+               UBD = TAU
+            END IF
+            IF( ABS( FINIT ).LE.ABS( TEMP ) )
+     $         TAU = ZERO
+         END IF
+      END IF
+*
+*     get machine parameters for possible scaling to avoid overflow
+*
+*     modified by Sven: parameters SMALL1, SMINV1, SMALL2,
+*     SMINV2, EPS are not SAVEd anymore between one call to the
+*     others but recomputed at each call
+*
+      EPS = DLAMCH( 'Epsilon' )
+      BASE = DLAMCH( 'Base' )
+      SMALL1 = BASE**( INT( LOG( DLAMCH( 'SafMin' ) ) / LOG( BASE ) /
+     $         THREE ) )
+      SMINV1 = ONE / SMALL1
+      SMALL2 = SMALL1*SMALL1
+      SMINV2 = SMINV1*SMINV1
+*
+*     Determine if scaling of inputs necessary to avoid overflow
+*     when computing 1/TEMP**3
+*
+      IF( ORGATI ) THEN
+         TEMP = MIN( ABS( D( 2 )-TAU ), ABS( D( 3 )-TAU ) )
+      ELSE
+         TEMP = MIN( ABS( D( 1 )-TAU ), ABS( D( 2 )-TAU ) )
+      END IF
+      SCALE = .FALSE.
+      IF( TEMP.LE.SMALL1 ) THEN
+         SCALE = .TRUE.
+         IF( TEMP.LE.SMALL2 ) THEN
+*
+*        Scale up by power of radix nearest 1/SAFMIN**(2/3)
+*
+            SCLFAC = SMINV2
+            SCLINV = SMALL2
+         ELSE
+*
+*        Scale up by power of radix nearest 1/SAFMIN**(1/3)
+*
+            SCLFAC = SMINV1
+            SCLINV = SMALL1
+         END IF
+*
+*        Scaling up safe because D, Z, TAU scaled elsewhere to be O(1)
+*
+         DO 10 I = 1, 3
+            DSCALE( I ) = D( I )*SCLFAC
+            ZSCALE( I ) = Z( I )*SCLFAC
+   10    CONTINUE
+         TAU = TAU*SCLFAC
+         LBD = LBD*SCLFAC
+         UBD = UBD*SCLFAC
+      ELSE
+*
+*        Copy D and Z to DSCALE and ZSCALE
+*
+         DO 20 I = 1, 3
+            DSCALE( I ) = D( I )
+            ZSCALE( I ) = Z( I )
+   20    CONTINUE
+      END IF
+*
+      FC = ZERO
+      DF = ZERO
+      DDF = ZERO
+      DO 30 I = 1, 3
+         TEMP = ONE / ( DSCALE( I )-TAU )
+         TEMP1 = ZSCALE( I )*TEMP
+         TEMP2 = TEMP1*TEMP
+         TEMP3 = TEMP2*TEMP
+         FC = FC + TEMP1 / DSCALE( I )
+         DF = DF + TEMP2
+         DDF = DDF + TEMP3
+   30 CONTINUE
+      F = FINIT + TAU*FC
+*
+      IF( ABS( F ).LE.ZERO )
+     $   GO TO 60
+      IF( F .LE. ZERO )THEN
+         LBD = TAU
+      ELSE
+         UBD = TAU
+      END IF
+*
+*        Iteration begins -- Use Gragg-Thornton-Warner cubic convergent
+*                            scheme
+*
+*     It is not hard to see that
+*
+*           1) Iterations will go up monotonically
+*              if FINIT < 0;
+*
+*           2) Iterations will go down monotonically
+*              if FINIT > 0.
+*
+      ITER = NITER + 1
+*
+      DO 50 NITER = ITER, MAXIT
+*
+         IF( ORGATI ) THEN
+            TEMP1 = DSCALE( 2 ) - TAU
+            TEMP2 = DSCALE( 3 ) - TAU
+         ELSE
+            TEMP1 = DSCALE( 1 ) - TAU
+            TEMP2 = DSCALE( 2 ) - TAU
+         END IF
+         A = ( TEMP1+TEMP2 )*F - TEMP1*TEMP2*DF
+         B = TEMP1*TEMP2*F
+         C = F - ( TEMP1+TEMP2 )*DF + TEMP1*TEMP2*DDF
+         TEMP = MAX( ABS( A ), ABS( B ), ABS( C ) )
+         A = A / TEMP
+         B = B / TEMP
+         C = C / TEMP
+         IF( C.EQ.ZERO ) THEN
+            ETA = B / A
+         ELSE IF( A.LE.ZERO ) THEN
+            ETA = ( A-SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+         ELSE
+            ETA = TWO*B / ( A+SQRT( ABS( A*A-FOUR*B*C ) ) )
+         END IF
+         IF( F*ETA.GE.ZERO ) THEN
+            ETA = -F / DF
+         END IF
+*
+         TAU = TAU + ETA
+         IF( TAU .LT. LBD .OR. TAU .GT. UBD )
+     $      TAU = ( LBD + UBD )/TWO 
+*
+         FC = ZERO
+         ERRETM = ZERO
+         DF = ZERO
+         DDF = ZERO
+         DO 40 I = 1, 3
+            TEMP = ONE / ( DSCALE( I )-TAU )
+            TEMP1 = ZSCALE( I )*TEMP
+            TEMP2 = TEMP1*TEMP
+            TEMP3 = TEMP2*TEMP
+            TEMP4 = TEMP1 / DSCALE( I )
+            FC = FC + TEMP4
+            ERRETM = ERRETM + ABS( TEMP4 )
+            DF = DF + TEMP2
+            DDF = DDF + TEMP3
+   40    CONTINUE
+         F = FINIT + TAU*FC
+         ERRETM = EIGHT*( ABS( FINIT )+ABS( TAU )*ERRETM ) +
+     $            ABS( TAU )*DF
+         IF( ABS( F ).LE.EPS*ERRETM )
+     $      GO TO 60
+         IF( F .LE. ZERO )THEN
+            LBD = TAU
+         ELSE
+            UBD = TAU
+         END IF
+   50 CONTINUE
+      INFO = 1
+   60 CONTINUE
+*
+*     Undo scaling
+*
+      IF( SCALE )
+     $   TAU = TAU*SCLINV
+      RETURN
+*
+*     End of DLAED6
+*
+      END
Index: src/lapack/double/dorml2.f
===================================================================
--- src/lapack/double/dorml2.f	(revision 0)
+++ src/lapack/double/dorml2.f	(revision 1)
@@ -0,0 +1,198 @@
+      SUBROUTINE DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, LDA, LDC, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORML2 overwrites the general real m by n matrix C with
+*
+*        Q * C  if SIDE = 'L' and TRANS = 'N', or
+*
+*        Q'* C  if SIDE = 'L' and TRANS = 'T', or
+*
+*        C * Q  if SIDE = 'R' and TRANS = 'N', or
+*
+*        C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(k) . . . H(2) H(1)
+*
+*  as returned by DGELQF. Q is of order m if SIDE = 'L' and of order n
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q' from the Left
+*          = 'R': apply Q or Q' from the Right
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N': apply Q  (No transpose)
+*          = 'T': apply Q' (Transpose)
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension
+*                               (LDA,M) if SIDE = 'L',
+*                               (LDA,N) if SIDE = 'R'
+*          The i-th row must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DGELQF in the first k rows of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,K).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DGELQF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the m by n matrix C.
+*          On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension
+*                                   (N) if SIDE = 'L',
+*                                   (M) if SIDE = 'R'
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LEFT, NOTRAN
+      INTEGER            I, I1, I2, I3, IC, JC, MI, NI, NQ
+      DOUBLE PRECISION   AII
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+*
+*     NQ is the order of Q
+*
+      IF( LEFT ) THEN
+         NQ = M
+      ELSE
+         NQ = N
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+         INFO = -7
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -10
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORML2', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+     $   RETURN
+*
+      IF( ( LEFT .AND. NOTRAN ) .OR. ( .NOT.LEFT .AND. .NOT.NOTRAN ) )
+     $     THEN
+         I1 = 1
+         I2 = K
+         I3 = 1
+      ELSE
+         I1 = K
+         I2 = 1
+         I3 = -1
+      END IF
+*
+      IF( LEFT ) THEN
+         NI = N
+         JC = 1
+      ELSE
+         MI = M
+         IC = 1
+      END IF
+*
+      DO 10 I = I1, I2, I3
+         IF( LEFT ) THEN
+*
+*           H(i) is applied to C(i:m,1:n)
+*
+            MI = M - I + 1
+            IC = I
+         ELSE
+*
+*           H(i) is applied to C(1:m,i:n)
+*
+            NI = N - I + 1
+            JC = I
+         END IF
+*
+*        Apply H(i)
+*
+         AII = A( I, I )
+         A( I, I ) = ONE
+         CALL DLARF( SIDE, MI, NI, A( I, I ), LDA, TAU( I ),
+     $               C( IC, JC ), LDC, WORK )
+         A( I, I ) = AII
+   10 CONTINUE
+      RETURN
+*
+*     End of DORML2
+*
+      END
Index: src/lapack/double/dormr3.f
===================================================================
--- src/lapack/double/dormr3.f	(revision 0)
+++ src/lapack/double/dormr3.f	(revision 1)
@@ -0,0 +1,207 @@
+      SUBROUTINE DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+     $                   WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, L, LDA, LDC, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORMR3 overwrites the general real m by n matrix C with
+*
+*        Q * C  if SIDE = 'L' and TRANS = 'N', or
+*
+*        Q'* C  if SIDE = 'L' and TRANS = 'T', or
+*
+*        C * Q  if SIDE = 'R' and TRANS = 'N', or
+*
+*        C * Q' if SIDE = 'R' and TRANS = 'T',
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(1) H(2) . . . H(k)
+*
+*  as returned by DTZRZF. Q is of order m if SIDE = 'L' and of order n
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q' from the Left
+*          = 'R': apply Q or Q' from the Right
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N': apply Q  (No transpose)
+*          = 'T': apply Q' (Transpose)
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  L       (input) INTEGER
+*          The number of columns of the matrix A containing
+*          the meaningful part of the Householder reflectors.
+*          If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension
+*                               (LDA,M) if SIDE = 'L',
+*                               (LDA,N) if SIDE = 'R'
+*          The i-th row must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DTZRZF in the last k rows of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,K).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DTZRZF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the m-by-n matrix C.
+*          On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension
+*                                   (N) if SIDE = 'L',
+*                                   (M) if SIDE = 'R'
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            LEFT, NOTRAN
+      INTEGER            I, I1, I2, I3, IC, JA, JC, MI, NI, NQ
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARZ, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+*
+*     NQ is the order of Q
+*
+      IF( LEFT ) THEN
+         NQ = M
+      ELSE
+         NQ = N
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+     $         ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+         INFO = -6
+      ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+         INFO = -8
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -11
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORMR3', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 )
+     $   RETURN
+*
+      IF( ( LEFT .AND. .NOT.NOTRAN .OR. .NOT.LEFT .AND. NOTRAN ) ) THEN
+         I1 = 1
+         I2 = K
+         I3 = 1
+      ELSE
+         I1 = K
+         I2 = 1
+         I3 = -1
+      END IF
+*
+      IF( LEFT ) THEN
+         NI = N
+         JA = M - L + 1
+         JC = 1
+      ELSE
+         MI = M
+         JA = N - L + 1
+         IC = 1
+      END IF
+*
+      DO 10 I = I1, I2, I3
+         IF( LEFT ) THEN
+*
+*           H(i) or H(i)' is applied to C(i:m,1:n)
+*
+            MI = M - I + 1
+            IC = I
+         ELSE
+*
+*           H(i) or H(i)' is applied to C(1:m,i:n)
+*
+            NI = N - I + 1
+            JC = I
+         END IF
+*
+*        Apply H(i) or H(i)'
+*
+         CALL DLARZ( SIDE, MI, NI, L, A( I, JA ), LDA, TAU( I ),
+     $               C( IC, JC ), LDC, WORK )
+*
+   10 CONTINUE
+*
+      RETURN
+*
+*     End of DORMR3
+*
+      END
Index: src/lapack/double/dlabad.f
===================================================================
--- src/lapack/double/dlabad.f	(revision 0)
+++ src/lapack/double/dlabad.f	(revision 1)
@@ -0,0 +1,56 @@
+      SUBROUTINE DLABAD( SMALL, LARGE )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   LARGE, SMALL
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLABAD takes as input the values computed by DLAMCH for underflow and
+*  overflow, and returns the square root of each of these values if the
+*  log of LARGE is sufficiently large.  This subroutine is intended to
+*  identify machines with a large exponent range, such as the Crays, and
+*  redefine the underflow and overflow limits to be the square roots of
+*  the values computed by DLAMCH.  This subroutine is needed because
+*  DLAMCH does not compensate for poor arithmetic in the upper half of
+*  the exponent range, as is found on a Cray.
+*
+*  Arguments
+*  =========
+*
+*  SMALL   (input/output) DOUBLE PRECISION
+*          On entry, the underflow threshold as computed by DLAMCH.
+*          On exit, if LOG10(LARGE) is sufficiently large, the square
+*          root of SMALL, otherwise unchanged.
+*
+*  LARGE   (input/output) DOUBLE PRECISION
+*          On entry, the overflow threshold as computed by DLAMCH.
+*          On exit, if LOG10(LARGE) is sufficiently large, the square
+*          root of LARGE, otherwise unchanged.
+*
+*  =====================================================================
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC          LOG10, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+*     If it looks like we're on a Cray, take the square root of
+*     SMALL and LARGE to avoid overflow and underflow problems.
+*
+      IF( LOG10( LARGE ).GT.2000.D0 ) THEN
+         SMALL = SQRT( SMALL )
+         LARGE = SQRT( LARGE )
+      END IF
+*
+      RETURN
+*
+*     End of DLABAD
+*
+      END
Index: src/lapack/double/dlasdq.f
===================================================================
--- src/lapack/double/dlasdq.f	(revision 0)
+++ src/lapack/double/dlasdq.f	(revision 1)
@@ -0,0 +1,317 @@
+      SUBROUTINE DLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT,
+     $                   U, LDU, C, LDC, WORK, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          UPLO
+      INTEGER            INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU, SQRE
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), D( * ), E( * ), U( LDU, * ),
+     $                   VT( LDVT, * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASDQ computes the singular value decomposition (SVD) of a real
+*  (upper or lower) bidiagonal matrix with diagonal D and offdiagonal
+*  E, accumulating the transformations if desired. Letting B denote
+*  the input bidiagonal matrix, the algorithm computes orthogonal
+*  matrices Q and P such that B = Q * S * P' (P' denotes the transpose
+*  of P). The singular values S are overwritten on D.
+*
+*  The input matrix U  is changed to U  * Q  if desired.
+*  The input matrix VT is changed to P' * VT if desired.
+*  The input matrix C  is changed to Q' * C  if desired.
+*
+*  See "Computing  Small Singular Values of Bidiagonal Matrices With
+*  Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+*  LAPACK Working Note #3, for a detailed description of the algorithm.
+*
+*  Arguments
+*  =========
+*
+*  UPLO  (input) CHARACTER*1
+*        On entry, UPLO specifies whether the input bidiagonal matrix
+*        is upper or lower bidiagonal, and wether it is square are
+*        not.
+*           UPLO = 'U' or 'u'   B is upper bidiagonal.
+*           UPLO = 'L' or 'l'   B is lower bidiagonal.
+*
+*  SQRE  (input) INTEGER
+*        = 0: then the input matrix is N-by-N.
+*        = 1: then the input matrix is N-by-(N+1) if UPLU = 'U' and
+*             (N+1)-by-N if UPLU = 'L'.
+*
+*        The bidiagonal matrix has
+*        N = NL + NR + 1 rows and
+*        M = N + SQRE >= N columns.
+*
+*  N     (input) INTEGER
+*        On entry, N specifies the number of rows and columns
+*        in the matrix. N must be at least 0.
+*
+*  NCVT  (input) INTEGER
+*        On entry, NCVT specifies the number of columns of
+*        the matrix VT. NCVT must be at least 0.
+*
+*  NRU   (input) INTEGER
+*        On entry, NRU specifies the number of rows of
+*        the matrix U. NRU must be at least 0.
+*
+*  NCC   (input) INTEGER
+*        On entry, NCC specifies the number of columns of
+*        the matrix C. NCC must be at least 0.
+*
+*  D     (input/output) DOUBLE PRECISION array, dimension (N)
+*        On entry, D contains the diagonal entries of the
+*        bidiagonal matrix whose SVD is desired. On normal exit,
+*        D contains the singular values in ascending order.
+*
+*  E     (input/output) DOUBLE PRECISION array.
+*        dimension is (N-1) if SQRE = 0 and N if SQRE = 1.
+*        On entry, the entries of E contain the offdiagonal entries
+*        of the bidiagonal matrix whose SVD is desired. On normal
+*        exit, E will contain 0. If the algorithm does not converge,
+*        D and E will contain the diagonal and superdiagonal entries
+*        of a bidiagonal matrix orthogonally equivalent to the one
+*        given as input.
+*
+*  VT    (input/output) DOUBLE PRECISION array, dimension (LDVT, NCVT)
+*        On entry, contains a matrix which on exit has been
+*        premultiplied by P', dimension N-by-NCVT if SQRE = 0
+*        and (N+1)-by-NCVT if SQRE = 1 (not referenced if NCVT=0).
+*
+*  LDVT  (input) INTEGER
+*        On entry, LDVT specifies the leading dimension of VT as
+*        declared in the calling (sub) program. LDVT must be at
+*        least 1. If NCVT is nonzero LDVT must also be at least N.
+*
+*  U     (input/output) DOUBLE PRECISION array, dimension (LDU, N)
+*        On entry, contains a  matrix which on exit has been
+*        postmultiplied by Q, dimension NRU-by-N if SQRE = 0
+*        and NRU-by-(N+1) if SQRE = 1 (not referenced if NRU=0).
+*
+*  LDU   (input) INTEGER
+*        On entry, LDU  specifies the leading dimension of U as
+*        declared in the calling (sub) program. LDU must be at
+*        least max( 1, NRU ) .
+*
+*  C     (input/output) DOUBLE PRECISION array, dimension (LDC, NCC)
+*        On entry, contains an N-by-NCC matrix which on exit
+*        has been premultiplied by Q'  dimension N-by-NCC if SQRE = 0
+*        and (N+1)-by-NCC if SQRE = 1 (not referenced if NCC=0).
+*
+*  LDC   (input) INTEGER
+*        On entry, LDC  specifies the leading dimension of C as
+*        declared in the calling (sub) program. LDC must be at
+*        least 1. If NCC is nonzero, LDC must also be at least N.
+*
+*  WORK  (workspace) DOUBLE PRECISION array, dimension (4*N)
+*        Workspace. Only referenced if one of NCVT, NRU, or NCC is
+*        nonzero, and if N is at least 2.
+*
+*  INFO  (output) INTEGER
+*        On exit, a value of 0 indicates a successful exit.
+*        If INFO < 0, argument number -INFO is illegal.
+*        If INFO > 0, the algorithm did not converge, and INFO
+*        specifies how many superdiagonals did not converge.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            ROTATE
+      INTEGER            I, ISUB, IUPLO, J, NP1, SQRE1
+      DOUBLE PRECISION   CS, R, SMIN, SN
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DBDSQR, DLARTG, DLASR, DSWAP, XERBLA
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      IUPLO = 0
+      IF( LSAME( UPLO, 'U' ) )
+     $   IUPLO = 1
+      IF( LSAME( UPLO, 'L' ) )
+     $   IUPLO = 2
+      IF( IUPLO.EQ.0 ) THEN
+         INFO = -1
+      ELSE IF( ( SQRE.LT.0 ) .OR. ( SQRE.GT.1 ) ) THEN
+         INFO = -2
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( NCVT.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( NRU.LT.0 ) THEN
+         INFO = -5
+      ELSE IF( NCC.LT.0 ) THEN
+         INFO = -6
+      ELSE IF( ( NCVT.EQ.0 .AND. LDVT.LT.1 ) .OR.
+     $         ( NCVT.GT.0 .AND. LDVT.LT.MAX( 1, N ) ) ) THEN
+         INFO = -10
+      ELSE IF( LDU.LT.MAX( 1, NRU ) ) THEN
+         INFO = -12
+      ELSE IF( ( NCC.EQ.0 .AND. LDC.LT.1 ) .OR.
+     $         ( NCC.GT.0 .AND. LDC.LT.MAX( 1, N ) ) ) THEN
+         INFO = -14
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASDQ', -INFO )
+         RETURN
+      END IF
+      IF( N.EQ.0 )
+     $   RETURN
+*
+*     ROTATE is true if any singular vectors desired, false otherwise
+*
+      ROTATE = ( NCVT.GT.0 ) .OR. ( NRU.GT.0 ) .OR. ( NCC.GT.0 )
+      NP1 = N + 1
+      SQRE1 = SQRE
+*
+*     If matrix non-square upper bidiagonal, rotate to be lower
+*     bidiagonal.  The rotations are on the right.
+*
+      IF( ( IUPLO.EQ.1 ) .AND. ( SQRE1.EQ.1 ) ) THEN
+         DO 10 I = 1, N - 1
+            CALL DLARTG( D( I ), E( I ), CS, SN, R )
+            D( I ) = R
+            E( I ) = SN*D( I+1 )
+            D( I+1 ) = CS*D( I+1 )
+            IF( ROTATE ) THEN
+               WORK( I ) = CS
+               WORK( N+I ) = SN
+            END IF
+   10    CONTINUE
+         CALL DLARTG( D( N ), E( N ), CS, SN, R )
+         D( N ) = R
+         E( N ) = ZERO
+         IF( ROTATE ) THEN
+            WORK( N ) = CS
+            WORK( N+N ) = SN
+         END IF
+         IUPLO = 2
+         SQRE1 = 0
+*
+*        Update singular vectors if desired.
+*
+         IF( NCVT.GT.0 )
+     $      CALL DLASR( 'L', 'V', 'F', NP1, NCVT, WORK( 1 ),
+     $                  WORK( NP1 ), VT, LDVT )
+      END IF
+*
+*     If matrix lower bidiagonal, rotate to be upper bidiagonal
+*     by applying Givens rotations on the left.
+*
+      IF( IUPLO.EQ.2 ) THEN
+         DO 20 I = 1, N - 1
+            CALL DLARTG( D( I ), E( I ), CS, SN, R )
+            D( I ) = R
+            E( I ) = SN*D( I+1 )
+            D( I+1 ) = CS*D( I+1 )
+            IF( ROTATE ) THEN
+               WORK( I ) = CS
+               WORK( N+I ) = SN
+            END IF
+   20    CONTINUE
+*
+*        If matrix (N+1)-by-N lower bidiagonal, one additional
+*        rotation is needed.
+*
+         IF( SQRE1.EQ.1 ) THEN
+            CALL DLARTG( D( N ), E( N ), CS, SN, R )
+            D( N ) = R
+            IF( ROTATE ) THEN
+               WORK( N ) = CS
+               WORK( N+N ) = SN
+            END IF
+         END IF
+*
+*        Update singular vectors if desired.
+*
+         IF( NRU.GT.0 ) THEN
+            IF( SQRE1.EQ.0 ) THEN
+               CALL DLASR( 'R', 'V', 'F', NRU, N, WORK( 1 ),
+     $                     WORK( NP1 ), U, LDU )
+            ELSE
+               CALL DLASR( 'R', 'V', 'F', NRU, NP1, WORK( 1 ),
+     $                     WORK( NP1 ), U, LDU )
+            END IF
+         END IF
+         IF( NCC.GT.0 ) THEN
+            IF( SQRE1.EQ.0 ) THEN
+               CALL DLASR( 'L', 'V', 'F', N, NCC, WORK( 1 ),
+     $                     WORK( NP1 ), C, LDC )
+            ELSE
+               CALL DLASR( 'L', 'V', 'F', NP1, NCC, WORK( 1 ),
+     $                     WORK( NP1 ), C, LDC )
+            END IF
+         END IF
+      END IF
+*
+*     Call DBDSQR to compute the SVD of the reduced real
+*     N-by-N upper bidiagonal matrix.
+*
+      CALL DBDSQR( 'U', N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C,
+     $             LDC, WORK, INFO )
+*
+*     Sort the singular values into ascending order (insertion sort on
+*     singular values, but only one transposition per singular vector)
+*
+      DO 40 I = 1, N
+*
+*        Scan for smallest D(I).
+*
+         ISUB = I
+         SMIN = D( I )
+         DO 30 J = I + 1, N
+            IF( D( J ).LT.SMIN ) THEN
+               ISUB = J
+               SMIN = D( J )
+            END IF
+   30    CONTINUE
+         IF( ISUB.NE.I ) THEN
+*
+*           Swap singular values and vectors.
+*
+            D( ISUB ) = D( I )
+            D( I ) = SMIN
+            IF( NCVT.GT.0 )
+     $         CALL DSWAP( NCVT, VT( ISUB, 1 ), LDVT, VT( I, 1 ), LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DSWAP( NRU, U( 1, ISUB ), 1, U( 1, I ), 1 )
+            IF( NCC.GT.0 )
+     $         CALL DSWAP( NCC, C( ISUB, 1 ), LDC, C( I, 1 ), LDC )
+         END IF
+   40 CONTINUE
+*
+      RETURN
+*
+*     End of DLASDQ
+*
+      END
Index: src/lapack/double/dlasd4.f
===================================================================
--- src/lapack/double/dlasd4.f	(revision 0)
+++ src/lapack/double/dlasd4.f	(revision 1)
@@ -0,0 +1,891 @@
+      SUBROUTINE DLASD4( N, I, D, Z, DELTA, RHO, SIGMA, WORK, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            I, INFO, N
+      DOUBLE PRECISION   RHO, SIGMA
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( * ), DELTA( * ), WORK( * ), Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  This subroutine computes the square root of the I-th updated
+*  eigenvalue of a positive symmetric rank-one modification to
+*  a positive diagonal matrix whose entries are given as the squares
+*  of the corresponding entries in the array d, and that
+*
+*         0 <= D(i) < D(j)  for  i < j
+*
+*  and that RHO > 0. This is arranged by the calling routine, and is
+*  no loss in generality.  The rank-one modified system is thus
+*
+*         diag( D ) * diag( D ) +  RHO *  Z * Z_transpose.
+*
+*  where we assume the Euclidean norm of Z is 1.
+*
+*  The method consists of approximating the rational functions in the
+*  secular equation by simpler interpolating rational functions.
+*
+*  Arguments
+*  =========
+*
+*  N      (input) INTEGER
+*         The length of all arrays.
+*
+*  I      (input) INTEGER
+*         The index of the eigenvalue to be computed.  1 <= I <= N.
+*
+*  D      (input) DOUBLE PRECISION array, dimension ( N )
+*         The original eigenvalues.  It is assumed that they are in
+*         order, 0 <= D(I) < D(J)  for I < J.
+*
+*  Z      (input) DOUBLE PRECISION array, dimension ( N )
+*         The components of the updating vector.
+*
+*  DELTA  (output) DOUBLE PRECISION array, dimension ( N )
+*         If N .ne. 1, DELTA contains (D(j) - sigma_I) in its  j-th
+*         component.  If N = 1, then DELTA(1) = 1.  The vector DELTA
+*         contains the information necessary to construct the
+*         (singular) eigenvectors.
+*
+*  RHO    (input) DOUBLE PRECISION
+*         The scalar in the symmetric updating formula.
+*
+*  SIGMA  (output) DOUBLE PRECISION
+*         The computed sigma_I, the I-th updated eigenvalue.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension ( N )
+*         If N .ne. 1, WORK contains (D(j) + sigma_I) in its  j-th
+*         component.  If N = 1, then WORK( 1 ) = 1.
+*
+*  INFO   (output) INTEGER
+*         = 0:  successful exit
+*         > 0:  if INFO = 1, the updating process failed.
+*
+*  Internal Parameters
+*  ===================
+*
+*  Logical variable ORGATI (origin-at-i?) is used for distinguishing
+*  whether D(i) or D(i+1) is treated as the origin.
+*
+*            ORGATI = .true.    origin at i
+*            ORGATI = .false.   origin at i+1
+*
+*  Logical variable SWTCH3 (switch-for-3-poles?) is for noting
+*  if we are working with THREE poles!
+*
+*  MAXIT is the maximum number of iterations allowed for each
+*  eigenvalue.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ren-Cang Li, Computer Science Division, University of California
+*     at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            MAXIT
+      PARAMETER          ( MAXIT = 20 )
+      DOUBLE PRECISION   ZERO, ONE, TWO, THREE, FOUR, EIGHT, TEN
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0, TWO = 2.0D+0,
+     $                   THREE = 3.0D+0, FOUR = 4.0D+0, EIGHT = 8.0D+0,
+     $                   TEN = 10.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            ORGATI, SWTCH, SWTCH3
+      INTEGER            II, IIM1, IIP1, IP1, ITER, J, NITER
+      DOUBLE PRECISION   A, B, C, DELSQ, DELSQ2, DPHI, DPSI, DTIIM,
+     $                   DTIIP, DTIPSQ, DTISQ, DTNSQ, DTNSQ1, DW, EPS,
+     $                   ERRETM, ETA, PHI, PREW, PSI, RHOINV, SG2LB,
+     $                   SG2UB, TAU, TEMP, TEMP1, TEMP2, W
+*     ..
+*     .. Local Arrays ..
+      DOUBLE PRECISION   DD( 3 ), ZZ( 3 )
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLAED6, DLASD5
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+*     Since this routine is called in an inner loop, we do no argument
+*     checking.
+*
+*     Quick return for N=1 and 2.
+*
+      INFO = 0
+      IF( N.EQ.1 ) THEN
+*
+*        Presumably, I=1 upon entry
+*
+         SIGMA = SQRT( D( 1 )*D( 1 )+RHO*Z( 1 )*Z( 1 ) )
+         DELTA( 1 ) = ONE
+         WORK( 1 ) = ONE
+         RETURN
+      END IF
+      IF( N.EQ.2 ) THEN
+         CALL DLASD5( I, D, Z, DELTA, RHO, SIGMA, WORK )
+         RETURN
+      END IF
+*
+*     Compute machine epsilon
+*
+      EPS = DLAMCH( 'Epsilon' )
+      RHOINV = ONE / RHO
+*
+*     The case I = N
+*
+      IF( I.EQ.N ) THEN
+*
+*        Initialize some basic variables
+*
+         II = N - 1
+         NITER = 1
+*
+*        Calculate initial guess
+*
+         TEMP = RHO / TWO
+*
+*        If ||Z||_2 is not one, then TEMP should be set to
+*        RHO * ||Z||_2^2 / TWO
+*
+         TEMP1 = TEMP / ( D( N )+SQRT( D( N )*D( N )+TEMP ) )
+         DO 10 J = 1, N
+            WORK( J ) = D( J ) + D( N ) + TEMP1
+            DELTA( J ) = ( D( J )-D( N ) ) - TEMP1
+   10    CONTINUE
+*
+         PSI = ZERO
+         DO 20 J = 1, N - 2
+            PSI = PSI + Z( J )*Z( J ) / ( DELTA( J )*WORK( J ) )
+   20    CONTINUE
+*
+         C = RHOINV + PSI
+         W = C + Z( II )*Z( II ) / ( DELTA( II )*WORK( II ) ) +
+     $       Z( N )*Z( N ) / ( DELTA( N )*WORK( N ) )
+*
+         IF( W.LE.ZERO ) THEN
+            TEMP1 = SQRT( D( N )*D( N )+RHO )
+            TEMP = Z( N-1 )*Z( N-1 ) / ( ( D( N-1 )+TEMP1 )*
+     $             ( D( N )-D( N-1 )+RHO / ( D( N )+TEMP1 ) ) ) +
+     $             Z( N )*Z( N ) / RHO
+*
+*           The following TAU is to approximate
+*           SIGMA_n^2 - D( N )*D( N )
+*
+            IF( C.LE.TEMP ) THEN
+               TAU = RHO
+            ELSE
+               DELSQ = ( D( N )-D( N-1 ) )*( D( N )+D( N-1 ) )
+               A = -C*DELSQ + Z( N-1 )*Z( N-1 ) + Z( N )*Z( N )
+               B = Z( N )*Z( N )*DELSQ
+               IF( A.LT.ZERO ) THEN
+                  TAU = TWO*B / ( SQRT( A*A+FOUR*B*C )-A )
+               ELSE
+                  TAU = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
+               END IF
+            END IF
+*
+*           It can be proved that
+*               D(N)^2+RHO/2 <= SIGMA_n^2 < D(N)^2+TAU <= D(N)^2+RHO
+*
+         ELSE
+            DELSQ = ( D( N )-D( N-1 ) )*( D( N )+D( N-1 ) )
+            A = -C*DELSQ + Z( N-1 )*Z( N-1 ) + Z( N )*Z( N )
+            B = Z( N )*Z( N )*DELSQ
+*
+*           The following TAU is to approximate
+*           SIGMA_n^2 - D( N )*D( N )
+*
+            IF( A.LT.ZERO ) THEN
+               TAU = TWO*B / ( SQRT( A*A+FOUR*B*C )-A )
+            ELSE
+               TAU = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
+            END IF
+*
+*           It can be proved that
+*           D(N)^2 < D(N)^2+TAU < SIGMA(N)^2 < D(N)^2+RHO/2
+*
+         END IF
+*
+*        The following ETA is to approximate SIGMA_n - D( N )
+*
+         ETA = TAU / ( D( N )+SQRT( D( N )*D( N )+TAU ) )
+*
+         SIGMA = D( N ) + ETA
+         DO 30 J = 1, N
+            DELTA( J ) = ( D( J )-D( I ) ) - ETA
+            WORK( J ) = D( J ) + D( I ) + ETA
+   30    CONTINUE
+*
+*        Evaluate PSI and the derivative DPSI
+*
+         DPSI = ZERO
+         PSI = ZERO
+         ERRETM = ZERO
+         DO 40 J = 1, II
+            TEMP = Z( J ) / ( DELTA( J )*WORK( J ) )
+            PSI = PSI + Z( J )*TEMP
+            DPSI = DPSI + TEMP*TEMP
+            ERRETM = ERRETM + PSI
+   40    CONTINUE
+         ERRETM = ABS( ERRETM )
+*
+*        Evaluate PHI and the derivative DPHI
+*
+         TEMP = Z( N ) / ( DELTA( N )*WORK( N ) )
+         PHI = Z( N )*TEMP
+         DPHI = TEMP*TEMP
+         ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
+     $            ABS( TAU )*( DPSI+DPHI )
+*
+         W = RHOINV + PHI + PSI
+*
+*        Test for convergence
+*
+         IF( ABS( W ).LE.EPS*ERRETM ) THEN
+            GO TO 240
+         END IF
+*
+*        Calculate the new step
+*
+         NITER = NITER + 1
+         DTNSQ1 = WORK( N-1 )*DELTA( N-1 )
+         DTNSQ = WORK( N )*DELTA( N )
+         C = W - DTNSQ1*DPSI - DTNSQ*DPHI
+         A = ( DTNSQ+DTNSQ1 )*W - DTNSQ*DTNSQ1*( DPSI+DPHI )
+         B = DTNSQ*DTNSQ1*W
+         IF( C.LT.ZERO )
+     $      C = ABS( C )
+         IF( C.EQ.ZERO ) THEN
+            ETA = RHO - SIGMA*SIGMA
+         ELSE IF( A.GE.ZERO ) THEN
+            ETA = ( A+SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+         ELSE
+            ETA = TWO*B / ( A-SQRT( ABS( A*A-FOUR*B*C ) ) )
+         END IF
+*
+*        Note, eta should be positive if w is negative, and
+*        eta should be negative otherwise. However,
+*        if for some reason caused by roundoff, eta*w > 0,
+*        we simply use one Newton step instead. This way
+*        will guarantee eta*w < 0.
+*
+         IF( W*ETA.GT.ZERO )
+     $      ETA = -W / ( DPSI+DPHI )
+         TEMP = ETA - DTNSQ
+         IF( TEMP.GT.RHO )
+     $      ETA = RHO + DTNSQ
+*
+         TAU = TAU + ETA
+         ETA = ETA / ( SIGMA+SQRT( ETA+SIGMA*SIGMA ) )
+         DO 50 J = 1, N
+            DELTA( J ) = DELTA( J ) - ETA
+            WORK( J ) = WORK( J ) + ETA
+   50    CONTINUE
+*
+         SIGMA = SIGMA + ETA
+*
+*        Evaluate PSI and the derivative DPSI
+*
+         DPSI = ZERO
+         PSI = ZERO
+         ERRETM = ZERO
+         DO 60 J = 1, II
+            TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+            PSI = PSI + Z( J )*TEMP
+            DPSI = DPSI + TEMP*TEMP
+            ERRETM = ERRETM + PSI
+   60    CONTINUE
+         ERRETM = ABS( ERRETM )
+*
+*        Evaluate PHI and the derivative DPHI
+*
+         TEMP = Z( N ) / ( WORK( N )*DELTA( N ) )
+         PHI = Z( N )*TEMP
+         DPHI = TEMP*TEMP
+         ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
+     $            ABS( TAU )*( DPSI+DPHI )
+*
+         W = RHOINV + PHI + PSI
+*
+*        Main loop to update the values of the array   DELTA
+*
+         ITER = NITER + 1
+*
+         DO 90 NITER = ITER, MAXIT
+*
+*           Test for convergence
+*
+            IF( ABS( W ).LE.EPS*ERRETM ) THEN
+               GO TO 240
+            END IF
+*
+*           Calculate the new step
+*
+            DTNSQ1 = WORK( N-1 )*DELTA( N-1 )
+            DTNSQ = WORK( N )*DELTA( N )
+            C = W - DTNSQ1*DPSI - DTNSQ*DPHI
+            A = ( DTNSQ+DTNSQ1 )*W - DTNSQ1*DTNSQ*( DPSI+DPHI )
+            B = DTNSQ1*DTNSQ*W
+            IF( A.GE.ZERO ) THEN
+               ETA = ( A+SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+            ELSE
+               ETA = TWO*B / ( A-SQRT( ABS( A*A-FOUR*B*C ) ) )
+            END IF
+*
+*           Note, eta should be positive if w is negative, and
+*           eta should be negative otherwise. However,
+*           if for some reason caused by roundoff, eta*w > 0,
+*           we simply use one Newton step instead. This way
+*           will guarantee eta*w < 0.
+*
+            IF( W*ETA.GT.ZERO )
+     $         ETA = -W / ( DPSI+DPHI )
+            TEMP = ETA - DTNSQ
+            IF( TEMP.LE.ZERO )
+     $         ETA = ETA / TWO
+*
+            TAU = TAU + ETA
+            ETA = ETA / ( SIGMA+SQRT( ETA+SIGMA*SIGMA ) )
+            DO 70 J = 1, N
+               DELTA( J ) = DELTA( J ) - ETA
+               WORK( J ) = WORK( J ) + ETA
+   70       CONTINUE
+*
+            SIGMA = SIGMA + ETA
+*
+*           Evaluate PSI and the derivative DPSI
+*
+            DPSI = ZERO
+            PSI = ZERO
+            ERRETM = ZERO
+            DO 80 J = 1, II
+               TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+               PSI = PSI + Z( J )*TEMP
+               DPSI = DPSI + TEMP*TEMP
+               ERRETM = ERRETM + PSI
+   80       CONTINUE
+            ERRETM = ABS( ERRETM )
+*
+*           Evaluate PHI and the derivative DPHI
+*
+            TEMP = Z( N ) / ( WORK( N )*DELTA( N ) )
+            PHI = Z( N )*TEMP
+            DPHI = TEMP*TEMP
+            ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
+     $               ABS( TAU )*( DPSI+DPHI )
+*
+            W = RHOINV + PHI + PSI
+   90    CONTINUE
+*
+*        Return with INFO = 1, NITER = MAXIT and not converged
+*
+         INFO = 1
+         GO TO 240
+*
+*        End for the case I = N
+*
+      ELSE
+*
+*        The case for I < N
+*
+         NITER = 1
+         IP1 = I + 1
+*
+*        Calculate initial guess
+*
+         DELSQ = ( D( IP1 )-D( I ) )*( D( IP1 )+D( I ) )
+         DELSQ2 = DELSQ / TWO
+         TEMP = DELSQ2 / ( D( I )+SQRT( D( I )*D( I )+DELSQ2 ) )
+         DO 100 J = 1, N
+            WORK( J ) = D( J ) + D( I ) + TEMP
+            DELTA( J ) = ( D( J )-D( I ) ) - TEMP
+  100    CONTINUE
+*
+         PSI = ZERO
+         DO 110 J = 1, I - 1
+            PSI = PSI + Z( J )*Z( J ) / ( WORK( J )*DELTA( J ) )
+  110    CONTINUE
+*
+         PHI = ZERO
+         DO 120 J = N, I + 2, -1
+            PHI = PHI + Z( J )*Z( J ) / ( WORK( J )*DELTA( J ) )
+  120    CONTINUE
+         C = RHOINV + PSI + PHI
+         W = C + Z( I )*Z( I ) / ( WORK( I )*DELTA( I ) ) +
+     $       Z( IP1 )*Z( IP1 ) / ( WORK( IP1 )*DELTA( IP1 ) )
+*
+         IF( W.GT.ZERO ) THEN
+*
+*           d(i)^2 < the ith sigma^2 < (d(i)^2+d(i+1)^2)/2
+*
+*           We choose d(i) as origin.
+*
+            ORGATI = .TRUE.
+            SG2LB = ZERO
+            SG2UB = DELSQ2
+            A = C*DELSQ + Z( I )*Z( I ) + Z( IP1 )*Z( IP1 )
+            B = Z( I )*Z( I )*DELSQ
+            IF( A.GT.ZERO ) THEN
+               TAU = TWO*B / ( A+SQRT( ABS( A*A-FOUR*B*C ) ) )
+            ELSE
+               TAU = ( A-SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+            END IF
+*
+*           TAU now is an estimation of SIGMA^2 - D( I )^2. The
+*           following, however, is the corresponding estimation of
+*           SIGMA - D( I ).
+*
+            ETA = TAU / ( D( I )+SQRT( D( I )*D( I )+TAU ) )
+         ELSE
+*
+*           (d(i)^2+d(i+1)^2)/2 <= the ith sigma^2 < d(i+1)^2/2
+*
+*           We choose d(i+1) as origin.
+*
+            ORGATI = .FALSE.
+            SG2LB = -DELSQ2
+            SG2UB = ZERO
+            A = C*DELSQ - Z( I )*Z( I ) - Z( IP1 )*Z( IP1 )
+            B = Z( IP1 )*Z( IP1 )*DELSQ
+            IF( A.LT.ZERO ) THEN
+               TAU = TWO*B / ( A-SQRT( ABS( A*A+FOUR*B*C ) ) )
+            ELSE
+               TAU = -( A+SQRT( ABS( A*A+FOUR*B*C ) ) ) / ( TWO*C )
+            END IF
+*
+*           TAU now is an estimation of SIGMA^2 - D( IP1 )^2. The
+*           following, however, is the corresponding estimation of
+*           SIGMA - D( IP1 ).
+*
+            ETA = TAU / ( D( IP1 )+SQRT( ABS( D( IP1 )*D( IP1 )+
+     $            TAU ) ) )
+         END IF
+*
+         IF( ORGATI ) THEN
+            II = I
+            SIGMA = D( I ) + ETA
+            DO 130 J = 1, N
+               WORK( J ) = D( J ) + D( I ) + ETA
+               DELTA( J ) = ( D( J )-D( I ) ) - ETA
+  130       CONTINUE
+         ELSE
+            II = I + 1
+            SIGMA = D( IP1 ) + ETA
+            DO 140 J = 1, N
+               WORK( J ) = D( J ) + D( IP1 ) + ETA
+               DELTA( J ) = ( D( J )-D( IP1 ) ) - ETA
+  140       CONTINUE
+         END IF
+         IIM1 = II - 1
+         IIP1 = II + 1
+*
+*        Evaluate PSI and the derivative DPSI
+*
+         DPSI = ZERO
+         PSI = ZERO
+         ERRETM = ZERO
+         DO 150 J = 1, IIM1
+            TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+            PSI = PSI + Z( J )*TEMP
+            DPSI = DPSI + TEMP*TEMP
+            ERRETM = ERRETM + PSI
+  150    CONTINUE
+         ERRETM = ABS( ERRETM )
+*
+*        Evaluate PHI and the derivative DPHI
+*
+         DPHI = ZERO
+         PHI = ZERO
+         DO 160 J = N, IIP1, -1
+            TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+            PHI = PHI + Z( J )*TEMP
+            DPHI = DPHI + TEMP*TEMP
+            ERRETM = ERRETM + PHI
+  160    CONTINUE
+*
+         W = RHOINV + PHI + PSI
+*
+*        W is the value of the secular function with
+*        its ii-th element removed.
+*
+         SWTCH3 = .FALSE.
+         IF( ORGATI ) THEN
+            IF( W.LT.ZERO )
+     $         SWTCH3 = .TRUE.
+         ELSE
+            IF( W.GT.ZERO )
+     $         SWTCH3 = .TRUE.
+         END IF
+         IF( II.EQ.1 .OR. II.EQ.N )
+     $      SWTCH3 = .FALSE.
+*
+         TEMP = Z( II ) / ( WORK( II )*DELTA( II ) )
+         DW = DPSI + DPHI + TEMP*TEMP
+         TEMP = Z( II )*TEMP
+         W = W + TEMP
+         ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
+     $            THREE*ABS( TEMP ) + ABS( TAU )*DW
+*
+*        Test for convergence
+*
+         IF( ABS( W ).LE.EPS*ERRETM ) THEN
+            GO TO 240
+         END IF
+*
+         IF( W.LE.ZERO ) THEN
+            SG2LB = MAX( SG2LB, TAU )
+         ELSE
+            SG2UB = MIN( SG2UB, TAU )
+         END IF
+*
+*        Calculate the new step
+*
+         NITER = NITER + 1
+         IF( .NOT.SWTCH3 ) THEN
+            DTIPSQ = WORK( IP1 )*DELTA( IP1 )
+            DTISQ = WORK( I )*DELTA( I )
+            IF( ORGATI ) THEN
+               C = W - DTIPSQ*DW + DELSQ*( Z( I ) / DTISQ )**2
+            ELSE
+               C = W - DTISQ*DW - DELSQ*( Z( IP1 ) / DTIPSQ )**2
+            END IF
+            A = ( DTIPSQ+DTISQ )*W - DTIPSQ*DTISQ*DW
+            B = DTIPSQ*DTISQ*W
+            IF( C.EQ.ZERO ) THEN
+               IF( A.EQ.ZERO ) THEN
+                  IF( ORGATI ) THEN
+                     A = Z( I )*Z( I ) + DTIPSQ*DTIPSQ*( DPSI+DPHI )
+                  ELSE
+                     A = Z( IP1 )*Z( IP1 ) + DTISQ*DTISQ*( DPSI+DPHI )
+                  END IF
+               END IF
+               ETA = B / A
+            ELSE IF( A.LE.ZERO ) THEN
+               ETA = ( A-SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+            ELSE
+               ETA = TWO*B / ( A+SQRT( ABS( A*A-FOUR*B*C ) ) )
+            END IF
+         ELSE
+*
+*           Interpolation using THREE most relevant poles
+*
+            DTIIM = WORK( IIM1 )*DELTA( IIM1 )
+            DTIIP = WORK( IIP1 )*DELTA( IIP1 )
+            TEMP = RHOINV + PSI + PHI
+            IF( ORGATI ) THEN
+               TEMP1 = Z( IIM1 ) / DTIIM
+               TEMP1 = TEMP1*TEMP1
+               C = ( TEMP - DTIIP*( DPSI+DPHI ) ) -
+     $             ( D( IIM1 )-D( IIP1 ) )*( D( IIM1 )+D( IIP1 ) )*TEMP1
+               ZZ( 1 ) = Z( IIM1 )*Z( IIM1 )
+               IF( DPSI.LT.TEMP1 ) THEN
+                  ZZ( 3 ) = DTIIP*DTIIP*DPHI
+               ELSE
+                  ZZ( 3 ) = DTIIP*DTIIP*( ( DPSI-TEMP1 )+DPHI )
+               END IF
+            ELSE
+               TEMP1 = Z( IIP1 ) / DTIIP
+               TEMP1 = TEMP1*TEMP1
+               C = ( TEMP - DTIIM*( DPSI+DPHI ) ) -
+     $             ( D( IIP1 )-D( IIM1 ) )*( D( IIM1 )+D( IIP1 ) )*TEMP1
+               IF( DPHI.LT.TEMP1 ) THEN
+                  ZZ( 1 ) = DTIIM*DTIIM*DPSI
+               ELSE
+                  ZZ( 1 ) = DTIIM*DTIIM*( DPSI+( DPHI-TEMP1 ) )
+               END IF
+               ZZ( 3 ) = Z( IIP1 )*Z( IIP1 )
+            END IF
+            ZZ( 2 ) = Z( II )*Z( II )
+            DD( 1 ) = DTIIM
+            DD( 2 ) = DELTA( II )*WORK( II )
+            DD( 3 ) = DTIIP
+            CALL DLAED6( NITER, ORGATI, C, DD, ZZ, W, ETA, INFO )
+            IF( INFO.NE.0 )
+     $         GO TO 240
+         END IF
+*
+*        Note, eta should be positive if w is negative, and
+*        eta should be negative otherwise. However,
+*        if for some reason caused by roundoff, eta*w > 0,
+*        we simply use one Newton step instead. This way
+*        will guarantee eta*w < 0.
+*
+         IF( W*ETA.GE.ZERO )
+     $      ETA = -W / DW
+         IF( ORGATI ) THEN
+            TEMP1 = WORK( I )*DELTA( I )
+            TEMP = ETA - TEMP1
+         ELSE
+            TEMP1 = WORK( IP1 )*DELTA( IP1 )
+            TEMP = ETA - TEMP1
+         END IF
+         IF( TEMP.GT.SG2UB .OR. TEMP.LT.SG2LB ) THEN
+            IF( W.LT.ZERO ) THEN
+               ETA = ( SG2UB-TAU ) / TWO
+            ELSE
+               ETA = ( SG2LB-TAU ) / TWO
+            END IF
+         END IF
+*
+         TAU = TAU + ETA
+         ETA = ETA / ( SIGMA+SQRT( SIGMA*SIGMA+ETA ) )
+*
+         PREW = W
+*
+         SIGMA = SIGMA + ETA
+         DO 170 J = 1, N
+            WORK( J ) = WORK( J ) + ETA
+            DELTA( J ) = DELTA( J ) - ETA
+  170    CONTINUE
+*
+*        Evaluate PSI and the derivative DPSI
+*
+         DPSI = ZERO
+         PSI = ZERO
+         ERRETM = ZERO
+         DO 180 J = 1, IIM1
+            TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+            PSI = PSI + Z( J )*TEMP
+            DPSI = DPSI + TEMP*TEMP
+            ERRETM = ERRETM + PSI
+  180    CONTINUE
+         ERRETM = ABS( ERRETM )
+*
+*        Evaluate PHI and the derivative DPHI
+*
+         DPHI = ZERO
+         PHI = ZERO
+         DO 190 J = N, IIP1, -1
+            TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+            PHI = PHI + Z( J )*TEMP
+            DPHI = DPHI + TEMP*TEMP
+            ERRETM = ERRETM + PHI
+  190    CONTINUE
+*
+         TEMP = Z( II ) / ( WORK( II )*DELTA( II ) )
+         DW = DPSI + DPHI + TEMP*TEMP
+         TEMP = Z( II )*TEMP
+         W = RHOINV + PHI + PSI + TEMP
+         ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
+     $            THREE*ABS( TEMP ) + ABS( TAU )*DW
+*
+         IF( W.LE.ZERO ) THEN
+            SG2LB = MAX( SG2LB, TAU )
+         ELSE
+            SG2UB = MIN( SG2UB, TAU )
+         END IF
+*
+         SWTCH = .FALSE.
+         IF( ORGATI ) THEN
+            IF( -W.GT.ABS( PREW ) / TEN )
+     $         SWTCH = .TRUE.
+         ELSE
+            IF( W.GT.ABS( PREW ) / TEN )
+     $         SWTCH = .TRUE.
+         END IF
+*
+*        Main loop to update the values of the array   DELTA and WORK
+*
+         ITER = NITER + 1
+*
+         DO 230 NITER = ITER, MAXIT
+*
+*           Test for convergence
+*
+            IF( ABS( W ).LE.EPS*ERRETM ) THEN
+               GO TO 240
+            END IF
+*
+*           Calculate the new step
+*
+            IF( .NOT.SWTCH3 ) THEN
+               DTIPSQ = WORK( IP1 )*DELTA( IP1 )
+               DTISQ = WORK( I )*DELTA( I )
+               IF( .NOT.SWTCH ) THEN
+                  IF( ORGATI ) THEN
+                     C = W - DTIPSQ*DW + DELSQ*( Z( I ) / DTISQ )**2
+                  ELSE
+                     C = W - DTISQ*DW - DELSQ*( Z( IP1 ) / DTIPSQ )**2
+                  END IF
+               ELSE
+                  TEMP = Z( II ) / ( WORK( II )*DELTA( II ) )
+                  IF( ORGATI ) THEN
+                     DPSI = DPSI + TEMP*TEMP
+                  ELSE
+                     DPHI = DPHI + TEMP*TEMP
+                  END IF
+                  C = W - DTISQ*DPSI - DTIPSQ*DPHI
+               END IF
+               A = ( DTIPSQ+DTISQ )*W - DTIPSQ*DTISQ*DW
+               B = DTIPSQ*DTISQ*W
+               IF( C.EQ.ZERO ) THEN
+                  IF( A.EQ.ZERO ) THEN
+                     IF( .NOT.SWTCH ) THEN
+                        IF( ORGATI ) THEN
+                           A = Z( I )*Z( I ) + DTIPSQ*DTIPSQ*
+     $                         ( DPSI+DPHI )
+                        ELSE
+                           A = Z( IP1 )*Z( IP1 ) +
+     $                         DTISQ*DTISQ*( DPSI+DPHI )
+                        END IF
+                     ELSE
+                        A = DTISQ*DTISQ*DPSI + DTIPSQ*DTIPSQ*DPHI
+                     END IF
+                  END IF
+                  ETA = B / A
+               ELSE IF( A.LE.ZERO ) THEN
+                  ETA = ( A-SQRT( ABS( A*A-FOUR*B*C ) ) ) / ( TWO*C )
+               ELSE
+                  ETA = TWO*B / ( A+SQRT( ABS( A*A-FOUR*B*C ) ) )
+               END IF
+            ELSE
+*
+*              Interpolation using THREE most relevant poles
+*
+               DTIIM = WORK( IIM1 )*DELTA( IIM1 )
+               DTIIP = WORK( IIP1 )*DELTA( IIP1 )
+               TEMP = RHOINV + PSI + PHI
+               IF( SWTCH ) THEN
+                  C = TEMP - DTIIM*DPSI - DTIIP*DPHI
+                  ZZ( 1 ) = DTIIM*DTIIM*DPSI
+                  ZZ( 3 ) = DTIIP*DTIIP*DPHI
+               ELSE
+                  IF( ORGATI ) THEN
+                     TEMP1 = Z( IIM1 ) / DTIIM
+                     TEMP1 = TEMP1*TEMP1
+                     TEMP2 = ( D( IIM1 )-D( IIP1 ) )*
+     $                       ( D( IIM1 )+D( IIP1 ) )*TEMP1
+                     C = TEMP - DTIIP*( DPSI+DPHI ) - TEMP2
+                     ZZ( 1 ) = Z( IIM1 )*Z( IIM1 )
+                     IF( DPSI.LT.TEMP1 ) THEN
+                        ZZ( 3 ) = DTIIP*DTIIP*DPHI
+                     ELSE
+                        ZZ( 3 ) = DTIIP*DTIIP*( ( DPSI-TEMP1 )+DPHI )
+                     END IF
+                  ELSE
+                     TEMP1 = Z( IIP1 ) / DTIIP
+                     TEMP1 = TEMP1*TEMP1
+                     TEMP2 = ( D( IIP1 )-D( IIM1 ) )*
+     $                       ( D( IIM1 )+D( IIP1 ) )*TEMP1
+                     C = TEMP - DTIIM*( DPSI+DPHI ) - TEMP2
+                     IF( DPHI.LT.TEMP1 ) THEN
+                        ZZ( 1 ) = DTIIM*DTIIM*DPSI
+                     ELSE
+                        ZZ( 1 ) = DTIIM*DTIIM*( DPSI+( DPHI-TEMP1 ) )
+                     END IF
+                     ZZ( 3 ) = Z( IIP1 )*Z( IIP1 )
+                  END IF
+               END IF
+               DD( 1 ) = DTIIM
+               DD( 2 ) = DELTA( II )*WORK( II )
+               DD( 3 ) = DTIIP
+               CALL DLAED6( NITER, ORGATI, C, DD, ZZ, W, ETA, INFO )
+               IF( INFO.NE.0 )
+     $            GO TO 240
+            END IF
+*
+*           Note, eta should be positive if w is negative, and
+*           eta should be negative otherwise. However,
+*           if for some reason caused by roundoff, eta*w > 0,
+*           we simply use one Newton step instead. This way
+*           will guarantee eta*w < 0.
+*
+            IF( W*ETA.GE.ZERO )
+     $         ETA = -W / DW
+            IF( ORGATI ) THEN
+               TEMP1 = WORK( I )*DELTA( I )
+               TEMP = ETA - TEMP1
+            ELSE
+               TEMP1 = WORK( IP1 )*DELTA( IP1 )
+               TEMP = ETA - TEMP1
+            END IF
+            IF( TEMP.GT.SG2UB .OR. TEMP.LT.SG2LB ) THEN
+               IF( W.LT.ZERO ) THEN
+                  ETA = ( SG2UB-TAU ) / TWO
+               ELSE
+                  ETA = ( SG2LB-TAU ) / TWO
+               END IF
+            END IF
+*
+            TAU = TAU + ETA
+            ETA = ETA / ( SIGMA+SQRT( SIGMA*SIGMA+ETA ) )
+*
+            SIGMA = SIGMA + ETA
+            DO 200 J = 1, N
+               WORK( J ) = WORK( J ) + ETA
+               DELTA( J ) = DELTA( J ) - ETA
+  200       CONTINUE
+*
+            PREW = W
+*
+*           Evaluate PSI and the derivative DPSI
+*
+            DPSI = ZERO
+            PSI = ZERO
+            ERRETM = ZERO
+            DO 210 J = 1, IIM1
+               TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+               PSI = PSI + Z( J )*TEMP
+               DPSI = DPSI + TEMP*TEMP
+               ERRETM = ERRETM + PSI
+  210       CONTINUE
+            ERRETM = ABS( ERRETM )
+*
+*           Evaluate PHI and the derivative DPHI
+*
+            DPHI = ZERO
+            PHI = ZERO
+            DO 220 J = N, IIP1, -1
+               TEMP = Z( J ) / ( WORK( J )*DELTA( J ) )
+               PHI = PHI + Z( J )*TEMP
+               DPHI = DPHI + TEMP*TEMP
+               ERRETM = ERRETM + PHI
+  220       CONTINUE
+*
+            TEMP = Z( II ) / ( WORK( II )*DELTA( II ) )
+            DW = DPSI + DPHI + TEMP*TEMP
+            TEMP = Z( II )*TEMP
+            W = RHOINV + PHI + PSI + TEMP
+            ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
+     $               THREE*ABS( TEMP ) + ABS( TAU )*DW
+            IF( W*PREW.GT.ZERO .AND. ABS( W ).GT.ABS( PREW ) / TEN )
+     $         SWTCH = .NOT.SWTCH
+*
+            IF( W.LE.ZERO ) THEN
+               SG2LB = MAX( SG2LB, TAU )
+            ELSE
+               SG2UB = MIN( SG2UB, TAU )
+            END IF
+*
+  230    CONTINUE
+*
+*        Return with INFO = 1, NITER = MAXIT and not converged
+*
+         INFO = 1
+*
+      END IF
+*
+  240 CONTINUE
+      RETURN
+*
+*     End of DLASD4
+*
+      END
Index: src/lapack/double/dlarft.f
===================================================================
--- src/lapack/double/dlarft.f	(revision 0)
+++ src/lapack/double/dlarft.f	(revision 1)
@@ -0,0 +1,252 @@
+      SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+      IMPLICIT NONE
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          DIRECT, STOREV
+      INTEGER            K, LDT, LDV, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   T( LDT, * ), TAU( * ), V( LDV, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARFT forms the triangular factor T of a real block reflector H
+*  of order n, which is defined as a product of k elementary reflectors.
+*
+*  If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+*  If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+*  If STOREV = 'C', the vector which defines the elementary reflector
+*  H(i) is stored in the i-th column of the array V, and
+*
+*     H  =  I - V * T * V'
+*
+*  If STOREV = 'R', the vector which defines the elementary reflector
+*  H(i) is stored in the i-th row of the array V, and
+*
+*     H  =  I - V' * T * V
+*
+*  Arguments
+*  =========
+*
+*  DIRECT  (input) CHARACTER*1
+*          Specifies the order in which the elementary reflectors are
+*          multiplied to form the block reflector:
+*          = 'F': H = H(1) H(2) . . . H(k) (Forward)
+*          = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+*  STOREV  (input) CHARACTER*1
+*          Specifies how the vectors which define the elementary
+*          reflectors are stored (see also Further Details):
+*          = 'C': columnwise
+*          = 'R': rowwise
+*
+*  N       (input) INTEGER
+*          The order of the block reflector H. N >= 0.
+*
+*  K       (input) INTEGER
+*          The order of the triangular factor T (= the number of
+*          elementary reflectors). K >= 1.
+*
+*  V       (input/output) DOUBLE PRECISION array, dimension
+*                               (LDV,K) if STOREV = 'C'
+*                               (LDV,N) if STOREV = 'R'
+*          The matrix V. See further details.
+*
+*  LDV     (input) INTEGER
+*          The leading dimension of the array V.
+*          If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i).
+*
+*  T       (output) DOUBLE PRECISION array, dimension (LDT,K)
+*          The k by k triangular factor T of the block reflector.
+*          If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+*          lower triangular. The rest of the array is not used.
+*
+*  LDT     (input) INTEGER
+*          The leading dimension of the array T. LDT >= K.
+*
+*  Further Details
+*  ===============
+*
+*  The shape of the matrix V and the storage of the vectors which define
+*  the H(i) is best illustrated by the following example with n = 5 and
+*  k = 3. The elements equal to 1 are not stored; the corresponding
+*  array elements are modified but restored on exit. The rest of the
+*  array is not used.
+*
+*  DIRECT = 'F' and STOREV = 'C':         DIRECT = 'F' and STOREV = 'R':
+*
+*               V = (  1       )                 V = (  1 v1 v1 v1 v1 )
+*                   ( v1  1    )                     (     1 v2 v2 v2 )
+*                   ( v1 v2  1 )                     (        1 v3 v3 )
+*                   ( v1 v2 v3 )
+*                   ( v1 v2 v3 )
+*
+*  DIRECT = 'B' and STOREV = 'C':         DIRECT = 'B' and STOREV = 'R':
+*
+*               V = ( v1 v2 v3 )                 V = ( v1 v1  1       )
+*                   ( v1 v2 v3 )                     ( v2 v2 v2  1    )
+*                   (  1 v2 v3 )                     ( v3 v3 v3 v3  1 )
+*                   (     1 v3 )
+*                   (        1 )
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, J, PREVLASTV, LASTV
+      DOUBLE PRECISION   VII
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEMV, DTRMV
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Executable Statements ..
+*
+*     Quick return if possible
+*
+      IF( N.EQ.0 )
+     $   RETURN
+*
+      IF( LSAME( DIRECT, 'F' ) ) THEN
+         PREVLASTV = N
+         DO 20 I = 1, K
+            PREVLASTV = MAX( I, PREVLASTV )
+            IF( TAU( I ).EQ.ZERO ) THEN
+*
+*              H(i)  =  I
+*
+               DO 10 J = 1, I
+                  T( J, I ) = ZERO
+   10          CONTINUE
+            ELSE
+*
+*              general case
+*
+               VII = V( I, I )
+               V( I, I ) = ONE
+               IF( LSAME( STOREV, 'C' ) ) THEN
+!                 Skip any trailing zeros.
+                  DO LASTV = N, I+1, -1
+                     IF( V( LASTV, I ).NE.ZERO ) EXIT
+                  END DO
+                  J = MIN( LASTV, PREVLASTV )
+*
+*                 T(1:i-1,i) := - tau(i) * V(i:j,1:i-1)' * V(i:j,i)
+*
+                  CALL DGEMV( 'Transpose', J-I+1, I-1, -TAU( I ),
+     $                        V( I, 1 ), LDV, V( I, I ), 1, ZERO,
+     $                        T( 1, I ), 1 )
+               ELSE
+!                 Skip any trailing zeros.
+                  DO LASTV = N, I+1, -1
+                     IF( V( I, LASTV ).NE.ZERO ) EXIT
+                  END DO
+                  J = MIN( LASTV, PREVLASTV )
+*
+*                 T(1:i-1,i) := - tau(i) * V(1:i-1,i:j) * V(i,i:j)'
+*
+                  CALL DGEMV( 'No transpose', I-1, J-I+1, -TAU( I ),
+     $                        V( 1, I ), LDV, V( I, I ), LDV, ZERO,
+     $                        T( 1, I ), 1 )
+               END IF
+               V( I, I ) = VII
+*
+*              T(1:i-1,i) := T(1:i-1,1:i-1) * T(1:i-1,i)
+*
+               CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T,
+     $                     LDT, T( 1, I ), 1 )
+               T( I, I ) = TAU( I )
+               IF( I.GT.1 ) THEN
+                  PREVLASTV = MAX( PREVLASTV, LASTV )
+               ELSE
+                  PREVLASTV = LASTV
+               END IF
+            END IF
+   20    CONTINUE
+      ELSE
+         PREVLASTV = 1
+         DO 40 I = K, 1, -1
+            IF( TAU( I ).EQ.ZERO ) THEN
+*
+*              H(i)  =  I
+*
+               DO 30 J = I, K
+                  T( J, I ) = ZERO
+   30          CONTINUE
+            ELSE
+*
+*              general case
+*
+               IF( I.LT.K ) THEN
+                  IF( LSAME( STOREV, 'C' ) ) THEN
+                     VII = V( N-K+I, I )
+                     V( N-K+I, I ) = ONE
+!                    Skip any leading zeros.
+                     DO LASTV = 1, I-1
+                        IF( V( LASTV, I ).NE.ZERO ) EXIT
+                     END DO
+                     J = MAX( LASTV, PREVLASTV )
+*
+*                    T(i+1:k,i) :=
+*                            - tau(i) * V(j:n-k+i,i+1:k)' * V(j:n-k+i,i)
+*
+                     CALL DGEMV( 'Transpose', N-K+I-J+1, K-I, -TAU( I ),
+     $                           V( J, I+1 ), LDV, V( J, I ), 1, ZERO,
+     $                           T( I+1, I ), 1 )
+                     V( N-K+I, I ) = VII
+                  ELSE
+                     VII = V( I, N-K+I )
+                     V( I, N-K+I ) = ONE
+!                    Skip any leading zeros.
+                     DO LASTV = 1, I-1
+                        IF( V( I, LASTV ).NE.ZERO ) EXIT
+                     END DO
+                     J = MAX( LASTV, PREVLASTV )
+*
+*                    T(i+1:k,i) :=
+*                            - tau(i) * V(i+1:k,j:n-k+i) * V(i,j:n-k+i)'
+*
+                     CALL DGEMV( 'No transpose', K-I, N-K+I-J+1,
+     $                    -TAU( I ), V( I+1, J ), LDV, V( I, J ), LDV,
+     $                    ZERO, T( I+1, I ), 1 )
+                     V( I, N-K+I ) = VII
+                  END IF
+*
+*                 T(i+1:k,i) := T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+                  CALL DTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+     $                        T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+                  IF( I.GT.1 ) THEN
+                     PREVLASTV = MIN( PREVLASTV, LASTV )
+                  ELSE
+                     PREVLASTV = LASTV
+                  END IF
+               END IF
+               T( I, I ) = TAU( I )
+            END IF
+   40    CONTINUE
+      END IF
+      RETURN
+*
+*     End of DLARFT
+*
+      END
Index: src/lapack/double/dlacpy.f
===================================================================
--- src/lapack/double/dlacpy.f	(revision 0)
+++ src/lapack/double/dlacpy.f	(revision 1)
@@ -0,0 +1,88 @@
+      SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          UPLO
+      INTEGER            LDA, LDB, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), B( LDB, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLACPY copies all or part of a two-dimensional matrix A to another
+*  matrix B.
+*
+*  Arguments
+*  =========
+*
+*  UPLO    (input) CHARACTER*1
+*          Specifies the part of the matrix A to be copied to B.
+*          = 'U':      Upper triangular part
+*          = 'L':      Lower triangular part
+*          Otherwise:  All of the matrix A
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
+*          The m by n matrix A.  If UPLO = 'U', only the upper triangle
+*          or trapezoid is accessed; if UPLO = 'L', only the lower
+*          triangle or trapezoid is accessed.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  B       (output) DOUBLE PRECISION array, dimension (LDB,N)
+*          On exit, B = A in the locations specified by UPLO.
+*
+*  LDB     (input) INTEGER
+*          The leading dimension of the array B.  LDB >= max(1,M).
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I, J
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MIN
+*     ..
+*     .. Executable Statements ..
+*
+      IF( LSAME( UPLO, 'U' ) ) THEN
+         DO 20 J = 1, N
+            DO 10 I = 1, MIN( J, M )
+               B( I, J ) = A( I, J )
+   10       CONTINUE
+   20    CONTINUE
+      ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+         DO 40 J = 1, N
+            DO 30 I = J, M
+               B( I, J ) = A( I, J )
+   30       CONTINUE
+   40    CONTINUE
+      ELSE
+         DO 60 J = 1, N
+            DO 50 I = 1, M
+               B( I, J ) = A( I, J )
+   50       CONTINUE
+   60    CONTINUE
+      END IF
+      RETURN
+*
+*     End of DLACPY
+*
+      END
Index: src/lapack/double/dlartg.f
===================================================================
--- src/lapack/double/dlartg.f	(revision 0)
+++ src/lapack/double/dlartg.f	(revision 1)
@@ -0,0 +1,146 @@
+      SUBROUTINE DLARTG( F, G, CS, SN, R )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   CS, F, G, R, SN
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARTG generate a plane rotation so that
+*
+*     [  CS  SN  ]  .  [ F ]  =  [ R ]   where CS**2 + SN**2 = 1.
+*     [ -SN  CS  ]     [ G ]     [ 0 ]
+*
+*  This is a slower, more accurate version of the BLAS1 routine DROTG,
+*  with the following other differences:
+*     F and G are unchanged on return.
+*     If G=0, then CS=1 and SN=0.
+*     If F=0 and (G .ne. 0), then CS=0 and SN=1 without doing any
+*        floating point operations (saves work in DBDSQR when
+*        there are zeros on the diagonal).
+*
+*  If F exceeds G in magnitude, CS will be positive.
+*
+*  Arguments
+*  =========
+*
+*  F       (input) DOUBLE PRECISION
+*          The first component of vector to be rotated.
+*
+*  G       (input) DOUBLE PRECISION
+*          The second component of vector to be rotated.
+*
+*  CS      (output) DOUBLE PRECISION
+*          The cosine of the rotation.
+*
+*  SN      (output) DOUBLE PRECISION
+*          The sine of the rotation.
+*
+*  R       (output) DOUBLE PRECISION
+*          The nonzero component of the rotated vector.
+*
+*  This version has a few statements commented out for thread safety
+*  (machine parameters are computed on each entry). 10 feb 03, SJH.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D0 )
+      DOUBLE PRECISION   TWO
+      PARAMETER          ( TWO = 2.0D0 )
+*     ..
+*     .. Local Scalars ..
+*     LOGICAL            FIRST
+      INTEGER            COUNT, I
+      DOUBLE PRECISION   EPS, F1, G1, SAFMIN, SAFMN2, SAFMX2, SCALE
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           DLAMCH
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, INT, LOG, MAX, SQRT
+*     ..
+*     .. Save statement ..
+*     SAVE               FIRST, SAFMX2, SAFMIN, SAFMN2
+*     ..
+*     .. Data statements ..
+*     DATA               FIRST / .TRUE. /
+*     ..
+*     .. Executable Statements ..
+*
+*     IF( FIRST ) THEN
+         SAFMIN = DLAMCH( 'S' )
+         EPS = DLAMCH( 'E' )
+         SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) /
+     $            LOG( DLAMCH( 'B' ) ) / TWO )
+         SAFMX2 = ONE / SAFMN2
+*        FIRST = .FALSE.
+*     END IF
+      IF( G.EQ.ZERO ) THEN
+         CS = ONE
+         SN = ZERO
+         R = F
+      ELSE IF( F.EQ.ZERO ) THEN
+         CS = ZERO
+         SN = ONE
+         R = G
+      ELSE
+         F1 = F
+         G1 = G
+         SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+         IF( SCALE.GE.SAFMX2 ) THEN
+            COUNT = 0
+   10       CONTINUE
+            COUNT = COUNT + 1
+            F1 = F1*SAFMN2
+            G1 = G1*SAFMN2
+            SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+            IF( SCALE.GE.SAFMX2 )
+     $         GO TO 10
+            R = SQRT( F1**2+G1**2 )
+            CS = F1 / R
+            SN = G1 / R
+            DO 20 I = 1, COUNT
+               R = R*SAFMX2
+   20       CONTINUE
+         ELSE IF( SCALE.LE.SAFMN2 ) THEN
+            COUNT = 0
+   30       CONTINUE
+            COUNT = COUNT + 1
+            F1 = F1*SAFMX2
+            G1 = G1*SAFMX2
+            SCALE = MAX( ABS( F1 ), ABS( G1 ) )
+            IF( SCALE.LE.SAFMN2 )
+     $         GO TO 30
+            R = SQRT( F1**2+G1**2 )
+            CS = F1 / R
+            SN = G1 / R
+            DO 40 I = 1, COUNT
+               R = R*SAFMN2
+   40       CONTINUE
+         ELSE
+            R = SQRT( F1**2+G1**2 )
+            CS = F1 / R
+            SN = G1 / R
+         END IF
+         IF( ABS( F ).GT.ABS( G ) .AND. CS.LT.ZERO ) THEN
+            CS = -CS
+            SN = -SN
+            R = -R
+         END IF
+      END IF
+      RETURN
+*
+*     End of DLARTG
+*
+      END
Index: src/lapack/double/dlasd6.f
===================================================================
--- src/lapack/double/dlasd6.f	(revision 0)
+++ src/lapack/double/dlasd6.f	(revision 1)
@@ -0,0 +1,306 @@
+      SUBROUTINE DLASD6( ICOMPQ, NL, NR, SQRE, D, VF, VL, ALPHA, BETA,
+     $                   IDXQ, PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM,
+     $                   LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK,
+     $                   IWORK, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL,
+     $                   NR, SQRE
+      DOUBLE PRECISION   ALPHA, BETA, C, S
+*     ..
+*     .. Array Arguments ..
+      INTEGER            GIVCOL( LDGCOL, * ), IDXQ( * ), IWORK( * ),
+     $                   PERM( * )
+      DOUBLE PRECISION   D( * ), DIFL( * ), DIFR( * ),
+     $                   GIVNUM( LDGNUM, * ), POLES( LDGNUM, * ),
+     $                   VF( * ), VL( * ), WORK( * ), Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASD6 computes the SVD of an updated upper bidiagonal matrix B
+*  obtained by merging two smaller ones by appending a row. This
+*  routine is used only for the problem which requires all singular
+*  values and optionally singular vector matrices in factored form.
+*  B is an N-by-M matrix with N = NL + NR + 1 and M = N + SQRE.
+*  A related subroutine, DLASD1, handles the case in which all singular
+*  values and singular vectors of the bidiagonal matrix are desired.
+*
+*  DLASD6 computes the SVD as follows:
+*
+*                ( D1(in)  0    0     0 )
+*    B = U(in) * (   Z1'   a   Z2'    b ) * VT(in)
+*                (   0     0   D2(in) 0 )
+*
+*      = U(out) * ( D(out) 0) * VT(out)
+*
+*  where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M
+*  with ALPHA and BETA in the NL+1 and NL+2 th entries and zeros
+*  elsewhere; and the entry b is empty if SQRE = 0.
+*
+*  The singular values of B can be computed using D1, D2, the first
+*  components of all the right singular vectors of the lower block, and
+*  the last components of all the right singular vectors of the upper
+*  block. These components are stored and updated in VF and VL,
+*  respectively, in DLASD6. Hence U and VT are not explicitly
+*  referenced.
+*
+*  The singular values are stored in D. The algorithm consists of two
+*  stages:
+*
+*        The first stage consists of deflating the size of the problem
+*        when there are multiple singular values or if there is a zero
+*        in the Z vector. For each such occurence the dimension of the
+*        secular equation problem is reduced by one. This stage is
+*        performed by the routine DLASD7.
+*
+*        The second stage consists of calculating the updated
+*        singular values. This is done by finding the roots of the
+*        secular equation via the routine DLASD4 (as called by DLASD8).
+*        This routine also updates VF and VL and computes the distances
+*        between the updated singular values and the old singular
+*        values.
+*
+*  DLASD6 is called from DLASDA.
+*
+*  Arguments
+*  =========
+*
+*  ICOMPQ (input) INTEGER
+*         Specifies whether singular vectors are to be computed in
+*         factored form:
+*         = 0: Compute singular values only.
+*         = 1: Compute singular vectors in factored form as well.
+*
+*  NL     (input) INTEGER
+*         The row dimension of the upper block.  NL >= 1.
+*
+*  NR     (input) INTEGER
+*         The row dimension of the lower block.  NR >= 1.
+*
+*  SQRE   (input) INTEGER
+*         = 0: the lower block is an NR-by-NR square matrix.
+*         = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
+*
+*         The bidiagonal matrix has row dimension N = NL + NR + 1,
+*         and column dimension M = N + SQRE.
+*
+*  D      (input/output) DOUBLE PRECISION array, dimension ( NL+NR+1 ).
+*         On entry D(1:NL,1:NL) contains the singular values of the
+*         upper block, and D(NL+2:N) contains the singular values
+*         of the lower block. On exit D(1:N) contains the singular
+*         values of the modified matrix.
+*
+*  VF     (input/output) DOUBLE PRECISION array, dimension ( M )
+*         On entry, VF(1:NL+1) contains the first components of all
+*         right singular vectors of the upper block; and VF(NL+2:M)
+*         contains the first components of all right singular vectors
+*         of the lower block. On exit, VF contains the first components
+*         of all right singular vectors of the bidiagonal matrix.
+*
+*  VL     (input/output) DOUBLE PRECISION array, dimension ( M )
+*         On entry, VL(1:NL+1) contains the  last components of all
+*         right singular vectors of the upper block; and VL(NL+2:M)
+*         contains the last components of all right singular vectors of
+*         the lower block. On exit, VL contains the last components of
+*         all right singular vectors of the bidiagonal matrix.
+*
+*  ALPHA  (input/output) DOUBLE PRECISION
+*         Contains the diagonal element associated with the added row.
+*
+*  BETA   (input/output) DOUBLE PRECISION
+*         Contains the off-diagonal element associated with the added
+*         row.
+*
+*  IDXQ   (output) INTEGER array, dimension ( N )
+*         This contains the permutation which will reintegrate the
+*         subproblem just solved back into sorted order, i.e.
+*         D( IDXQ( I = 1, N ) ) will be in ascending order.
+*
+*  PERM   (output) INTEGER array, dimension ( N )
+*         The permutations (from deflation and sorting) to be applied
+*         to each block. Not referenced if ICOMPQ = 0.
+*
+*  GIVPTR (output) INTEGER
+*         The number of Givens rotations which took place in this
+*         subproblem. Not referenced if ICOMPQ = 0.
+*
+*  GIVCOL (output) INTEGER array, dimension ( LDGCOL, 2 )
+*         Each pair of numbers indicates a pair of columns to take place
+*         in a Givens rotation. Not referenced if ICOMPQ = 0.
+*
+*  LDGCOL (input) INTEGER
+*         leading dimension of GIVCOL, must be at least N.
+*
+*  GIVNUM (output) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
+*         Each number indicates the C or S value to be used in the
+*         corresponding Givens rotation. Not referenced if ICOMPQ = 0.
+*
+*  LDGNUM (input) INTEGER
+*         The leading dimension of GIVNUM and POLES, must be at least N.
+*
+*  POLES  (output) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
+*         On exit, POLES(1,*) is an array containing the new singular
+*         values obtained from solving the secular equation, and
+*         POLES(2,*) is an array containing the poles in the secular
+*         equation. Not referenced if ICOMPQ = 0.
+*
+*  DIFL   (output) DOUBLE PRECISION array, dimension ( N )
+*         On exit, DIFL(I) is the distance between I-th updated
+*         (undeflated) singular value and the I-th (undeflated) old
+*         singular value.
+*
+*  DIFR   (output) DOUBLE PRECISION array,
+*                  dimension ( LDGNUM, 2 ) if ICOMPQ = 1 and
+*                  dimension ( N ) if ICOMPQ = 0.
+*         On exit, DIFR(I, 1) is the distance between I-th updated
+*         (undeflated) singular value and the I+1-th (undeflated) old
+*         singular value.
+*
+*         If ICOMPQ = 1, DIFR(1:K,2) is an array containing the
+*         normalizing factors for the right singular vector matrix.
+*
+*         See DLASD8 for details on DIFL and DIFR.
+*
+*  Z      (output) DOUBLE PRECISION array, dimension ( M )
+*         The first elements of this array contain the components
+*         of the deflation-adjusted updating row vector.
+*
+*  K      (output) INTEGER
+*         Contains the dimension of the non-deflated matrix,
+*         This is the order of the related secular equation. 1 <= K <=N.
+*
+*  C      (output) DOUBLE PRECISION
+*         C contains garbage if SQRE =0 and the C-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  S      (output) DOUBLE PRECISION
+*         S contains garbage if SQRE =0 and the S-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension ( 4 * M )
+*
+*  IWORK  (workspace) INTEGER array, dimension ( 3 * N )
+*
+*  INFO   (output) INTEGER
+*          = 0:  successful exit.
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*          > 0:  if INFO = 1, a singular value did not converge
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, IDX, IDXC, IDXP, ISIGMA, IVFW, IVLW, IW, M,
+     $                   N, N1, N2
+      DOUBLE PRECISION   ORGNRM
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DLAMRG, DLASCL, DLASD7, DLASD8, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      N = NL + NR + 1
+      M = N + SQRE
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( NL.LT.1 ) THEN
+         INFO = -2
+      ELSE IF( NR.LT.1 ) THEN
+         INFO = -3
+      ELSE IF( ( SQRE.LT.0 ) .OR. ( SQRE.GT.1 ) ) THEN
+         INFO = -4
+      ELSE IF( LDGCOL.LT.N ) THEN
+         INFO = -14
+      ELSE IF( LDGNUM.LT.N ) THEN
+         INFO = -16
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASD6', -INFO )
+         RETURN
+      END IF
+*
+*     The following values are for bookkeeping purposes only.  They are
+*     integer pointers which indicate the portion of the workspace
+*     used by a particular array in DLASD7 and DLASD8.
+*
+      ISIGMA = 1
+      IW = ISIGMA + N
+      IVFW = IW + M
+      IVLW = IVFW + M
+*
+      IDX = 1
+      IDXC = IDX + N
+      IDXP = IDXC + N
+*
+*     Scale.
+*
+      ORGNRM = MAX( ABS( ALPHA ), ABS( BETA ) )
+      D( NL+1 ) = ZERO
+      DO 10 I = 1, N
+         IF( ABS( D( I ) ).GT.ORGNRM ) THEN
+            ORGNRM = ABS( D( I ) )
+         END IF
+   10 CONTINUE
+      CALL DLASCL( 'G', 0, 0, ORGNRM, ONE, N, 1, D, N, INFO )
+      ALPHA = ALPHA / ORGNRM
+      BETA = BETA / ORGNRM
+*
+*     Sort and Deflate singular values.
+*
+      CALL DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, WORK( IW ), VF,
+     $             WORK( IVFW ), VL, WORK( IVLW ), ALPHA, BETA,
+     $             WORK( ISIGMA ), IWORK( IDX ), IWORK( IDXP ), IDXQ,
+     $             PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, C, S,
+     $             INFO )
+*
+*     Solve Secular Equation, compute DIFL, DIFR, and update VF, VL.
+*
+      CALL DLASD8( ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDGNUM,
+     $             WORK( ISIGMA ), WORK( IW ), INFO )
+*
+*     Save the poles if ICOMPQ = 1.
+*
+      IF( ICOMPQ.EQ.1 ) THEN
+         CALL DCOPY( K, D, 1, POLES( 1, 1 ), 1 )
+         CALL DCOPY( K, WORK( ISIGMA ), 1, POLES( 1, 2 ), 1 )
+      END IF
+*
+*     Unscale.
+*
+      CALL DLASCL( 'G', 0, 0, ONE, ORGNRM, N, 1, D, N, INFO )
+*
+*     Prepare the IDXQ sorting permutation.
+*
+      N1 = K
+      N2 = N - K
+      CALL DLAMRG( N1, N2, D, 1, -1, IDXQ )
+*
+      RETURN
+*
+*     End of DLASD6
+*
+      END
Index: src/lapack/double/dormrz.f
===================================================================
--- src/lapack/double/dormrz.f	(revision 0)
+++ src/lapack/double/dormrz.f	(revision 1)
@@ -0,0 +1,294 @@
+      SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+     $                   WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     January 2007
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, L, LDA, LDC, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORMRZ overwrites the general real M-by-N matrix C with
+*
+*                  SIDE = 'L'     SIDE = 'R'
+*  TRANS = 'N':      Q * C          C * Q
+*  TRANS = 'T':      Q**T * C       C * Q**T
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(1) H(2) . . . H(k)
+*
+*  as returned by DTZRZF. Q is of order M if SIDE = 'L' and of order N
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q**T from the Left;
+*          = 'R': apply Q or Q**T from the Right.
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N':  No transpose, apply Q;
+*          = 'T':  Transpose, apply Q**T.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  L       (input) INTEGER
+*          The number of columns of the matrix A containing
+*          the meaningful part of the Householder reflectors.
+*          If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension
+*                               (LDA,M) if SIDE = 'L',
+*                               (LDA,N) if SIDE = 'R'
+*          The i-th row must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DTZRZF in the last k rows of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,K).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DTZRZF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.
+*          If SIDE = 'L', LWORK >= max(1,N);
+*          if SIDE = 'R', LWORK >= max(1,M).
+*          For optimum performance LWORK >= N*NB if SIDE = 'L', and
+*          LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+*          blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            NBMAX, LDT
+      PARAMETER          ( NBMAX = 64, LDT = NBMAX+1 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LEFT, LQUERY, NOTRAN
+      CHARACTER          TRANST
+      INTEGER            I, I1, I2, I3, IB, IC, IINFO, IWS, JA, JC,
+     $                   LDWORK, LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+*     ..
+*     .. Local Arrays ..
+      DOUBLE PRECISION   T( LDT, NBMAX )
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILAENV
+      EXTERNAL           LSAME, ILAENV
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARZB, DLARZT, DORMR3, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+      LQUERY = ( LWORK.EQ.-1 )
+*
+*     NQ is the order of Q and NW is the minimum dimension of WORK
+*
+      IF( LEFT ) THEN
+         NQ = M
+         NW = MAX( 1, N )
+      ELSE
+         NQ = N
+         NW = MAX( 1, M )
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( L.LT.0 .OR. ( LEFT .AND. ( L.GT.M ) ) .OR.
+     $         ( .NOT.LEFT .AND. ( L.GT.N ) ) ) THEN
+         INFO = -6
+      ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
+         INFO = -8
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -11
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+         IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+            LWKOPT = 1
+         ELSE
+*
+*           Determine the block size.  NB may be at most NBMAX, where
+*           NBMAX is used to define the local array T.
+*
+            NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N,
+     $                               K, -1 ) )
+            LWKOPT = NW*NB
+         END IF
+         WORK( 1 ) = LWKOPT
+*
+         IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+            INFO = -13
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORMRZ', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      LDWORK = NW
+      IF( NB.GT.1 .AND. NB.LT.K ) THEN
+         IWS = NW*NB
+         IF( LWORK.LT.IWS ) THEN
+            NB = LWORK / LDWORK
+            NBMIN = MAX( 2, ILAENV( 2, 'DORMRQ', SIDE // TRANS, M, N, K,
+     $              -1 ) )
+         END IF
+      ELSE
+         IWS = NW
+      END IF
+*
+      IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+*        Use unblocked code
+*
+         CALL DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC,
+     $                WORK, IINFO )
+      ELSE
+*
+*        Use blocked code
+*
+         IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+     $       ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+            I1 = 1
+            I2 = K
+            I3 = NB
+         ELSE
+            I1 = ( ( K-1 ) / NB )*NB + 1
+            I2 = 1
+            I3 = -NB
+         END IF
+*
+         IF( LEFT ) THEN
+            NI = N
+            JC = 1
+            JA = M - L + 1
+         ELSE
+            MI = M
+            IC = 1
+            JA = N - L + 1
+         END IF
+*
+         IF( NOTRAN ) THEN
+            TRANST = 'T'
+         ELSE
+            TRANST = 'N'
+         END IF
+*
+         DO 10 I = I1, I2, I3
+            IB = MIN( NB, K-I+1 )
+*
+*           Form the triangular factor of the block reflector
+*           H = H(i+ib-1) . . . H(i+1) H(i)
+*
+            CALL DLARZT( 'Backward', 'Rowwise', L, IB, A( I, JA ), LDA,
+     $                   TAU( I ), T, LDT )
+*
+            IF( LEFT ) THEN
+*
+*              H or H' is applied to C(i:m,1:n)
+*
+               MI = M - I + 1
+               IC = I
+            ELSE
+*
+*              H or H' is applied to C(1:m,i:n)
+*
+               NI = N - I + 1
+               JC = I
+            END IF
+*
+*           Apply H or H'
+*
+            CALL DLARZB( SIDE, TRANST, 'Backward', 'Rowwise', MI, NI,
+     $                   IB, L, A( I, JA ), LDA, T, LDT, C( IC, JC ),
+     $                   LDC, WORK, LDWORK )
+   10    CONTINUE
+*
+      END IF
+*
+      WORK( 1 ) = LWKOPT
+*
+      RETURN
+*
+*     End of DORMRZ
+*
+      END
Index: src/lapack/double/dlarzb.f
===================================================================
--- src/lapack/double/dlarzb.f	(revision 0)
+++ src/lapack/double/dlarzb.f	(revision 1)
@@ -0,0 +1,221 @@
+      SUBROUTINE DLARZB( SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V,
+     $                   LDV, T, LDT, C, LDC, WORK, LDWORK )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          DIRECT, SIDE, STOREV, TRANS
+      INTEGER            K, L, LDC, LDT, LDV, LDWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), T( LDT, * ), V( LDV, * ),
+     $                   WORK( LDWORK, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARZB applies a real block reflector H or its transpose H**T to
+*  a real distributed M-by-N  C from the left or the right.
+*
+*  Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply H or H' from the Left
+*          = 'R': apply H or H' from the Right
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N': apply H (No transpose)
+*          = 'C': apply H' (Transpose)
+*
+*  DIRECT  (input) CHARACTER*1
+*          Indicates how H is formed from a product of elementary
+*          reflectors
+*          = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+*          = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+*  STOREV  (input) CHARACTER*1
+*          Indicates how the vectors which define the elementary
+*          reflectors are stored:
+*          = 'C': Columnwise                        (not supported yet)
+*          = 'R': Rowwise
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C.
+*
+*  K       (input) INTEGER
+*          The order of the matrix T (= the number of elementary
+*          reflectors whose product defines the block reflector).
+*
+*  L       (input) INTEGER
+*          The number of columns of the matrix V containing the
+*          meaningful part of the Householder reflectors.
+*          If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
+*
+*  V       (input) DOUBLE PRECISION array, dimension (LDV,NV).
+*          If STOREV = 'C', NV = K; if STOREV = 'R', NV = L.
+*
+*  LDV     (input) INTEGER
+*          The leading dimension of the array V.
+*          If STOREV = 'C', LDV >= L; if STOREV = 'R', LDV >= K.
+*
+*  T       (input) DOUBLE PRECISION array, dimension (LDT,K)
+*          The triangular K-by-K matrix T in the representation of the
+*          block reflector.
+*
+*  LDT     (input) INTEGER
+*          The leading dimension of the array T. LDT >= K.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by H*C or H'*C or C*H or C*H'.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (LDWORK,K)
+*
+*  LDWORK  (input) INTEGER
+*          The leading dimension of the array WORK.
+*          If SIDE = 'L', LDWORK >= max(1,N);
+*          if SIDE = 'R', LDWORK >= max(1,M).
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      CHARACTER          TRANST
+      INTEGER            I, INFO, J
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEMM, DTRMM, XERBLA
+*     ..
+*     .. Executable Statements ..
+*
+*     Quick return if possible
+*
+      IF( M.LE.0 .OR. N.LE.0 )
+     $   RETURN
+*
+*     Check for currently supported options
+*
+      INFO = 0
+      IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+         INFO = -3
+      ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+         INFO = -4
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLARZB', -INFO )
+         RETURN
+      END IF
+*
+      IF( LSAME( TRANS, 'N' ) ) THEN
+         TRANST = 'T'
+      ELSE
+         TRANST = 'N'
+      END IF
+*
+      IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*        Form  H * C  or  H' * C
+*
+*        W( 1:n, 1:k ) = C( 1:k, 1:n )'
+*
+         DO 10 J = 1, K
+            CALL DCOPY( N, C( J, 1 ), LDC, WORK( 1, J ), 1 )
+   10    CONTINUE
+*
+*        W( 1:n, 1:k ) = W( 1:n, 1:k ) + ...
+*                        C( m-l+1:m, 1:n )' * V( 1:k, 1:l )'
+*
+         IF( L.GT.0 )
+     $      CALL DGEMM( 'Transpose', 'Transpose', N, K, L, ONE,
+     $                  C( M-L+1, 1 ), LDC, V, LDV, ONE, WORK, LDWORK )
+*
+*        W( 1:n, 1:k ) = W( 1:n, 1:k ) * T'  or  W( 1:m, 1:k ) * T
+*
+         CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', N, K, ONE, T,
+     $               LDT, WORK, LDWORK )
+*
+*        C( 1:k, 1:n ) = C( 1:k, 1:n ) - W( 1:n, 1:k )'
+*
+         DO 30 J = 1, N
+            DO 20 I = 1, K
+               C( I, J ) = C( I, J ) - WORK( J, I )
+   20       CONTINUE
+   30    CONTINUE
+*
+*        C( m-l+1:m, 1:n ) = C( m-l+1:m, 1:n ) - ...
+*                            V( 1:k, 1:l )' * W( 1:n, 1:k )'
+*
+         IF( L.GT.0 )
+     $      CALL DGEMM( 'Transpose', 'Transpose', L, N, K, -ONE, V, LDV,
+     $                  WORK, LDWORK, ONE, C( M-L+1, 1 ), LDC )
+*
+      ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*        Form  C * H  or  C * H'
+*
+*        W( 1:m, 1:k ) = C( 1:m, 1:k )
+*
+         DO 40 J = 1, K
+            CALL DCOPY( M, C( 1, J ), 1, WORK( 1, J ), 1 )
+   40    CONTINUE
+*
+*        W( 1:m, 1:k ) = W( 1:m, 1:k ) + ...
+*                        C( 1:m, n-l+1:n ) * V( 1:k, 1:l )'
+*
+         IF( L.GT.0 )
+     $      CALL DGEMM( 'No transpose', 'Transpose', M, K, L, ONE,
+     $                  C( 1, N-L+1 ), LDC, V, LDV, ONE, WORK, LDWORK )
+*
+*        W( 1:m, 1:k ) = W( 1:m, 1:k ) * T  or  W( 1:m, 1:k ) * T'
+*
+         CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', M, K, ONE, T,
+     $               LDT, WORK, LDWORK )
+*
+*        C( 1:m, 1:k ) = C( 1:m, 1:k ) - W( 1:m, 1:k )
+*
+         DO 60 J = 1, K
+            DO 50 I = 1, M
+               C( I, J ) = C( I, J ) - WORK( I, J )
+   50       CONTINUE
+   60    CONTINUE
+*
+*        C( 1:m, n-l+1:n ) = C( 1:m, n-l+1:n ) - ...
+*                            W( 1:m, 1:k ) * V( 1:k, 1:l )
+*
+         IF( L.GT.0 )
+     $      CALL DGEMM( 'No transpose', 'No transpose', M, L, K, -ONE,
+     $                  WORK, LDWORK, V, LDV, ONE, C( 1, N-L+1 ), LDC )
+*
+      END IF
+*
+      RETURN
+*
+*     End of DLARZB
+*
+      END
Index: src/lapack/double/dbdsqr.f
===================================================================
--- src/lapack/double/dbdsqr.f	(revision 0)
+++ src/lapack/double/dbdsqr.f	(revision 1)
@@ -0,0 +1,750 @@
+      SUBROUTINE DBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
+     $                   LDU, C, LDC, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     January 2007
+*
+*     .. Scalar Arguments ..
+      CHARACTER          UPLO
+      INTEGER            INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   C( LDC, * ), D( * ), E( * ), U( LDU, * ),
+     $                   VT( LDVT, * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DBDSQR computes the singular values and, optionally, the right and/or
+*  left singular vectors from the singular value decomposition (SVD) of
+*  a real N-by-N (upper or lower) bidiagonal matrix B using the implicit
+*  zero-shift QR algorithm.  The SVD of B has the form
+* 
+*     B = Q * S * P**T
+* 
+*  where S is the diagonal matrix of singular values, Q is an orthogonal
+*  matrix of left singular vectors, and P is an orthogonal matrix of
+*  right singular vectors.  If left singular vectors are requested, this
+*  subroutine actually returns U*Q instead of Q, and, if right singular
+*  vectors are requested, this subroutine returns P**T*VT instead of
+*  P**T, for given real input matrices U and VT.  When U and VT are the
+*  orthogonal matrices that reduce a general matrix A to bidiagonal
+*  form:  A = U*B*VT, as computed by DGEBRD, then
+*
+*     A = (U*Q) * S * (P**T*VT)
+*
+*  is the SVD of A.  Optionally, the subroutine may also compute Q**T*C
+*  for a given real input matrix C.
+*
+*  See "Computing  Small Singular Values of Bidiagonal Matrices With
+*  Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+*  LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,
+*  no. 5, pp. 873-912, Sept 1990) and
+*  "Accurate singular values and differential qd algorithms," by
+*  B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics
+*  Department, University of California at Berkeley, July 1992
+*  for a detailed description of the algorithm.
+*
+*  Arguments
+*  =========
+*
+*  UPLO    (input) CHARACTER*1
+*          = 'U':  B is upper bidiagonal;
+*          = 'L':  B is lower bidiagonal.
+*
+*  N       (input) INTEGER
+*          The order of the matrix B.  N >= 0.
+*
+*  NCVT    (input) INTEGER
+*          The number of columns of the matrix VT. NCVT >= 0.
+*
+*  NRU     (input) INTEGER
+*          The number of rows of the matrix U. NRU >= 0.
+*
+*  NCC     (input) INTEGER
+*          The number of columns of the matrix C. NCC >= 0.
+*
+*  D       (input/output) DOUBLE PRECISION array, dimension (N)
+*          On entry, the n diagonal elements of the bidiagonal matrix B.
+*          On exit, if INFO=0, the singular values of B in decreasing
+*          order.
+*
+*  E       (input/output) DOUBLE PRECISION array, dimension (N-1)
+*          On entry, the N-1 offdiagonal elements of the bidiagonal
+*          matrix B. 
+*          On exit, if INFO = 0, E is destroyed; if INFO > 0, D and E
+*          will contain the diagonal and superdiagonal elements of a
+*          bidiagonal matrix orthogonally equivalent to the one given
+*          as input.
+*
+*  VT      (input/output) DOUBLE PRECISION array, dimension (LDVT, NCVT)
+*          On entry, an N-by-NCVT matrix VT.
+*          On exit, VT is overwritten by P**T * VT.
+*          Not referenced if NCVT = 0.
+*
+*  LDVT    (input) INTEGER
+*          The leading dimension of the array VT.
+*          LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.
+*
+*  U       (input/output) DOUBLE PRECISION array, dimension (LDU, N)
+*          On entry, an NRU-by-N matrix U.
+*          On exit, U is overwritten by U * Q.
+*          Not referenced if NRU = 0.
+*
+*  LDU     (input) INTEGER
+*          The leading dimension of the array U.  LDU >= max(1,NRU).
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC, NCC)
+*          On entry, an N-by-NCC matrix C.
+*          On exit, C is overwritten by Q**T * C.
+*          Not referenced if NCC = 0.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C.
+*          LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (4*N)
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  If INFO = -i, the i-th argument had an illegal value
+*          > 0:
+*             if NCVT = NRU = NCC = 0,
+*                = 1, a split was marked by a positive value in E
+*                = 2, current block of Z not diagonalized after 30*N
+*                     iterations (in inner while loop)
+*                = 3, termination criterion of outer while loop not met 
+*                     (program created more than N unreduced blocks)
+*             else NCVT = NRU = NCC = 0,
+*                   the algorithm did not converge; D and E contain the
+*                   elements of a bidiagonal matrix which is orthogonally
+*                   similar to the input matrix B;  if INFO = i, i
+*                   elements of E have not converged to zero.
+*
+*  Internal Parameters
+*  ===================
+*
+*  TOLMUL  DOUBLE PRECISION, default = max(10,min(100,EPS**(-1/8)))
+*          TOLMUL controls the convergence criterion of the QR loop.
+*          If it is positive, TOLMUL*EPS is the desired relative
+*             precision in the computed singular values.
+*          If it is negative, abs(TOLMUL*EPS*sigma_max) is the
+*             desired absolute accuracy in the computed singular
+*             values (corresponds to relative accuracy
+*             abs(TOLMUL*EPS) in the largest singular value.
+*          abs(TOLMUL) should be between 1 and 1/EPS, and preferably
+*             between 10 (for fast convergence) and .1/EPS
+*             (for there to be some accuracy in the results).
+*          Default is to lose at either one eighth or 2 of the
+*             available decimal digits in each computed singular value
+*             (whichever is smaller).
+*
+*  MAXITR  INTEGER, default = 6
+*          MAXITR controls the maximum number of passes of the
+*          algorithm through its inner loop. The algorithms stops
+*          (and so fails to converge) if the number of passes
+*          through the inner loop exceeds MAXITR*N**2.
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D0 )
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D0 )
+      DOUBLE PRECISION   NEGONE
+      PARAMETER          ( NEGONE = -1.0D0 )
+      DOUBLE PRECISION   HNDRTH
+      PARAMETER          ( HNDRTH = 0.01D0 )
+      DOUBLE PRECISION   TEN
+      PARAMETER          ( TEN = 10.0D0 )
+      DOUBLE PRECISION   HNDRD
+      PARAMETER          ( HNDRD = 100.0D0 )
+      DOUBLE PRECISION   MEIGTH
+      PARAMETER          ( MEIGTH = -0.125D0 )
+      INTEGER            MAXITR
+      PARAMETER          ( MAXITR = 6 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LOWER, ROTATE
+      INTEGER            I, IDIR, ISUB, ITER, J, LL, LLL, M, MAXIT, NM1,
+     $                   NM12, NM13, OLDLL, OLDM
+      DOUBLE PRECISION   ABSE, ABSS, COSL, COSR, CS, EPS, F, G, H, MU,
+     $                   OLDCS, OLDSN, R, SHIFT, SIGMN, SIGMX, SINL,
+     $                   SINR, SLL, SMAX, SMIN, SMINL, SMINOA,
+     $                   SN, THRESH, TOL, TOLMUL, UNFL
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      DOUBLE PRECISION   DLAMCH
+      EXTERNAL           LSAME, DLAMCH
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARTG, DLAS2, DLASQ1, DLASR, DLASV2, DROT,
+     $                   DSCAL, DSWAP, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, DBLE, MAX, MIN, SIGN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+      LOWER = LSAME( UPLO, 'L' )
+      IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LOWER ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( NCVT.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( NRU.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( NCC.LT.0 ) THEN
+         INFO = -5
+      ELSE IF( ( NCVT.EQ.0 .AND. LDVT.LT.1 ) .OR.
+     $         ( NCVT.GT.0 .AND. LDVT.LT.MAX( 1, N ) ) ) THEN
+         INFO = -9
+      ELSE IF( LDU.LT.MAX( 1, NRU ) ) THEN
+         INFO = -11
+      ELSE IF( ( NCC.EQ.0 .AND. LDC.LT.1 ) .OR.
+     $         ( NCC.GT.0 .AND. LDC.LT.MAX( 1, N ) ) ) THEN
+         INFO = -13
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DBDSQR', -INFO )
+         RETURN
+      END IF
+      IF( N.EQ.0 )
+     $   RETURN
+      IF( N.EQ.1 )
+     $   GO TO 160
+*
+*     ROTATE is true if any singular vectors desired, false otherwise
+*
+      ROTATE = ( NCVT.GT.0 ) .OR. ( NRU.GT.0 ) .OR. ( NCC.GT.0 )
+*
+*     If no singular vectors desired, use qd algorithm
+*
+      IF( .NOT.ROTATE ) THEN
+         CALL DLASQ1( N, D, E, WORK, INFO )
+         RETURN
+      END IF
+*
+      NM1 = N - 1
+      NM12 = NM1 + NM1
+      NM13 = NM12 + NM1
+      IDIR = 0
+*
+*     Get machine constants
+*
+      EPS = DLAMCH( 'Epsilon' )
+      UNFL = DLAMCH( 'Safe minimum' )
+*
+*     If matrix lower bidiagonal, rotate to be upper bidiagonal
+*     by applying Givens rotations on the left
+*
+      IF( LOWER ) THEN
+         DO 10 I = 1, N - 1
+            CALL DLARTG( D( I ), E( I ), CS, SN, R )
+            D( I ) = R
+            E( I ) = SN*D( I+1 )
+            D( I+1 ) = CS*D( I+1 )
+            WORK( I ) = CS
+            WORK( NM1+I ) = SN
+   10    CONTINUE
+*
+*        Update singular vectors if desired
+*
+         IF( NRU.GT.0 )
+     $      CALL DLASR( 'R', 'V', 'F', NRU, N, WORK( 1 ), WORK( N ), U,
+     $                  LDU )
+         IF( NCC.GT.0 )
+     $      CALL DLASR( 'L', 'V', 'F', N, NCC, WORK( 1 ), WORK( N ), C,
+     $                  LDC )
+      END IF
+*
+*     Compute singular values to relative accuracy TOL
+*     (By setting TOL to be negative, algorithm will compute
+*     singular values to absolute accuracy ABS(TOL)*norm(input matrix))
+*
+      TOLMUL = MAX( TEN, MIN( HNDRD, EPS**MEIGTH ) )
+      TOL = TOLMUL*EPS
+*
+*     Compute approximate maximum, minimum singular values
+*
+      SMAX = ZERO
+      DO 20 I = 1, N
+         SMAX = MAX( SMAX, ABS( D( I ) ) )
+   20 CONTINUE
+      DO 30 I = 1, N - 1
+         SMAX = MAX( SMAX, ABS( E( I ) ) )
+   30 CONTINUE
+      SMINL = ZERO
+      IF( TOL.GE.ZERO ) THEN
+*
+*        Relative accuracy desired
+*
+         SMINOA = ABS( D( 1 ) )
+         IF( SMINOA.EQ.ZERO )
+     $      GO TO 50
+         MU = SMINOA
+         DO 40 I = 2, N
+            MU = ABS( D( I ) )*( MU / ( MU+ABS( E( I-1 ) ) ) )
+            SMINOA = MIN( SMINOA, MU )
+            IF( SMINOA.EQ.ZERO )
+     $         GO TO 50
+   40    CONTINUE
+   50    CONTINUE
+         SMINOA = SMINOA / SQRT( DBLE( N ) )
+         THRESH = MAX( TOL*SMINOA, MAXITR*N*N*UNFL )
+      ELSE
+*
+*        Absolute accuracy desired
+*
+         THRESH = MAX( ABS( TOL )*SMAX, MAXITR*N*N*UNFL )
+      END IF
+*
+*     Prepare for main iteration loop for the singular values
+*     (MAXIT is the maximum number of passes through the inner
+*     loop permitted before nonconvergence signalled.)
+*
+      MAXIT = MAXITR*N*N
+      ITER = 0
+      OLDLL = -1
+      OLDM = -1
+*
+*     M points to last element of unconverged part of matrix
+*
+      M = N
+*
+*     Begin main iteration loop
+*
+   60 CONTINUE
+*
+*     Check for convergence or exceeding iteration count
+*
+      IF( M.LE.1 )
+     $   GO TO 160
+      IF( ITER.GT.MAXIT )
+     $   GO TO 200
+*
+*     Find diagonal block of matrix to work on
+*
+      IF( TOL.LT.ZERO .AND. ABS( D( M ) ).LE.THRESH )
+     $   D( M ) = ZERO
+      SMAX = ABS( D( M ) )
+      SMIN = SMAX
+      DO 70 LLL = 1, M - 1
+         LL = M - LLL
+         ABSS = ABS( D( LL ) )
+         ABSE = ABS( E( LL ) )
+         IF( TOL.LT.ZERO .AND. ABSS.LE.THRESH )
+     $      D( LL ) = ZERO
+         IF( ABSE.LE.THRESH )
+     $      GO TO 80
+         SMIN = MIN( SMIN, ABSS )
+         SMAX = MAX( SMAX, ABSS, ABSE )
+   70 CONTINUE
+      LL = 0
+      GO TO 90
+   80 CONTINUE
+      E( LL ) = ZERO
+*
+*     Matrix splits since E(LL) = 0
+*
+      IF( LL.EQ.M-1 ) THEN
+*
+*        Convergence of bottom singular value, return to top of loop
+*
+         M = M - 1
+         GO TO 60
+      END IF
+   90 CONTINUE
+      LL = LL + 1
+*
+*     E(LL) through E(M-1) are nonzero, E(LL-1) is zero
+*
+      IF( LL.EQ.M-1 ) THEN
+*
+*        2 by 2 block, handle separately
+*
+         CALL DLASV2( D( M-1 ), E( M-1 ), D( M ), SIGMN, SIGMX, SINR,
+     $                COSR, SINL, COSL )
+         D( M-1 ) = SIGMX
+         E( M-1 ) = ZERO
+         D( M ) = SIGMN
+*
+*        Compute singular vectors, if desired
+*
+         IF( NCVT.GT.0 )
+     $      CALL DROT( NCVT, VT( M-1, 1 ), LDVT, VT( M, 1 ), LDVT, COSR,
+     $                 SINR )
+         IF( NRU.GT.0 )
+     $      CALL DROT( NRU, U( 1, M-1 ), 1, U( 1, M ), 1, COSL, SINL )
+         IF( NCC.GT.0 )
+     $      CALL DROT( NCC, C( M-1, 1 ), LDC, C( M, 1 ), LDC, COSL,
+     $                 SINL )
+         M = M - 2
+         GO TO 60
+      END IF
+*
+*     If working on new submatrix, choose shift direction
+*     (from larger end diagonal element towards smaller)
+*
+      IF( LL.GT.OLDM .OR. M.LT.OLDLL ) THEN
+         IF( ABS( D( LL ) ).GE.ABS( D( M ) ) ) THEN
+*
+*           Chase bulge from top (big end) to bottom (small end)
+*
+            IDIR = 1
+         ELSE
+*
+*           Chase bulge from bottom (big end) to top (small end)
+*
+            IDIR = 2
+         END IF
+      END IF
+*
+*     Apply convergence tests
+*
+      IF( IDIR.EQ.1 ) THEN
+*
+*        Run convergence test in forward direction
+*        First apply standard test to bottom of matrix
+*
+         IF( ABS( E( M-1 ) ).LE.ABS( TOL )*ABS( D( M ) ) .OR.
+     $       ( TOL.LT.ZERO .AND. ABS( E( M-1 ) ).LE.THRESH ) ) THEN
+            E( M-1 ) = ZERO
+            GO TO 60
+         END IF
+*
+         IF( TOL.GE.ZERO ) THEN
+*
+*           If relative accuracy desired,
+*           apply convergence criterion forward
+*
+            MU = ABS( D( LL ) )
+            SMINL = MU
+            DO 100 LLL = LL, M - 1
+               IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+                  E( LLL ) = ZERO
+                  GO TO 60
+               END IF
+               MU = ABS( D( LLL+1 ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+               SMINL = MIN( SMINL, MU )
+  100       CONTINUE
+         END IF
+*
+      ELSE
+*
+*        Run convergence test in backward direction
+*        First apply standard test to top of matrix
+*
+         IF( ABS( E( LL ) ).LE.ABS( TOL )*ABS( D( LL ) ) .OR.
+     $       ( TOL.LT.ZERO .AND. ABS( E( LL ) ).LE.THRESH ) ) THEN
+            E( LL ) = ZERO
+            GO TO 60
+         END IF
+*
+         IF( TOL.GE.ZERO ) THEN
+*
+*           If relative accuracy desired,
+*           apply convergence criterion backward
+*
+            MU = ABS( D( M ) )
+            SMINL = MU
+            DO 110 LLL = M - 1, LL, -1
+               IF( ABS( E( LLL ) ).LE.TOL*MU ) THEN
+                  E( LLL ) = ZERO
+                  GO TO 60
+               END IF
+               MU = ABS( D( LLL ) )*( MU / ( MU+ABS( E( LLL ) ) ) )
+               SMINL = MIN( SMINL, MU )
+  110       CONTINUE
+         END IF
+      END IF
+      OLDLL = LL
+      OLDM = M
+*
+*     Compute shift.  First, test if shifting would ruin relative
+*     accuracy, and if so set the shift to zero.
+*
+      IF( TOL.GE.ZERO .AND. N*TOL*( SMINL / SMAX ).LE.
+     $    MAX( EPS, HNDRTH*TOL ) ) THEN
+*
+*        Use a zero shift to avoid loss of relative accuracy
+*
+         SHIFT = ZERO
+      ELSE
+*
+*        Compute the shift from 2-by-2 block at end of matrix
+*
+         IF( IDIR.EQ.1 ) THEN
+            SLL = ABS( D( LL ) )
+            CALL DLAS2( D( M-1 ), E( M-1 ), D( M ), SHIFT, R )
+         ELSE
+            SLL = ABS( D( M ) )
+            CALL DLAS2( D( LL ), E( LL ), D( LL+1 ), SHIFT, R )
+         END IF
+*
+*        Test if shift negligible, and if so set to zero
+*
+         IF( SLL.GT.ZERO ) THEN
+            IF( ( SHIFT / SLL )**2.LT.EPS )
+     $         SHIFT = ZERO
+         END IF
+      END IF
+*
+*     Increment iteration count
+*
+      ITER = ITER + M - LL
+*
+*     If SHIFT = 0, do simplified QR iteration
+*
+      IF( SHIFT.EQ.ZERO ) THEN
+         IF( IDIR.EQ.1 ) THEN
+*
+*           Chase bulge from top to bottom
+*           Save cosines and sines for later singular vector updates
+*
+            CS = ONE
+            OLDCS = ONE
+            DO 120 I = LL, M - 1
+               CALL DLARTG( D( I )*CS, E( I ), CS, SN, R )
+               IF( I.GT.LL )
+     $            E( I-1 ) = OLDSN*R
+               CALL DLARTG( OLDCS*R, D( I+1 )*SN, OLDCS, OLDSN, D( I ) )
+               WORK( I-LL+1 ) = CS
+               WORK( I-LL+1+NM1 ) = SN
+               WORK( I-LL+1+NM12 ) = OLDCS
+               WORK( I-LL+1+NM13 ) = OLDSN
+  120       CONTINUE
+            H = D( M )*CS
+            D( M ) = H*OLDCS
+            E( M-1 ) = H*OLDSN
+*
+*           Update singular vectors
+*
+            IF( NCVT.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'F', M-LL+1, NCVT, WORK( 1 ),
+     $                     WORK( N ), VT( LL, 1 ), LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DLASR( 'R', 'V', 'F', NRU, M-LL+1, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), U( 1, LL ), LDU )
+            IF( NCC.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'F', M-LL+1, NCC, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+*           Test convergence
+*
+            IF( ABS( E( M-1 ) ).LE.THRESH )
+     $         E( M-1 ) = ZERO
+*
+         ELSE
+*
+*           Chase bulge from bottom to top
+*           Save cosines and sines for later singular vector updates
+*
+            CS = ONE
+            OLDCS = ONE
+            DO 130 I = M, LL + 1, -1
+               CALL DLARTG( D( I )*CS, E( I-1 ), CS, SN, R )
+               IF( I.LT.M )
+     $            E( I ) = OLDSN*R
+               CALL DLARTG( OLDCS*R, D( I-1 )*SN, OLDCS, OLDSN, D( I ) )
+               WORK( I-LL ) = CS
+               WORK( I-LL+NM1 ) = -SN
+               WORK( I-LL+NM12 ) = OLDCS
+               WORK( I-LL+NM13 ) = -OLDSN
+  130       CONTINUE
+            H = D( LL )*CS
+            D( LL ) = H*OLDCS
+            E( LL ) = H*OLDSN
+*
+*           Update singular vectors
+*
+            IF( NCVT.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'B', M-LL+1, NCVT, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), VT( LL, 1 ), LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DLASR( 'R', 'V', 'B', NRU, M-LL+1, WORK( 1 ),
+     $                     WORK( N ), U( 1, LL ), LDU )
+            IF( NCC.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'B', M-LL+1, NCC, WORK( 1 ),
+     $                     WORK( N ), C( LL, 1 ), LDC )
+*
+*           Test convergence
+*
+            IF( ABS( E( LL ) ).LE.THRESH )
+     $         E( LL ) = ZERO
+         END IF
+      ELSE
+*
+*        Use nonzero shift
+*
+         IF( IDIR.EQ.1 ) THEN
+*
+*           Chase bulge from top to bottom
+*           Save cosines and sines for later singular vector updates
+*
+            F = ( ABS( D( LL ) )-SHIFT )*
+     $          ( SIGN( ONE, D( LL ) )+SHIFT / D( LL ) )
+            G = E( LL )
+            DO 140 I = LL, M - 1
+               CALL DLARTG( F, G, COSR, SINR, R )
+               IF( I.GT.LL )
+     $            E( I-1 ) = R
+               F = COSR*D( I ) + SINR*E( I )
+               E( I ) = COSR*E( I ) - SINR*D( I )
+               G = SINR*D( I+1 )
+               D( I+1 ) = COSR*D( I+1 )
+               CALL DLARTG( F, G, COSL, SINL, R )
+               D( I ) = R
+               F = COSL*E( I ) + SINL*D( I+1 )
+               D( I+1 ) = COSL*D( I+1 ) - SINL*E( I )
+               IF( I.LT.M-1 ) THEN
+                  G = SINL*E( I+1 )
+                  E( I+1 ) = COSL*E( I+1 )
+               END IF
+               WORK( I-LL+1 ) = COSR
+               WORK( I-LL+1+NM1 ) = SINR
+               WORK( I-LL+1+NM12 ) = COSL
+               WORK( I-LL+1+NM13 ) = SINL
+  140       CONTINUE
+            E( M-1 ) = F
+*
+*           Update singular vectors
+*
+            IF( NCVT.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'F', M-LL+1, NCVT, WORK( 1 ),
+     $                     WORK( N ), VT( LL, 1 ), LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DLASR( 'R', 'V', 'F', NRU, M-LL+1, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), U( 1, LL ), LDU )
+            IF( NCC.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'F', M-LL+1, NCC, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), C( LL, 1 ), LDC )
+*
+*           Test convergence
+*
+            IF( ABS( E( M-1 ) ).LE.THRESH )
+     $         E( M-1 ) = ZERO
+*
+         ELSE
+*
+*           Chase bulge from bottom to top
+*           Save cosines and sines for later singular vector updates
+*
+            F = ( ABS( D( M ) )-SHIFT )*( SIGN( ONE, D( M ) )+SHIFT /
+     $          D( M ) )
+            G = E( M-1 )
+            DO 150 I = M, LL + 1, -1
+               CALL DLARTG( F, G, COSR, SINR, R )
+               IF( I.LT.M )
+     $            E( I ) = R
+               F = COSR*D( I ) + SINR*E( I-1 )
+               E( I-1 ) = COSR*E( I-1 ) - SINR*D( I )
+               G = SINR*D( I-1 )
+               D( I-1 ) = COSR*D( I-1 )
+               CALL DLARTG( F, G, COSL, SINL, R )
+               D( I ) = R
+               F = COSL*E( I-1 ) + SINL*D( I-1 )
+               D( I-1 ) = COSL*D( I-1 ) - SINL*E( I-1 )
+               IF( I.GT.LL+1 ) THEN
+                  G = SINL*E( I-2 )
+                  E( I-2 ) = COSL*E( I-2 )
+               END IF
+               WORK( I-LL ) = COSR
+               WORK( I-LL+NM1 ) = -SINR
+               WORK( I-LL+NM12 ) = COSL
+               WORK( I-LL+NM13 ) = -SINL
+  150       CONTINUE
+            E( LL ) = F
+*
+*           Test convergence
+*
+            IF( ABS( E( LL ) ).LE.THRESH )
+     $         E( LL ) = ZERO
+*
+*           Update singular vectors if desired
+*
+            IF( NCVT.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'B', M-LL+1, NCVT, WORK( NM12+1 ),
+     $                     WORK( NM13+1 ), VT( LL, 1 ), LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DLASR( 'R', 'V', 'B', NRU, M-LL+1, WORK( 1 ),
+     $                     WORK( N ), U( 1, LL ), LDU )
+            IF( NCC.GT.0 )
+     $         CALL DLASR( 'L', 'V', 'B', M-LL+1, NCC, WORK( 1 ),
+     $                     WORK( N ), C( LL, 1 ), LDC )
+         END IF
+      END IF
+*
+*     QR iteration finished, go back and check convergence
+*
+      GO TO 60
+*
+*     All singular values converged, so make them positive
+*
+  160 CONTINUE
+      DO 170 I = 1, N
+         IF( D( I ).LT.ZERO ) THEN
+            D( I ) = -D( I )
+*
+*           Change sign of singular vectors, if desired
+*
+            IF( NCVT.GT.0 )
+     $         CALL DSCAL( NCVT, NEGONE, VT( I, 1 ), LDVT )
+         END IF
+  170 CONTINUE
+*
+*     Sort the singular values into decreasing order (insertion sort on
+*     singular values, but only one transposition per singular vector)
+*
+      DO 190 I = 1, N - 1
+*
+*        Scan for smallest D(I)
+*
+         ISUB = 1
+         SMIN = D( 1 )
+         DO 180 J = 2, N + 1 - I
+            IF( D( J ).LE.SMIN ) THEN
+               ISUB = J
+               SMIN = D( J )
+            END IF
+  180    CONTINUE
+         IF( ISUB.NE.N+1-I ) THEN
+*
+*           Swap singular values and vectors
+*
+            D( ISUB ) = D( N+1-I )
+            D( N+1-I ) = SMIN
+            IF( NCVT.GT.0 )
+     $         CALL DSWAP( NCVT, VT( ISUB, 1 ), LDVT, VT( N+1-I, 1 ),
+     $                     LDVT )
+            IF( NRU.GT.0 )
+     $         CALL DSWAP( NRU, U( 1, ISUB ), 1, U( 1, N+1-I ), 1 )
+            IF( NCC.GT.0 )
+     $         CALL DSWAP( NCC, C( ISUB, 1 ), LDC, C( N+1-I, 1 ), LDC )
+         END IF
+  190 CONTINUE
+      GO TO 220
+*
+*     Maximum number of iterations exceeded, failure to converge
+*
+  200 CONTINUE
+      INFO = 0
+      DO 210 I = 1, N - 1
+         IF( E( I ).NE.ZERO )
+     $      INFO = INFO + 1
+  210 CONTINUE
+  220 CONTINUE
+      RETURN
+*
+*     End of DBDSQR
+*
+      END
Index: src/lapack/double/dlasd8.f
===================================================================
--- src/lapack/double/dlasd8.f	(revision 0)
+++ src/lapack/double/dlasd8.f	(revision 1)
@@ -0,0 +1,258 @@
+      SUBROUTINE DLASD8( ICOMPQ, K, D, Z, VF, VL, DIFL, DIFR, LDDIFR,
+     $                   DSIGMA, WORK, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            ICOMPQ, INFO, K, LDDIFR
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( * ), DIFL( * ), DIFR( LDDIFR, * ),
+     $                   DSIGMA( * ), VF( * ), VL( * ), WORK( * ),
+     $                   Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASD8 finds the square roots of the roots of the secular equation,
+*  as defined by the values in DSIGMA and Z. It makes the appropriate
+*  calls to DLASD4, and stores, for each  element in D, the distance
+*  to its two nearest poles (elements in DSIGMA). It also updates
+*  the arrays VF and VL, the first and last components of all the
+*  right singular vectors of the original bidiagonal matrix.
+*
+*  DLASD8 is called from DLASD6.
+*
+*  Arguments
+*  =========
+*
+*  ICOMPQ  (input) INTEGER
+*          Specifies whether singular vectors are to be computed in
+*          factored form in the calling routine:
+*          = 0: Compute singular values only.
+*          = 1: Compute singular vectors in factored form as well.
+*
+*  K       (input) INTEGER
+*          The number of terms in the rational function to be solved
+*          by DLASD4.  K >= 1.
+*
+*  D       (output) DOUBLE PRECISION array, dimension ( K )
+*          On output, D contains the updated singular values.
+*
+*  Z       (input/output) DOUBLE PRECISION array, dimension ( K )
+*          On entry, the first K elements of this array contain the
+*          components of the deflation-adjusted updating row vector.
+*          On exit, Z is updated.
+*
+*  VF      (input/output) DOUBLE PRECISION array, dimension ( K )
+*          On entry, VF contains  information passed through DBEDE8.
+*          On exit, VF contains the first K components of the first
+*          components of all right singular vectors of the bidiagonal
+*          matrix.
+*
+*  VL      (input/output) DOUBLE PRECISION array, dimension ( K )
+*          On entry, VL contains  information passed through DBEDE8.
+*          On exit, VL contains the first K components of the last
+*          components of all right singular vectors of the bidiagonal
+*          matrix.
+*
+*  DIFL    (output) DOUBLE PRECISION array, dimension ( K )
+*          On exit, DIFL(I) = D(I) - DSIGMA(I).
+*
+*  DIFR    (output) DOUBLE PRECISION array,
+*                   dimension ( LDDIFR, 2 ) if ICOMPQ = 1 and
+*                   dimension ( K ) if ICOMPQ = 0.
+*          On exit, DIFR(I,1) = D(I) - DSIGMA(I+1), DIFR(K,1) is not
+*          defined and will not be referenced.
+*
+*          If ICOMPQ = 1, DIFR(1:K,2) is an array containing the
+*          normalizing factors for the right singular vector matrix.
+*
+*  LDDIFR  (input) INTEGER
+*          The leading dimension of DIFR, must be at least K.
+*
+*  DSIGMA  (input/output) DOUBLE PRECISION array, dimension ( K )
+*          On entry, the first K elements of this array contain the old
+*          roots of the deflated updating problem.  These are the poles
+*          of the secular equation.
+*          On exit, the elements of DSIGMA may be very slightly altered
+*          in value.
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension at least 3 * K
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit.
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*          > 0:  if INFO = 1, a singular value did not converge
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Huan Ren, Computer Science Division, University of
+*     California at Berkeley, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, IWK1, IWK2, IWK2I, IWK3, IWK3I, J
+      DOUBLE PRECISION   DIFLJ, DIFRJ, DJ, DSIGJ, DSIGJP, RHO, TEMP
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DLASCL, DLASD4, DLASET, XERBLA
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DDOT, DLAMC3, DNRM2
+      EXTERNAL           DDOT, DLAMC3, DNRM2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, SIGN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( K.LT.1 ) THEN
+         INFO = -2
+      ELSE IF( LDDIFR.LT.K ) THEN
+         INFO = -9
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASD8', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( K.EQ.1 ) THEN
+         D( 1 ) = ABS( Z( 1 ) )
+         DIFL( 1 ) = D( 1 )
+         IF( ICOMPQ.EQ.1 ) THEN
+            DIFL( 2 ) = ONE
+            DIFR( 1, 2 ) = ONE
+         END IF
+         RETURN
+      END IF
+*
+*     Modify values DSIGMA(i) to make sure all DSIGMA(i)-DSIGMA(j) can
+*     be computed with high relative accuracy (barring over/underflow).
+*     This is a problem on machines without a guard digit in
+*     add/subtract (Cray XMP, Cray YMP, Cray C 90 and Cray 2).
+*     The following code replaces DSIGMA(I) by 2*DSIGMA(I)-DSIGMA(I),
+*     which on any of these machines zeros out the bottommost
+*     bit of DSIGMA(I) if it is 1; this makes the subsequent
+*     subtractions DSIGMA(I)-DSIGMA(J) unproblematic when cancellation
+*     occurs. On binary machines with a guard digit (almost all
+*     machines) it does not change DSIGMA(I) at all. On hexadecimal
+*     and decimal machines with a guard digit, it slightly
+*     changes the bottommost bits of DSIGMA(I). It does not account
+*     for hexadecimal or decimal machines without guard digits
+*     (we know of none). We use a subroutine call to compute
+*     2*DLAMBDA(I) to prevent optimizing compilers from eliminating
+*     this code.
+*
+      DO 10 I = 1, K
+         DSIGMA( I ) = DLAMC3( DSIGMA( I ), DSIGMA( I ) ) - DSIGMA( I )
+   10 CONTINUE
+*
+*     Book keeping.
+*
+      IWK1 = 1
+      IWK2 = IWK1 + K
+      IWK3 = IWK2 + K
+      IWK2I = IWK2 - 1
+      IWK3I = IWK3 - 1
+*
+*     Normalize Z.
+*
+      RHO = DNRM2( K, Z, 1 )
+      CALL DLASCL( 'G', 0, 0, RHO, ONE, K, 1, Z, K, INFO )
+      RHO = RHO*RHO
+*
+*     Initialize WORK(IWK3).
+*
+      CALL DLASET( 'A', K, 1, ONE, ONE, WORK( IWK3 ), K )
+*
+*     Compute the updated singular values, the arrays DIFL, DIFR,
+*     and the updated Z.
+*
+      DO 40 J = 1, K
+         CALL DLASD4( K, J, DSIGMA, Z, WORK( IWK1 ), RHO, D( J ),
+     $                WORK( IWK2 ), INFO )
+*
+*        If the root finder fails, the computation is terminated.
+*
+         IF( INFO.NE.0 ) THEN
+            RETURN
+         END IF
+         WORK( IWK3I+J ) = WORK( IWK3I+J )*WORK( J )*WORK( IWK2I+J )
+         DIFL( J ) = -WORK( J )
+         DIFR( J, 1 ) = -WORK( J+1 )
+         DO 20 I = 1, J - 1
+            WORK( IWK3I+I ) = WORK( IWK3I+I )*WORK( I )*
+     $                        WORK( IWK2I+I ) / ( DSIGMA( I )-
+     $                        DSIGMA( J ) ) / ( DSIGMA( I )+
+     $                        DSIGMA( J ) )
+   20    CONTINUE
+         DO 30 I = J + 1, K
+            WORK( IWK3I+I ) = WORK( IWK3I+I )*WORK( I )*
+     $                        WORK( IWK2I+I ) / ( DSIGMA( I )-
+     $                        DSIGMA( J ) ) / ( DSIGMA( I )+
+     $                        DSIGMA( J ) )
+   30    CONTINUE
+   40 CONTINUE
+*
+*     Compute updated Z.
+*
+      DO 50 I = 1, K
+         Z( I ) = SIGN( SQRT( ABS( WORK( IWK3I+I ) ) ), Z( I ) )
+   50 CONTINUE
+*
+*     Update VF and VL.
+*
+      DO 80 J = 1, K
+         DIFLJ = DIFL( J )
+         DJ = D( J )
+         DSIGJ = -DSIGMA( J )
+         IF( J.LT.K ) THEN
+            DIFRJ = -DIFR( J, 1 )
+            DSIGJP = -DSIGMA( J+1 )
+         END IF
+         WORK( J ) = -Z( J ) / DIFLJ / ( DSIGMA( J )+DJ )
+         DO 60 I = 1, J - 1
+            WORK( I ) = Z( I ) / ( DLAMC3( DSIGMA( I ), DSIGJ )-DIFLJ )
+     $                   / ( DSIGMA( I )+DJ )
+   60    CONTINUE
+         DO 70 I = J + 1, K
+            WORK( I ) = Z( I ) / ( DLAMC3( DSIGMA( I ), DSIGJP )+DIFRJ )
+     $                   / ( DSIGMA( I )+DJ )
+   70    CONTINUE
+         TEMP = DNRM2( K, WORK, 1 )
+         WORK( IWK2I+J ) = DDOT( K, WORK, 1, VF, 1 ) / TEMP
+         WORK( IWK3I+J ) = DDOT( K, WORK, 1, VL, 1 ) / TEMP
+         IF( ICOMPQ.EQ.1 ) THEN
+            DIFR( J, 2 ) = TEMP
+         END IF
+   80 CONTINUE
+*
+      CALL DCOPY( K, WORK( IWK2 ), 1, VF, 1 )
+      CALL DCOPY( K, WORK( IWK3 ), 1, VL, 1 )
+*
+      RETURN
+*
+*     End of DLASD8
+*
+      END
+
Index: src/lapack/double/dlaqp2.f
===================================================================
--- src/lapack/double/dlaqp2.f	(revision 0)
+++ src/lapack/double/dlaqp2.f	(revision 1)
@@ -0,0 +1,176 @@
+      SUBROUTINE DLAQP2( M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2,
+     $                   WORK )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            LDA, M, N, OFFSET
+*     ..
+*     .. Array Arguments ..
+      INTEGER            JPVT( * )
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), VN1( * ), VN2( * ),
+     $                   WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAQP2 computes a QR factorization with column pivoting of
+*  the block A(OFFSET+1:M,1:N).
+*  The block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A. N >= 0.
+*
+*  OFFSET  (input) INTEGER
+*          The number of rows of the matrix A that must be pivoted
+*          but no factorized. OFFSET >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, the upper triangle of block A(OFFSET+1:M,1:N) is 
+*          the triangular factor obtained; the elements in block
+*          A(OFFSET+1:M,1:N) below the diagonal, together with the
+*          array TAU, represent the orthogonal matrix Q as a product of
+*          elementary reflectors. Block A(1:OFFSET,1:N) has been
+*          accordingly pivoted, but no factorized.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,M).
+*
+*  JPVT    (input/output) INTEGER array, dimension (N)
+*          On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+*          to the front of A*P (a leading column); if JPVT(i) = 0,
+*          the i-th column of A is a free column.
+*          On exit, if JPVT(i) = k, then the i-th column of A*P
+*          was the k-th column of A.
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors.
+*
+*  VN1     (input/output) DOUBLE PRECISION array, dimension (N)
+*          The vector with the partial column norms.
+*
+*  VN2     (input/output) DOUBLE PRECISION array, dimension (N)
+*          The vector with the exact column norms.
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (N)
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*    X. Sun, Computer Science Dept., Duke University, USA
+*
+*  Partial column norm updating strategy modified by
+*    Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+*    University of Zagreb, Croatia.
+*     June 2010
+*  For more details see LAPACK Working Note 176.
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, ITEMP, J, MN, OFFPI, PVT
+      DOUBLE PRECISION   AII, TEMP, TEMP2, TOL3Z
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, DLARFG, DSWAP
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. External Functions ..
+      INTEGER            IDAMAX
+      DOUBLE PRECISION   DLAMCH, DNRM2
+      EXTERNAL           IDAMAX, DLAMCH, DNRM2
+*     ..
+*     .. Executable Statements ..
+*
+      MN = MIN( M-OFFSET, N )
+      TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+*     Compute factorization.
+*
+      DO 20 I = 1, MN
+*
+         OFFPI = OFFSET + I
+*
+*        Determine ith pivot column and swap if necessary.
+*
+         PVT = ( I-1 ) + IDAMAX( N-I+1, VN1( I ), 1 )
+*
+         IF( PVT.NE.I ) THEN
+            CALL DSWAP( M, A( 1, PVT ), 1, A( 1, I ), 1 )
+            ITEMP = JPVT( PVT )
+            JPVT( PVT ) = JPVT( I )
+            JPVT( I ) = ITEMP
+            VN1( PVT ) = VN1( I )
+            VN2( PVT ) = VN2( I )
+         END IF
+*
+*        Generate elementary reflector H(i).
+*
+         IF( OFFPI.LT.M ) THEN
+            CALL DLARFG( M-OFFPI+1, A( OFFPI, I ), A( OFFPI+1, I ), 1,
+     $                   TAU( I ) )
+         ELSE
+            CALL DLARFG( 1, A( M, I ), A( M, I ), 1, TAU( I ) )
+         END IF
+*
+         IF( I.LE.N ) THEN
+*
+*           Apply H(i)' to A(offset+i:m,i+1:n) from the left.
+*
+            AII = A( OFFPI, I )
+            A( OFFPI, I ) = ONE
+            CALL DLARF( 'Left', M-OFFPI+1, N-I, A( OFFPI, I ), 1,
+     $                  TAU( I ), A( OFFPI, I+1 ), LDA, WORK( 1 ) )
+            A( OFFPI, I ) = AII
+         END IF
+*
+*        Update partial column norms.
+*
+         DO 10 J = I + 1, N
+            IF( VN1( J ).NE.ZERO ) THEN
+*
+*              NOTE: The following 4 lines follow from the analysis in
+*              Lapack Working Note 176.
+*
+               TEMP = ONE - ( ABS( A( OFFPI, J ) ) / VN1( J ) )**2
+               TEMP = MAX( TEMP, ZERO )
+               TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+               IF( TEMP2 .LE. TOL3Z ) THEN
+                  IF( OFFPI.LT.M ) THEN
+                     VN1( J ) = DNRM2( M-OFFPI, A( OFFPI+1, J ), 1 )
+                     VN2( J ) = VN1( J )
+                  ELSE
+                     VN1( J ) = ZERO
+                     VN2( J ) = ZERO
+                  END IF
+               ELSE
+                  VN1( J ) = VN1( J )*SQRT( TEMP )
+               END IF
+            END IF
+   10    CONTINUE
+*
+   20 CONTINUE
+*
+      RETURN
+*
+*     End of DLAQP2
+*
+      END
Index: src/lapack/double/dgeqp3.f
===================================================================
--- src/lapack/double/dgeqp3.f	(revision 0)
+++ src/lapack/double/dgeqp3.f	(revision 1)
@@ -0,0 +1,288 @@
+      SUBROUTINE DGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      INTEGER            JPVT( * )
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEQP3 computes a QR factorization with column pivoting of a
+*  matrix A:  A*P = Q*R  using Level 3 BLAS.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, the upper triangle of the array contains the
+*          min(M,N)-by-N upper trapezoidal matrix R; the elements below
+*          the diagonal, together with the array TAU, represent the
+*          orthogonal matrix Q as a product of min(M,N) elementary
+*          reflectors.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,M).
+*
+*  JPVT    (input/output) INTEGER array, dimension (N)
+*          On entry, if JPVT(J).ne.0, the J-th column of A is permuted
+*          to the front of A*P (a leading column); if JPVT(J)=0,
+*          the J-th column of A is a free column.
+*          On exit, if JPVT(J)=K, then the J-th column of A*P was the
+*          the K-th column of A.
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors.
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO=0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK. LWORK >= 3*N+1.
+*          For optimal performance LWORK >= 2*N+( N+1 )*NB, where NB
+*          is the optimal blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit.
+*          < 0: if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  The matrix Q is represented as a product of elementary reflectors
+*
+*     Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+*  Each H(i) has the form
+*
+*     H(i) = I - tau * v * v'
+*
+*  where tau is a real/complex scalar, and v is a real/complex vector
+*  with v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in
+*  A(i+1:m,i), and tau in TAU(i).
+*
+*  Based on contributions by
+*    G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*    X. Sun, Computer Science Dept., Duke University, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            INB, INBMIN, IXOVER
+      PARAMETER          ( INB = 1, INBMIN = 2, IXOVER = 3 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            FJB, IWS, J, JB, LWKOPT, MINMN, MINWS, NA, NB,
+     $                   NBMIN, NFXD, NX, SM, SMINMN, SN, TOPBMN
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEQRF, DLAQP2, DLAQPS, DORMQR, DSWAP, XERBLA
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      DOUBLE PRECISION   DNRM2
+      EXTERNAL           ILAENV, DNRM2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          INT, MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test input arguments
+*     ====================
+*
+      INFO = 0
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+         MINMN = MIN( M, N )
+         IF( MINMN.EQ.0 ) THEN
+            IWS = 1
+            LWKOPT = 1
+         ELSE
+            IWS = 3*N + 1
+            NB = ILAENV( INB, 'DGEQRF', ' ', M, N, -1, -1 )
+            LWKOPT = 2*N + ( N + 1 )*NB
+         END IF
+         WORK( 1 ) = LWKOPT
+*
+         IF( ( LWORK.LT.IWS ) .AND. .NOT.LQUERY ) THEN
+            INFO = -8
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGEQP3', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible.
+*
+      IF( MINMN.EQ.0 ) THEN
+         RETURN
+      END IF
+*
+*     Move initial columns up front.
+*
+      NFXD = 1
+      DO 10 J = 1, N
+         IF( JPVT( J ).NE.0 ) THEN
+            IF( J.NE.NFXD ) THEN
+               CALL DSWAP( M, A( 1, J ), 1, A( 1, NFXD ), 1 )
+               JPVT( J ) = JPVT( NFXD )
+               JPVT( NFXD ) = J
+            ELSE
+               JPVT( J ) = J
+            END IF
+            NFXD = NFXD + 1
+         ELSE
+            JPVT( J ) = J
+         END IF
+   10 CONTINUE
+      NFXD = NFXD - 1
+*
+*     Factorize fixed columns
+*     =======================
+*
+*     Compute the QR factorization of fixed columns and update
+*     remaining columns.
+*
+      IF( NFXD.GT.0 ) THEN
+         NA = MIN( M, NFXD )
+*CC      CALL DGEQR2( M, NA, A, LDA, TAU, WORK, INFO )
+         CALL DGEQRF( M, NA, A, LDA, TAU, WORK, LWORK, INFO )
+         IWS = MAX( IWS, INT( WORK( 1 ) ) )
+         IF( NA.LT.N ) THEN
+*CC         CALL DORM2R( 'Left', 'Transpose', M, N-NA, NA, A, LDA,
+*CC  $                   TAU, A( 1, NA+1 ), LDA, WORK, INFO )
+            CALL DORMQR( 'Left', 'Transpose', M, N-NA, NA, A, LDA, TAU,
+     $                   A( 1, NA+1 ), LDA, WORK, LWORK, INFO )
+            IWS = MAX( IWS, INT( WORK( 1 ) ) )
+         END IF
+      END IF
+*
+*     Factorize free columns
+*     ======================
+*
+      IF( NFXD.LT.MINMN ) THEN
+*
+         SM = M - NFXD
+         SN = N - NFXD
+         SMINMN = MINMN - NFXD
+*
+*        Determine the block size.
+*
+         NB = ILAENV( INB, 'DGEQRF', ' ', SM, SN, -1, -1 )
+         NBMIN = 2
+         NX = 0
+*
+         IF( ( NB.GT.1 ) .AND. ( NB.LT.SMINMN ) ) THEN
+*
+*           Determine when to cross over from blocked to unblocked code.
+*
+            NX = MAX( 0, ILAENV( IXOVER, 'DGEQRF', ' ', SM, SN, -1,
+     $           -1 ) )
+*
+*
+            IF( NX.LT.SMINMN ) THEN
+*
+*              Determine if workspace is large enough for blocked code.
+*
+               MINWS = 2*SN + ( SN+1 )*NB
+               IWS = MAX( IWS, MINWS )
+               IF( LWORK.LT.MINWS ) THEN
+*
+*                 Not enough workspace to use optimal NB: Reduce NB and
+*                 determine the minimum value of NB.
+*
+                  NB = ( LWORK-2*SN ) / ( SN+1 )
+                  NBMIN = MAX( 2, ILAENV( INBMIN, 'DGEQRF', ' ', SM, SN,
+     $                    -1, -1 ) )
+*
+*
+               END IF
+            END IF
+         END IF
+*
+*        Initialize partial column norms. The first N elements of work
+*        store the exact column norms.
+*
+         DO 20 J = NFXD + 1, N
+            WORK( J ) = DNRM2( SM, A( NFXD+1, J ), 1 )
+            WORK( N+J ) = WORK( J )
+   20    CONTINUE
+*
+         IF( ( NB.GE.NBMIN ) .AND. ( NB.LT.SMINMN ) .AND.
+     $       ( NX.LT.SMINMN ) ) THEN
+*
+*           Use blocked code initially.
+*
+            J = NFXD + 1
+*
+*           Compute factorization: while loop.
+*
+*
+            TOPBMN = MINMN - NX
+   30       CONTINUE
+            IF( J.LE.TOPBMN ) THEN
+               JB = MIN( NB, TOPBMN-J+1 )
+*
+*              Factorize JB columns among columns J:N.
+*
+               CALL DLAQPS( M, N-J+1, J-1, JB, FJB, A( 1, J ), LDA,
+     $                      JPVT( J ), TAU( J ), WORK( J ), WORK( N+J ),
+     $                      WORK( 2*N+1 ), WORK( 2*N+JB+1 ), N-J+1 )
+*
+               J = J + FJB
+               GO TO 30
+            END IF
+         ELSE
+            J = NFXD + 1
+         END IF
+*
+*        Use unblocked code to factor the last or only block.
+*
+*
+         IF( J.LE.MINMN )
+     $      CALL DLAQP2( M, N-J+1, J-1, A( 1, J ), LDA, JPVT( J ),
+     $                   TAU( J ), WORK( J ), WORK( N+J ),
+     $                   WORK( 2*N+1 ) )
+*
+      END IF
+*
+      WORK( 1 ) = IWS
+      RETURN
+*
+*     End of DGEQP3
+*
+      END
Index: src/lapack/double/dlaqps.f
===================================================================
--- src/lapack/double/dlaqps.f	(revision 0)
+++ src/lapack/double/dlaqps.f	(revision 1)
@@ -0,0 +1,260 @@
+      SUBROUTINE DLAQPS( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1,
+     $                   VN2, AUXV, F, LDF )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            KB, LDA, LDF, M, N, NB, OFFSET
+*     ..
+*     .. Array Arguments ..
+      INTEGER            JPVT( * )
+      DOUBLE PRECISION   A( LDA, * ), AUXV( * ), F( LDF, * ), TAU( * ),
+     $                   VN1( * ), VN2( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAQPS computes a step of QR factorization with column pivoting
+*  of a real M-by-N matrix A by using Blas-3.  It tries to factorize
+*  NB columns from A starting from the row OFFSET+1, and updates all
+*  of the matrix with Blas-3 xGEMM.
+*
+*  In some cases, due to catastrophic cancellations, it cannot
+*  factorize NB columns.  Hence, the actual number of factorized
+*  columns is returned in KB.
+*
+*  Block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A. N >= 0
+*
+*  OFFSET  (input) INTEGER
+*          The number of rows of A that have been factorized in
+*          previous steps.
+*
+*  NB      (input) INTEGER
+*          The number of columns to factorize.
+*
+*  KB      (output) INTEGER
+*          The number of columns actually factorized.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, block A(OFFSET+1:M,1:KB) is the triangular
+*          factor obtained and block A(1:OFFSET,1:N) has been
+*          accordingly pivoted, but no factorized.
+*          The rest of the matrix, block A(OFFSET+1:M,KB+1:N) has
+*          been updated.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A. LDA >= max(1,M).
+*
+*  JPVT    (input/output) INTEGER array, dimension (N)
+*          JPVT(I) = K <==> Column K of the full matrix A has been
+*          permuted into position I in AP.
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (KB)
+*          The scalar factors of the elementary reflectors.
+*
+*  VN1     (input/output) DOUBLE PRECISION array, dimension (N)
+*          The vector with the partial column norms.
+*
+*  VN2     (input/output) DOUBLE PRECISION array, dimension (N)
+*          The vector with the exact column norms.
+*
+*  AUXV    (input/output) DOUBLE PRECISION array, dimension (NB)
+*          Auxiliar vector.
+*
+*  F       (input/output) DOUBLE PRECISION array, dimension (LDF,NB)
+*          Matrix F' = L*Y'*A.
+*
+*  LDF     (input) INTEGER
+*          The leading dimension of the array F. LDF >= max(1,N).
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*    X. Sun, Computer Science Dept., Duke University, USA
+*
+*  Partial column norm updating strategy modified by
+*    Z. Drmac and Z. Bujanovic, Dept. of Mathematics,
+*    University of Zagreb, Croatia.
+*     June 2010
+*  For more details see LAPACK Working Note 176.
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            ITEMP, J, K, LASTRK, LSTICC, PVT, RK
+      DOUBLE PRECISION   AKK, TEMP, TEMP2, TOL3Z
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEMM, DGEMV, DLARFG, DSWAP
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, DBLE, MAX, MIN, NINT, SQRT
+*     ..
+*     .. External Functions ..
+      INTEGER            IDAMAX
+      DOUBLE PRECISION   DLAMCH, DNRM2
+      EXTERNAL           IDAMAX, DLAMCH, DNRM2
+*     ..
+*     .. Executable Statements ..
+*
+      LASTRK = MIN( M, N+OFFSET )
+      LSTICC = 0
+      K = 0
+      TOL3Z = SQRT(DLAMCH('Epsilon'))
+*
+*     Beginning of while loop.
+*
+   10 CONTINUE
+      IF( ( K.LT.NB ) .AND. ( LSTICC.EQ.0 ) ) THEN
+         K = K + 1
+         RK = OFFSET + K
+*
+*        Determine ith pivot column and swap if necessary
+*
+         PVT = ( K-1 ) + IDAMAX( N-K+1, VN1( K ), 1 )
+         IF( PVT.NE.K ) THEN
+            CALL DSWAP( M, A( 1, PVT ), 1, A( 1, K ), 1 )
+            CALL DSWAP( K-1, F( PVT, 1 ), LDF, F( K, 1 ), LDF )
+            ITEMP = JPVT( PVT )
+            JPVT( PVT ) = JPVT( K )
+            JPVT( K ) = ITEMP
+            VN1( PVT ) = VN1( K )
+            VN2( PVT ) = VN2( K )
+         END IF
+*
+*        Apply previous Householder reflectors to column K:
+*        A(RK:M,K) := A(RK:M,K) - A(RK:M,1:K-1)*F(K,1:K-1)'.
+*
+         IF( K.GT.1 ) THEN
+            CALL DGEMV( 'No transpose', M-RK+1, K-1, -ONE, A( RK, 1 ),
+     $                  LDA, F( K, 1 ), LDF, ONE, A( RK, K ), 1 )
+         END IF
+*
+*        Generate elementary reflector H(k).
+*
+         IF( RK.LT.M ) THEN
+            CALL DLARFG( M-RK+1, A( RK, K ), A( RK+1, K ), 1, TAU( K ) )
+         ELSE
+            CALL DLARFG( 1, A( RK, K ), A( RK, K ), 1, TAU( K ) )
+         END IF
+*
+         AKK = A( RK, K )
+         A( RK, K ) = ONE
+*
+*        Compute Kth column of F:
+*
+*        Compute  F(K+1:N,K) := tau(K)*A(RK:M,K+1:N)'*A(RK:M,K).
+*
+         IF( K.LT.N ) THEN
+            CALL DGEMV( 'Transpose', M-RK+1, N-K, TAU( K ),
+     $                  A( RK, K+1 ), LDA, A( RK, K ), 1, ZERO,
+     $                  F( K+1, K ), 1 )
+         END IF
+*
+*        Padding F(1:K,K) with zeros.
+*
+         DO 20 J = 1, K
+            F( J, K ) = ZERO
+   20    CONTINUE
+*
+*        Incremental updating of F:
+*        F(1:N,K) := F(1:N,K) - tau(K)*F(1:N,1:K-1)*A(RK:M,1:K-1)'
+*                    *A(RK:M,K).
+*
+         IF( K.GT.1 ) THEN
+            CALL DGEMV( 'Transpose', M-RK+1, K-1, -TAU( K ), A( RK, 1 ),
+     $                  LDA, A( RK, K ), 1, ZERO, AUXV( 1 ), 1 )
+*
+            CALL DGEMV( 'No transpose', N, K-1, ONE, F( 1, 1 ), LDF,
+     $                  AUXV( 1 ), 1, ONE, F( 1, K ), 1 )
+         END IF
+*
+*        Update the current row of A:
+*        A(RK,K+1:N) := A(RK,K+1:N) - A(RK,1:K)*F(K+1:N,1:K)'.
+*
+         IF( K.LT.N ) THEN
+            CALL DGEMV( 'No transpose', N-K, K, -ONE, F( K+1, 1 ), LDF,
+     $                  A( RK, 1 ), LDA, ONE, A( RK, K+1 ), LDA )
+         END IF
+*
+*        Update partial column norms.
+*
+         IF( RK.LT.LASTRK ) THEN
+            DO 30 J = K + 1, N
+               IF( VN1( J ).NE.ZERO ) THEN
+*
+*                 NOTE: The following 4 lines follow from the analysis in
+*                 Lapack Working Note 176.
+*
+                  TEMP = ABS( A( RK, J ) ) / VN1( J )
+                  TEMP = MAX( ZERO, ( ONE+TEMP )*( ONE-TEMP ) )
+                  TEMP2 = TEMP*( VN1( J ) / VN2( J ) )**2
+                  IF( TEMP2 .LE. TOL3Z ) THEN
+                     VN2( J ) = DBLE( LSTICC )
+                     LSTICC = J
+                  ELSE
+                     VN1( J ) = VN1( J )*SQRT( TEMP )
+                  END IF
+               END IF
+   30       CONTINUE
+         END IF
+*
+         A( RK, K ) = AKK
+*
+*        End of while loop.
+*
+         GO TO 10
+      END IF
+      KB = K
+      RK = OFFSET + KB
+*
+*     Apply the block reflector to the rest of the matrix:
+*     A(OFFSET+KB+1:M,KB+1:N) := A(OFFSET+KB+1:M,KB+1:N) -
+*                         A(OFFSET+KB+1:M,1:KB)*F(KB+1:N,1:KB)'.
+*
+      IF( KB.LT.MIN( N, M-OFFSET ) ) THEN
+         CALL DGEMM( 'No transpose', 'Transpose', M-RK, N-KB, KB, -ONE,
+     $               A( RK+1, 1 ), LDA, F( KB+1, 1 ), LDF, ONE,
+     $               A( RK+1, KB+1 ), LDA )
+      END IF
+*
+*     Recomputation of difficult columns.
+*
+   40 CONTINUE
+      IF( LSTICC.GT.0 ) THEN
+         ITEMP = NINT( VN2( LSTICC ) )
+         VN1( LSTICC ) = DNRM2( M-RK, A( RK+1, LSTICC ), 1 )
+*
+*        NOTE: The computation of VN1( LSTICC ) relies on the fact that 
+*        SNRM2 does not fail on vectors with norm below the value of
+*        SQRT(DLAMCH('S')) 
+*
+         VN2( LSTICC ) = VN1( LSTICC )
+         LSTICC = ITEMP
+         GO TO 40
+      END IF
+*
+      RETURN
+*
+*     End of DLAQPS
+*
+      END
Index: src/lapack/double/dgeqr2.f
===================================================================
--- src/lapack/double/dgeqr2.f	(revision 0)
+++ src/lapack/double/dgeqr2.f	(revision 1)
@@ -0,0 +1,122 @@
+      SUBROUTINE DGEQR2( M, N, A, LDA, TAU, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGEQR2 computes a QR factorization of a real m by n matrix A:
+*  A = Q * R.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the m by n matrix A.
+*          On exit, the elements on and above the diagonal of the array
+*          contain the min(m,n) by n upper trapezoidal matrix R (R is
+*          upper triangular if m >= n); the elements below the diagonal,
+*          with the array TAU, represent the orthogonal matrix Q as a
+*          product of elementary reflectors (see Further Details).
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors (see Further
+*          Details).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (N)
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  The matrix Q is represented as a product of elementary reflectors
+*
+*     Q = H(1) H(2) . . . H(k), where k = min(m,n).
+*
+*  Each H(i) has the form
+*
+*     H(i) = I - tau * v * v'
+*
+*  where tau is a real scalar, and v is a real vector with
+*  v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i),
+*  and tau in TAU(i).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, K
+      DOUBLE PRECISION   AII
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, DLARFG, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGEQR2', -INFO )
+         RETURN
+      END IF
+*
+      K = MIN( M, N )
+*
+      DO 10 I = 1, K
+*
+*        Generate elementary reflector H(i) to annihilate A(i+1:m,i)
+*
+         CALL DLARFG( M-I+1, A( I, I ), A( MIN( I+1, M ), I ), 1,
+     $                TAU( I ) )
+         IF( I.LT.N ) THEN
+*
+*           Apply H(i) to A(i:m,i+1:n) from the left
+*
+            AII = A( I, I )
+            A( I, I ) = ONE
+            CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ),
+     $                  A( I, I+1 ), LDA, WORK )
+            A( I, I ) = AII
+         END IF
+   10 CONTINUE
+      RETURN
+*
+*     End of DGEQR2
+*
+      END
Index: src/lapack/double/dlasrt.f
===================================================================
--- src/lapack/double/dlasrt.f	(revision 0)
+++ src/lapack/double/dlasrt.f	(revision 1)
@@ -0,0 +1,244 @@
+      SUBROUTINE DLASRT( ID, N, D, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          ID
+      INTEGER            INFO, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   D( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  Sort the numbers in D in increasing order (if ID = 'I') or
+*  in decreasing order (if ID = 'D' ).
+*
+*  Use Quick Sort, reverting to Insertion sort on arrays of
+*  size <= 20. Dimension of STACK limits N to about 2**32.
+*
+*  Arguments
+*  =========
+*
+*  ID      (input) CHARACTER*1
+*          = 'I': sort D in increasing order;
+*          = 'D': sort D in decreasing order.
+*
+*  N       (input) INTEGER
+*          The length of the array D.
+*
+*  D       (input/output) DOUBLE PRECISION array, dimension (N)
+*          On entry, the array to be sorted.
+*          On exit, D has been sorted into increasing order
+*          (D(1) <= ... <= D(N) ) or into decreasing order
+*          (D(1) >= ... >= D(N) ), depending on ID.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            SELECT
+      PARAMETER          ( SELECT = 20 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            DIR, ENDD, I, J, START, STKPNT
+      DOUBLE PRECISION   D1, D2, D3, DMNMX, TMP
+*     ..
+*     .. Local Arrays ..
+      INTEGER            STACK( 2, 32 )
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           XERBLA
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input paramters.
+*
+      INFO = 0
+      DIR = -1
+      IF( LSAME( ID, 'D' ) ) THEN
+         DIR = 0
+      ELSE IF( LSAME( ID, 'I' ) ) THEN
+         DIR = 1
+      END IF
+      IF( DIR.EQ.-1 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASRT', -INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( N.LE.1 )
+     $   RETURN
+*
+      STKPNT = 1
+      STACK( 1, 1 ) = 1
+      STACK( 2, 1 ) = N
+   10 CONTINUE
+      START = STACK( 1, STKPNT )
+      ENDD = STACK( 2, STKPNT )
+      STKPNT = STKPNT - 1
+      IF( ENDD-START.LE.SELECT .AND. ENDD-START.GT.0 ) THEN
+*
+*        Do Insertion sort on D( START:ENDD )
+*
+         IF( DIR.EQ.0 ) THEN
+*
+*           Sort into decreasing order
+*
+            DO 30 I = START + 1, ENDD
+               DO 20 J = I, START + 1, -1
+                  IF( D( J ).GT.D( J-1 ) ) THEN
+                     DMNMX = D( J )
+                     D( J ) = D( J-1 )
+                     D( J-1 ) = DMNMX
+                  ELSE
+                     GO TO 30
+                  END IF
+   20          CONTINUE
+   30       CONTINUE
+*
+         ELSE
+*
+*           Sort into increasing order
+*
+            DO 50 I = START + 1, ENDD
+               DO 40 J = I, START + 1, -1
+                  IF( D( J ).LT.D( J-1 ) ) THEN
+                     DMNMX = D( J )
+                     D( J ) = D( J-1 )
+                     D( J-1 ) = DMNMX
+                  ELSE
+                     GO TO 50
+                  END IF
+   40          CONTINUE
+   50       CONTINUE
+*
+         END IF
+*
+      ELSE IF( ENDD-START.GT.SELECT ) THEN
+*
+*        Partition D( START:ENDD ) and stack parts, largest one first
+*
+*        Choose partition entry as median of 3
+*
+         D1 = D( START )
+         D2 = D( ENDD )
+         I = ( START+ENDD ) / 2
+         D3 = D( I )
+         IF( D1.LT.D2 ) THEN
+            IF( D3.LT.D1 ) THEN
+               DMNMX = D1
+            ELSE IF( D3.LT.D2 ) THEN
+               DMNMX = D3
+            ELSE
+               DMNMX = D2
+            END IF
+         ELSE
+            IF( D3.LT.D2 ) THEN
+               DMNMX = D2
+            ELSE IF( D3.LT.D1 ) THEN
+               DMNMX = D3
+            ELSE
+               DMNMX = D1
+            END IF
+         END IF
+*
+         IF( DIR.EQ.0 ) THEN
+*
+*           Sort into decreasing order
+*
+            I = START - 1
+            J = ENDD + 1
+   60       CONTINUE
+   70       CONTINUE
+            J = J - 1
+            IF( D( J ).LT.DMNMX )
+     $         GO TO 70
+   80       CONTINUE
+            I = I + 1
+            IF( D( I ).GT.DMNMX )
+     $         GO TO 80
+            IF( I.LT.J ) THEN
+               TMP = D( I )
+               D( I ) = D( J )
+               D( J ) = TMP
+               GO TO 60
+            END IF
+            IF( J-START.GT.ENDD-J-1 ) THEN
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = START
+               STACK( 2, STKPNT ) = J
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = J + 1
+               STACK( 2, STKPNT ) = ENDD
+            ELSE
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = J + 1
+               STACK( 2, STKPNT ) = ENDD
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = START
+               STACK( 2, STKPNT ) = J
+            END IF
+         ELSE
+*
+*           Sort into increasing order
+*
+            I = START - 1
+            J = ENDD + 1
+   90       CONTINUE
+  100       CONTINUE
+            J = J - 1
+            IF( D( J ).GT.DMNMX )
+     $         GO TO 100
+  110       CONTINUE
+            I = I + 1
+            IF( D( I ).LT.DMNMX )
+     $         GO TO 110
+            IF( I.LT.J ) THEN
+               TMP = D( I )
+               D( I ) = D( J )
+               D( J ) = TMP
+               GO TO 90
+            END IF
+            IF( J-START.GT.ENDD-J-1 ) THEN
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = START
+               STACK( 2, STKPNT ) = J
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = J + 1
+               STACK( 2, STKPNT ) = ENDD
+            ELSE
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = J + 1
+               STACK( 2, STKPNT ) = ENDD
+               STKPNT = STKPNT + 1
+               STACK( 1, STKPNT ) = START
+               STACK( 2, STKPNT ) = J
+            END IF
+         END IF
+      END IF
+      IF( STKPNT.GT.0 )
+     $   GO TO 10
+      RETURN
+*
+*     End of DLASRT
+*
+      END
Index: src/lapack/double/dlange.f
===================================================================
--- src/lapack/double/dlange.f	(revision 0)
+++ src/lapack/double/dlange.f	(revision 1)
@@ -0,0 +1,145 @@
+      DOUBLE PRECISION FUNCTION DLANGE( NORM, M, N, A, LDA, WORK )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          NORM
+      INTEGER            LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLANGE  returns the value of the one norm,  or the Frobenius norm, or
+*  the  infinity norm,  or the  element of  largest absolute value  of a
+*  real matrix A.
+*
+*  Description
+*  ===========
+*
+*  DLANGE returns the value
+*
+*     DLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
+*              (
+*              ( norm1(A),         NORM = '1', 'O' or 'o'
+*              (
+*              ( normI(A),         NORM = 'I' or 'i'
+*              (
+*              ( normF(A),         NORM = 'F', 'f', 'E' or 'e'
+*
+*  where  norm1  denotes the  one norm of a matrix (maximum column sum),
+*  normI  denotes the  infinity norm  of a matrix  (maximum row sum) and
+*  normF  denotes the  Frobenius norm of a matrix (square root of sum of
+*  squares).  Note that  max(abs(A(i,j)))  is not a consistent matrix norm.
+*
+*  Arguments
+*  =========
+*
+*  NORM    (input) CHARACTER*1
+*          Specifies the value to be returned in DLANGE as described
+*          above.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.  When M = 0,
+*          DLANGE is set to zero.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.  When N = 0,
+*          DLANGE is set to zero.
+*
+*  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
+*          The m by n matrix A.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(M,1).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
+*          where LWORK >= M when NORM = 'I'; otherwise, WORK is not
+*          referenced.
+*
+* =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, J
+      DOUBLE PRECISION   SCALE, SUM, VALUE
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLASSQ
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN, SQRT
+*     ..
+*     .. Executable Statements ..
+*
+      IF( MIN( M, N ).EQ.0 ) THEN
+         VALUE = ZERO
+      ELSE IF( LSAME( NORM, 'M' ) ) THEN
+*
+*        Find max(abs(A(i,j))).
+*
+         VALUE = ZERO
+         DO 20 J = 1, N
+            DO 10 I = 1, M
+               VALUE = MAX( VALUE, ABS( A( I, J ) ) )
+   10       CONTINUE
+   20    CONTINUE
+      ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
+*
+*        Find norm1(A).
+*
+         VALUE = ZERO
+         DO 40 J = 1, N
+            SUM = ZERO
+            DO 30 I = 1, M
+               SUM = SUM + ABS( A( I, J ) )
+   30       CONTINUE
+            VALUE = MAX( VALUE, SUM )
+   40    CONTINUE
+      ELSE IF( LSAME( NORM, 'I' ) ) THEN
+*
+*        Find normI(A).
+*
+         DO 50 I = 1, M
+            WORK( I ) = ZERO
+   50    CONTINUE
+         DO 70 J = 1, N
+            DO 60 I = 1, M
+               WORK( I ) = WORK( I ) + ABS( A( I, J ) )
+   60       CONTINUE
+   70    CONTINUE
+         VALUE = ZERO
+         DO 80 I = 1, M
+            VALUE = MAX( VALUE, WORK( I ) )
+   80    CONTINUE
+      ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
+*
+*        Find normF(A).
+*
+         SCALE = ZERO
+         SUM = ONE
+         DO 90 J = 1, N
+            CALL DLASSQ( M, A( 1, J ), 1, SCALE, SUM )
+   90    CONTINUE
+         VALUE = SCALE*SQRT( SUM )
+      END IF
+*
+      DLANGE = VALUE
+      RETURN
+*
+*     End of DLANGE
+*
+      END
Index: src/lapack/double/dlalsa.f
===================================================================
--- src/lapack/double/dlalsa.f	(revision 0)
+++ src/lapack/double/dlalsa.f	(revision 1)
@@ -0,0 +1,363 @@
+      SUBROUTINE DLALSA( ICOMPQ, SMLSIZ, N, NRHS, B, LDB, BX, LDBX, U,
+     $                   LDU, VT, K, DIFL, DIFR, Z, POLES, GIVPTR,
+     $                   GIVCOL, LDGCOL, PERM, GIVNUM, C, S, WORK,
+     $                   IWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            ICOMPQ, INFO, LDB, LDBX, LDGCOL, LDU, N, NRHS,
+     $                   SMLSIZ
+*     ..
+*     .. Array Arguments ..
+      INTEGER            GIVCOL( LDGCOL, * ), GIVPTR( * ), IWORK( * ),
+     $                   K( * ), PERM( LDGCOL, * )
+      DOUBLE PRECISION   B( LDB, * ), BX( LDBX, * ), C( * ),
+     $                   DIFL( LDU, * ), DIFR( LDU, * ),
+     $                   GIVNUM( LDU, * ), POLES( LDU, * ), S( * ),
+     $                   U( LDU, * ), VT( LDU, * ), WORK( * ),
+     $                   Z( LDU, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLALSA is an itermediate step in solving the least squares problem
+*  by computing the SVD of the coefficient matrix in compact form (The
+*  singular vectors are computed as products of simple orthorgonal
+*  matrices.).
+*
+*  If ICOMPQ = 0, DLALSA applies the inverse of the left singular vector
+*  matrix of an upper bidiagonal matrix to the right hand side; and if
+*  ICOMPQ = 1, DLALSA applies the right singular vector matrix to the
+*  right hand side. The singular vector matrices were generated in
+*  compact form by DLALSA.
+*
+*  Arguments
+*  =========
+*
+*
+*  ICOMPQ (input) INTEGER
+*         Specifies whether the left or the right singular vector
+*         matrix is involved.
+*         = 0: Left singular vector matrix
+*         = 1: Right singular vector matrix
+*
+*  SMLSIZ (input) INTEGER
+*         The maximum size of the subproblems at the bottom of the
+*         computation tree.
+*
+*  N      (input) INTEGER
+*         The row and column dimensions of the upper bidiagonal matrix.
+*
+*  NRHS   (input) INTEGER
+*         The number of columns of B and BX. NRHS must be at least 1.
+*
+*  B      (input/output) DOUBLE PRECISION array, dimension ( LDB, NRHS )
+*         On input, B contains the right hand sides of the least
+*         squares problem in rows 1 through M.
+*         On output, B contains the solution X in rows 1 through N.
+*
+*  LDB    (input) INTEGER
+*         The leading dimension of B in the calling subprogram.
+*         LDB must be at least max(1,MAX( M, N ) ).
+*
+*  BX     (output) DOUBLE PRECISION array, dimension ( LDBX, NRHS )
+*         On exit, the result of applying the left or right singular
+*         vector matrix to B.
+*
+*  LDBX   (input) INTEGER
+*         The leading dimension of BX.
+*
+*  U      (input) DOUBLE PRECISION array, dimension ( LDU, SMLSIZ ).
+*         On entry, U contains the left singular vector matrices of all
+*         subproblems at the bottom level.
+*
+*  LDU    (input) INTEGER, LDU = > N.
+*         The leading dimension of arrays U, VT, DIFL, DIFR,
+*         POLES, GIVNUM, and Z.
+*
+*  VT     (input) DOUBLE PRECISION array, dimension ( LDU, SMLSIZ+1 ).
+*         On entry, VT' contains the right singular vector matrices of
+*         all subproblems at the bottom level.
+*
+*  K      (input) INTEGER array, dimension ( N ).
+*
+*  DIFL   (input) DOUBLE PRECISION array, dimension ( LDU, NLVL ).
+*         where NLVL = INT(log_2 (N/(SMLSIZ+1))) + 1.
+*
+*  DIFR   (input) DOUBLE PRECISION array, dimension ( LDU, 2 * NLVL ).
+*         On entry, DIFL(*, I) and DIFR(*, 2 * I -1) record
+*         distances between singular values on the I-th level and
+*         singular values on the (I -1)-th level, and DIFR(*, 2 * I)
+*         record the normalizing factors of the right singular vectors
+*         matrices of subproblems on I-th level.
+*
+*  Z      (input) DOUBLE PRECISION array, dimension ( LDU, NLVL ).
+*         On entry, Z(1, I) contains the components of the deflation-
+*         adjusted updating row vector for subproblems on the I-th
+*         level.
+*
+*  POLES  (input) DOUBLE PRECISION array, dimension ( LDU, 2 * NLVL ).
+*         On entry, POLES(*, 2 * I -1: 2 * I) contains the new and old
+*         singular values involved in the secular equations on the I-th
+*         level.
+*
+*  GIVPTR (input) INTEGER array, dimension ( N ).
+*         On entry, GIVPTR( I ) records the number of Givens
+*         rotations performed on the I-th problem on the computation
+*         tree.
+*
+*  GIVCOL (input) INTEGER array, dimension ( LDGCOL, 2 * NLVL ).
+*         On entry, for each I, GIVCOL(*, 2 * I - 1: 2 * I) records the
+*         locations of Givens rotations performed on the I-th level on
+*         the computation tree.
+*
+*  LDGCOL (input) INTEGER, LDGCOL = > N.
+*         The leading dimension of arrays GIVCOL and PERM.
+*
+*  PERM   (input) INTEGER array, dimension ( LDGCOL, NLVL ).
+*         On entry, PERM(*, I) records permutations done on the I-th
+*         level of the computation tree.
+*
+*  GIVNUM (input) DOUBLE PRECISION array, dimension ( LDU, 2 * NLVL ).
+*         On entry, GIVNUM(*, 2 *I -1 : 2 * I) records the C- and S-
+*         values of Givens rotations performed on the I-th level on the
+*         computation tree.
+*
+*  C      (input) DOUBLE PRECISION array, dimension ( N ).
+*         On entry, if the I-th subproblem is not square,
+*         C( I ) contains the C-value of a Givens rotation related to
+*         the right null space of the I-th subproblem.
+*
+*  S      (input) DOUBLE PRECISION array, dimension ( N ).
+*         On entry, if the I-th subproblem is not square,
+*         S( I ) contains the S-value of a Givens rotation related to
+*         the right null space of the I-th subproblem.
+*
+*  WORK   (workspace) DOUBLE PRECISION array.
+*         The dimension must be at least N.
+*
+*  IWORK  (workspace) INTEGER array.
+*         The dimension must be at least 3 * N
+*
+*  INFO   (output) INTEGER
+*          = 0:  successful exit.
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Ren-Cang Li, Computer Science Division, University of
+*       California at Berkeley, USA
+*     Osni Marques, LBNL/NERSC, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, I1, IC, IM1, INODE, J, LF, LL, LVL, LVL2,
+     $                   ND, NDB1, NDIML, NDIMR, NL, NLF, NLP1, NLVL,
+     $                   NR, NRF, NRP1, SQRE
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEMM, DLALS0, DLASDT, XERBLA
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( SMLSIZ.LT.3 ) THEN
+         INFO = -2
+      ELSE IF( N.LT.SMLSIZ ) THEN
+         INFO = -3
+      ELSE IF( NRHS.LT.1 ) THEN
+         INFO = -4
+      ELSE IF( LDB.LT.N ) THEN
+         INFO = -6
+      ELSE IF( LDBX.LT.N ) THEN
+         INFO = -8
+      ELSE IF( LDU.LT.N ) THEN
+         INFO = -10
+      ELSE IF( LDGCOL.LT.N ) THEN
+         INFO = -19
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLALSA', -INFO )
+         RETURN
+      END IF
+*
+*     Book-keeping and  setting up the computation tree.
+*
+      INODE = 1
+      NDIML = INODE + N
+      NDIMR = NDIML + N
+*
+      CALL DLASDT( N, NLVL, ND, IWORK( INODE ), IWORK( NDIML ),
+     $             IWORK( NDIMR ), SMLSIZ )
+*
+*     The following code applies back the left singular vector factors.
+*     For applying back the right singular vector factors, go to 50.
+*
+      IF( ICOMPQ.EQ.1 ) THEN
+         GO TO 50
+      END IF
+*
+*     The nodes on the bottom level of the tree were solved
+*     by DLASDQ. The corresponding left and right singular vector
+*     matrices are in explicit form. First apply back the left
+*     singular vector matrices.
+*
+      NDB1 = ( ND+1 ) / 2
+      DO 10 I = NDB1, ND
+*
+*        IC : center row of each node
+*        NL : number of rows of left  subproblem
+*        NR : number of rows of right subproblem
+*        NLF: starting row of the left   subproblem
+*        NRF: starting row of the right  subproblem
+*
+         I1 = I - 1
+         IC = IWORK( INODE+I1 )
+         NL = IWORK( NDIML+I1 )
+         NR = IWORK( NDIMR+I1 )
+         NLF = IC - NL
+         NRF = IC + 1
+         CALL DGEMM( 'T', 'N', NL, NRHS, NL, ONE, U( NLF, 1 ), LDU,
+     $               B( NLF, 1 ), LDB, ZERO, BX( NLF, 1 ), LDBX )
+         CALL DGEMM( 'T', 'N', NR, NRHS, NR, ONE, U( NRF, 1 ), LDU,
+     $               B( NRF, 1 ), LDB, ZERO, BX( NRF, 1 ), LDBX )
+   10 CONTINUE
+*
+*     Next copy the rows of B that correspond to unchanged rows
+*     in the bidiagonal matrix to BX.
+*
+      DO 20 I = 1, ND
+         IC = IWORK( INODE+I-1 )
+         CALL DCOPY( NRHS, B( IC, 1 ), LDB, BX( IC, 1 ), LDBX )
+   20 CONTINUE
+*
+*     Finally go through the left singular vector matrices of all
+*     the other subproblems bottom-up on the tree.
+*
+      J = 2**NLVL
+      SQRE = 0
+*
+      DO 40 LVL = NLVL, 1, -1
+         LVL2 = 2*LVL - 1
+*
+*        find the first node LF and last node LL on
+*        the current level LVL
+*
+         IF( LVL.EQ.1 ) THEN
+            LF = 1
+            LL = 1
+         ELSE
+            LF = 2**( LVL-1 )
+            LL = 2*LF - 1
+         END IF
+         DO 30 I = LF, LL
+            IM1 = I - 1
+            IC = IWORK( INODE+IM1 )
+            NL = IWORK( NDIML+IM1 )
+            NR = IWORK( NDIMR+IM1 )
+            NLF = IC - NL
+            NRF = IC + 1
+            J = J - 1
+            CALL DLALS0( ICOMPQ, NL, NR, SQRE, NRHS, BX( NLF, 1 ), LDBX,
+     $                   B( NLF, 1 ), LDB, PERM( NLF, LVL ),
+     $                   GIVPTR( J ), GIVCOL( NLF, LVL2 ), LDGCOL,
+     $                   GIVNUM( NLF, LVL2 ), LDU, POLES( NLF, LVL2 ),
+     $                   DIFL( NLF, LVL ), DIFR( NLF, LVL2 ),
+     $                   Z( NLF, LVL ), K( J ), C( J ), S( J ), WORK,
+     $                   INFO )
+   30    CONTINUE
+   40 CONTINUE
+      GO TO 90
+*
+*     ICOMPQ = 1: applying back the right singular vector factors.
+*
+   50 CONTINUE
+*
+*     First now go through the right singular vector matrices of all
+*     the tree nodes top-down.
+*
+      J = 0
+      DO 70 LVL = 1, NLVL
+         LVL2 = 2*LVL - 1
+*
+*        Find the first node LF and last node LL on
+*        the current level LVL.
+*
+         IF( LVL.EQ.1 ) THEN
+            LF = 1
+            LL = 1
+         ELSE
+            LF = 2**( LVL-1 )
+            LL = 2*LF - 1
+         END IF
+         DO 60 I = LL, LF, -1
+            IM1 = I - 1
+            IC = IWORK( INODE+IM1 )
+            NL = IWORK( NDIML+IM1 )
+            NR = IWORK( NDIMR+IM1 )
+            NLF = IC - NL
+            NRF = IC + 1
+            IF( I.EQ.LL ) THEN
+               SQRE = 0
+            ELSE
+               SQRE = 1
+            END IF
+            J = J + 1
+            CALL DLALS0( ICOMPQ, NL, NR, SQRE, NRHS, B( NLF, 1 ), LDB,
+     $                   BX( NLF, 1 ), LDBX, PERM( NLF, LVL ),
+     $                   GIVPTR( J ), GIVCOL( NLF, LVL2 ), LDGCOL,
+     $                   GIVNUM( NLF, LVL2 ), LDU, POLES( NLF, LVL2 ),
+     $                   DIFL( NLF, LVL ), DIFR( NLF, LVL2 ),
+     $                   Z( NLF, LVL ), K( J ), C( J ), S( J ), WORK,
+     $                   INFO )
+   60    CONTINUE
+   70 CONTINUE
+*
+*     The nodes on the bottom level of the tree were solved
+*     by DLASDQ. The corresponding right singular vector
+*     matrices are in explicit form. Apply them back.
+*
+      NDB1 = ( ND+1 ) / 2
+      DO 80 I = NDB1, ND
+         I1 = I - 1
+         IC = IWORK( INODE+I1 )
+         NL = IWORK( NDIML+I1 )
+         NR = IWORK( NDIMR+I1 )
+         NLP1 = NL + 1
+         IF( I.EQ.ND ) THEN
+            NRP1 = NR
+         ELSE
+            NRP1 = NR + 1
+         END IF
+         NLF = IC - NL
+         NRF = IC + 1
+         CALL DGEMM( 'T', 'N', NLP1, NRHS, NLP1, ONE, VT( NLF, 1 ), LDU,
+     $               B( NLF, 1 ), LDB, ZERO, BX( NLF, 1 ), LDBX )
+         CALL DGEMM( 'T', 'N', NRP1, NRHS, NRP1, ONE, VT( NRF, 1 ), LDU,
+     $               B( NRF, 1 ), LDB, ZERO, BX( NRF, 1 ), LDBX )
+   80 CONTINUE
+*
+   90 CONTINUE
+*
+      RETURN
+*
+*     End of DLALSA
+*
+      END
Index: src/lapack/double/dlarzt.f
===================================================================
--- src/lapack/double/dlarzt.f	(revision 0)
+++ src/lapack/double/dlarzt.f	(revision 1)
@@ -0,0 +1,185 @@
+      SUBROUTINE DLARZT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          DIRECT, STOREV
+      INTEGER            K, LDT, LDV, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   T( LDT, * ), TAU( * ), V( LDV, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLARZT forms the triangular factor T of a real block reflector
+*  H of order > n, which is defined as a product of k elementary
+*  reflectors.
+*
+*  If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
+*
+*  If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
+*
+*  If STOREV = 'C', the vector which defines the elementary reflector
+*  H(i) is stored in the i-th column of the array V, and
+*
+*     H  =  I - V * T * V'
+*
+*  If STOREV = 'R', the vector which defines the elementary reflector
+*  H(i) is stored in the i-th row of the array V, and
+*
+*     H  =  I - V' * T * V
+*
+*  Currently, only STOREV = 'R' and DIRECT = 'B' are supported.
+*
+*  Arguments
+*  =========
+*
+*  DIRECT  (input) CHARACTER*1
+*          Specifies the order in which the elementary reflectors are
+*          multiplied to form the block reflector:
+*          = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)
+*          = 'B': H = H(k) . . . H(2) H(1) (Backward)
+*
+*  STOREV  (input) CHARACTER*1
+*          Specifies how the vectors which define the elementary
+*          reflectors are stored (see also Further Details):
+*          = 'C': columnwise                        (not supported yet)
+*          = 'R': rowwise
+*
+*  N       (input) INTEGER
+*          The order of the block reflector H. N >= 0.
+*
+*  K       (input) INTEGER
+*          The order of the triangular factor T (= the number of
+*          elementary reflectors). K >= 1.
+*
+*  V       (input/output) DOUBLE PRECISION array, dimension
+*                               (LDV,K) if STOREV = 'C'
+*                               (LDV,N) if STOREV = 'R'
+*          The matrix V. See further details.
+*
+*  LDV     (input) INTEGER
+*          The leading dimension of the array V.
+*          If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i).
+*
+*  T       (output) DOUBLE PRECISION array, dimension (LDT,K)
+*          The k by k triangular factor T of the block reflector.
+*          If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
+*          lower triangular. The rest of the array is not used.
+*
+*  LDT     (input) INTEGER
+*          The leading dimension of the array T. LDT >= K.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  The shape of the matrix V and the storage of the vectors which define
+*  the H(i) is best illustrated by the following example with n = 5 and
+*  k = 3. The elements equal to 1 are not stored; the corresponding
+*  array elements are modified but restored on exit. The rest of the
+*  array is not used.
+*
+*  DIRECT = 'F' and STOREV = 'C':         DIRECT = 'F' and STOREV = 'R':
+*
+*                                              ______V_____
+*         ( v1 v2 v3 )                        /            \
+*         ( v1 v2 v3 )                      ( v1 v1 v1 v1 v1 . . . . 1 )
+*     V = ( v1 v2 v3 )                      ( v2 v2 v2 v2 v2 . . . 1   )
+*         ( v1 v2 v3 )                      ( v3 v3 v3 v3 v3 . . 1     )
+*         ( v1 v2 v3 )
+*            .  .  .
+*            .  .  .
+*            1  .  .
+*               1  .
+*                  1
+*
+*  DIRECT = 'B' and STOREV = 'C':         DIRECT = 'B' and STOREV = 'R':
+*
+*                                                        ______V_____
+*            1                                          /            \
+*            .  1                           ( 1 . . . . v1 v1 v1 v1 v1 )
+*            .  .  1                        ( . 1 . . . v2 v2 v2 v2 v2 )
+*            .  .  .                        ( . . 1 . . v3 v3 v3 v3 v3 )
+*            .  .  .
+*         ( v1 v2 v3 )
+*         ( v1 v2 v3 )
+*     V = ( v1 v2 v3 )
+*         ( v1 v2 v3 )
+*         ( v1 v2 v3 )
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, INFO, J
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEMV, DTRMV, XERBLA
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Executable Statements ..
+*
+*     Check for currently supported options
+*
+      INFO = 0
+      IF( .NOT.LSAME( DIRECT, 'B' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.LSAME( STOREV, 'R' ) ) THEN
+         INFO = -2
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLARZT', -INFO )
+         RETURN
+      END IF
+*
+      DO 20 I = K, 1, -1
+         IF( TAU( I ).EQ.ZERO ) THEN
+*
+*           H(i)  =  I
+*
+            DO 10 J = I, K
+               T( J, I ) = ZERO
+   10       CONTINUE
+         ELSE
+*
+*           general case
+*
+            IF( I.LT.K ) THEN
+*
+*              T(i+1:k,i) = - tau(i) * V(i+1:k,1:n) * V(i,1:n)'
+*
+               CALL DGEMV( 'No transpose', K-I, N, -TAU( I ),
+     $                     V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
+     $                     T( I+1, I ), 1 )
+*
+*              T(i+1:k,i) = T(i+1:k,i+1:k) * T(i+1:k,i)
+*
+               CALL DTRMV( 'Lower', 'No transpose', 'Non-unit', K-I,
+     $                     T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
+            END IF
+            T( I, I ) = TAU( I )
+         END IF
+   20 CONTINUE
+      RETURN
+*
+*     End of DLARZT
+*
+      END
Index: src/lapack/double/dlatrz.f
===================================================================
--- src/lapack/double/dlatrz.f	(revision 0)
+++ src/lapack/double/dlatrz.f	(revision 1)
@@ -0,0 +1,128 @@
+      SUBROUTINE DLATRZ( M, N, L, A, LDA, TAU, WORK )
+*
+*  -- LAPACK routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            L, LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLATRZ factors the M-by-(M+L) real upper trapezoidal matrix
+*  [ A1 A2 ] = [ A(1:M,1:M) A(1:M,N-L+1:N) ] as ( R  0 ) * Z, by means
+*  of orthogonal transformations.  Z is an (M+L)-by-(M+L) orthogonal
+*  matrix and, R and A1 are M-by-M upper triangular matrices.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  L       (input) INTEGER
+*          The number of columns of the matrix A containing the
+*          meaningful part of the Householder vectors. N-M >= L >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the leading M-by-N upper trapezoidal part of the
+*          array A must contain the matrix to be factorized.
+*          On exit, the leading M-by-M upper triangular part of A
+*          contains the upper triangular matrix R, and elements N-L+1 to
+*          N of the first M rows of A, with the array TAU, represent the
+*          orthogonal matrix Z as a product of M elementary reflectors.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (M)
+*          The scalar factors of the elementary reflectors.
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (M)
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+*
+*  The factorization is obtained by Householder's method.  The kth
+*  transformation matrix, Z( k ), which is used to introduce zeros into
+*  the ( m - k + 1 )th row of A, is given in the form
+*
+*     Z( k ) = ( I     0   ),
+*              ( 0  T( k ) )
+*
+*  where
+*
+*     T( k ) = I - tau*u( k )*u( k )',   u( k ) = (   1    ),
+*                                                 (   0    )
+*                                                 ( z( k ) )
+*
+*  tau is a scalar and z( k ) is an l element vector. tau and z( k )
+*  are chosen to annihilate the elements of the kth row of A2.
+*
+*  The scalar tau is returned in the kth element of TAU and the vector
+*  u( k ) in the kth row of A2, such that the elements of z( k ) are
+*  in  a( k, l + 1 ), ..., a( k, n ). The elements of R are returned in
+*  the upper triangular part of A1.
+*
+*  Z is given by
+*
+*     Z =  Z( 1 ) * Z( 2 ) * ... * Z( m ).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO
+      PARAMETER          ( ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARFG, DLARZ
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 ) THEN
+         RETURN
+      ELSE IF( M.EQ.N ) THEN
+         DO 10 I = 1, N
+            TAU( I ) = ZERO
+   10    CONTINUE
+         RETURN
+      END IF
+*
+      DO 20 I = M, 1, -1
+*
+*        Generate elementary reflector H(i) to annihilate
+*        [ A(i,i) A(i,n-l+1:n) ]
+*
+         CALL DLARFG( L+1, A( I, I ), A( I, N-L+1 ), LDA, TAU( I ) )
+*
+*        Apply H(i) to A(1:i-1,i:n) from the right
+*
+         CALL DLARZ( 'Right', I-1, N-I+1, L, A( I, N-L+1 ), LDA,
+     $               TAU( I ), A( 1, I ), LDA, WORK )
+*
+   20 CONTINUE
+*
+      RETURN
+*
+*     End of DLATRZ
+*
+      END
Index: src/lapack/double/dgelsd.f
===================================================================
--- src/lapack/double/dgelsd.f	(revision 0)
+++ src/lapack/double/dgelsd.f	(revision 1)
@@ -0,0 +1,539 @@
+      SUBROUTINE DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
+     $                   WORK, LWORK, IWORK, INFO )
+*
+*  -- LAPACK driver routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+      DOUBLE PRECISION   RCOND
+*     ..
+*     .. Array Arguments ..
+      INTEGER            IWORK( * )
+      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), S( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGELSD computes the minimum-norm solution to a real linear least
+*  squares problem:
+*      minimize 2-norm(| b - A*x |)
+*  using the singular value decomposition (SVD) of A. A is an M-by-N
+*  matrix which may be rank-deficient.
+*
+*  Several right hand side vectors b and solution vectors x can be
+*  handled in a single call; they are stored as the columns of the
+*  M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+*  matrix X.
+*
+*  The problem is solved in three steps:
+*  (1) Reduce the coefficient matrix A to bidiagonal form with
+*      Householder transformations, reducing the original problem
+*      into a "bidiagonal least squares problem" (BLS)
+*  (2) Solve the BLS using a divide and conquer approach.
+*  (3) Apply back all the Householder tranformations to solve
+*      the original least squares problem.
+*
+*  The effective rank of A is determined by treating as zero those
+*  singular values which are less than RCOND times the largest singular
+*  value.
+*
+*  The divide and conquer algorithm makes very mild assumptions about
+*  floating point arithmetic. It will work on machines with a guard
+*  digit in add/subtract, or on those binary machines without guard
+*  digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
+*  Cray-2. It could conceivably fail on hexadecimal or decimal machines
+*  without guard digits, but we know of none.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of A. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of A. N >= 0.
+*
+*  NRHS    (input) INTEGER
+*          The number of right hand sides, i.e., the number of columns
+*          of the matrices B and X. NRHS >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the M-by-N matrix A.
+*          On exit, A has been destroyed.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  B       (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+*          On entry, the M-by-NRHS right hand side matrix B.
+*          On exit, B is overwritten by the N-by-NRHS solution
+*          matrix X.  If m >= n and RANK = n, the residual
+*          sum-of-squares for the solution in the i-th column is given
+*          by the sum of squares of elements n+1:m in that column.
+*
+*  LDB     (input) INTEGER
+*          The leading dimension of the array B. LDB >= max(1,max(M,N)).
+*
+*  S       (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The singular values of A in decreasing order.
+*          The condition number of A in the 2-norm = S(1)/S(min(m,n)).
+*
+*  RCOND   (input) DOUBLE PRECISION
+*          RCOND is used to determine the effective rank of A.
+*          Singular values S(i) <= RCOND*S(1) are treated as zero.
+*          If RCOND < 0, machine precision is used instead.
+*
+*  RANK    (output) INTEGER
+*          The effective rank of A, i.e., the number of singular values
+*          which are greater than RCOND*S(1).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK. LWORK must be at least 1.
+*          The exact minimum amount of workspace needed depends on M,
+*          N and NRHS. As long as LWORK is at least
+*              12*N + 2*N*SMLSIZ + 8*N*NLVL + N*NRHS + (SMLSIZ+1)**2,
+*          if M is greater than or equal to N or
+*              12*M + 2*M*SMLSIZ + 8*M*NLVL + M*NRHS + (SMLSIZ+1)**2,
+*          if M is less than N, the code will execute correctly.
+*          SMLSIZ is returned by ILAENV and is equal to the maximum
+*          size of the subproblems at the bottom of the computation
+*          tree (usually about 25), and
+*             NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SMLSIZ+1) ) ) + 1 )
+*          For good performance, LWORK should generally be larger.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  IWORK   (workspace) INTEGER array, dimension (MAX(1,LIWORK))
+*          LIWORK >= max(1, 3 * MINMN * NLVL + 11 * MINMN),
+*          where MINMN = MIN( M,N ).
+*          On exit, if INFO = 0, IWORK(1) returns the minimum LIWORK.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*          > 0:  the algorithm for computing the SVD failed to converge;
+*                if INFO = i, i off-diagonal elements of an intermediate
+*                bidiagonal form did not converge to zero.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Ren-Cang Li, Computer Science Division, University of
+*       California at Berkeley, USA
+*     Osni Marques, LBNL/NERSC, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE, TWO
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LQUERY
+      INTEGER            IASCL, IBSCL, IE, IL, ITAU, ITAUP, ITAUQ,
+     $                   LDWORK, LIWORK, MAXMN, MAXWRK, MINMN, MINWRK,
+     $                   MM, MNTHR, NLVL, NWORK, SMLSIZ, WLALSD
+      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, EPS, SFMIN, SMLNUM
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DGEBRD, DGELQF, DGEQRF, DLABAD, DLACPY, DLALSD,
+     $                   DLASCL, DLASET, DORMBR, DORMLQ, DORMQR, XERBLA
+*     ..
+*     .. External Functions ..
+      INTEGER            ILAENV
+      DOUBLE PRECISION   DLAMCH, DLANGE
+      EXTERNAL           ILAENV, DLAMCH, DLANGE
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          DBLE, INT, LOG, MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments.
+*
+      INFO = 0
+      MINMN = MIN( M, N )
+      MAXMN = MAX( M, N )
+      MNTHR = ILAENV( 6, 'DGELSD', ' ', M, N, NRHS, -1 )
+      LQUERY = ( LWORK.EQ.-1 )
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( NRHS.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -5
+      ELSE IF( LDB.LT.MAX( 1, MAXMN ) ) THEN
+         INFO = -7
+      END IF
+*
+      SMLSIZ = ILAENV( 9, 'DGELSD', ' ', 0, 0, 0, 0 )
+*
+*     Compute workspace.
+*     (Note: Comments in the code beginning "Workspace:" describe the
+*     minimal amount of workspace needed at that point in the code,
+*     as well as the preferred amount for good performance.
+*     NB refers to the optimal block size for the immediately
+*     following subroutine, as returned by ILAENV.)
+*
+      MINWRK = 1
+      LIWORK = 1
+      MINMN = MAX( 1, MINMN )
+      NLVL = MAX( INT( LOG( DBLE( MINMN ) / DBLE( SMLSIZ+1 ) ) /
+     $       LOG( TWO ) ) + 1, 0 )
+*
+      IF( INFO.EQ.0 ) THEN
+         MAXWRK = 0
+         LIWORK = 3*MINMN*NLVL + 11*MINMN
+         MM = M
+         IF( M.GE.N .AND. M.GE.MNTHR ) THEN
+*
+*           Path 1a - overdetermined, with many more rows than columns.
+*
+            MM = N
+            MAXWRK = MAX( MAXWRK, N+N*ILAENV( 1, 'DGEQRF', ' ', M, N,
+     $               -1, -1 ) )
+            MAXWRK = MAX( MAXWRK, N+NRHS*
+     $               ILAENV( 1, 'DORMQR', 'LT', M, NRHS, N, -1 ) )
+         END IF
+         IF( M.GE.N ) THEN
+*
+*           Path 1 - overdetermined or exactly determined.
+*
+            MAXWRK = MAX( MAXWRK, 3*N+( MM+N )*
+     $               ILAENV( 1, 'DGEBRD', ' ', MM, N, -1, -1 ) )
+            MAXWRK = MAX( MAXWRK, 3*N+NRHS*
+     $               ILAENV( 1, 'DORMBR', 'QLT', MM, NRHS, N, -1 ) )
+            MAXWRK = MAX( MAXWRK, 3*N+( N-1 )*
+     $               ILAENV( 1, 'DORMBR', 'PLN', N, NRHS, N, -1 ) )
+            WLALSD = 9*N+2*N*SMLSIZ+8*N*NLVL+N*NRHS+(SMLSIZ+1)**2
+            MAXWRK = MAX( MAXWRK, 3*N+WLALSD )
+            MINWRK = MAX( 3*N+MM, 3*N+NRHS, 3*N+WLALSD )
+         END IF
+         IF( N.GT.M ) THEN
+            WLALSD = 9*M+2*M*SMLSIZ+8*M*NLVL+M*NRHS+(SMLSIZ+1)**2
+            IF( N.GE.MNTHR ) THEN
+*
+*              Path 2a - underdetermined, with many more columns
+*              than rows.
+*
+               MAXWRK = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
+               MAXWRK = MAX( MAXWRK, M*M+4*M+2*M*
+     $                  ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
+               MAXWRK = MAX( MAXWRK, M*M+4*M+NRHS*
+     $                  ILAENV( 1, 'DORMBR', 'QLT', M, NRHS, M, -1 ) )
+               MAXWRK = MAX( MAXWRK, M*M+4*M+( M-1 )*
+     $                  ILAENV( 1, 'DORMBR', 'PLN', M, NRHS, M, -1 ) )
+               IF( NRHS.GT.1 ) THEN
+                  MAXWRK = MAX( MAXWRK, M*M+M+M*NRHS )
+               ELSE
+                  MAXWRK = MAX( MAXWRK, M*M+2*M )
+               END IF
+               MAXWRK = MAX( MAXWRK, M+NRHS*
+     $                  ILAENV( 1, 'DORMLQ', 'LT', N, NRHS, M, -1 ) )
+               MAXWRK = MAX( MAXWRK, M*M+4*M+WLALSD )
+!     XXX: Ensure the Path 2a case below is triggered.  The workspace
+!     calculation should use queries for all routines eventually.
+               MAXWRK = MAX( MAXWRK,
+     $              4*M+M*M+MAX( M, 2*M-4, NRHS, N-3*M ) )
+            ELSE
+*
+*              Path 2 - remaining underdetermined cases.
+*
+               MAXWRK = 3*M + ( N+M )*ILAENV( 1, 'DGEBRD', ' ', M, N,
+     $                  -1, -1 )
+               MAXWRK = MAX( MAXWRK, 3*M+NRHS*
+     $                  ILAENV( 1, 'DORMBR', 'QLT', M, NRHS, N, -1 ) )
+               MAXWRK = MAX( MAXWRK, 3*M+M*
+     $                  ILAENV( 1, 'DORMBR', 'PLN', N, NRHS, M, -1 ) )
+               MAXWRK = MAX( MAXWRK, 3*M+WLALSD )
+            END IF
+            MINWRK = MAX( 3*M+NRHS, 3*M+M, 3*M+WLALSD )
+         END IF
+         MINWRK = MIN( MINWRK, MAXWRK )
+         WORK( 1 ) = MAXWRK
+         IWORK( 1 ) = LIWORK
+
+         IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
+            INFO = -12
+         END IF
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGELSD', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         GO TO 10
+      END IF
+*
+*     Quick return if possible.
+*
+      IF( M.EQ.0 .OR. N.EQ.0 ) THEN
+         RANK = 0
+         RETURN
+      END IF
+*
+*     Get machine parameters.
+*
+      EPS = DLAMCH( 'P' )
+      SFMIN = DLAMCH( 'S' )
+      SMLNUM = SFMIN / EPS
+      BIGNUM = ONE / SMLNUM
+      CALL DLABAD( SMLNUM, BIGNUM )
+*
+*     Scale A if max entry outside range [SMLNUM,BIGNUM].
+*
+      ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+      IASCL = 0
+      IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+*        Scale matrix norm up to SMLNUM.
+*
+         CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+         IASCL = 1
+      ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+*        Scale matrix norm down to BIGNUM.
+*
+         CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+         IASCL = 2
+      ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+*        Matrix all zero. Return zero solution.
+*
+         CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+         CALL DLASET( 'F', MINMN, 1, ZERO, ZERO, S, 1 )
+         RANK = 0
+         GO TO 10
+      END IF
+*
+*     Scale B if max entry outside range [SMLNUM,BIGNUM].
+*
+      BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+      IBSCL = 0
+      IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+*        Scale matrix norm up to SMLNUM.
+*
+         CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+         IBSCL = 1
+      ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+*        Scale matrix norm down to BIGNUM.
+*
+         CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+         IBSCL = 2
+      END IF
+*
+*     If M < N make sure certain entries of B are zero.
+*
+      IF( M.LT.N )
+     $   CALL DLASET( 'F', N-M, NRHS, ZERO, ZERO, B( M+1, 1 ), LDB )
+*
+*     Overdetermined case.
+*
+      IF( M.GE.N ) THEN
+*
+*        Path 1 - overdetermined or exactly determined.
+*
+         MM = M
+         IF( M.GE.MNTHR ) THEN
+*
+*           Path 1a - overdetermined, with many more rows than columns.
+*
+            MM = N
+            ITAU = 1
+            NWORK = ITAU + N
+*
+*           Compute A=Q*R.
+*           (Workspace: need 2*N, prefer N+N*NB)
+*
+            CALL DGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( NWORK ),
+     $                   LWORK-NWORK+1, INFO )
+*
+*           Multiply B by transpose(Q).
+*           (Workspace: need N+NRHS, prefer N+NRHS*NB)
+*
+            CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAU ), B,
+     $                   LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+*           Zero out below R.
+*
+            IF( N.GT.1 ) THEN
+               CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ), LDA )
+            END IF
+         END IF
+*
+         IE = 1
+         ITAUQ = IE + N
+         ITAUP = ITAUQ + N
+         NWORK = ITAUP + N
+*
+*        Bidiagonalize R in A.
+*        (Workspace: need 3*N+MM, prefer 3*N+(MM+N)*NB)
+*
+         CALL DGEBRD( MM, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+     $                WORK( ITAUP ), WORK( NWORK ), LWORK-NWORK+1,
+     $                INFO )
+*
+*        Multiply B by transpose of left bidiagonalizing vectors of R.
+*        (Workspace: need 3*N+NRHS, prefer 3*N+NRHS*NB)
+*
+         CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, WORK( ITAUQ ),
+     $                B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+*        Solve the bidiagonal least squares problem.
+*
+         CALL DLALSD( 'U', SMLSIZ, N, NRHS, S, WORK( IE ), B, LDB,
+     $                RCOND, RANK, WORK( NWORK ), IWORK, INFO )
+         IF( INFO.NE.0 ) THEN
+            GO TO 10
+         END IF
+*
+*        Multiply B by right bidiagonalizing vectors of R.
+*
+         CALL DORMBR( 'P', 'L', 'N', N, NRHS, N, A, LDA, WORK( ITAUP ),
+     $                B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+      ELSE IF( N.GE.MNTHR .AND. LWORK.GE.4*M+M*M+
+     $         MAX( M, 2*M-4, NRHS, N-3*M, WLALSD ) ) THEN
+*
+*        Path 2a - underdetermined, with many more columns than rows
+*        and sufficient workspace for an efficient algorithm.
+*
+         LDWORK = M
+         IF( LWORK.GE.MAX( 4*M+M*LDA+MAX( M, 2*M-4, NRHS, N-3*M ),
+     $       M*LDA+M+M*NRHS, 4*M+M*LDA+WLALSD ) )LDWORK = LDA
+         ITAU = 1
+         NWORK = M + 1
+*
+*        Compute A=L*Q.
+*        (Workspace: need 2*M, prefer M+M*NB)
+*
+         CALL DGELQF( M, N, A, LDA, WORK( ITAU ), WORK( NWORK ),
+     $                LWORK-NWORK+1, INFO )
+         IL = NWORK
+*
+*        Copy L to WORK(IL), zeroing out above its diagonal.
+*
+         CALL DLACPY( 'L', M, M, A, LDA, WORK( IL ), LDWORK )
+         CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, WORK( IL+LDWORK ),
+     $                LDWORK )
+         IE = IL + LDWORK*M
+         ITAUQ = IE + M
+         ITAUP = ITAUQ + M
+         NWORK = ITAUP + M
+*
+*        Bidiagonalize L in WORK(IL).
+*        (Workspace: need M*M+5*M, prefer M*M+4*M+2*M*NB)
+*
+         CALL DGEBRD( M, M, WORK( IL ), LDWORK, S, WORK( IE ),
+     $                WORK( ITAUQ ), WORK( ITAUP ), WORK( NWORK ),
+     $                LWORK-NWORK+1, INFO )
+*
+*        Multiply B by transpose of left bidiagonalizing vectors of L.
+*        (Workspace: need M*M+4*M+NRHS, prefer M*M+4*M+NRHS*NB)
+*
+         CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, WORK( IL ), LDWORK,
+     $                WORK( ITAUQ ), B, LDB, WORK( NWORK ),
+     $                LWORK-NWORK+1, INFO )
+*
+*        Solve the bidiagonal least squares problem.
+*
+         CALL DLALSD( 'U', SMLSIZ, M, NRHS, S, WORK( IE ), B, LDB,
+     $                RCOND, RANK, WORK( NWORK ), IWORK, INFO )
+         IF( INFO.NE.0 ) THEN
+            GO TO 10
+         END IF
+*
+*        Multiply B by right bidiagonalizing vectors of L.
+*
+         CALL DORMBR( 'P', 'L', 'N', M, NRHS, M, WORK( IL ), LDWORK,
+     $                WORK( ITAUP ), B, LDB, WORK( NWORK ),
+     $                LWORK-NWORK+1, INFO )
+*
+*        Zero out below first M rows of B.
+*
+         CALL DLASET( 'F', N-M, NRHS, ZERO, ZERO, B( M+1, 1 ), LDB )
+         NWORK = ITAU + M
+*
+*        Multiply transpose(Q) by B.
+*        (Workspace: need M+NRHS, prefer M+NRHS*NB)
+*
+         CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, WORK( ITAU ), B,
+     $                LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+      ELSE
+*
+*        Path 2 - remaining underdetermined cases.
+*
+         IE = 1
+         ITAUQ = IE + M
+         ITAUP = ITAUQ + M
+         NWORK = ITAUP + M
+*
+*        Bidiagonalize A.
+*        (Workspace: need 3*M+N, prefer 3*M+(M+N)*NB)
+*
+         CALL DGEBRD( M, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ),
+     $                WORK( ITAUP ), WORK( NWORK ), LWORK-NWORK+1,
+     $                INFO )
+*
+*        Multiply B by transpose of left bidiagonalizing vectors.
+*        (Workspace: need 3*M+NRHS, prefer 3*M+NRHS*NB)
+*
+         CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAUQ ),
+     $                B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+*        Solve the bidiagonal least squares problem.
+*
+         CALL DLALSD( 'L', SMLSIZ, M, NRHS, S, WORK( IE ), B, LDB,
+     $                RCOND, RANK, WORK( NWORK ), IWORK, INFO )
+         IF( INFO.NE.0 ) THEN
+            GO TO 10
+         END IF
+*
+*        Multiply B by right bidiagonalizing vectors of A.
+*
+         CALL DORMBR( 'P', 'L', 'N', N, NRHS, M, A, LDA, WORK( ITAUP ),
+     $                B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO )
+*
+      END IF
+*
+*     Undo scaling.
+*
+      IF( IASCL.EQ.1 ) THEN
+         CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+         CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN, 1, S, MINMN,
+     $                INFO )
+      ELSE IF( IASCL.EQ.2 ) THEN
+         CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+         CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN, 1, S, MINMN,
+     $                INFO )
+      END IF
+      IF( IBSCL.EQ.1 ) THEN
+         CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+      ELSE IF( IBSCL.EQ.2 ) THEN
+         CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+      END IF
+*
+   10 CONTINUE
+      WORK( 1 ) = MAXWRK
+      IWORK( 1 ) = LIWORK
+      RETURN
+*
+*     End of DGELSD
+*
+      END
Index: src/lapack/double/dormqr.f
===================================================================
--- src/lapack/double/dormqr.f	(revision 0)
+++ src/lapack/double/dormqr.f	(revision 1)
@@ -0,0 +1,261 @@
+      SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
+     $                   WORK, LWORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          SIDE, TRANS
+      INTEGER            INFO, K, LDA, LDC, LWORK, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DORMQR overwrites the general real M-by-N matrix C with
+*
+*                  SIDE = 'L'     SIDE = 'R'
+*  TRANS = 'N':      Q * C          C * Q
+*  TRANS = 'T':      Q**T * C       C * Q**T
+*
+*  where Q is a real orthogonal matrix defined as the product of k
+*  elementary reflectors
+*
+*        Q = H(1) H(2) . . . H(k)
+*
+*  as returned by DGEQRF. Q is of order M if SIDE = 'L' and of order N
+*  if SIDE = 'R'.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          = 'L': apply Q or Q**T from the Left;
+*          = 'R': apply Q or Q**T from the Right.
+*
+*  TRANS   (input) CHARACTER*1
+*          = 'N':  No transpose, apply Q;
+*          = 'T':  Transpose, apply Q**T.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix C. M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix C. N >= 0.
+*
+*  K       (input) INTEGER
+*          The number of elementary reflectors whose product defines
+*          the matrix Q.
+*          If SIDE = 'L', M >= K >= 0;
+*          if SIDE = 'R', N >= K >= 0.
+*
+*  A       (input) DOUBLE PRECISION array, dimension (LDA,K)
+*          The i-th column must contain the vector which defines the
+*          elementary reflector H(i), for i = 1,2,...,k, as returned by
+*          DGEQRF in the first k columns of its array argument A.
+*          A is modified by the routine but restored on exit.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.
+*          If SIDE = 'L', LDA >= max(1,M);
+*          if SIDE = 'R', LDA >= max(1,N).
+*
+*  TAU     (input) DOUBLE PRECISION array, dimension (K)
+*          TAU(i) must contain the scalar factor of the elementary
+*          reflector H(i), as returned by DGEQRF.
+*
+*  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*          On entry, the M-by-N matrix C.
+*          On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
+*
+*  LDC     (input) INTEGER
+*          The leading dimension of the array C. LDC >= max(1,M).
+*
+*  WORK    (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+*  LWORK   (input) INTEGER
+*          The dimension of the array WORK.
+*          If SIDE = 'L', LWORK >= max(1,N);
+*          if SIDE = 'R', LWORK >= max(1,M).
+*          For optimum performance LWORK >= N*NB if SIDE = 'L', and
+*          LWORK >= M*NB if SIDE = 'R', where NB is the optimal
+*          blocksize.
+*
+*          If LWORK = -1, then a workspace query is assumed; the routine
+*          only calculates the optimal size of the WORK array, returns
+*          this value as the first entry of the WORK array, and no error
+*          message related to LWORK is issued by XERBLA.
+*
+*  INFO    (output) INTEGER
+*          = 0:  successful exit
+*          < 0:  if INFO = -i, the i-th argument had an illegal value
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      INTEGER            NBMAX, LDT
+      PARAMETER          ( NBMAX = 64, LDT = NBMAX+1 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            LEFT, LQUERY, NOTRAN
+      INTEGER            I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK,
+     $                   LWKOPT, MI, NB, NBMIN, NI, NQ, NW
+*     ..
+*     .. Local Arrays ..
+      DOUBLE PRECISION   T( LDT, NBMAX )
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      INTEGER            ILAENV
+      EXTERNAL           LSAME, ILAENV
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARFB, DLARFT, DORM2R, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      LEFT = LSAME( SIDE, 'L' )
+      NOTRAN = LSAME( TRANS, 'N' )
+      LQUERY = ( LWORK.EQ.-1 )
+*
+*     NQ is the order of Q and NW is the minimum dimension of WORK
+*
+      IF( LEFT ) THEN
+         NQ = M
+         NW = N
+      ELSE
+         NQ = N
+         NW = M
+      END IF
+      IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN
+         INFO = -1
+      ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN
+         INFO = -2
+      ELSE IF( M.LT.0 ) THEN
+         INFO = -3
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -4
+      ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN
+         INFO = -5
+      ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN
+         INFO = -7
+      ELSE IF( LDC.LT.MAX( 1, M ) ) THEN
+         INFO = -10
+      ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN
+         INFO = -12
+      END IF
+*
+      IF( INFO.EQ.0 ) THEN
+*
+*        Determine the block size.  NB may be at most NBMAX, where NBMAX
+*        is used to define the local array T.
+*
+         NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, K,
+     $        -1 ) )
+         LWKOPT = MAX( 1, NW )*NB
+         WORK( 1 ) = LWKOPT
+      END IF
+*
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DORMQR', -INFO )
+         RETURN
+      ELSE IF( LQUERY ) THEN
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN
+         WORK( 1 ) = 1
+         RETURN
+      END IF
+*
+      NBMIN = 2
+      LDWORK = NW
+      IF( NB.GT.1 .AND. NB.LT.K ) THEN
+         IWS = NW*NB
+         IF( LWORK.LT.IWS ) THEN
+            NB = LWORK / LDWORK
+            NBMIN = MAX( 2, ILAENV( 2, 'DORMQR', SIDE // TRANS, M, N, K,
+     $              -1 ) )
+         END IF
+      ELSE
+         IWS = NW
+      END IF
+*
+      IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN
+*
+*        Use unblocked code
+*
+         CALL DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
+     $                IINFO )
+      ELSE
+*
+*        Use blocked code
+*
+         IF( ( LEFT .AND. .NOT.NOTRAN ) .OR.
+     $       ( .NOT.LEFT .AND. NOTRAN ) ) THEN
+            I1 = 1
+            I2 = K
+            I3 = NB
+         ELSE
+            I1 = ( ( K-1 ) / NB )*NB + 1
+            I2 = 1
+            I3 = -NB
+         END IF
+*
+         IF( LEFT ) THEN
+            NI = N
+            JC = 1
+         ELSE
+            MI = M
+            IC = 1
+         END IF
+*
+         DO 10 I = I1, I2, I3
+            IB = MIN( NB, K-I+1 )
+*
+*           Form the triangular factor of the block reflector
+*           H = H(i) H(i+1) . . . H(i+ib-1)
+*
+            CALL DLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ),
+     $                   LDA, TAU( I ), T, LDT )
+            IF( LEFT ) THEN
+*
+*              H or H' is applied to C(i:m,1:n)
+*
+               MI = M - I + 1
+               IC = I
+            ELSE
+*
+*              H or H' is applied to C(1:m,i:n)
+*
+               NI = N - I + 1
+               JC = I
+            END IF
+*
+*           Apply H or H'
+*
+            CALL DLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI,
+     $                   IB, A( I, I ), LDA, T, LDT, C( IC, JC ), LDC,
+     $                   WORK, LDWORK )
+   10    CONTINUE
+      END IF
+      WORK( 1 ) = LWKOPT
+      RETURN
+*
+*     End of DORMQR
+*
+      END
Index: src/lapack/double/dlasr.f
===================================================================
--- src/lapack/double/dlasr.f	(revision 0)
+++ src/lapack/double/dlasr.f	(revision 1)
@@ -0,0 +1,362 @@
+      SUBROUTINE DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          DIRECT, PIVOT, SIDE
+      INTEGER            LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), C( * ), S( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASR applies a sequence of plane rotations to a real matrix A,
+*  from either the left or the right.
+*  
+*  When SIDE = 'L', the transformation takes the form
+*  
+*     A := P*A
+*  
+*  and when SIDE = 'R', the transformation takes the form
+*  
+*     A := A*P**T
+*  
+*  where P is an orthogonal matrix consisting of a sequence of z plane
+*  rotations, with z = M when SIDE = 'L' and z = N when SIDE = 'R',
+*  and P**T is the transpose of P.
+*  
+*  When DIRECT = 'F' (Forward sequence), then
+*  
+*     P = P(z-1) * ... * P(2) * P(1)
+*  
+*  and when DIRECT = 'B' (Backward sequence), then
+*  
+*     P = P(1) * P(2) * ... * P(z-1)
+*  
+*  where P(k) is a plane rotation matrix defined by the 2-by-2 rotation
+*  
+*     R(k) = (  c(k)  s(k) )
+*          = ( -s(k)  c(k) ).
+*  
+*  When PIVOT = 'V' (Variable pivot), the rotation is performed
+*  for the plane (k,k+1), i.e., P(k) has the form
+*  
+*     P(k) = (  1                                            )
+*            (       ...                                     )
+*            (              1                                )
+*            (                   c(k)  s(k)                  )
+*            (                  -s(k)  c(k)                  )
+*            (                                1              )
+*            (                                     ...       )
+*            (                                            1  )
+*  
+*  where R(k) appears as a rank-2 modification to the identity matrix in
+*  rows and columns k and k+1.
+*  
+*  When PIVOT = 'T' (Top pivot), the rotation is performed for the
+*  plane (1,k+1), so P(k) has the form
+*  
+*     P(k) = (  c(k)                    s(k)                 )
+*            (         1                                     )
+*            (              ...                              )
+*            (                     1                         )
+*            ( -s(k)                    c(k)                 )
+*            (                                 1             )
+*            (                                      ...      )
+*            (                                             1 )
+*  
+*  where R(k) appears in rows and columns 1 and k+1.
+*  
+*  Similarly, when PIVOT = 'B' (Bottom pivot), the rotation is
+*  performed for the plane (k,z), giving P(k) the form
+*  
+*     P(k) = ( 1                                             )
+*            (      ...                                      )
+*            (             1                                 )
+*            (                  c(k)                    s(k) )
+*            (                         1                     )
+*            (                              ...              )
+*            (                                     1         )
+*            (                 -s(k)                    c(k) )
+*  
+*  where R(k) appears in rows and columns k and z.  The rotations are
+*  performed without ever forming P(k) explicitly.
+*
+*  Arguments
+*  =========
+*
+*  SIDE    (input) CHARACTER*1
+*          Specifies whether the plane rotation matrix P is applied to
+*          A on the left or the right.
+*          = 'L':  Left, compute A := P*A
+*          = 'R':  Right, compute A:= A*P**T
+*
+*  PIVOT   (input) CHARACTER*1
+*          Specifies the plane for which P(k) is a plane rotation
+*          matrix.
+*          = 'V':  Variable pivot, the plane (k,k+1)
+*          = 'T':  Top pivot, the plane (1,k+1)
+*          = 'B':  Bottom pivot, the plane (k,z)
+*
+*  DIRECT  (input) CHARACTER*1
+*          Specifies whether P is a forward or backward sequence of
+*          plane rotations.
+*          = 'F':  Forward, P = P(z-1)*...*P(2)*P(1)
+*          = 'B':  Backward, P = P(1)*P(2)*...*P(z-1)
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  If m <= 1, an immediate
+*          return is effected.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  If n <= 1, an
+*          immediate return is effected.
+*
+*  C       (input) DOUBLE PRECISION array, dimension
+*                  (M-1) if SIDE = 'L'
+*                  (N-1) if SIDE = 'R'
+*          The cosines c(k) of the plane rotations.
+*
+*  S       (input) DOUBLE PRECISION array, dimension
+*                  (M-1) if SIDE = 'L'
+*                  (N-1) if SIDE = 'R'
+*          The sines s(k) of the plane rotations.  The 2-by-2 plane
+*          rotation part of the matrix P(k), R(k), has the form
+*          R(k) = (  c(k)  s(k) )
+*                 ( -s(k)  c(k) ).
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          The M-by-N matrix A.  On exit, A is overwritten by P*A if
+*          SIDE = 'R' or by A*P**T if SIDE = 'L'.
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, INFO, J
+      DOUBLE PRECISION   CTEMP, STEMP, TEMP
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters
+*
+      INFO = 0
+      IF( .NOT.( LSAME( SIDE, 'L' ) .OR. LSAME( SIDE, 'R' ) ) ) THEN
+         INFO = 1
+      ELSE IF( .NOT.( LSAME( PIVOT, 'V' ) .OR. LSAME( PIVOT,
+     $         'T' ) .OR. LSAME( PIVOT, 'B' ) ) ) THEN
+         INFO = 2
+      ELSE IF( .NOT.( LSAME( DIRECT, 'F' ) .OR. LSAME( DIRECT, 'B' ) ) )
+     $          THEN
+         INFO = 3
+      ELSE IF( M.LT.0 ) THEN
+         INFO = 4
+      ELSE IF( N.LT.0 ) THEN
+         INFO = 5
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = 9
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLASR ', INFO )
+         RETURN
+      END IF
+*
+*     Quick return if possible
+*
+      IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) )
+     $   RETURN
+      IF( LSAME( SIDE, 'L' ) ) THEN
+*
+*        Form  P * A
+*
+         IF( LSAME( PIVOT, 'V' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 20 J = 1, M - 1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 10 I = 1, N
+                        TEMP = A( J+1, I )
+                        A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+                        A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+   10                CONTINUE
+                  END IF
+   20          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 40 J = M - 1, 1, -1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 30 I = 1, N
+                        TEMP = A( J+1, I )
+                        A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
+                        A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
+   30                CONTINUE
+                  END IF
+   40          CONTINUE
+            END IF
+         ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 60 J = 2, M
+                  CTEMP = C( J-1 )
+                  STEMP = S( J-1 )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 50 I = 1, N
+                        TEMP = A( J, I )
+                        A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+                        A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+   50                CONTINUE
+                  END IF
+   60          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 80 J = M, 2, -1
+                  CTEMP = C( J-1 )
+                  STEMP = S( J-1 )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 70 I = 1, N
+                        TEMP = A( J, I )
+                        A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
+                        A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
+   70                CONTINUE
+                  END IF
+   80          CONTINUE
+            END IF
+         ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 100 J = 1, M - 1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 90 I = 1, N
+                        TEMP = A( J, I )
+                        A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+                        A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+   90                CONTINUE
+                  END IF
+  100          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 120 J = M - 1, 1, -1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 110 I = 1, N
+                        TEMP = A( J, I )
+                        A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
+                        A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
+  110                CONTINUE
+                  END IF
+  120          CONTINUE
+            END IF
+         END IF
+      ELSE IF( LSAME( SIDE, 'R' ) ) THEN
+*
+*        Form A * P'
+*
+         IF( LSAME( PIVOT, 'V' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 140 J = 1, N - 1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 130 I = 1, M
+                        TEMP = A( I, J+1 )
+                        A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+                        A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+  130                CONTINUE
+                  END IF
+  140          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 160 J = N - 1, 1, -1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 150 I = 1, M
+                        TEMP = A( I, J+1 )
+                        A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
+                        A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
+  150                CONTINUE
+                  END IF
+  160          CONTINUE
+            END IF
+         ELSE IF( LSAME( PIVOT, 'T' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 180 J = 2, N
+                  CTEMP = C( J-1 )
+                  STEMP = S( J-1 )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 170 I = 1, M
+                        TEMP = A( I, J )
+                        A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+                        A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+  170                CONTINUE
+                  END IF
+  180          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 200 J = N, 2, -1
+                  CTEMP = C( J-1 )
+                  STEMP = S( J-1 )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 190 I = 1, M
+                        TEMP = A( I, J )
+                        A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
+                        A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
+  190                CONTINUE
+                  END IF
+  200          CONTINUE
+            END IF
+         ELSE IF( LSAME( PIVOT, 'B' ) ) THEN
+            IF( LSAME( DIRECT, 'F' ) ) THEN
+               DO 220 J = 1, N - 1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 210 I = 1, M
+                        TEMP = A( I, J )
+                        A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+                        A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+  210                CONTINUE
+                  END IF
+  220          CONTINUE
+            ELSE IF( LSAME( DIRECT, 'B' ) ) THEN
+               DO 240 J = N - 1, 1, -1
+                  CTEMP = C( J )
+                  STEMP = S( J )
+                  IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN
+                     DO 230 I = 1, M
+                        TEMP = A( I, J )
+                        A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
+                        A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
+  230                CONTINUE
+                  END IF
+  240          CONTINUE
+            END IF
+         END IF
+      END IF
+*
+      RETURN
+*
+*     End of DLASR
+*
+      END
Index: src/lapack/double/disnan.f
===================================================================
--- src/lapack/double/disnan.f	(revision 0)
+++ src/lapack/double/disnan.f	(revision 1)
@@ -0,0 +1,34 @@
+      LOGICAL FUNCTION DISNAN( DIN )
+*
+*  -- LAPACK auxiliary routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   DIN
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DISNAN returns .TRUE. if its argument is NaN, and .FALSE.
+*  otherwise.  To be replaced by the Fortran 2003 intrinsic in the
+*  future.
+*
+*  Arguments
+*  =========
+*
+*  DIN     (input) DOUBLE PRECISION
+*          Input to test for NaN.
+*
+*  =====================================================================
+*
+*  .. External Functions ..
+      LOGICAL DLAISNAN
+      EXTERNAL DLAISNAN
+*  ..
+*  .. Executable Statements ..
+      DISNAN = DLAISNAN(DIN,DIN)
+      RETURN
+      END
Index: src/lapack/double/dlaset.f
===================================================================
--- src/lapack/double/dlaset.f	(revision 0)
+++ src/lapack/double/dlaset.f	(revision 1)
@@ -0,0 +1,115 @@
+      SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          UPLO
+      INTEGER            LDA, M, N
+      DOUBLE PRECISION   ALPHA, BETA
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLASET initializes an m-by-n matrix A to BETA on the diagonal and
+*  ALPHA on the offdiagonals.
+*
+*  Arguments
+*  =========
+*
+*  UPLO    (input) CHARACTER*1
+*          Specifies the part of the matrix A to be set.
+*          = 'U':      Upper triangular part is set; the strictly lower
+*                      triangular part of A is not changed.
+*          = 'L':      Lower triangular part is set; the strictly upper
+*                      triangular part of A is not changed.
+*          Otherwise:  All of the matrix A is set.
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  ALPHA   (input) DOUBLE PRECISION
+*          The constant to which the offdiagonal elements are to be set.
+*
+*  BETA    (input) DOUBLE PRECISION
+*          The constant to which the diagonal elements are to be set.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On exit, the leading m-by-n submatrix of A is set as follows:
+*
+*          if UPLO = 'U', A(i,j) = ALPHA, 1<=i<=j-1, 1<=j<=n,
+*          if UPLO = 'L', A(i,j) = ALPHA, j+1<=i<=m, 1<=j<=n,
+*          otherwise,     A(i,j) = ALPHA, 1<=i<=m, 1<=j<=n, i.ne.j,
+*
+*          and, for all UPLO, A(i,i) = BETA, 1<=i<=min(m,n).
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+* =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I, J
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MIN
+*     ..
+*     .. Executable Statements ..
+*
+      IF( LSAME( UPLO, 'U' ) ) THEN
+*
+*        Set the strictly upper triangular or trapezoidal part of the
+*        array to ALPHA.
+*
+         DO 20 J = 2, N
+            DO 10 I = 1, MIN( J-1, M )
+               A( I, J ) = ALPHA
+   10       CONTINUE
+   20    CONTINUE
+*
+      ELSE IF( LSAME( UPLO, 'L' ) ) THEN
+*
+*        Set the strictly lower triangular or trapezoidal part of the
+*        array to ALPHA.
+*
+         DO 40 J = 1, MIN( M, N )
+            DO 30 I = J + 1, M
+               A( I, J ) = ALPHA
+   30       CONTINUE
+   40    CONTINUE
+*
+      ELSE
+*
+*        Set the leading m-by-n submatrix to ALPHA.
+*
+         DO 60 J = 1, N
+            DO 50 I = 1, M
+               A( I, J ) = ALPHA
+   50       CONTINUE
+   60    CONTINUE
+      END IF
+*
+*     Set the first min(M,N) diagonal elements to BETA.
+*
+      DO 70 I = 1, MIN( M, N )
+         A( I, I ) = BETA
+   70 CONTINUE
+*
+      RETURN
+*
+*     End of DLASET
+*
+      END
Index: src/lapack/double/dgelq2.f
===================================================================
--- src/lapack/double/dgelq2.f	(revision 0)
+++ src/lapack/double/dgelq2.f	(revision 1)
@@ -0,0 +1,122 @@
+      SUBROUTINE DGELQ2( M, N, A, LDA, TAU, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     June 2010
+*
+*     .. Scalar Arguments ..
+      INTEGER            INFO, LDA, M, N
+*     ..
+*     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * ), TAU( * ), WORK( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DGELQ2 computes an LQ factorization of a real m by n matrix A:
+*  A = L * Q.
+*
+*  Arguments
+*  =========
+*
+*  M       (input) INTEGER
+*          The number of rows of the matrix A.  M >= 0.
+*
+*  N       (input) INTEGER
+*          The number of columns of the matrix A.  N >= 0.
+*
+*  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*          On entry, the m by n matrix A.
+*          On exit, the elements on and below the diagonal of the array
+*          contain the m by min(m,n) lower trapezoidal matrix L (L is
+*          lower triangular if m <= n); the elements above the diagonal,
+*          with the array TAU, represent the orthogonal matrix Q as a
+*          product of elementary reflectors (see Further Details).
+*
+*  LDA     (input) INTEGER
+*          The leading dimension of the array A.  LDA >= max(1,M).
+*
+*  TAU     (output) DOUBLE PRECISION array, dimension (min(M,N))
+*          The scalar factors of the elementary reflectors (see Further
+*          Details).
+*
+*  WORK    (workspace) DOUBLE PRECISION array, dimension (M)
+*
+*  INFO    (output) INTEGER
+*          = 0: successful exit
+*          < 0: if INFO = -i, the i-th argument had an illegal value
+*
+*  Further Details
+*  ===============
+*
+*  The matrix Q is represented as a product of elementary reflectors
+*
+*     Q = H(k) . . . H(2) H(1), where k = min(m,n).
+*
+*  Each H(i) has the form
+*
+*     H(i) = I - tau * v * v'
+*
+*  where tau is a real scalar, and v is a real vector with
+*  v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i,i+1:n),
+*  and tau in TAU(i).
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE
+      PARAMETER          ( ONE = 1.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, K
+      DOUBLE PRECISION   AII
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLARF, DLARFG, XERBLA
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX, MIN
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input arguments
+*
+      INFO = 0
+      IF( M.LT.0 ) THEN
+         INFO = -1
+      ELSE IF( N.LT.0 ) THEN
+         INFO = -2
+      ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+         INFO = -4
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DGELQ2', -INFO )
+         RETURN
+      END IF
+*
+      K = MIN( M, N )
+*
+      DO 10 I = 1, K
+*
+*        Generate elementary reflector H(i) to annihilate A(i,i+1:n)
+*
+         CALL DLARFG( N-I+1, A( I, I ), A( I, MIN( I+1, N ) ), LDA,
+     $                TAU( I ) )
+         IF( I.LT.M ) THEN
+*
+*           Apply H(i) to A(i+1:m,i:n) from the right
+*
+            AII = A( I, I )
+            A( I, I ) = ONE
+            CALL DLARF( 'Right', M-I, N-I+1, A( I, I ), LDA, TAU( I ),
+     $                  A( I+1, I ), LDA, WORK )
+            A( I, I ) = AII
+         END IF
+   10 CONTINUE
+      RETURN
+*
+*     End of DGELQ2
+*
+      END
Index: src/lapack/double/dlals0.f
===================================================================
--- src/lapack/double/dlals0.f	(revision 0)
+++ src/lapack/double/dlals0.f	(revision 1)
@@ -0,0 +1,378 @@
+      SUBROUTINE DLALS0( ICOMPQ, NL, NR, SQRE, NRHS, B, LDB, BX, LDBX,
+     $                   PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM,
+     $                   POLES, DIFL, DIFR, Z, K, C, S, WORK, INFO )
+*
+*  -- LAPACK routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            GIVPTR, ICOMPQ, INFO, K, LDB, LDBX, LDGCOL,
+     $                   LDGNUM, NL, NR, NRHS, SQRE
+      DOUBLE PRECISION   C, S
+*     ..
+*     .. Array Arguments ..
+      INTEGER            GIVCOL( LDGCOL, * ), PERM( * )
+      DOUBLE PRECISION   B( LDB, * ), BX( LDBX, * ), DIFL( * ),
+     $                   DIFR( LDGNUM, * ), GIVNUM( LDGNUM, * ),
+     $                   POLES( LDGNUM, * ), WORK( * ), Z( * )
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLALS0 applies back the multiplying factors of either the left or the
+*  right singular vector matrix of a diagonal matrix appended by a row
+*  to the right hand side matrix B in solving the least squares problem
+*  using the divide-and-conquer SVD approach.
+*
+*  For the left singular vector matrix, three types of orthogonal
+*  matrices are involved:
+*
+*  (1L) Givens rotations: the number of such rotations is GIVPTR; the
+*       pairs of columns/rows they were applied to are stored in GIVCOL;
+*       and the C- and S-values of these rotations are stored in GIVNUM.
+*
+*  (2L) Permutation. The (NL+1)-st row of B is to be moved to the first
+*       row, and for J=2:N, PERM(J)-th row of B is to be moved to the
+*       J-th row.
+*
+*  (3L) The left singular vector matrix of the remaining matrix.
+*
+*  For the right singular vector matrix, four types of orthogonal
+*  matrices are involved:
+*
+*  (1R) The right singular vector matrix of the remaining matrix.
+*
+*  (2R) If SQRE = 1, one extra Givens rotation to generate the right
+*       null space.
+*
+*  (3R) The inverse transformation of (2L).
+*
+*  (4R) The inverse transformation of (1L).
+*
+*  Arguments
+*  =========
+*
+*  ICOMPQ (input) INTEGER
+*         Specifies whether singular vectors are to be computed in
+*         factored form:
+*         = 0: Left singular vector matrix.
+*         = 1: Right singular vector matrix.
+*
+*  NL     (input) INTEGER
+*         The row dimension of the upper block. NL >= 1.
+*
+*  NR     (input) INTEGER
+*         The row dimension of the lower block. NR >= 1.
+*
+*  SQRE   (input) INTEGER
+*         = 0: the lower block is an NR-by-NR square matrix.
+*         = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
+*
+*         The bidiagonal matrix has row dimension N = NL + NR + 1,
+*         and column dimension M = N + SQRE.
+*
+*  NRHS   (input) INTEGER
+*         The number of columns of B and BX. NRHS must be at least 1.
+*
+*  B      (input/output) DOUBLE PRECISION array, dimension ( LDB, NRHS )
+*         On input, B contains the right hand sides of the least
+*         squares problem in rows 1 through M. On output, B contains
+*         the solution X in rows 1 through N.
+*
+*  LDB    (input) INTEGER
+*         The leading dimension of B. LDB must be at least
+*         max(1,MAX( M, N ) ).
+*
+*  BX     (workspace) DOUBLE PRECISION array, dimension ( LDBX, NRHS )
+*
+*  LDBX   (input) INTEGER
+*         The leading dimension of BX.
+*
+*  PERM   (input) INTEGER array, dimension ( N )
+*         The permutations (from deflation and sorting) applied
+*         to the two blocks.
+*
+*  GIVPTR (input) INTEGER
+*         The number of Givens rotations which took place in this
+*         subproblem.
+*
+*  GIVCOL (input) INTEGER array, dimension ( LDGCOL, 2 )
+*         Each pair of numbers indicates a pair of rows/columns
+*         involved in a Givens rotation.
+*
+*  LDGCOL (input) INTEGER
+*         The leading dimension of GIVCOL, must be at least N.
+*
+*  GIVNUM (input) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
+*         Each number indicates the C or S value used in the
+*         corresponding Givens rotation.
+*
+*  LDGNUM (input) INTEGER
+*         The leading dimension of arrays DIFR, POLES and
+*         GIVNUM, must be at least K.
+*
+*  POLES  (input) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
+*         On entry, POLES(1:K, 1) contains the new singular
+*         values obtained from solving the secular equation, and
+*         POLES(1:K, 2) is an array containing the poles in the secular
+*         equation.
+*
+*  DIFL   (input) DOUBLE PRECISION array, dimension ( K ).
+*         On entry, DIFL(I) is the distance between I-th updated
+*         (undeflated) singular value and the I-th (undeflated) old
+*         singular value.
+*
+*  DIFR   (input) DOUBLE PRECISION array, dimension ( LDGNUM, 2 ).
+*         On entry, DIFR(I, 1) contains the distances between I-th
+*         updated (undeflated) singular value and the I+1-th
+*         (undeflated) old singular value. And DIFR(I, 2) is the
+*         normalizing factor for the I-th right singular vector.
+*
+*  Z      (input) DOUBLE PRECISION array, dimension ( K )
+*         Contain the components of the deflation-adjusted updating row
+*         vector.
+*
+*  K      (input) INTEGER
+*         Contains the dimension of the non-deflated matrix,
+*         This is the order of the related secular equation. 1 <= K <=N.
+*
+*  C      (input) DOUBLE PRECISION
+*         C contains garbage if SQRE =0 and the C-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  S      (input) DOUBLE PRECISION
+*         S contains garbage if SQRE =0 and the S-value of a Givens
+*         rotation related to the right null space if SQRE = 1.
+*
+*  WORK   (workspace) DOUBLE PRECISION array, dimension ( K )
+*
+*  INFO   (output) INTEGER
+*          = 0:  successful exit.
+*          < 0:  if INFO = -i, the i-th argument had an illegal value.
+*
+*  Further Details
+*  ===============
+*
+*  Based on contributions by
+*     Ming Gu and Ren-Cang Li, Computer Science Division, University of
+*       California at Berkeley, USA
+*     Osni Marques, LBNL/NERSC, USA
+*
+*  =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO, NEGONE
+      PARAMETER          ( ONE = 1.0D0, ZERO = 0.0D0, NEGONE = -1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            I, J, M, N, NLP1
+      DOUBLE PRECISION   DIFLJ, DIFRJ, DJ, DSIGJ, DSIGJP, TEMP
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DCOPY, DGEMV, DLACPY, DLASCL, DROT, DSCAL,
+     $                   XERBLA
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMC3, DNRM2
+      EXTERNAL           DLAMC3, DNRM2
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MAX
+*     ..
+*     .. Executable Statements ..
+*
+*     Test the input parameters.
+*
+      INFO = 0
+*
+      IF( ( ICOMPQ.LT.0 ) .OR. ( ICOMPQ.GT.1 ) ) THEN
+         INFO = -1
+      ELSE IF( NL.LT.1 ) THEN
+         INFO = -2
+      ELSE IF( NR.LT.1 ) THEN
+         INFO = -3
+      ELSE IF( ( SQRE.LT.0 ) .OR. ( SQRE.GT.1 ) ) THEN
+         INFO = -4
+      END IF
+*
+      N = NL + NR + 1
+*
+      IF( NRHS.LT.1 ) THEN
+         INFO = -5
+      ELSE IF( LDB.LT.N ) THEN
+         INFO = -7
+      ELSE IF( LDBX.LT.N ) THEN
+         INFO = -9
+      ELSE IF( GIVPTR.LT.0 ) THEN
+         INFO = -11
+      ELSE IF( LDGCOL.LT.N ) THEN
+         INFO = -13
+      ELSE IF( LDGNUM.LT.N ) THEN
+         INFO = -15
+      ELSE IF( K.LT.1 ) THEN
+         INFO = -20
+      END IF
+      IF( INFO.NE.0 ) THEN
+         CALL XERBLA( 'DLALS0', -INFO )
+         RETURN
+      END IF
+*
+      M = N + SQRE
+      NLP1 = NL + 1
+*
+      IF( ICOMPQ.EQ.0 ) THEN
+*
+*        Apply back orthogonal transformations from the left.
+*
+*        Step (1L): apply back the Givens rotations performed.
+*
+         DO 10 I = 1, GIVPTR
+            CALL DROT( NRHS, B( GIVCOL( I, 2 ), 1 ), LDB,
+     $                 B( GIVCOL( I, 1 ), 1 ), LDB, GIVNUM( I, 2 ),
+     $                 GIVNUM( I, 1 ) )
+   10    CONTINUE
+*
+*        Step (2L): permute rows of B.
+*
+         CALL DCOPY( NRHS, B( NLP1, 1 ), LDB, BX( 1, 1 ), LDBX )
+         DO 20 I = 2, N
+            CALL DCOPY( NRHS, B( PERM( I ), 1 ), LDB, BX( I, 1 ), LDBX )
+   20    CONTINUE
+*
+*        Step (3L): apply the inverse of the left singular vector
+*        matrix to BX.
+*
+         IF( K.EQ.1 ) THEN
+            CALL DCOPY( NRHS, BX, LDBX, B, LDB )
+            IF( Z( 1 ).LT.ZERO ) THEN
+               CALL DSCAL( NRHS, NEGONE, B, LDB )
+            END IF
+         ELSE
+            DO 50 J = 1, K
+               DIFLJ = DIFL( J )
+               DJ = POLES( J, 1 )
+               DSIGJ = -POLES( J, 2 )
+               IF( J.LT.K ) THEN
+                  DIFRJ = -DIFR( J, 1 )
+                  DSIGJP = -POLES( J+1, 2 )
+               END IF
+               IF( ( Z( J ).EQ.ZERO ) .OR. ( POLES( J, 2 ).EQ.ZERO ) )
+     $              THEN
+                  WORK( J ) = ZERO
+               ELSE
+                  WORK( J ) = -POLES( J, 2 )*Z( J ) / DIFLJ /
+     $                        ( POLES( J, 2 )+DJ )
+               END IF
+               DO 30 I = 1, J - 1
+                  IF( ( Z( I ).EQ.ZERO ) .OR.
+     $                ( POLES( I, 2 ).EQ.ZERO ) ) THEN
+                     WORK( I ) = ZERO
+                  ELSE
+                     WORK( I ) = POLES( I, 2 )*Z( I ) /
+     $                           ( DLAMC3( POLES( I, 2 ), DSIGJ )-
+     $                           DIFLJ ) / ( POLES( I, 2 )+DJ )
+                  END IF
+   30          CONTINUE
+               DO 40 I = J + 1, K
+                  IF( ( Z( I ).EQ.ZERO ) .OR.
+     $                ( POLES( I, 2 ).EQ.ZERO ) ) THEN
+                     WORK( I ) = ZERO
+                  ELSE
+                     WORK( I ) = POLES( I, 2 )*Z( I ) /
+     $                           ( DLAMC3( POLES( I, 2 ), DSIGJP )+
+     $                           DIFRJ ) / ( POLES( I, 2 )+DJ )
+                  END IF
+   40          CONTINUE
+               WORK( 1 ) = NEGONE
+               TEMP = DNRM2( K, WORK, 1 )
+               CALL DGEMV( 'T', K, NRHS, ONE, BX, LDBX, WORK, 1, ZERO,
+     $                     B( J, 1 ), LDB )
+               CALL DLASCL( 'G', 0, 0, TEMP, ONE, 1, NRHS, B( J, 1 ),
+     $                      LDB, INFO )
+   50       CONTINUE
+         END IF
+*
+*        Move the deflated rows of BX to B also.
+*
+         IF( K.LT.MAX( M, N ) )
+     $      CALL DLACPY( 'A', N-K, NRHS, BX( K+1, 1 ), LDBX,
+     $                   B( K+1, 1 ), LDB )
+      ELSE
+*
+*        Apply back the right orthogonal transformations.
+*
+*        Step (1R): apply back the new right singular vector matrix
+*        to B.
+*
+         IF( K.EQ.1 ) THEN
+            CALL DCOPY( NRHS, B, LDB, BX, LDBX )
+         ELSE
+            DO 80 J = 1, K
+               DSIGJ = POLES( J, 2 )
+               IF( Z( J ).EQ.ZERO ) THEN
+                  WORK( J ) = ZERO
+               ELSE
+                  WORK( J ) = -Z( J ) / DIFL( J ) /
+     $                        ( DSIGJ+POLES( J, 1 ) ) / DIFR( J, 2 )
+               END IF
+               DO 60 I = 1, J - 1
+                  IF( Z( J ).EQ.ZERO ) THEN
+                     WORK( I ) = ZERO
+                  ELSE
+                     WORK( I ) = Z( J ) / ( DLAMC3( DSIGJ, -POLES( I+1,
+     $                           2 ) )-DIFR( I, 1 ) ) /
+     $                           ( DSIGJ+POLES( I, 1 ) ) / DIFR( I, 2 )
+                  END IF
+   60          CONTINUE
+               DO 70 I = J + 1, K
+                  IF( Z( J ).EQ.ZERO ) THEN
+                     WORK( I ) = ZERO
+                  ELSE
+                     WORK( I ) = Z( J ) / ( DLAMC3( DSIGJ, -POLES( I,
+     $                           2 ) )-DIFL( I ) ) /
+     $                           ( DSIGJ+POLES( I, 1 ) ) / DIFR( I, 2 )
+                  END IF
+   70          CONTINUE
+               CALL DGEMV( 'T', K, NRHS, ONE, B, LDB, WORK, 1, ZERO,
+     $                     BX( J, 1 ), LDBX )
+   80       CONTINUE
+         END IF
+*
+*        Step (2R): if SQRE = 1, apply back the rotation that is
+*        related to the right null space of the subproblem.
+*
+         IF( SQRE.EQ.1 ) THEN
+            CALL DCOPY( NRHS, B( M, 1 ), LDB, BX( M, 1 ), LDBX )
+            CALL DROT( NRHS, BX( 1, 1 ), LDBX, BX( M, 1 ), LDBX, C, S )
+         END IF
+         IF( K.LT.MAX( M, N ) )
+     $      CALL DLACPY( 'A', N-K, NRHS, B( K+1, 1 ), LDB, BX( K+1, 1 ),
+     $                   LDBX )
+*
+*        Step (3R): permute rows of B.
+*
+         CALL DCOPY( NRHS, BX( 1, 1 ), LDBX, B( NLP1, 1 ), LDB )
+         IF( SQRE.EQ.1 ) THEN
+            CALL DCOPY( NRHS, BX( M, 1 ), LDBX, B( M, 1 ), LDB )
+         END IF
+         DO 90 I = 2, N
+            CALL DCOPY( NRHS, BX( I, 1 ), LDBX, B( PERM( I ), 1 ), LDB )
+   90    CONTINUE
+*
+*        Step (4R): apply back the Givens rotations performed.
+*
+         DO 100 I = GIVPTR, 1, -1
+            CALL DROT( NRHS, B( GIVCOL( I, 2 ), 1 ), LDB,
+     $                 B( GIVCOL( I, 1 ), 1 ), LDB, GIVNUM( I, 2 ),
+     $                 -GIVNUM( I, 1 ) )
+  100    CONTINUE
+      END IF
+*
+      RETURN
+*
+*     End of DLALS0
+*
+      END
Index: src/lapack/util/ieeeck.f
===================================================================
--- src/lapack/util/ieeeck.f	(revision 0)
+++ src/lapack/util/ieeeck.f	(revision 1)
@@ -0,0 +1,148 @@
+      INTEGER          FUNCTION IEEECK( ISPEC, ZERO, ONE )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            ISPEC
+      REAL               ONE, ZERO
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  IEEECK is called from the ILAENV to verify that Infinity and
+*  possibly NaN arithmetic is safe (i.e. will not trap).
+*
+*  Arguments
+*  =========
+*
+*  ISPEC   (input) INTEGER
+*          Specifies whether to test just for inifinity arithmetic
+*          or whether to test for infinity and NaN arithmetic.
+*          = 0: Verify infinity arithmetic only.
+*          = 1: Verify infinity and NaN arithmetic.
+*
+*  ZERO    (input) REAL
+*          Must contain the value 0.0
+*          This is passed to prevent the compiler from optimizing
+*          away this code.
+*
+*  ONE     (input) REAL
+*          Must contain the value 1.0
+*          This is passed to prevent the compiler from optimizing
+*          away this code.
+*
+*  RETURN VALUE:  INTEGER
+*          = 0:  Arithmetic failed to produce the correct answers
+*          = 1:  Arithmetic produced the correct answers
+*
+*     .. Local Scalars ..
+      REAL               NAN1, NAN2, NAN3, NAN4, NAN5, NAN6, NEGINF,
+     $                   NEGZRO, NEWZRO, POSINF
+*     ..
+*     .. Executable Statements ..
+      IEEECK = 1
+*
+      POSINF = ONE / ZERO
+      IF( POSINF.LE.ONE ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      NEGINF = -ONE / ZERO
+      IF( NEGINF.GE.ZERO ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      NEGZRO = ONE / ( NEGINF+ONE )
+      IF( NEGZRO.NE.ZERO ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      NEGINF = ONE / NEGZRO
+      IF( NEGINF.GE.ZERO ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      NEWZRO = NEGZRO + ZERO
+      IF( NEWZRO.NE.ZERO ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      POSINF = ONE / NEWZRO
+      IF( POSINF.LE.ONE ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      NEGINF = NEGINF*POSINF
+      IF( NEGINF.GE.ZERO ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      POSINF = POSINF*POSINF
+      IF( POSINF.LE.ONE ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+*
+*
+*
+*     Return if we were only asked to check infinity arithmetic
+*
+      IF( ISPEC.EQ.0 )
+     $   RETURN
+*
+      NAN1 = POSINF + NEGINF
+*
+      NAN2 = POSINF / NEGINF
+*
+      NAN3 = POSINF / POSINF
+*
+      NAN4 = POSINF*ZERO
+*
+      NAN5 = NEGINF*NEGZRO
+*
+      NAN6 = NAN5*0.0
+*
+      IF( NAN1.EQ.NAN1 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      IF( NAN2.EQ.NAN2 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      IF( NAN3.EQ.NAN3 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      IF( NAN4.EQ.NAN4 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      IF( NAN5.EQ.NAN5 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      IF( NAN6.EQ.NAN6 ) THEN
+         IEEECK = 0
+         RETURN
+      END IF
+*
+      RETURN
+      END
Index: src/lapack/util/iladlr.f
===================================================================
--- src/lapack/util/iladlr.f	(revision 0)
+++ src/lapack/util/iladlr.f	(revision 1)
@@ -0,0 +1,60 @@
+      INTEGER FUNCTION ILADLR(M, N, A, LDA)
+      IMPLICIT NONE
+!
+!  -- LAPACK auxiliary routine (version 3.2) --
+!     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+!     December 2007
+!
+!     .. Scalar Arguments ..
+      INTEGER            M, N, LDA
+!     ..
+!     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * )
+!     ..
+!
+!  Purpose
+!  =======
+!
+!  ILADLR scans A for its last non-zero row.
+!
+!  Arguments
+!  =========
+!
+!  M       (input) INTEGER
+!          The number of rows of the matrix A.
+!
+!  N       (input) INTEGER
+!          The number of columns of the matrix A.
+!
+!  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
+!          The m by n matrix A.
+!
+!  LDA     (input) INTEGER
+!          The leading dimension of the array A. LDA >= max(1,M).
+!
+!  =====================================================================
+!
+!     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER ( ZERO = 0.0D+0 )
+!     ..
+!     .. Local Scalars ..
+      INTEGER I, J
+!     ..
+!     .. Executable Statements ..
+!
+!     Quick test for the common case where one corner is non-zero.
+      IF( M.EQ.0 .OR. A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN
+         ILADLR = M
+      ELSE
+!     Scan up each column tracking the last zero row seen.
+         ILADLR = 0
+         DO J = 1, N
+            DO I = M, 1, -1
+               IF( A(I, J).NE.ZERO ) EXIT
+            END DO
+            ILADLR = MAX( ILADLR, I )
+         END DO
+      END IF
+      RETURN
+      END FUNCTION
Index: src/lapack/util/dlamch.f
===================================================================
--- src/lapack/util/dlamch.f	(revision 0)
+++ src/lapack/util/dlamch.f	(revision 1)
@@ -0,0 +1,852 @@
+      DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          CMACH
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMCH determines double precision machine parameters.
+*
+*  Arguments
+*  =========
+*
+*  CMACH   (input) CHARACTER*1
+*          Specifies the value to be returned by DLAMCH:
+*          = 'E' or 'e',   DLAMCH := eps
+*          = 'S' or 's ,   DLAMCH := sfmin
+*          = 'B' or 'b',   DLAMCH := base
+*          = 'P' or 'p',   DLAMCH := eps*base
+*          = 'N' or 'n',   DLAMCH := t
+*          = 'R' or 'r',   DLAMCH := rnd
+*          = 'M' or 'm',   DLAMCH := emin
+*          = 'U' or 'u',   DLAMCH := rmin
+*          = 'L' or 'l',   DLAMCH := emax
+*          = 'O' or 'o',   DLAMCH := rmax
+*
+*          where
+*
+*          eps   = relative machine precision
+*          sfmin = safe minimum, such that 1/sfmin does not overflow
+*          base  = base of the machine
+*          prec  = eps*base
+*          t     = number of (base) digits in the mantissa
+*          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
+*          emin  = minimum exponent before (gradual) underflow
+*          rmin  = underflow threshold - base**(emin-1)
+*          emax  = largest exponent before overflow
+*          rmax  = overflow threshold  - (base**emax)*(1-eps)
+*
+* =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ONE, ZERO
+      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+*     ..
+*     .. Local Scalars ..
+      LOGICAL            FIRST, LRND
+      INTEGER            BETA, IMAX, IMIN, IT
+      DOUBLE PRECISION   BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
+     $                   RND, SFMIN, SMALL, T
+*     ..
+*     .. External Functions ..
+      LOGICAL            LSAME
+      EXTERNAL           LSAME
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLAMC2
+*     ..
+*     .. Save statement ..
+      SAVE               FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
+     $                   EMAX, RMAX, PREC
+*     ..
+*     .. Data statements ..
+      DATA               FIRST / .TRUE. /
+*     ..
+*     .. Executable Statements ..
+*
+      IF( FIRST ) THEN
+         CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
+         BASE = BETA
+         T = IT
+         IF( LRND ) THEN
+            RND = ONE
+            EPS = ( BASE**( 1-IT ) ) / 2
+         ELSE
+            RND = ZERO
+            EPS = BASE**( 1-IT )
+         END IF
+         PREC = EPS*BASE
+         EMIN = IMIN
+         EMAX = IMAX
+         SFMIN = RMIN
+         SMALL = ONE / RMAX
+         IF( SMALL.GE.SFMIN ) THEN
+*
+*           Use SMALL plus a bit, to avoid the possibility of rounding
+*           causing overflow when computing  1/sfmin.
+*
+            SFMIN = SMALL*( ONE+EPS )
+         END IF
+      END IF
+*
+      IF( LSAME( CMACH, 'E' ) ) THEN
+         RMACH = EPS
+      ELSE IF( LSAME( CMACH, 'S' ) ) THEN
+         RMACH = SFMIN
+      ELSE IF( LSAME( CMACH, 'B' ) ) THEN
+         RMACH = BASE
+      ELSE IF( LSAME( CMACH, 'P' ) ) THEN
+         RMACH = PREC
+      ELSE IF( LSAME( CMACH, 'N' ) ) THEN
+         RMACH = T
+      ELSE IF( LSAME( CMACH, 'R' ) ) THEN
+         RMACH = RND
+      ELSE IF( LSAME( CMACH, 'M' ) ) THEN
+         RMACH = EMIN
+      ELSE IF( LSAME( CMACH, 'U' ) ) THEN
+         RMACH = RMIN
+      ELSE IF( LSAME( CMACH, 'L' ) ) THEN
+         RMACH = EMAX
+      ELSE IF( LSAME( CMACH, 'O' ) ) THEN
+         RMACH = RMAX
+      END IF
+*
+      DLAMCH = RMACH
+      FIRST  = .FALSE.
+      RETURN
+*
+*     End of DLAMCH
+*
+      END
+*
+************************************************************************
+*
+      SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      LOGICAL            IEEE1, RND
+      INTEGER            BETA, T
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMC1 determines the machine parameters given by BETA, T, RND, and
+*  IEEE1.
+*
+*  Arguments
+*  =========
+*
+*  BETA    (output) INTEGER
+*          The base of the machine.
+*
+*  T       (output) INTEGER
+*          The number of ( BETA ) digits in the mantissa.
+*
+*  RND     (output) LOGICAL
+*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+*          be a reliable guide to the way in which the machine performs
+*          its arithmetic.
+*
+*  IEEE1   (output) LOGICAL
+*          Specifies whether rounding appears to be done in the IEEE
+*          'round to nearest' style.
+*
+*  Further Details
+*  ===============
+*
+*  The routine is based on the routine  ENVRON  by Malcolm and
+*  incorporates suggestions by Gentleman and Marovich. See
+*
+*     Malcolm M. A. (1972) Algorithms to reveal properties of
+*        floating-point arithmetic. Comms. of the ACM, 15, 949-951.
+*
+*     Gentleman W. M. and Marovich S. B. (1974) More on algorithms
+*        that reveal properties of floating point arithmetic units.
+*        Comms. of the ACM, 17, 276-277.
+*
+* =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            FIRST, LIEEE1, LRND
+      INTEGER            LBETA, LT
+      DOUBLE PRECISION   A, B, C, F, ONE, QTR, SAVEC, T1, T2
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMC3
+      EXTERNAL           DLAMC3
+*     ..
+*     .. Save statement ..
+      SAVE               FIRST, LIEEE1, LBETA, LRND, LT
+*     ..
+*     .. Data statements ..
+      DATA               FIRST / .TRUE. /
+*     ..
+*     .. Executable Statements ..
+*
+      IF( FIRST ) THEN
+         ONE = 1
+*
+*        LBETA,  LIEEE1,  LT and  LRND  are the  local values  of  BETA,
+*        IEEE1, T and RND.
+*
+*        Throughout this routine  we use the function  DLAMC3  to ensure
+*        that relevant values are  stored and not held in registers,  or
+*        are not affected by optimizers.
+*
+*        Compute  a = 2.0**m  with the  smallest positive integer m such
+*        that
+*
+*           fl( a + 1.0 ) = a.
+*
+         A = 1
+         C = 1
+*
+*+       WHILE( C.EQ.ONE )LOOP
+   10    CONTINUE
+         IF( C.EQ.ONE ) THEN
+            A = 2*A
+            C = DLAMC3( A, ONE )
+            C = DLAMC3( C, -A )
+            GO TO 10
+         END IF
+*+       END WHILE
+*
+*        Now compute  b = 2.0**m  with the smallest positive integer m
+*        such that
+*
+*           fl( a + b ) .gt. a.
+*
+         B = 1
+         C = DLAMC3( A, B )
+*
+*+       WHILE( C.EQ.A )LOOP
+   20    CONTINUE
+         IF( C.EQ.A ) THEN
+            B = 2*B
+            C = DLAMC3( A, B )
+            GO TO 20
+         END IF
+*+       END WHILE
+*
+*        Now compute the base.  a and c  are neighbouring floating point
+*        numbers  in the  interval  ( beta**t, beta**( t + 1 ) )  and so
+*        their difference is beta. Adding 0.25 to c is to ensure that it
+*        is truncated to beta and not ( beta - 1 ).
+*
+         QTR = ONE / 4
+         SAVEC = C
+         C = DLAMC3( C, -A )
+         LBETA = C + QTR
+*
+*        Now determine whether rounding or chopping occurs,  by adding a
+*        bit  less  than  beta/2  and a  bit  more  than  beta/2  to  a.
+*
+         B = LBETA
+         F = DLAMC3( B / 2, -B / 100 )
+         C = DLAMC3( F, A )
+         IF( C.EQ.A ) THEN
+            LRND = .TRUE.
+         ELSE
+            LRND = .FALSE.
+         END IF
+         F = DLAMC3( B / 2, B / 100 )
+         C = DLAMC3( F, A )
+         IF( ( LRND ) .AND. ( C.EQ.A ) )
+     $      LRND = .FALSE.
+*
+*        Try and decide whether rounding is done in the  IEEE  'round to
+*        nearest' style. B/2 is half a unit in the last place of the two
+*        numbers A and SAVEC. Furthermore, A is even, i.e. has last  bit
+*        zero, and SAVEC is odd. Thus adding B/2 to A should not  change
+*        A, but adding B/2 to SAVEC should change SAVEC.
+*
+         T1 = DLAMC3( B / 2, A )
+         T2 = DLAMC3( B / 2, SAVEC )
+         LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
+*
+*        Now find  the  mantissa, t.  It should  be the  integer part of
+*        log to the base beta of a,  however it is safer to determine  t
+*        by powering.  So we find t as the smallest positive integer for
+*        which
+*
+*           fl( beta**t + 1.0 ) = 1.0.
+*
+         LT = 0
+         A = 1
+         C = 1
+*
+*+       WHILE( C.EQ.ONE )LOOP
+   30    CONTINUE
+         IF( C.EQ.ONE ) THEN
+            LT = LT + 1
+            A = A*LBETA
+            C = DLAMC3( A, ONE )
+            C = DLAMC3( C, -A )
+            GO TO 30
+         END IF
+*+       END WHILE
+*
+      END IF
+*
+      BETA = LBETA
+      T = LT
+      RND = LRND
+      IEEE1 = LIEEE1
+      FIRST = .FALSE.
+      RETURN
+*
+*     End of DLAMC1
+*
+      END
+*
+************************************************************************
+*
+      SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      LOGICAL            RND
+      INTEGER            BETA, EMAX, EMIN, T
+      DOUBLE PRECISION   EPS, RMAX, RMIN
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMC2 determines the machine parameters specified in its argument
+*  list.
+*
+*  Arguments
+*  =========
+*
+*  BETA    (output) INTEGER
+*          The base of the machine.
+*
+*  T       (output) INTEGER
+*          The number of ( BETA ) digits in the mantissa.
+*
+*  RND     (output) LOGICAL
+*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+*          be a reliable guide to the way in which the machine performs
+*          its arithmetic.
+*
+*  EPS     (output) DOUBLE PRECISION
+*          The smallest positive number such that
+*
+*             fl( 1.0 - EPS ) .LT. 1.0,
+*
+*          where fl denotes the computed value.
+*
+*  EMIN    (output) INTEGER
+*          The minimum exponent before (gradual) underflow occurs.
+*
+*  RMIN    (output) DOUBLE PRECISION
+*          The smallest normalized number for the machine, given by
+*          BASE**( EMIN - 1 ), where  BASE  is the floating point value
+*          of BETA.
+*
+*  EMAX    (output) INTEGER
+*          The maximum exponent before overflow occurs.
+*
+*  RMAX    (output) DOUBLE PRECISION
+*          The largest positive number for the machine, given by
+*          BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point
+*          value of BETA.
+*
+*  Further Details
+*  ===============
+*
+*  The computation of  EPS  is based on a routine PARANOIA by
+*  W. Kahan of the University of California at Berkeley.
+*
+* =====================================================================
+*
+*     .. Local Scalars ..
+      LOGICAL            FIRST, IEEE, IWARN, LIEEE1, LRND
+      INTEGER            GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
+     $                   NGNMIN, NGPMIN
+      DOUBLE PRECISION   A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
+     $                   SIXTH, SMALL, THIRD, TWO, ZERO
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMC3
+      EXTERNAL           DLAMC3
+*     ..
+*     .. External Subroutines ..
+      EXTERNAL           DLAMC1, DLAMC4, DLAMC5
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          ABS, MAX, MIN
+*     ..
+*     .. Save statement ..
+      SAVE               FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
+     $                   LRMIN, LT
+*     ..
+*     .. Data statements ..
+      DATA               FIRST / .TRUE. / , IWARN / .FALSE. /
+*     ..
+*     .. Executable Statements ..
+*
+      IF( FIRST ) THEN
+         ZERO = 0
+         ONE = 1
+         TWO = 2
+*
+*        LBETA, LT, LRND, LEPS, LEMIN and LRMIN  are the local values of
+*        BETA, T, RND, EPS, EMIN and RMIN.
+*
+*        Throughout this routine  we use the function  DLAMC3  to ensure
+*        that relevant values are stored  and not held in registers,  or
+*        are not affected by optimizers.
+*
+*        DLAMC1 returns the parameters  LBETA, LT, LRND and LIEEE1.
+*
+         CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
+*
+*        Start to find EPS.
+*
+         B = LBETA
+         A = B**( -LT )
+         LEPS = A
+*
+*        Try some tricks to see whether or not this is the correct  EPS.
+*
+         B = TWO / 3
+         HALF = ONE / 2
+         SIXTH = DLAMC3( B, -HALF )
+         THIRD = DLAMC3( SIXTH, SIXTH )
+         B = DLAMC3( THIRD, -HALF )
+         B = DLAMC3( B, SIXTH )
+         B = ABS( B )
+         IF( B.LT.LEPS )
+     $      B = LEPS
+*
+         LEPS = 1
+*
+*+       WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
+   10    CONTINUE
+         IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
+            LEPS = B
+            C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
+            C = DLAMC3( HALF, -C )
+            B = DLAMC3( HALF, C )
+            C = DLAMC3( HALF, -B )
+            B = DLAMC3( HALF, C )
+            GO TO 10
+         END IF
+*+       END WHILE
+*
+         IF( A.LT.LEPS )
+     $      LEPS = A
+*
+*        Computation of EPS complete.
+*
+*        Now find  EMIN.  Let A = + or - 1, and + or - (1 + BASE**(-3)).
+*        Keep dividing  A by BETA until (gradual) underflow occurs. This
+*        is detected when we cannot recover the previous A.
+*
+         RBASE = ONE / LBETA
+         SMALL = ONE
+         DO 20 I = 1, 3
+            SMALL = DLAMC3( SMALL*RBASE, ZERO )
+   20    CONTINUE
+         A = DLAMC3( ONE, SMALL )
+         CALL DLAMC4( NGPMIN, ONE, LBETA )
+         CALL DLAMC4( NGNMIN, -ONE, LBETA )
+         CALL DLAMC4( GPMIN, A, LBETA )
+         CALL DLAMC4( GNMIN, -A, LBETA )
+         IEEE = .FALSE.
+*
+         IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
+            IF( NGPMIN.EQ.GPMIN ) THEN
+               LEMIN = NGPMIN
+*            ( Non twos-complement machines, no gradual underflow;
+*              e.g.,  VAX )
+            ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
+               LEMIN = NGPMIN - 1 + LT
+               IEEE = .TRUE.
+*            ( Non twos-complement machines, with gradual underflow;
+*              e.g., IEEE standard followers )
+            ELSE
+               LEMIN = MIN( NGPMIN, GPMIN )
+*            ( A guess; no known machine )
+               IWARN = .TRUE.
+            END IF
+*
+         ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
+            IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
+               LEMIN = MAX( NGPMIN, NGNMIN )
+*            ( Twos-complement machines, no gradual underflow;
+*              e.g., CYBER 205 )
+            ELSE
+               LEMIN = MIN( NGPMIN, NGNMIN )
+*            ( A guess; no known machine )
+               IWARN = .TRUE.
+            END IF
+*
+         ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
+     $            ( GPMIN.EQ.GNMIN ) ) THEN
+            IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
+               LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
+*            ( Twos-complement machines with gradual underflow;
+*              no known machine )
+            ELSE
+               LEMIN = MIN( NGPMIN, NGNMIN )
+*            ( A guess; no known machine )
+               IWARN = .TRUE.
+            END IF
+*
+         ELSE
+            LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
+*         ( A guess; no known machine )
+            IWARN = .TRUE.
+         END IF
+         FIRST = .FALSE.
+***
+* Comment out this if block if EMIN is ok
+         IF( IWARN ) THEN
+            FIRST = .TRUE.
+            WRITE( 6, FMT = 9999 )LEMIN
+         END IF
+***
+*
+*        Assume IEEE arithmetic if we found denormalised  numbers above,
+*        or if arithmetic seems to round in the  IEEE style,  determined
+*        in routine DLAMC1. A true IEEE machine should have both  things
+*        true; however, faulty machines may have one or the other.
+*
+         IEEE = IEEE .OR. LIEEE1
+*
+*        Compute  RMIN by successive division by  BETA. We could compute
+*        RMIN as BASE**( EMIN - 1 ),  but some machines underflow during
+*        this computation.
+*
+         LRMIN = 1
+         DO 30 I = 1, 1 - LEMIN
+            LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
+   30    CONTINUE
+*
+*        Finally, call DLAMC5 to compute EMAX and RMAX.
+*
+         CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
+      END IF
+*
+      BETA = LBETA
+      T = LT
+      RND = LRND
+      EPS = LEPS
+      EMIN = LEMIN
+      RMIN = LRMIN
+      EMAX = LEMAX
+      RMAX = LRMAX
+*
+      RETURN
+*
+ 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
+     $      '  EMIN = ', I8, /
+     $      ' If, after inspection, the value EMIN looks',
+     $      ' acceptable please comment out ',
+     $      / ' the IF block as marked within the code of routine',
+     $      ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
+*
+*     End of DLAMC2
+*
+      END
+*
+************************************************************************
+*
+      DOUBLE PRECISION FUNCTION DLAMC3( A, B )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      DOUBLE PRECISION   A, B
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMC3  is intended to force  A  and  B  to be stored prior to doing
+*  the addition of  A  and  B ,  for use in situations where optimizers
+*  might hold one of these in a register.
+*
+*  Arguments
+*  =========
+*
+*  A       (input) DOUBLE PRECISION
+*  B       (input) DOUBLE PRECISION
+*          The values A and B.
+*
+* =====================================================================
+*
+*     .. Executable Statements ..
+*
+      DLAMC3 = A + B
+*
+      RETURN
+*
+*     End of DLAMC3
+*
+      END
+*
+************************************************************************
+*
+      SUBROUTINE DLAMC4( EMIN, START, BASE )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      INTEGER            BASE, EMIN
+      DOUBLE PRECISION   START
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMC4 is a service routine for DLAMC2.
+*
+*  Arguments
+*  =========
+*
+*  EMIN    (output) INTEGER 
+*          The minimum exponent before (gradual) underflow, computed by
+*          setting A = START and dividing by BASE until the previous A
+*          can not be recovered.
+*
+*  START   (input) DOUBLE PRECISION
+*          The starting point for determining EMIN.
+*
+*  BASE    (input) INTEGER
+*          The base of the machine.
+*
+* =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I
+      DOUBLE PRECISION   A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMC3
+      EXTERNAL           DLAMC3
+*     ..
+*     .. Executable Statements ..
+*
+      A = START
+      ONE = 1
+      RBASE = ONE / BASE
+      ZERO = 0
+      EMIN = 1
+      B1 = DLAMC3( A*RBASE, ZERO )
+      C1 = A
+      C2 = A
+      D1 = A
+      D2 = A
+*+    WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
+*    $       ( D1.EQ.A ).AND.( D2.EQ.A )      )LOOP
+   10 CONTINUE
+      IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
+     $    ( D2.EQ.A ) ) THEN
+         EMIN = EMIN - 1
+         A = B1
+         B1 = DLAMC3( A / BASE, ZERO )
+         C1 = DLAMC3( B1*BASE, ZERO )
+         D1 = ZERO
+         DO 20 I = 1, BASE
+            D1 = D1 + B1
+   20    CONTINUE
+         B2 = DLAMC3( A*RBASE, ZERO )
+         C2 = DLAMC3( B2 / RBASE, ZERO )
+         D2 = ZERO
+         DO 30 I = 1, BASE
+            D2 = D2 + B2
+   30    CONTINUE
+         GO TO 10
+      END IF
+*+    END WHILE
+*
+      RETURN
+*
+*     End of DLAMC4
+*
+      END
+*
+************************************************************************
+*
+      SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      LOGICAL            IEEE
+      INTEGER            BETA, EMAX, EMIN, P
+      DOUBLE PRECISION   RMAX
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  DLAMC5 attempts to compute RMAX, the largest machine floating-point
+*  number, without overflow.  It assumes that EMAX + abs(EMIN) sum
+*  approximately to a power of 2.  It will fail on machines where this
+*  assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
+*  EMAX = 28718).  It will also fail if the value supplied for EMIN is
+*  too large (i.e. too close to zero), probably with overflow.
+*
+*  Arguments
+*  =========
+*
+*  BETA    (input) INTEGER
+*          The base of floating-point arithmetic.
+*
+*  P       (input) INTEGER
+*          The number of base BETA digits in the mantissa of a
+*          floating-point value.
+*
+*  EMIN    (input) INTEGER
+*          The minimum exponent before (gradual) underflow.
+*
+*  IEEE    (input) LOGICAL
+*          A logical flag specifying whether or not the arithmetic
+*          system is thought to comply with the IEEE standard.
+*
+*  EMAX    (output) INTEGER
+*          The largest exponent before overflow
+*
+*  RMAX    (output) DOUBLE PRECISION
+*          The largest machine floating-point number.
+*
+* =====================================================================
+*
+*     .. Parameters ..
+      DOUBLE PRECISION   ZERO, ONE
+      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
+      DOUBLE PRECISION   OLDY, RECBAS, Y, Z
+*     ..
+*     .. External Functions ..
+      DOUBLE PRECISION   DLAMC3
+      EXTERNAL           DLAMC3
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          MOD
+*     ..
+*     .. Executable Statements ..
+*
+*     First compute LEXP and UEXP, two powers of 2 that bound
+*     abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
+*     approximately to the bound that is closest to abs(EMIN).
+*     (EMAX is the exponent of the required number RMAX).
+*
+      LEXP = 1
+      EXBITS = 1
+   10 CONTINUE
+      TRY = LEXP*2
+      IF( TRY.LE.( -EMIN ) ) THEN
+         LEXP = TRY
+         EXBITS = EXBITS + 1
+         GO TO 10
+      END IF
+      IF( LEXP.EQ.-EMIN ) THEN
+         UEXP = LEXP
+      ELSE
+         UEXP = TRY
+         EXBITS = EXBITS + 1
+      END IF
+*
+*     Now -LEXP is less than or equal to EMIN, and -UEXP is greater
+*     than or equal to EMIN. EXBITS is the number of bits needed to
+*     store the exponent.
+*
+      IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
+         EXPSUM = 2*LEXP
+      ELSE
+         EXPSUM = 2*UEXP
+      END IF
+*
+*     EXPSUM is the exponent range, approximately equal to
+*     EMAX - EMIN + 1 .
+*
+      EMAX = EXPSUM + EMIN - 1
+      NBITS = 1 + EXBITS + P
+*
+*     NBITS is the total number of bits needed to store a
+*     floating-point number.
+*
+      IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
+*
+*        Either there are an odd number of bits used to store a
+*        floating-point number, which is unlikely, or some bits are
+*        not used in the representation of numbers, which is possible,
+*        (e.g. Cray machines) or the mantissa has an implicit bit,
+*        (e.g. IEEE machines, Dec Vax machines), which is perhaps the
+*        most likely. We have to assume the last alternative.
+*        If this is true, then we need to reduce EMAX by one because
+*        there must be some way of representing zero in an implicit-bit
+*        system. On machines like Cray, we are reducing EMAX by one
+*        unnecessarily.
+*
+         EMAX = EMAX - 1
+      END IF
+*
+      IF( IEEE ) THEN
+*
+*        Assume we are on an IEEE machine which reserves one exponent
+*        for infinity and NaN.
+*
+         EMAX = EMAX - 1
+      END IF
+*
+*     Now create RMAX, the largest machine number, which should
+*     be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
+*
+*     First compute 1.0 - BETA**(-P), being careful that the
+*     result is less than 1.0 .
+*
+      RECBAS = ONE / BETA
+      Z = BETA - ONE
+      Y = ZERO
+      DO 20 I = 1, P
+         Z = Z*RECBAS
+         IF( Y.LT.ONE )
+     $      OLDY = Y
+         Y = DLAMC3( Y, Z )
+   20 CONTINUE
+      IF( Y.GE.ONE )
+     $   Y = OLDY
+*
+*     Now multiply by BETA**EMAX to get RMAX.
+*
+      DO 30 I = 1, EMAX
+         Y = DLAMC3( Y*BETA, ZERO )
+   30 CONTINUE
+*
+      RMAX = Y
+      RETURN
+*
+*     End of DLAMC5
+*
+      END
Index: src/lapack/util/iladlc.f
===================================================================
--- src/lapack/util/iladlc.f	(revision 0)
+++ src/lapack/util/iladlc.f	(revision 1)
@@ -0,0 +1,58 @@
+      INTEGER FUNCTION ILADLC(M, N, A, LDA)
+      IMPLICIT NONE
+!
+!  -- LAPACK auxiliary routine (version 3.2) --
+!     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+!     December 2007
+!
+!     .. Scalar Arguments ..
+      INTEGER            M, N, LDA
+!     ..
+!     .. Array Arguments ..
+      DOUBLE PRECISION   A( LDA, * )
+!     ..
+!
+!  Purpose
+!  =======
+!
+!  ILADLC scans A for its last non-zero column.
+!
+!  Arguments
+!  =========
+!
+!  M       (input) INTEGER
+!          The number of rows of the matrix A.
+!
+!  N       (input) INTEGER
+!          The number of columns of the matrix A.
+!
+!  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
+!          The m by n matrix A.
+!
+!  LDA     (input) INTEGER
+!          The leading dimension of the array A. LDA >= max(1,M).
+!
+!  =====================================================================
+!
+!     .. Parameters ..
+      DOUBLE PRECISION ZERO
+      PARAMETER ( ZERO = 0.0D+0 )
+!     ..
+!     .. Local Scalars ..
+      INTEGER I
+!     ..
+!     .. Executable Statements ..
+!
+!     Quick test for the common case where one corner is non-zero.
+      IF( N.EQ.0 .OR. A(1, N).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN
+         ILADLC = N
+      ELSE
+!     Now scan each column from the end, returning with the first non-zero.
+         DO ILADLC = N, 1, -1
+            DO I = 1, M
+               IF( A(I, ILADLC).NE.ZERO ) RETURN
+            END DO
+         END DO
+      END IF
+      RETURN
+      END FUNCTION
Index: src/lapack/util/iparmq.f
===================================================================
--- src/lapack/util/iparmq.f	(revision 0)
+++ src/lapack/util/iparmq.f	(revision 1)
@@ -0,0 +1,254 @@
+      INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*     
+*     .. Scalar Arguments ..
+      INTEGER            IHI, ILO, ISPEC, LWORK, N
+      CHARACTER          NAME*( * ), OPTS*( * )
+*
+*  Purpose
+*  =======
+*
+*       This program sets problem and machine dependent parameters
+*       useful for xHSEQR and its subroutines. It is called whenever 
+*       ILAENV is called with 12 <= ISPEC <= 16
+*
+*  Arguments
+*  =========
+*
+*       ISPEC  (input) integer scalar
+*              ISPEC specifies which tunable parameter IPARMQ should
+*              return.
+*
+*              ISPEC=12: (INMIN)  Matrices of order nmin or less
+*                        are sent directly to xLAHQR, the implicit
+*                        double shift QR algorithm.  NMIN must be
+*                        at least 11.
+*
+*              ISPEC=13: (INWIN)  Size of the deflation window.
+*                        This is best set greater than or equal to
+*                        the number of simultaneous shifts NS.
+*                        Larger matrices benefit from larger deflation
+*                        windows.
+*
+*              ISPEC=14: (INIBL) Determines when to stop nibbling and
+*                        invest in an (expensive) multi-shift QR sweep.
+*                        If the aggressive early deflation subroutine
+*                        finds LD converged eigenvalues from an order
+*                        NW deflation window and LD.GT.(NW*NIBBLE)/100,
+*                        then the next QR sweep is skipped and early
+*                        deflation is applied immediately to the
+*                        remaining active diagonal block.  Setting
+*                        IPARMQ(ISPEC=14) = 0 causes TTQRE to skip a
+*                        multi-shift QR sweep whenever early deflation
+*                        finds a converged eigenvalue.  Setting
+*                        IPARMQ(ISPEC=14) greater than or equal to 100
+*                        prevents TTQRE from skipping a multi-shift
+*                        QR sweep.
+*
+*              ISPEC=15: (NSHFTS) The number of simultaneous shifts in
+*                        a multi-shift QR iteration.
+*
+*              ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the
+*                        following meanings.
+*                        0:  During the multi-shift QR sweep,
+*                            xLAQR5 does not accumulate reflections and
+*                            does not use matrix-matrix multiply to
+*                            update the far-from-diagonal matrix
+*                            entries.
+*                        1:  During the multi-shift QR sweep,
+*                            xLAQR5 and/or xLAQRaccumulates reflections and uses
+*                            matrix-matrix multiply to update the
+*                            far-from-diagonal matrix entries.
+*                        2:  During the multi-shift QR sweep.
+*                            xLAQR5 accumulates reflections and takes
+*                            advantage of 2-by-2 block structure during
+*                            matrix-matrix multiplies.
+*                        (If xTRMM is slower than xGEMM, then
+*                        IPARMQ(ISPEC=16)=1 may be more efficient than
+*                        IPARMQ(ISPEC=16)=2 despite the greater level of
+*                        arithmetic work implied by the latter choice.)
+*
+*       NAME    (input) character string
+*               Name of the calling subroutine
+*
+*       OPTS    (input) character string
+*               This is a concatenation of the string arguments to
+*               TTQRE.
+*
+*       N       (input) integer scalar
+*               N is the order of the Hessenberg matrix H.
+*
+*       ILO     (input) INTEGER
+*       IHI     (input) INTEGER
+*               It is assumed that H is already upper triangular
+*               in rows and columns 1:ILO-1 and IHI+1:N.
+*
+*       LWORK   (input) integer scalar
+*               The amount of workspace available.
+*
+*  Further Details
+*  ===============
+*
+*       Little is known about how best to choose these parameters.
+*       It is possible to use different values of the parameters
+*       for each of CHSEQR, DHSEQR, SHSEQR and ZHSEQR.
+*
+*       It is probably best to choose different parameters for
+*       different matrices and different parameters at different
+*       times during the iteration, but this has not been
+*       implemented --- yet.
+*
+*
+*       The best choices of most of the parameters depend
+*       in an ill-understood way on the relative execution
+*       rate of xLAQR3 and xLAQR5 and on the nature of each
+*       particular eigenvalue problem.  Experiment may be the
+*       only practical way to determine which choices are most
+*       effective.
+*
+*       Following is a list of default values supplied by IPARMQ.
+*       These defaults may be adjusted in order to attain better
+*       performance in any particular computational environment.
+*
+*       IPARMQ(ISPEC=12) The xLAHQR vs xLAQR0 crossover point.
+*                        Default: 75. (Must be at least 11.)
+*
+*       IPARMQ(ISPEC=13) Recommended deflation window size.
+*                        This depends on ILO, IHI and NS, the
+*                        number of simultaneous shifts returned
+*                        by IPARMQ(ISPEC=15).  The default for
+*                        (IHI-ILO+1).LE.500 is NS.  The default
+*                        for (IHI-ILO+1).GT.500 is 3*NS/2.
+*
+*       IPARMQ(ISPEC=14) Nibble crossover point.  Default: 14.
+*
+*       IPARMQ(ISPEC=15) Number of simultaneous shifts, NS.
+*                        a multi-shift QR iteration.
+*
+*                        If IHI-ILO+1 is ...
+*
+*                        greater than      ...but less    ... the
+*                        or equal to ...      than        default is
+*
+*                                0               30       NS =   2+
+*                               30               60       NS =   4+
+*                               60              150       NS =  10
+*                              150              590       NS =  **
+*                              590             3000       NS =  64
+*                             3000             6000       NS = 128
+*                             6000             infinity   NS = 256
+*
+*                    (+)  By default matrices of this order are
+*                         passed to the implicit double shift routine
+*                         xLAHQR.  See IPARMQ(ISPEC=12) above.   These
+*                         values of NS are used only in case of a rare
+*                         xLAHQR failure.
+*
+*                    (**) The asterisks (**) indicate an ad-hoc
+*                         function increasing from 10 to 64.
+*
+*       IPARMQ(ISPEC=16) Select structured matrix multiply.
+*                        (See ISPEC=16 above for details.)
+*                        Default: 3.
+*
+*     ================================================================
+*     .. Parameters ..
+      INTEGER            INMIN, INWIN, INIBL, ISHFTS, IACC22
+      PARAMETER          ( INMIN = 12, INWIN = 13, INIBL = 14,
+     $                   ISHFTS = 15, IACC22 = 16 )
+      INTEGER            NMIN, K22MIN, KACMIN, NIBBLE, KNWSWP
+      PARAMETER          ( NMIN = 75, K22MIN = 14, KACMIN = 14,
+     $                   NIBBLE = 14, KNWSWP = 500 )
+      REAL               TWO
+      PARAMETER          ( TWO = 2.0 )
+*     ..
+*     .. Local Scalars ..
+      INTEGER            NH, NS
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          LOG, MAX, MOD, NINT, REAL
+*     ..
+*     .. Executable Statements ..
+      IF( ( ISPEC.EQ.ISHFTS ) .OR. ( ISPEC.EQ.INWIN ) .OR.
+     $    ( ISPEC.EQ.IACC22 ) ) THEN
+*
+*        ==== Set the number simultaneous shifts ====
+*
+         NH = IHI - ILO + 1
+         NS = 2
+         IF( NH.GE.30 )
+     $      NS = 4
+         IF( NH.GE.60 )
+     $      NS = 10
+         IF( NH.GE.150 )
+     $      NS = MAX( 10, NH / NINT( LOG( REAL( NH ) ) / LOG( TWO ) ) )
+         IF( NH.GE.590 )
+     $      NS = 64
+         IF( NH.GE.3000 )
+     $      NS = 128
+         IF( NH.GE.6000 )
+     $      NS = 256
+         NS = MAX( 2, NS-MOD( NS, 2 ) )
+      END IF
+*
+      IF( ISPEC.EQ.INMIN ) THEN
+*
+*
+*        ===== Matrices of order smaller than NMIN get sent
+*        .     to xLAHQR, the classic double shift algorithm.
+*        .     This must be at least 11. ====
+*
+         IPARMQ = NMIN
+*
+      ELSE IF( ISPEC.EQ.INIBL ) THEN
+*
+*        ==== INIBL: skip a multi-shift qr iteration and
+*        .    whenever aggressive early deflation finds
+*        .    at least (NIBBLE*(window size)/100) deflations. ====
+*
+         IPARMQ = NIBBLE
+*
+      ELSE IF( ISPEC.EQ.ISHFTS ) THEN
+*
+*        ==== NSHFTS: The number of simultaneous shifts =====
+*
+         IPARMQ = NS
+*
+      ELSE IF( ISPEC.EQ.INWIN ) THEN
+*
+*        ==== NW: deflation window size.  ====
+*
+         IF( NH.LE.KNWSWP ) THEN
+            IPARMQ = NS
+         ELSE
+            IPARMQ = 3*NS / 2
+         END IF
+*
+      ELSE IF( ISPEC.EQ.IACC22 ) THEN
+*
+*        ==== IACC22: Whether to accumulate reflections
+*        .     before updating the far-from-diagonal elements
+*        .     and whether to use 2-by-2 block structure while
+*        .     doing it.  A small amount of work could be saved
+*        .     by making this choice dependent also upon the
+*        .     NH=IHI-ILO+1.
+*
+         IPARMQ = 0
+         IF( NS.GE.KACMIN )
+     $      IPARMQ = 1
+         IF( NS.GE.K22MIN )
+     $      IPARMQ = 2
+*
+      ELSE
+*        ===== invalid value of ispec =====
+         IPARMQ = -1
+*
+      END IF
+*
+*     ==== End of IPARMQ ====
+*
+      END
Index: src/lapack/util/xerbla.f
===================================================================
--- src/lapack/util/xerbla.f	(revision 0)
+++ src/lapack/util/xerbla.f	(revision 1)
@@ -0,0 +1,49 @@
+      SUBROUTINE XERBLA( SRNAME, INFO )
+*
+*  -- LAPACK auxiliary routine (version 3.2) --
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER*(*)      SRNAME
+      INTEGER            INFO
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  XERBLA  is an error handler for the LAPACK routines.
+*  It is called by an LAPACK routine if an input parameter has an
+*  invalid value.  A message is printed and execution stops.
+*
+*  Installers may consider modifying the STOP statement in order to
+*  call system-specific exception-handling facilities.
+*
+*  Arguments
+*  =========
+*
+*  SRNAME  (input) CHARACTER*(*)
+*          The name of the routine which called XERBLA.
+*
+*  INFO    (input) INTEGER
+*          The position of the invalid parameter in the parameter list
+*          of the calling routine.
+*
+* =====================================================================
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC          LEN_TRIM
+*     ..
+*     .. Executable Statements ..
+*
+      WRITE( *, FMT = 9999 )SRNAME( 1:LEN_TRIM( SRNAME ) ), INFO
+*
+      STOP
+*
+ 9999 FORMAT( ' ** On entry to ', A, ' parameter number ', I2, ' had ',
+     $      'an illegal value' )
+*
+*     End of XERBLA
+*
+      END
Index: src/lapack/util/ilaenv.f
===================================================================
--- src/lapack/util/ilaenv.f	(revision 0)
+++ src/lapack/util/ilaenv.f	(revision 1)
@@ -0,0 +1,555 @@
+      INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
+*
+*  -- LAPACK auxiliary routine (version 3.2.1)                        --
+*
+*  -- April 2009                                                      --
+*
+*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
+*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+*
+*     .. Scalar Arguments ..
+      CHARACTER*( * )    NAME, OPTS
+      INTEGER            ISPEC, N1, N2, N3, N4
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  ILAENV is called from the LAPACK routines to choose problem-dependent
+*  parameters for the local environment.  See ISPEC for a description of
+*  the parameters.
+*
+*  ILAENV returns an INTEGER
+*  if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC
+*  if ILAENV < 0:  if ILAENV = -k, the k-th argument had an illegal value.
+*
+*  This version provides a set of parameters which should give good,
+*  but not optimal, performance on many of the currently available
+*  computers.  Users are encouraged to modify this subroutine to set
+*  the tuning parameters for their particular machine using the option
+*  and problem size information in the arguments.
+*
+*  This routine will not function correctly if it is converted to all
+*  lower case.  Converting it to all upper case is allowed.
+*
+*  Arguments
+*  =========
+*
+*  ISPEC   (input) INTEGER
+*          Specifies the parameter to be returned as the value of
+*          ILAENV.
+*          = 1: the optimal blocksize; if this value is 1, an unblocked
+*               algorithm will give the best performance.
+*          = 2: the minimum block size for which the block routine
+*               should be used; if the usable block size is less than
+*               this value, an unblocked routine should be used.
+*          = 3: the crossover point (in a block routine, for N less
+*               than this value, an unblocked routine should be used)
+*          = 4: the number of shifts, used in the nonsymmetric
+*               eigenvalue routines (DEPRECATED)
+*          = 5: the minimum column dimension for blocking to be used;
+*               rectangular blocks must have dimension at least k by m,
+*               where k is given by ILAENV(2,...) and m by ILAENV(5,...)
+*          = 6: the crossover point for the SVD (when reducing an m by n
+*               matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
+*               this value, a QR factorization is used first to reduce
+*               the matrix to a triangular form.)
+*          = 7: the number of processors
+*          = 8: the crossover point for the multishift QR method
+*               for nonsymmetric eigenvalue problems (DEPRECATED)
+*          = 9: maximum size of the subproblems at the bottom of the
+*               computation tree in the divide-and-conquer algorithm
+*               (used by xGELSD and xGESDD)
+*          =10: ieee NaN arithmetic can be trusted not to trap
+*          =11: infinity arithmetic can be trusted not to trap
+*          12 <= ISPEC <= 16:
+*               xHSEQR or one of its subroutines,
+*               see IPARMQ for detailed explanation
+*
+*  NAME    (input) CHARACTER*(*)
+*          The name of the calling subroutine, in either upper case or
+*          lower case.
+*
+*  OPTS    (input) CHARACTER*(*)
+*          The character options to the subroutine NAME, concatenated
+*          into a single character string.  For example, UPLO = 'U',
+*          TRANS = 'T', and DIAG = 'N' for a triangular routine would
+*          be specified as OPTS = 'UTN'.
+*
+*  N1      (input) INTEGER
+*  N2      (input) INTEGER
+*  N3      (input) INTEGER
+*  N4      (input) INTEGER
+*          Problem dimensions for the subroutine NAME; these may not all
+*          be required.
+*
+*  Further Details
+*  ===============
+*
+*  The following conventions have been used when calling ILAENV from the
+*  LAPACK routines:
+*  1)  OPTS is a concatenation of all of the character options to
+*      subroutine NAME, in the same order that they appear in the
+*      argument list for NAME, even if they are not used in determining
+*      the value of the parameter specified by ISPEC.
+*  2)  The problem dimensions N1, N2, N3, N4 are specified in the order
+*      that they appear in the argument list for NAME.  N1 is used
+*      first, N2 second, and so on, and unused problem dimensions are
+*      passed a value of -1.
+*  3)  The parameter value returned by ILAENV is checked for validity in
+*      the calling subroutine.  For example, ILAENV is used to retrieve
+*      the optimal blocksize for STRTRI as follows:
+*
+*      NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
+*      IF( NB.LE.1 ) NB = MAX( 1, N )
+*
+*  =====================================================================
+*
+*     .. Local Scalars ..
+      INTEGER            I, IC, IZ, NB, NBMIN, NX
+      LOGICAL            CNAME, SNAME
+      CHARACTER          C1*1, C2*2, C4*2, C3*3, SUBNAM*6
+*     ..
+*     .. Intrinsic Functions ..
+      INTRINSIC          CHAR, ICHAR, INT, MIN, REAL
+*     ..
+*     .. External Functions ..
+      INTEGER            IEEECK, IPARMQ
+      EXTERNAL           IEEECK, IPARMQ
+*     ..
+*     .. Executable Statements ..
+*
+      GO TO ( 10, 10, 10, 80, 90, 100, 110, 120,
+     $        130, 140, 150, 160, 160, 160, 160, 160 )ISPEC
+*
+*     Invalid value for ISPEC
+*
+      ILAENV = -1
+      RETURN
+*
+   10 CONTINUE
+*
+*     Convert NAME to upper case if the first character is lower case.
+*
+      ILAENV = 1
+      SUBNAM = NAME
+      IC = ICHAR( SUBNAM( 1: 1 ) )
+      IZ = ICHAR( 'Z' )
+      IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN
+*
+*        ASCII character set
+*
+         IF( IC.GE.97 .AND. IC.LE.122 ) THEN
+            SUBNAM( 1: 1 ) = CHAR( IC-32 )
+            DO 20 I = 2, 6
+               IC = ICHAR( SUBNAM( I: I ) )
+               IF( IC.GE.97 .AND. IC.LE.122 )
+     $            SUBNAM( I: I ) = CHAR( IC-32 )
+   20       CONTINUE
+         END IF
+*
+      ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN
+*
+*        EBCDIC character set
+*
+         IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
+     $       ( IC.GE.145 .AND. IC.LE.153 ) .OR.
+     $       ( IC.GE.162 .AND. IC.LE.169 ) ) THEN
+            SUBNAM( 1: 1 ) = CHAR( IC+64 )
+            DO 30 I = 2, 6
+               IC = ICHAR( SUBNAM( I: I ) )
+               IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
+     $             ( IC.GE.145 .AND. IC.LE.153 ) .OR.
+     $             ( IC.GE.162 .AND. IC.LE.169 ) )SUBNAM( I:
+     $             I ) = CHAR( IC+64 )
+   30       CONTINUE
+         END IF
+*
+      ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN
+*
+*        Prime machines:  ASCII+128
+*
+         IF( IC.GE.225 .AND. IC.LE.250 ) THEN
+            SUBNAM( 1: 1 ) = CHAR( IC-32 )
+            DO 40 I = 2, 6
+               IC = ICHAR( SUBNAM( I: I ) )
+               IF( IC.GE.225 .AND. IC.LE.250 )
+     $            SUBNAM( I: I ) = CHAR( IC-32 )
+   40       CONTINUE
+         END IF
+      END IF
+*
+      C1 = SUBNAM( 1: 1 )
+      SNAME = C1.EQ.'S' .OR. C1.EQ.'D'
+      CNAME = C1.EQ.'C' .OR. C1.EQ.'Z'
+      IF( .NOT.( CNAME .OR. SNAME ) )
+     $   RETURN
+      C2 = SUBNAM( 2: 3 )
+      C3 = SUBNAM( 4: 6 )
+      C4 = C3( 2: 3 )
+*
+      GO TO ( 50, 60, 70 )ISPEC
+*
+   50 CONTINUE
+*
+*     ISPEC = 1:  block size
+*
+*     In these examples, separate code is provided for setting NB for
+*     real and complex.  We assume that NB will take the same value in
+*     single or double precision.
+*
+      NB = 1
+*
+      IF( C2.EQ.'GE' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
+     $            C3.EQ.'QLF' ) THEN
+            IF( SNAME ) THEN
+               NB = 32
+            ELSE
+               NB = 32
+            END IF
+         ELSE IF( C3.EQ.'HRD' ) THEN
+            IF( SNAME ) THEN
+               NB = 32
+            ELSE
+               NB = 32
+            END IF
+         ELSE IF( C3.EQ.'BRD' ) THEN
+            IF( SNAME ) THEN
+               NB = 32
+            ELSE
+               NB = 32
+            END IF
+         ELSE IF( C3.EQ.'TRI' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'PO' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'SY' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+            NB = 32
+         ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
+            NB = 64
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            NB = 64
+         ELSE IF( C3.EQ.'TRD' ) THEN
+            NB = 32
+         ELSE IF( C3.EQ.'GST' ) THEN
+            NB = 64
+         END IF
+      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NB = 32
+            END IF
+         ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NB = 32
+            END IF
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NB = 32
+            END IF
+         ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NB = 32
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'GB' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               IF( N4.LE.64 ) THEN
+                  NB = 1
+               ELSE
+                  NB = 32
+               END IF
+            ELSE
+               IF( N4.LE.64 ) THEN
+                  NB = 1
+               ELSE
+                  NB = 32
+               END IF
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'PB' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               IF( N2.LE.64 ) THEN
+                  NB = 1
+               ELSE
+                  NB = 32
+               END IF
+            ELSE
+               IF( N2.LE.64 ) THEN
+                  NB = 1
+               ELSE
+                  NB = 32
+               END IF
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'TR' ) THEN
+         IF( C3.EQ.'TRI' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'LA' ) THEN
+         IF( C3.EQ.'UUM' ) THEN
+            IF( SNAME ) THEN
+               NB = 64
+            ELSE
+               NB = 64
+            END IF
+         END IF
+      ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
+         IF( C3.EQ.'EBZ' ) THEN
+            NB = 1
+         END IF
+      END IF
+      ILAENV = NB
+      RETURN
+*
+   60 CONTINUE
+*
+*     ISPEC = 2:  minimum block size
+*
+      NBMIN = 2
+      IF( C2.EQ.'GE' ) THEN
+         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
+     $       'QLF' ) THEN
+            IF( SNAME ) THEN
+               NBMIN = 2
+            ELSE
+               NBMIN = 2
+            END IF
+         ELSE IF( C3.EQ.'HRD' ) THEN
+            IF( SNAME ) THEN
+               NBMIN = 2
+            ELSE
+               NBMIN = 2
+            END IF
+         ELSE IF( C3.EQ.'BRD' ) THEN
+            IF( SNAME ) THEN
+               NBMIN = 2
+            ELSE
+               NBMIN = 2
+            END IF
+         ELSE IF( C3.EQ.'TRI' ) THEN
+            IF( SNAME ) THEN
+               NBMIN = 2
+            ELSE
+               NBMIN = 2
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'SY' ) THEN
+         IF( C3.EQ.'TRF' ) THEN
+            IF( SNAME ) THEN
+               NBMIN = 8
+            ELSE
+               NBMIN = 8
+            END IF
+         ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+            NBMIN = 2
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+         IF( C3.EQ.'TRD' ) THEN
+            NBMIN = 2
+         END IF
+      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NBMIN = 2
+            END IF
+         ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NBMIN = 2
+            END IF
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NBMIN = 2
+            END IF
+         ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NBMIN = 2
+            END IF
+         END IF
+      END IF
+      ILAENV = NBMIN
+      RETURN
+*
+   70 CONTINUE
+*
+*     ISPEC = 3:  crossover point
+*
+      NX = 0
+      IF( C2.EQ.'GE' ) THEN
+         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
+     $       'QLF' ) THEN
+            IF( SNAME ) THEN
+               NX = 128
+            ELSE
+               NX = 128
+            END IF
+         ELSE IF( C3.EQ.'HRD' ) THEN
+            IF( SNAME ) THEN
+               NX = 128
+            ELSE
+               NX = 128
+            END IF
+         ELSE IF( C3.EQ.'BRD' ) THEN
+            IF( SNAME ) THEN
+               NX = 128
+            ELSE
+               NX = 128
+            END IF
+         END IF
+      ELSE IF( C2.EQ.'SY' ) THEN
+         IF( SNAME .AND. C3.EQ.'TRD' ) THEN
+            NX = 32
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
+         IF( C3.EQ.'TRD' ) THEN
+            NX = 32
+         END IF
+      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NX = 128
+            END IF
+         END IF
+      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
+         IF( C3( 1: 1 ).EQ.'G' ) THEN
+            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
+     $          'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
+     $           THEN
+               NX = 128
+            END IF
+         END IF
+      END IF
+      ILAENV = NX
+      RETURN
+*
+   80 CONTINUE
+*
+*     ISPEC = 4:  number of shifts (used by xHSEQR)
+*
+      ILAENV = 6
+      RETURN
+*
+   90 CONTINUE
+*
+*     ISPEC = 5:  minimum column dimension (not used)
+*
+      ILAENV = 2
+      RETURN
+*
+  100 CONTINUE
+*
+*     ISPEC = 6:  crossover point for SVD (used by xGELSS and xGESVD)
+*
+      ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 )
+      RETURN
+*
+  110 CONTINUE
+*
+*     ISPEC = 7:  number of processors (not used)
+*
+      ILAENV = 1
+      RETURN
+*
+  120 CONTINUE
+*
+*     ISPEC = 8:  crossover point for multishift (used by xHSEQR)
+*
+      ILAENV = 50
+      RETURN
+*
+  130 CONTINUE
+*
+*     ISPEC = 9:  maximum size of the subproblems at the bottom of the
+*                 computation tree in the divide-and-conquer algorithm
+*                 (used by xGELSD and xGESDD)
+*
+      ILAENV = 25
+      RETURN
+*
+  140 CONTINUE
+*
+*     ISPEC = 10: ieee NaN arithmetic can be trusted not to trap
+*
+*     ILAENV = 0
+      ILAENV = 1
+      IF( ILAENV.EQ.1 ) THEN
+         ILAENV = IEEECK( 1, 0.0, 1.0 )
+      END IF
+      RETURN
+*
+  150 CONTINUE
+*
+*     ISPEC = 11: infinity arithmetic can be trusted not to trap
+*
+*     ILAENV = 0
+      ILAENV = 1
+      IF( ILAENV.EQ.1 ) THEN
+         ILAENV = IEEECK( 0, 0.0, 1.0 )
+      END IF
+      RETURN
+*
+  160 CONTINUE
+*
+*     12 <= ISPEC <= 16: xHSEQR or one of its subroutines. 
+*
+      ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
+      RETURN
+*
+*     End of ILAENV
+*
+      END
Index: src/lapack/util/lsame.f
===================================================================
--- src/lapack/util/lsame.f	(revision 0)
+++ src/lapack/util/lsame.f	(revision 1)
@@ -0,0 +1,86 @@
+      LOGICAL          FUNCTION LSAME( CA, CB )
+*
+*  -- LAPACK auxiliary routine (version 3.1) --
+*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+*     November 2006
+*
+*     .. Scalar Arguments ..
+      CHARACTER          CA, CB
+*     ..
+*
+*  Purpose
+*  =======
+*
+*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
+*  case.
+*
+*  Arguments
+*  =========
+*
+*  CA      (input) CHARACTER*1
+*  CB      (input) CHARACTER*1
+*          CA and CB specify the single characters to be compared.
+*
+* =====================================================================
+*
+*     .. Intrinsic Functions ..
+      INTRINSIC          ICHAR
+*     ..
+*     .. Local Scalars ..
+      INTEGER            INTA, INTB, ZCODE
+*     ..
+*     .. Executable Statements ..
+*
+*     Test if the characters are equal
+*
+      LSAME = CA.EQ.CB
+      IF( LSAME )
+     $   RETURN
+*
+*     Now test for equivalence if both characters are alphabetic.
+*
+      ZCODE = ICHAR( 'Z' )
+*
+*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+*     machines, on which ICHAR returns a value with bit 8 set.
+*     ICHAR('A') on Prime machines returns 193 which is the same as
+*     ICHAR('A') on an EBCDIC machine.
+*
+      INTA = ICHAR( CA )
+      INTB = ICHAR( CB )
+*
+      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
+*
+*        ASCII is assumed - ZCODE is the ASCII code of either lower or
+*        upper case 'Z'.
+*
+         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
+         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
+*
+      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
+*
+*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+*        upper case 'Z'.
+*
+         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
+     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
+     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
+         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
+     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
+     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
+*
+      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
+*
+*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+*        plus 128 of either lower or upper case 'Z'.
+*
+         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
+         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
+      END IF
+      LSAME = INTA.EQ.INTB
+*
+*     RETURN
+*
+*     End of LSAME
+*
+      END
Index: src/sinangle.f90
===================================================================
--- src/sinangle.f90	(revision 0)
+++ src/sinangle.f90	(revision 1)
@@ -0,0 +1,16 @@
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+
+       use Path_module, only :  Pi,KINT, KREAL
+
+       IMPLICIT NONE
+
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+
+       if (norm1<=1d-6) STOP "ERROR in SinAngle, norm1<=1e-6"
+       if (norm2<=1d-6) STOP "ERROR in SinAngle, norm2<=1e-6"
+       Sinangle=sqrt(1.-((v1x*v2x+v1y*v2y+v1z*V2z)/(norm1*norm2))**2)
+
+
+     END FUNCTION SINANGLE
Index: src/refsor.f90
===================================================================
--- src/refsor.f90	(revision 0)
+++ src/refsor.f90	(revision 1)
@@ -0,0 +1,428 @@
+!!! Downloaded from http://www.fortran-2000.com/rank/index.html
+!!! on October 13th, 2010
+
+!PFL 2010 Oct 13->
+! I deleted the 'module' part to keep only
+! the Double subroutine.
+
+! Module m_refsor
+! ! PFL 2010 Oct 13 ->
+! !Integer, Parameter :: kdp = selected_real_kind(15)
+! Integer, Parameter :: kdp = KIND(1.0D0)
+! ! <- PFL 2010 Oct 13
+! public :: refsor
+! private :: kdp
+! private :: R_refsor, I_refsor, D_refsor
+! private :: R_inssor, I_inssor, D_inssor
+! private :: R_subsor, I_subsor, D_subsor
+! interface refsor
+!   module procedure d_refsor, r_refsor, i_refsor
+! end interface refsor
+! contains
+
+! Subroutine D_refsor (XDONT)
+ Subroutine Drefsor (XDONT)
+!  Sorts XDONT into ascending order - Quicksort
+! __________________________________________________________
+!  Quicksort chooses a "pivot" in the set, and explores the
+!  array from both ends, looking for a value > pivot with the
+!  increasing index, for a value <= pivot with the decreasing
+!  index, and swapping them when it has found one of each.
+!  The array is then subdivided in 2 ([3]) subsets:
+!  { values <= pivot} {pivot} {values > pivot}
+!  One then call recursively the program to sort each subset.
+!  When the size of the subarray is small enough, one uses an
+!  insertion sort that is faster for very small sets.
+!  Michel Olagnon - Apr. 2000
+! __________________________________________________________
+! __________________________________________________________
+
+   use VarTypes
+
+      Real (KREAL), Dimension (:), Intent (InOut) :: XDONT
+! __________________________________________________________
+!
+!
+      Call D_subsor (XDONT, 1, Size (XDONT))
+      Call D_inssor (XDONT)
+      Return
+    End Subroutine Drefsor
+
+Recursive Subroutine D_subsor (XDONT, IDEB1, IFIN1)
+!  Sorts XDONT from IDEB1 to IFIN1
+! __________________________________________________________
+
+  use VarTypes 
+
+  IMPLICIT NONE
+
+      Real(KREAL), dimension (:), Intent (InOut) :: XDONT
+      Integer(KINT), Intent (In) :: IDEB1, IFIN1
+! __________________________________________________________
+      Integer(KINT), Parameter :: NINS = 16 ! Max for insertion sort
+      Integer(KINT) :: ICRS, IDEB, IDCR, IFIN, IMIL
+      Real(KREAL) :: XPIV, XWRK
+!
+      IDEB = IDEB1
+      IFIN = IFIN1
+!
+!  If we don't have enough values to make it worth while, we leave
+!  them unsorted, and the final insertion sort will take care of them
+!
+      If ((IFIN - IDEB) > NINS) Then
+         IMIL = (IDEB+IFIN) / 2
+!
+!  One chooses a pivot, median of 1st, last, and middle values
+!
+         If (XDONT(IMIL) < XDONT(IDEB)) Then
+            XWRK = XDONT (IDEB)
+            XDONT (IDEB) = XDONT (IMIL)
+            XDONT (IMIL) = XWRK
+         End If
+         If (XDONT(IMIL) > XDONT(IFIN)) Then
+            XWRK = XDONT (IFIN)
+            XDONT (IFIN) = XDONT (IMIL)
+            XDONT (IMIL) = XWRK
+            If (XDONT(IMIL) < XDONT(IDEB)) Then
+               XWRK = XDONT (IDEB)
+               XDONT (IDEB) = XDONT (IMIL)
+               XDONT (IMIL) = XWRK
+            End If
+         End If
+         XPIV = XDONT (IMIL)
+!
+!  One exchanges values to put those > pivot in the end and
+!  those <= pivot at the beginning
+!
+         ICRS = IDEB
+         IDCR = IFIN
+         ECH2: Do
+            Do
+               ICRS = ICRS + 1
+               If (ICRS >= IDCR) Then
+!
+!  the first  >  pivot is IDCR
+!  the last   <= pivot is ICRS-1
+!  Note: If one arrives here on the first iteration, then
+!        the pivot is the maximum of the set, the last value is equal
+!        to it, and one can reduce by one the size of the set to process,
+!        as if XDONT (IFIN) > XPIV
+!
+                  Exit ECH2
+!
+               End If
+               If (XDONT(ICRS) > XPIV) Exit
+            End Do
+            Do
+               If (XDONT(IDCR) <= XPIV) Exit
+               IDCR = IDCR - 1
+               If (ICRS >= IDCR) Then
+!
+!  The last value < pivot is always ICRS-1
+!
+                  Exit ECH2
+               End If
+            End Do
+!
+            XWRK = XDONT (IDCR)
+            XDONT (IDCR) = XDONT (ICRS)
+            XDONT (ICRS) = XWRK
+         End Do ECH2
+!
+!  One now sorts each of the two sub-intervals
+!
+         Call D_subsor (XDONT, IDEB1, ICRS-1)
+         Call D_subsor (XDONT, IDCR, IFIN1)
+      End If
+      Return
+    End Subroutine D_subsor
+
+   Subroutine D_inssor (XDONT)
+!  Sorts XDONT into increasing order (Insertion sort)
+! __________________________________________________________
+
+  use VarTypes 
+  
+  IMPLICIT NONE
+      Real(KREAL), dimension (:), Intent (InOut) :: XDONT
+! __________________________________________________________
+      Integer(KINT) :: ICRS, IDCR
+      Real(KREAL) :: XWRK
+!
+      Do ICRS = 2, Size (XDONT)
+         XWRK = XDONT (ICRS)
+         If (XWRK >= XDONT(ICRS-1)) Cycle
+         XDONT (ICRS) = XDONT (ICRS-1)
+         Do IDCR = ICRS - 2, 1, - 1
+            If (XWRK >= XDONT(IDCR)) Exit
+            XDONT (IDCR+1) = XDONT (IDCR)
+         End Do
+         XDONT (IDCR+1) = XWRK
+      End Do
+!
+      Return
+!
+End Subroutine D_inssor
+
+
+! !
+! Subroutine R_refsor (XDONT)
+! !  Sorts XDONT into ascending order - Quicksort
+! ! __________________________________________________________
+! !  Quicksort chooses a "pivot" in the set, and explores the
+! !  array from both ends, looking for a value > pivot with the
+! !  increasing index, for a value <= pivot with the decreasing
+! !  index, and swapping them when it has found one of each.
+! !  The array is then subdivided in 2 ([3]) subsets:
+! !  { values <= pivot} {pivot} {values > pivot}
+! !  One then call recursively the program to sort each subset.
+! !  When the size of the subarray is small enough, one uses an
+! !  insertion sort that is faster for very small sets.
+! !  Michel Olagnon - Apr. 2000
+! ! __________________________________________________________
+! ! _________________________________________________________
+!       Real, Dimension (:), Intent (InOut) :: XDONT
+! ! __________________________________________________________
+! !
+! !
+!       Call R_subsor (XDONT, 1, Size (XDONT))
+!       Call R_inssor (XDONT)
+!       Return
+! End Subroutine R_refsor
+
+! Recursive Subroutine R_subsor (XDONT, IDEB1, IFIN1)
+! !  Sorts XDONT from IDEB1 to IFIN1
+! ! __________________________________________________________
+!       Real, dimension (:), Intent (InOut) :: XDONT
+!       Integer, Intent (In) :: IDEB1, IFIN1
+! ! __________________________________________________________
+!       Integer, Parameter :: NINS = 16 ! Max for insertion sort
+!       Integer :: ICRS, IDEB, IDCR, IFIN, IMIL
+!       Real :: XPIV, XWRK
+! !
+!       IDEB = IDEB1
+!       IFIN = IFIN1
+! !
+! !  If we don't have enough values to make it worth while, we leave
+! !  them unsorted, and the final insertion sort will take care of them
+! !
+!       If ((IFIN - IDEB) > NINS) Then
+!          IMIL = (IDEB+IFIN) / 2
+! !
+! !  One chooses a pivot, median of 1st, last, and middle values
+! !
+!          If (XDONT(IMIL) < XDONT(IDEB)) Then
+!             XWRK = XDONT (IDEB)
+!             XDONT (IDEB) = XDONT (IMIL)
+!             XDONT (IMIL) = XWRK
+!          End If
+!          If (XDONT(IMIL) > XDONT(IFIN)) Then
+!             XWRK = XDONT (IFIN)
+!             XDONT (IFIN) = XDONT (IMIL)
+!             XDONT (IMIL) = XWRK
+!             If (XDONT(IMIL) < XDONT(IDEB)) Then
+!                XWRK = XDONT (IDEB)
+!                XDONT (IDEB) = XDONT (IMIL)
+!                XDONT (IMIL) = XWRK
+!             End If
+!          End If
+!          XPIV = XDONT (IMIL)
+! !
+! !  One exchanges values to put those > pivot in the end and
+! !  those <= pivot at the beginning
+! !
+!          ICRS = IDEB
+!          IDCR = IFIN
+!          ECH2: Do
+!             Do
+!                ICRS = ICRS + 1
+!                If (ICRS >= IDCR) Then
+! !
+! !  the first  >  pivot is IDCR
+! !  the last   <= pivot is ICRS-1
+! !  Note: If one arrives here on the first iteration, then
+! !        the pivot is the maximum of the set, the last value is equal
+! !        to it, and one can reduce by one the size of the set to process,
+! !        as if XDONT (IFIN) > XPIV
+! !
+!                   Exit ECH2
+! !
+!                End If
+!                If (XDONT(ICRS) > XPIV) Exit
+!             End Do
+!             Do
+!                If (XDONT(IDCR) <= XPIV) Exit
+!                IDCR = IDCR - 1
+!                If (ICRS >= IDCR) Then
+! !
+! !  The last value < pivot is always ICRS-1
+! !
+!                   Exit ECH2
+!                End If
+!             End Do
+! !
+!             XWRK = XDONT (IDCR)
+!             XDONT (IDCR) = XDONT (ICRS)
+!             XDONT (ICRS) = XWRK
+!          End Do ECH2
+! !
+! !  One now sorts each of the two sub-intervals
+! !
+!          Call R_subsor (XDONT, IDEB1, ICRS-1)
+!          Call R_subsor (XDONT, IDCR, IFIN1)
+!       End If
+!       Return
+!    End Subroutine R_subsor
+!    Subroutine R_inssor (XDONT)
+! !  Sorts XDONT into increasing order (Insertion sort)
+! ! __________________________________________________________
+!       Real, dimension (:), Intent (InOut) :: XDONT
+! ! __________________________________________________________
+!       Integer :: ICRS, IDCR
+!       Real :: XWRK
+! !
+!       Do ICRS = 2, Size (XDONT)
+!          XWRK = XDONT (ICRS)
+!          If (XWRK >= XDONT(ICRS-1)) Cycle
+!          XDONT (ICRS) = XDONT (ICRS-1)
+!          Do IDCR = ICRS - 2, 1, - 1
+!             If (XWRK >= XDONT(IDCR)) Exit
+!             XDONT (IDCR+1) = XDONT (IDCR)
+!          End Do
+!          XDONT (IDCR+1) = XWRK
+!       End Do
+! !
+!       Return
+! !
+! End Subroutine R_inssor
+! !
+! Subroutine I_refsor (XDONT)
+! !  Sorts XDONT into ascending order - Quicksort
+! ! __________________________________________________________
+! !  Quicksort chooses a "pivot" in the set, and explores the
+! !  array from both ends, looking for a value > pivot with the
+! !  increasing index, for a value <= pivot with the decreasing
+! !  index, and swapping them when it has found one of each.
+! !  The array is then subdivided in 2 ([3]) subsets:
+! !  { values <= pivot} {pivot} {values > pivot}
+! !  One then call recursively the program to sort each subset.
+! !  When the size of the subarray is small enough, one uses an
+! !  insertion sort that is faster for very small sets.
+! !  Michel Olagnon - Apr. 2000
+! ! __________________________________________________________
+! ! __________________________________________________________
+!       Integer, Dimension (:), Intent (InOut)  :: XDONT
+! ! __________________________________________________________
+! !
+! !
+!       Call I_subsor (XDONT, 1, Size (XDONT))
+!       Call I_inssor (XDONT)
+!       Return
+! End Subroutine I_refsor
+! Recursive Subroutine I_subsor (XDONT, IDEB1, IFIN1)
+! !  Sorts XDONT from IDEB1 to IFIN1
+! ! __________________________________________________________
+!       Integer, dimension (:), Intent (InOut) :: XDONT
+!       Integer, Intent (In) :: IDEB1, IFIN1
+! ! __________________________________________________________
+!       Integer, Parameter :: NINS = 16 ! Max for insertion sort
+!       Integer :: ICRS, IDEB, IDCR, IFIN, IMIL
+!       Integer :: XPIV, XWRK
+! !
+!       IDEB = IDEB1
+!       IFIN = IFIN1
+! !
+! !  If we don't have enough values to make it worth while, we leave
+! !  them unsorted, and the final insertion sort will take care of them
+! !
+!       If ((IFIN - IDEB) > NINS) Then
+!          IMIL = (IDEB+IFIN) / 2
+! !
+! !  One chooses a pivot, median of 1st, last, and middle values
+! !
+!          If (XDONT(IMIL) < XDONT(IDEB)) Then
+!             XWRK = XDONT (IDEB)
+!             XDONT (IDEB) = XDONT (IMIL)
+!             XDONT (IMIL) = XWRK
+!          End If
+!          If (XDONT(IMIL) > XDONT(IFIN)) Then
+!             XWRK = XDONT (IFIN)
+!             XDONT (IFIN) = XDONT (IMIL)
+!             XDONT (IMIL) = XWRK
+!             If (XDONT(IMIL) < XDONT(IDEB)) Then
+!                XWRK = XDONT (IDEB)
+!                XDONT (IDEB) = XDONT (IMIL)
+!                XDONT (IMIL) = XWRK
+!             End If
+!          End If
+!          XPIV = XDONT (IMIL)
+! !
+! !  One exchanges values to put those > pivot in the end and
+! !  those <= pivot at the beginning
+! !
+!          ICRS = IDEB
+!          IDCR = IFIN
+!          ECH2: Do
+!             Do
+!                ICRS = ICRS + 1
+!                If (ICRS >= IDCR) Then
+! !
+! !  the first  >  pivot is IDCR
+! !  the last   <= pivot is ICRS-1
+! !  Note: If one arrives here on the first iteration, then
+! !        the pivot is the maximum of the set, the last value is equal
+! !        to it, and one can reduce by one the size of the set to process,
+! !        as if XDONT (IFIN) > XPIV
+! !
+!                   Exit ECH2
+! !
+!                End If
+!                If (XDONT(ICRS) > XPIV) Exit
+!             End Do
+!             Do
+!                If (XDONT(IDCR) <= XPIV) Exit
+!                IDCR = IDCR - 1
+!                If (ICRS >= IDCR) Then
+! !
+! !  The last value < pivot is always ICRS-1
+! !
+!                   Exit ECH2
+!                End If
+!             End Do
+! !
+!             XWRK = XDONT (IDCR)
+!             XDONT (IDCR) = XDONT (ICRS)
+!             XDONT (ICRS) = XWRK
+!          End Do ECH2
+! !
+! !  One now sorts each of the two sub-intervals
+! !
+!          Call I_subsor (XDONT, IDEB1, ICRS-1)
+!          Call I_subsor (XDONT, IDCR, IFIN1)
+!       End If
+!       Return
+!    End Subroutine I_subsor
+!    Subroutine I_inssor (XDONT)
+! !  Sorts XDONT into increasing order (Insertion sort)
+! ! __________________________________________________________
+!       Integer, dimension (:), Intent (InOut) :: XDONT
+! ! __________________________________________________________
+!       Integer :: ICRS, IDCR
+!       Integer :: XWRK
+! !
+!       Do ICRS = 2, Size (XDONT)
+!          XWRK = XDONT (ICRS)
+!          If (XWRK >= XDONT(ICRS-1)) Cycle
+!          XDONT (ICRS) = XDONT (ICRS-1)
+!          Do IDCR = ICRS - 2, 1, - 1
+!             If (XWRK >= XDONT(IDCR)) Exit
+!             XDONT (IDCR+1) = XDONT (IDCR)
+!          End Do
+!          XDONT (IDCR+1) = XWRK
+!       End Do
+! !
+!       Return
+! !
+! End Subroutine I_inssor
+! !
+! end module m_refsor
Index: src/egrad_mopac.f90
===================================================================
--- src/egrad_mopac.f90	(revision 0)
+++ src/egrad_mopac.f90	(revision 1)
@@ -0,0 +1,183 @@
+subroutine egrad_mopac(e,geomcart,gradcart)
+
+  ! This routines calculates the energy and the gradient of 
+  ! a molecule, using mopac 
+
+  use Path_module, only : Nat, renum,Order,OrderInv,AtName, Coord, dzdc, indzmat,Nom,Atome, massat, unit,ProgExe, au2kcal
+  use Io_module
+
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: e
+  ! Nb degree of freedom
+  REAL(KREAL), INTENT (IN) :: geomcart(Nat,3)
+  ! Gradient calculated at Geom geometry
+  REAL(KREAL), INTENT (OUT) :: gradcart(3*NAt)
+
+  ! ======================================================================
+
+  character(LCHARS) :: LINE
+
+  logical           :: debug
+  LOGICAL, SAVE :: first=.true.
+
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:)
+
+  REAL(KREAL) :: d, a_val, Pi
+
+  REAL(KREAL) :: coef,x
+  INTEGER(KINT) :: iat, jat, kat, i, j, k,n3at
+  INTEGER(KINT) :: ITmp1,ITmp2, Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  CHARACTER(132) :: FileIn, FileOut, FileChk
+
+  CHARACTER(3) :: SepIn=' < ', SepOut=' > '
+  CHARACTER(VLCHARS), SAVE ::  RunCommand
+
+  ! ======================================================================
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  ! ======================================================================
+
+  Pi=dacos(-1.0d0)
+  n3at=3*nat
+
+  debug=valid('EGRAD')
+  if (debug) WRITE(*,*) '================ Entering Egrad_Mopac ===================='
+
+  if (first) THEN
+     First=.FALSE.
+     SepIn='   '
+     SepOut='   '
+  END IF
+ 
+  gradcart=0.
+  E=0.
+
+  FileIn=Trim(CalcName) // "." // Trim(ISuffix)
+  FileOut=Trim(CalcName) // "." // Trim(OSuffix)
+  FileChk=Trim(CalcName) // ".arc"
+
+  RunCommand=Trim(ProgExe) // SepIn // Trim(FileIn) 
+
+  IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(RunCommand)
+
+  ! we create the input file
+
+  OPEN(IOTMP,File=FileIn)
+  WRITE(IOTMP,'(A)') '* All comments are put at the begining of the file'
+  Current => Mopac_comment
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(A)') Trim(current%line)
+     Current => current%next
+  END DO
+
+  Current => Mopac_root
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(1X,A)') Trim(current%line)
+     WRITE(*,'(1X,A)') Trim(current%line)
+     Current => current%next
+  END DO
+
+  DO I=1,Nat
+     If (renum) THEN
+        Iat=Order(I)
+        WRITE(IOTMP,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomCart(Iat,:)
+     ELSE
+        Iat=OrderInv(I)
+        WRITE(IOTMP,'(1X,A10,3(1X,F15.8))') Trim(AtName(Iat)),GeomCart(I,:)
+     END IF
+  END DO
+
+     WRITE(IOTMP,'(1X,A)') Trim(Mopac_EndGeom)
+
+  Current => Mopac_End
+  DO WHILE (ASSOCIATED(Current%next))
+     WRITE(IOTMP,'(1X,A)') Trim(current%line)
+     Current => current%next
+  END DO
+
+  WRITE(IOTMP,*) 
+  CLOSE(IOTMP)
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG EGRAD ' //  Trim(FileIn),' COORD=',TRIM(COORD)
+     call system('cat ' // Trim(FileIn))
+  END IF
+
+
+  call system(RunCommand)
+
+  if (debug) WRITE(*,*) 'DBG EGRAD, back from calculation'
+
+  ! Whatever the coordinate system, we read the cartesian gradient
+  ! and we convert it to Zmat or other if needed
+
+  OPEN(IOTMP,FILE=FileOut, STATUS='old')
+  ! We first search for the forces
+  READ(IOTMP,'(A)') LINE
+
+  DO WHILE (INDEX(LINE,'FINAL  POINT  AND  DERIVATIVES')==0)
+     IF (INDEX(Line,'FINAL HEAT OF FORMATION').NE.0)  THEN
+        Itmp1=Index(Line,"=")+1
+        ITmp2=Index(Line,"KCAL")-1
+        Read(Line(Itmp1:Itmp2),*) E
+        E=E/au2kcal
+     END IF
+     READ(IOTMP,'(A)',END=999) LINE
+  END DO
+
+  if (debug) WRITE(*,*) "GradCart reading - renum=",Renum
+  READ(IOTMP,'(A)') LINE
+  READ(IOTMP,'(A)') LINE
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     DO J=1,3
+        READ(IOTMP,'(A)') Line
+! Gradient is on the 7th column
+        DO K=1,6
+           Line=AdjustL(Line)
+           Idx=Index(Line," ")
+           Line=AdjustL(Line(Idx+1:))
+        END DO
+        READ(Line,*) GradCart(3*Iat-3+j)
+     END DO
+     if (debug) WRITE(*,*) "I,Iat,GradCart:",I,Iat,GradCart(3*Iat-2:3*Iat)
+  END DO
+
+! Mopac gives the Forces in kcal/angstrom, so we convert it into the 
+! gradient in ua/Angstrom 
+  gradCart=gradCart/au2kcal
+
+!  if (debug.AND.(COORD.EQ.'ZMAT')) THEN
+!     DO WHILE (INDEX(LINE,'Internal Coordinate Forces')==0)
+!        READ(IOTMP,'(A)') LINE
+!!        WRITE(*,*) 'Pas bon:' // TRIM(LINE)
+!     END DO
+!     WRITE(*,*) TRIM(LINE)
+!     DO I=1,Nat+2
+!        READ(IOTMP,'(A)') LINE
+!        WRITE(*,*) TRIM(LINE)
+!     END DO
+!  END IF
+
+  CLOSE(IOTMP)
+
+  if (debug) WRITE(*,*) '================  Egrad_Mopac Over ===================='
+
+  RETURN
+
+999 CONTINUE
+  WRITE(*,*) 'We should not be here !!!!'
+  STOP
+  ! ======================================================================
+end subroutine egrad_mopac
Index: src/egrad_ext.f90
===================================================================
--- src/egrad_ext.f90	(revision 0)
+++ src/egrad_ext.f90	(revision 1)
@@ -0,0 +1,119 @@
+ subroutine egrad_ext(e,geomcart,gradcart)
+
+  ! This routines calculates the energy and the gradient of 
+  ! a molecule, using an external code
+
+
+  use Path_module, only : Nat, renum,Order,OrderInv,AtName, Coord, dzdc, indzmat,Nom,Atome, massat, unit,ProgExe
+  use Io_module
+
+  !
+  IMPLICIT NONE
+
+  ! Energy (calculated if F300K=.F., else estimated)
+  REAL(KREAL), INTENT (OUT) :: e
+  ! Nb degree of freedom
+  ! Geometry at which gradient is calculated (cf FActual also)
+  REAL(KREAL), INTENT (IN) :: geomcart(Nat,3)
+  ! Gradient calculated at Geom geometry
+  REAL(KREAL), INTENT (OUT) :: gradcart(3*Nat)
+
+  ! ======================================================================
+
+  character(LCHARS) :: LINE
+
+  logical           :: debug
+  LOGICAL :: fexist, FSim
+  LOGICAL, SAVE :: first=.true.
+  LOGICAL, ALLOCATABLE :: Done(:)
+
+  REAL(KREAL), SAVE :: Eold=1.e6
+  REAL(KREAL) :: d, a_val, Pi
+
+  REAL(KREAL) :: coef,x
+  INTEGER(KINT) :: iat, jat, kat, i, j, n3at, absidg, absidg2
+  INTEGER(KINT) :: kTmp, Istart,ITmp1,ITmp2, Idx
+  INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11
+
+  !
+  CHARACTER(132) :: FileIn,FileOut
+
+  CHARACTER(LCHARS) :: ListName, TitleTmp, CH32SVAR1
+  CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand
+  LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False.
+  LOGICAL   :: FRdyn,FStopNucl, FTmp, Tchk,Tchk1
+  INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit
+  INTEGER(KINT) :: NStepAd,NStepTmp
+  INTEGER(KINT) :: IShowTmp
+  REAL(KREAL)   :: FricPsiMin,FricPsiT, FricNuclTmp
+
+
+  INTEGER(KINT), PARAMETER :: NbExtName=4
+
+  INTEGER(KINT) :: ICouc
+
+  INTEGER(KINT) :: ILine
+  INTEGER(KINT) :: NPulses, PulseLen, NStepWarm,NStepAv,NStepEq,NStepTot
+  REAL(KREAL) :: TempWarm,Mean,Slope,Dev,RTmp1,RTmp2
+
+  ! ======================================================================
+
+  LOGICAL, EXTERNAL :: valid
+
+  ! ======================================================================
+
+
+  Pi=dacos(-1.0d0)
+  n3at=3*nat
+
+  debug=valid('EGRAD')
+  if (debug) WRITE(*,*) '================ Entering Egrad_ext ===================='
+
+  RunCommand=Trim(Adjustl(ProgExe))
+  FileIn=Trim(CalcName) // Trim(ISuffix)
+  FileOut=Trim(CalcName) // Trim(OSuffix)
+
+  IF (DEBUG) WRITE(*,*)'RunCommand:',TRIM(RunCommand)
+
+  ! we create the input file
+
+  OPEN(IOTMP,File=FileIn)
+
+  WRITE(IOTMP,'(1X,I10)') NAt
+  WRITE(IOTMP,'(1X,A)') Coord
+
+     DO I=1,Nat
+        If (renum) THEN
+           Iat=Order(I)
+           WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(I)),GeomCart(Iat,:)
+        ELSE
+           Iat=OrderInv(I)
+           WRITE(IOTMP,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomCart(I,:)
+        END IF
+     END DO
+
+  call system(RunCommand)
+
+  if (debug) WRITE(*,*) 'DBG EGRAD, back from calculation'
+
+  OPEN(IOTMP,FILE=FileOut, STATUS='old')
+  ! We first search for the forces
+  READ(IOTMP,*) e
+  DO I=1,Nat
+     Iat=I
+     IF (renum) Iat=Order(I)
+     READ(IOTMP,*)  GradCart(3*Iat-2:3*Iat)
+  END DO
+
+  CLOSE(IOTMP)
+
+
+  if (debug) WRITE(*,*) '================  Egrad_ext Over ===================='
+
+  RETURN
+
+999 CONTINUE
+  if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
+  STOP
+  ! ======================================================================
+end subroutine egrad_ext
Index: src/Extrapol_baker.f90
===================================================================
--- src/Extrapol_baker.f90	(revision 0)
+++ src/Extrapol_baker.f90	(revision 1)
@@ -0,0 +1,294 @@
+SUBROUTINE Extrapol_baker(s,dist,x0,y0,z0,xgeom,Coef,XgeomF)
+
+  ! This subroutine constructs the path, andabscissa if dist<>Infinity, it samples
+  ! the path to obtain geometries.
+  ! Basically, you call it twice: i) dist=infinity, it will calculate the length of the path
+  ! ii) dist finite, it will give you the images you want along the path.
+  !
+  ! For now, it gives equidistant geometries.
+  !
+  ! A reference geometry for the alignment: X0(Nat),Y0(Nat),Z0(Nat)
+
+  use Path_module, only : IntCoordI, NMaxPtPath, XyzGeomF, IntCoordF, &
+       IntTangent, Renum, Nom, Order, MassAt, SGeom, Nat, NGeomI, &
+       NGeomF, Atome, NCoord, OrderInv, XyzGeomI,BTransInvF, &
+       XPrimitive,XPrimitiveF, NPrim,                                      &
+       BTransInv_local,UMatF,UMat_local,FirstTimePathCreate,Pi
+  ! IntCoordI(NGeomI,3*Nat-6), Coef(NGeomI,NCoord), NMaxPtPath=1000 (default value)
+  ! More appropriate: IntCoordI(NGeomI,NCoord)
+  use Io_module
+  IMPLICIT NONE
+
+  REAL(KREAL), INTENT(OUT) :: s
+  ! A reference geometry for the alignment:
+  REAL(KREAL), INTENT(IN) :: dist,X0(Nat),Y0(Nat),Z0(Nat)
+  ! Xgeom(NGeomI): abscissa of all initial geometries.
+  ! Coef(NGeomI,NCoord): spline coefficients.
+  REAL(KREAL), INTENT(IN) :: Xgeom(NGeomI),Coef(NGeomI,NCoord)
+  ! Number of the cycles for the optimization:
+  ! XGeomF(NGeomF): Final geometries.
+  REAL(KREAL), INTENT(OUT) :: XGeomF(NGeomF)
+
+  INTEGER(KINT) :: IdxGeom, I, J, K, Idx, IdxAtom
+  REAL(KREAL) :: Rmsd,MRot(3,3), ds, u, v
+  REAL(KREAL) :: a_val, d
+
+  REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:), DerInt(:) ! (Nat,3)
+  REAL(KREAL), ALLOCATABLE :: Xyz_k(:,:) ! (Nat,3)
+  REAL(KREAL), ALLOCATABLE :: IntCoord_interpol(:) ! (3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: IntCoord_k(:) ! (3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: XPrimRef(:),XPrim(:) ! NPrim
+
+  LOGICAL ::  debug, print,printspline
+  LOGICAL, EXTERNAL :: valid
+
+  INTEGER(KINT) :: NSpline
+  CHARACTER(LCHARS) :: FileSpline,TmpChar
+
+
+  ! We will calculate the length of the path, in MW coordinates...
+  ! this is done in a stupid way: we interpolate the Baker coordinates values,
+  ! convert them into cartesian, weight the cartesian
+  ! and calculate the evolution of the distance ! 
+  ! We have to follow the same procedure for every geometry,
+  ! so even for the first one, we have to convert it from internal Baker 
+  ! coordinates to cartesian !
+
+  debug=valid("Extrapol_baker")
+  print=valid("printgeom")
+  printspline=(valid("printspline").AND.(dist<=1e30))
+
+  if (debug) WRITE(*,*) "================= Entering Extrapol_baker ===================="
+  if (debug) WRITE(*,*) "DBG Extrapol_baker dist=",Dist
+  NSpline=int(NMaxPtPath/100)
+  !IF (printspline) THEN
+  !  WRITE(TmpChar,'(I5)') Iopt
+  ! FileSpline=Trim(adjustL(PathName)) // '_spline.' // AdjustL(TRIM(TmpChar))
+  !OPEN(IOTMP,FILE=FileSpline)
+  ! END IF
+
+  ALLOCATE(XyzTmp(Nat,3),XyzTmp2(Nat,3),IntCoord_interpol(NCoord),DerInt(NCoord))
+  ALLOCATE(IntCoord_k(NCoord),Xyz_k(Nat,3))
+  ALLOCATE(XPrimRef(NPrim),XPrim(NPrim))
+
+  ! XyzGeomI(:,:,:) ! (NGeomI,3,Nat)
+  ! IntCoordI(:,:) ! (NGeomI,3*Nat-6)
+
+  !XyzGeomF(1,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+  XyzGeomF(1,:,:)=XyzGeomI(1,:,:) ! 1st index is geometry-index.
+  IntCoordF(1,:)=IntCoordI(1,:)
+
+  ! We calculate the first derivatives
+  u=0.d0
+  DO I=1,NCoord
+     ! Given the arrays xgeom(1:NGeomI) and IntCoordI(1:NGeomI,Idx) of length 
+     ! NGeomI, which tabulate a function
+     ! (with the xgeom's in order), and given the array Coef(1:NGeomI,Idx), 
+     ! which is the output from spline, and given a value of u,
+     ! this routine returns a cubic-spline interpolated value v.
+     ! and the derivative DerInt(Idx).
+     call splintder(u,v,DerInt(I),NGeomI,xgeom(1),IntCoordI(1,I),Coef(1,I))
+  END DO
+  IntTangent(1,:)=DerInt
+
+  IF (print.AND.(Dist.LE.1e20)) THEN
+     WRITE(IOOUT,'(1X,I5)') Nat
+     WRITE(IOOUT,*) "# Cartesian Coordinates for geom",1
+     DO I=1,Nat
+        If (Renum) THEN
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)), &
+                (XyzTmp2(Order(I),J),J=1,3)
+        ELSE
+           WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))), &
+                (XyzTmp2(I,J),J=1,3)
+        END IF
+     END DO
+  END IF ! matches IF (print.AND.(Dist.LE.1e20)) THEN
+
+  XyzTmp(:,1) = XyzGeomI(1,1,:) ! 1st index is geometry-index.
+  XyzTmp(:,2) = XyzGeomI(1,2,:)
+  XyzTmp(:,3) = XyzGeomI(1,3,:)
+
+  s=0.d0
+  IntCoord_k=IntCoordF(1,:)
+  Xyz_k(:,1) = XyzGeomI(1,1,:) ! 1st index is geometry-index.
+  Xyz_k(:,2) = XyzGeomI(1,2,:)
+  Xyz_k(:,3) = XyzGeomI(1,3,:)
+  IdxGeom=1
+  XPrimRef=XPrimitive(1,:)
+  XPrimitiveF(1,:)=XPrimitive(1,:)
+  DO K=1,NMaxPtPath
+     u=real(K)/NMaxPtPath*(NGeomI-1.)
+
+     ! We generate the interpolated internal coordinates in v.
+     ! Given the arrays Xgeom(1:NGeomI) (Xgeom(NGeomI): abscissa of all initial geometries)
+     ! and IntCoordI(1:NGeomI,I) of length NGeomI, which tabulate a function (with the 
+     ! Xgeom's in order), and given the array Coef(1:NGeomI,Idx), which is the output from 
+     ! spline, and given a value of u, this routine returns a cubic-spline interpolated 
+     ! value v and the derivative DerInt(I).
+
+     ! this loop is to be confirmed:
+     ! IntCoordI(NGeomI,3*Nat-6)
+     DO I=1,NCoord
+        call splintder(u,v,DerInt(I),NGeomI,Xgeom(1),IntCoordI(1,I),Coef(1,I))
+        IntCoord_interpol(I)=v
+     END DO
+     IF(.NOT.FirstTimePathCreate) Then
+       WRITE(*,*) "DBG Extrapol_baker Umat_local=UMatF"
+        DO I=1,NCoord ! these variables are used in ConvertBakerInternal_cart()
+           BTransInv_local(I,:) = BTransInvF(IdxGeom,I,:)
+           UMat_local(:,I) = UMatF(IdxGeom,:,I)
+        END DO
+     END IF
+     ! We convert it into Cartesian coordinates:
+     if (debug) WRITE(*,*) "DBG Extrapol_baker, call ConvertBakerInt_car for k=",k
+     Call ConvertBakerInternal_cart(IntCoord_k,IntCoord_interpol,Xyz_k(1,1), &
+          Xyz_k(1,2),Xyz_k(1,3),XyzTMP2(1,1),XyzTMP2(1,2),XyzTMP2(1,3),XPrim,XPrimRef)
+     XPrimRef=Xprim
+     IF(.NOT.FirstTimePathCreate) Then
+        DO I=1,NCoord ! these variables are used in ConvertBakerInternal_cart()
+           BTransInvF(IdxGeom,I,:) = BTransInv_local(I,:)
+        END DO
+     END IF
+
+     if (debug) THEN
+        WRITE(*,*) "DBG Extrapol_baker, XyzTmp2 before RMSD"
+           DO I=1,Nat
+              IF (Renum) THEN
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)), &
+                      (XyzTmp2(Order(I),J),J=1,3)
+              ELSE
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))), &
+                      (XyzTmp2(I,J),J=1,3)
+              END IF
+           END DO
+        END IF
+     
+
+     call CalcRmsd(Nat,XyzTmp(1:Nat,1),XyzTmp(1:Nat,2),XyzTmp(1:Nat,3), &
+	  XyzTmp2(1:Nat,1),XyzTmp2(1:Nat,2),XyzTmp2(1:Nat,3),           &
+          MRot,rmsd,.TRUE.,.TRUE.)
+
+
+     if (debug) THEN
+        WRITE(*,*) "DBG Extrapol_baker, XyzTmp2 after RMSD"
+           DO I=1,Nat
+              IF (Renum) THEN
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)), &
+                      (XyzTmp2(Order(I),J),J=1,3)
+              ELSE
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))), &
+                      (XyzTmp2(I,J),J=1,3)
+              END IF
+           END DO
+        END IF
+
+
+     IntCoord_k=IntCoord_interpol
+     Xyz_k(:,1)=XyzTMP2(:,1)
+     Xyz_k(:,2)=XyzTMP2(:,2)
+     Xyz_k(:,3)=XyzTMP2(:,3)
+
+     ds=0.
+     DO I=1,Nat
+        DO J=1,3
+           ds=ds+MassAt(I)*(XYZTMp2(I,J)-XYZTmp(I,J))**2
+           XYZTmp(I,J)=XyzTMP2(I,J)
+        END DO
+     END DO
+
+     s=s+sqrt(ds)
+
+     IF (s>=dist) THEN
+        if (debug) THEN
+           WRITE(*,*) "DBG Extrapol_baker s,IdxGeom,dist",s,IdxGeom,dist
+           WRITE(*,'(50(1X,F12.8))') IntCoord_interpol
+           WRITE(*,*) "DBG Extrapol_baker Angles in deg ?"
+           WRITE(*,'(50(1X,F12.8))') IntCoord_interpol*180./pi
+        END IF
+        s=s-dist
+        IdxGeom=IdxGeom+1
+        XprimitiveF(IdxGeom,:)=Xprim(:)
+        UMatF(IdxGeom,:,:)=UMat_local(:,:)
+        SGeom(IdxGeom)=s+IdxGeom*dist !SGeom(NGeomF)
+        XgeomF(IdxGeom)=u
+        XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+
+        ! IntCoordF(NGeomF,NCoord): Final Internal coordinates for number of final 
+        ! geometries. NCoord is the number of coordinates (NCoord) of each geometry.
+        IntCoordF(IdxGeom,:)=IntCoord_interpol(:)
+        IntTangent(IdxGeom,:)=DerInt
+
+        IF (print) THEN
+           WRITE(IOOUT,'(1X,I5)') Nat
+           WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+           ! PFL 17/July/2006: only if we have more than 4 atoms.
+           IF (Nat.GE.4) THEN
+              Call  CalcRmsd(Nat,x0,y0,z0, &
+                   xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3), &
+                   MRot,rmsd,.TRUE.,.TRUE.)
+           END IF
+
+           DO I=1,Nat
+              IF (Renum) THEN
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)), &
+                      (XyzTmp2(Order(I),J),J=1,3)
+              ELSE
+                 WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))), &
+                      (XyzTmp2(I,J),J=1,3)
+              END IF
+           END DO
+        END IF !matches IF (print) THEN
+     END IF ! matches IF (s>=dist) THEN
+  END DO ! matches DO K=1,NMaxPtPath
+
+
+  if (s>=0.9*dist) THEN
+     s=s-dist
+     IdxGeom=IdxGeom+1
+     SGeom(IdxGeom)=s+IdxGeom*dist
+     XgeomF(IdxGeom)=min(u,NGeomI-1.d0)
+     XyzGeomF(IdxGeom,:,:)=Reshape(XyzTmp2(:,:),(/3,Nat/),ORDER=(/2,1/))
+     !  XyzGeomF(IdxGeom,:,:)=XyzTmp2(:,:)
+
+     IntCoordF(IdxGeom,:)=IntCoord_interpol(:)
+     XprimitiveF(IdxGeom,:)=Xprim(:)
+     UMatF(IdxGeom,:,:)=UMat_local(:,:)
+     IntTangent(IdxGeom,:)=DerInt     
+
+     if (print) THEN
+        WRITE(IOOUT,'(1X,I5)') Nat
+        WRITE(IOOUT,*) "# Cartesian coord for Geometry ",IdxGeom,K
+        ! PFL 17/July/2006: only if we have more than 4 atoms.
+        IF (Nat.GE.4) THEN
+           Call  CalcRmsd(Nat,x0,y0,z0, &
+                xyzTmp2(1,1),xyzTmp2(1,2),xyzTMP2(1,3), &
+                MRot,rmsd,.TRUE.,.TRUE.)
+        END IF
+
+        DO I=1,Nat
+           IF (Renum) THEN
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(I)), &
+                   (XyzTmp2(Order(I),J),J=1,3)
+           ELSE
+              WRITE(IOOUT,'(1X,A2,3(1X,F15.6))') Nom(Atome(OrderInv(I))), &
+                   (XyzTmp2(I,J),J=1,3)
+           END IF
+        END DO
+     END IF ! matches if (print) THEN
+  END IF ! matches if (s>=0.9*dist) THEN
+
+  if (debug) WRITE(*,*) 's final =',s
+   if (debug) THEN
+      WRITE(*,*) "XPrimitiveF"
+      DO I=1,NGeomF
+        WRITE(*,'(1X,I5," : ",50(1X,F10.6))') I,XPrimitiveF(I,:)
+     END DO
+     END IF
+
+  DEALLOCATE(XyzTmp,XyzTmp2,IntCoord_interpol,IntCoord_k,Xyz_k)
+
+  if (printspline) CLOSE(IOTMP)
+  if (debug) WRITE(*,*) "================= Extrapol_baker Over ====================="
+
+END SUBROUTINE EXTRAPOL_BAKER
Index: src/Write_path.f90
===================================================================
--- src/Write_path.f90	(revision 0)
+++ src/Write_path.f90	(revision 1)
@@ -0,0 +1,128 @@
+SUBROUTINE Write_path(Iopt)
+
+  Use Path_module
+  Use Io_module
+
+  IMPLICIT NONE
+
+  INTEGER(KINT), INTENT(IN) :: Iopt
+
+  INTEGER(KINT) :: IGeom, Idx, Iat, I,J
+  REAL(KREAL), ALLOCATABLE :: GeomTmpC(:), GeomTmp(:),GeomTmpC2(:,:)
+  CHARACTER(SCHARS) :: Line
+  CHARACTER(LCHARS) ::Title
+  LOGICAL :: Debug
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid('write_path').OR.valid('writepath')
+  if (debug) Call Header("Entering Write_PATH")
+
+
+  ALLOCATE(GeomTmpC(3*Nat), GeomTmp(NCoord),GeomTmpC2(Nat,3))
+
+  IF (IOpt.GE.0) THEN
+     WRITE(Line,'(I5)') Iopt
+  ELSE
+     Line="Ini"
+     Energies=0.
+  END IF
+  OPEN(IOTMP,File=Trim(PathName) // '.' // AdjustL(TRIM(Line)))
+  IF ((COORD.EQ.'ZMAT').OR.(COORD.EQ.'MIXED').OR.(COORD.EQ.'BAKER')) &
+       OPEN(IOCART,File=TRIM(PathName) // '_cart.' //  AdjustL(TRIM(Line)))
+
+  DO IGeom=1,NGeomF
+     WRITE(Title,"('Geometry ',I3,'/',I3,' for iteration ',I3,' E=',F13.6)") Igeom,NgeomF,Iopt,Energies(IGeom)
+     SELECT CASE(Coord)
+     CASE ('CART','HYBRID')
+        ! XyzGeomF is 3,Nat... but Printgeom expects Nat,3... 
+        ! this should really be rewritten !!!!
+        GeomTmp=Reshape(reshape(XyzGeomF(IGeom,:,:),(/Nat,3/),ORDER=(/2,1/)),(/3*Nat/)) 
+     CASE ('ZMAT','MIXED','BAKER')
+        GeomTmp=IntCoordF(IGeom,:)
+     CASE DEFAULT
+        WRITE(*,*) "Coord=",TRIM(Coord)," not recognized in Write_path. L34.STOP"
+        STOP
+     END SELECT
+
+     ! Nothing for the baker case.
+     Call PrintGeom(Title,Nat,NCoord,GeomTmp,Coord,IoTmp,Atome,Order,OrderInv,IndZmat)
+
+     IF (COORD.EQ.'ZMAT') THEN
+        ! Writing the Cartesian coordinates
+        WRITE(IOCART,'(1X,I5)') Nat
+        WRITE(IOCART,'(1X,A)') Title
+        ! we have to generate the cartesian coordinates from the internal coordinates
+        Call Int2Cart(nat,indzmat,GeomTmp,GeomTmpC)
+        GeomTmpC2=reshape(GeomTmpC,(/Nat,3/))
+        DO I=1,Nat
+           IF (renum) THEN
+              Iat=Order(I)
+              !             WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC(3*Iat-2:3*Iat)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC2(Iat,1:3)
+           ELSE
+              Iat=OrderInv(I)
+              !            WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC(3*I-2:3*I)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC2(I,1:3)
+           END IF
+        END DO
+     END IF ! matches IF (COORD.EQ.'ZMAT') THEN
+
+     IF (COORD.EQ.'BAKER') THEN
+        ! Writing the Cartesian coordinates
+        WRITE(IOCART,'(1X,I5)') Nat
+        WRITE(IOCART,'(1X,A)') Title
+        ! we have to generate the cartesian coordinates from the internal coordinates
+        ! we can also print the cartesiann coordinates directly from XyzGeomF??
+        !Call ConvertBakerInternal_cart(InCoordF(IGeom-1,:),InCoordF(IGeom,:))
+        ! XyzGeomF(NGeomF,3,Nat), GeomTmpC(3*Nat),GeomTmpC2(Nat,3)
+        !GeomTmpC2=reshape(GeomTmpC,(/Nat,3/)). XyzGeomF is already updated in 
+        ! EgradPath.f90
+        DO I =1, 3
+           GeomTmpC2(:,I)=XyzGeomF(IGeom,I,:)
+        END DO
+        DO I=1,Nat
+           IF (renum) THEN
+              Iat=Order(I)
+              !             WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC(3*Iat-2:3*Iat)
+              !Print *, GeomTmpC2(Iat,1:3)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC2(Iat,1:3)
+           ELSE
+              Iat=OrderInv(I)
+              !            WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC(3*I-2:3*I)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC2(I,1:3)
+           END IF
+        END DO
+     END IF ! matches IF (COORD.EQ.'BAKER') THEN
+
+     IF (COORD.EQ.'MIXED') THEN
+        ! Writing the Cartesian coordinates
+        WRITE(IOCART,'(1X,I5)') Nat
+        WRITE(IOCART,'(1X,A)') Title
+        ! we have to generate the cartesian coordinates from the internal coordinates
+        Call Mixed2Cart(nat,indzmat,geomtmp,GeomTmpC)
+        GeomTmpC2=reshape(GeomTmpC,(/Nat,3/))
+        DO I=1,Nat
+           IF (renum) THEN
+              Iat=Order(I)
+              !             WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC(3*Iat-2:3*Iat)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8))') Trim(AtName(I)),GeomTmpC2(Iat,1:3)
+           ELSE
+              Iat=OrderInv(I)
+              !             WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC(3*I-2:3*I)
+              WRITE(IOCART,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),GeomTmpC2(I,1:3)
+           END IF
+        END DO
+     END IF ! matches IF (COORD.EQ.'MIXED') THEN
+  END DO ! matches DO IGeom=1,NGeomF
+  CLOSE(IOTMP)
+  IF ((COORD.EQ.'ZMAT').OR.(COORD.EQ.'MIXED').OR.(COORD.EQ.'BAKER')) CLOSE(IOCART)
+  DEALLOCATE(GeomTmpC,GeomTmp)
+
+  if (debug) Call Header('Exiting Write_PATH')
+END SUBROUTINE Write_path
Index: src/addligne.f90
===================================================================
--- src/addligne.f90	(revision 0)
+++ src/addligne.f90	(revision 1)
@@ -0,0 +1,50 @@
+      SUBROUTINE AddLigne(i,n1,n2,n3,n4,ind_zmat,val_zmat,x,y,z)
+
+      use Path_module, only : Nat, KINT, KREAL
+
+      integer(KINT) :: na,atome(Nat),at,ind_zmat(Nat,5),long
+      real(KREAL) ::  x(Nat),y(Nat),z(Nat),fact,val_zmat(Nat,3)
+
+      real(KREAL) :: vx1,vy1,vz1,norm1
+      real(KREAL) ::  vx2,vy2,vz2,norm2
+      real(KREAL) ::  vx3,vy3,vz3,norm3
+      real(KREAL) ::  vx4,vy4,vz4,norm4
+      real(KREAL) ::  vx5,vy5,vz5,norm5
+      real(KREAL) ::  val,val_d
+
+!     WRITE(IOOUT,*) 'Addligne:',i,n1,n2,n3,n4
+
+      CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+      CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+      val=angle(vx1,vy1,vz1,norm1, &
+           vx2,vy2,vz2,norm2)
+
+      CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+      CALL produit_vect(vx1,vy1,vz1,norm1, &
+           vx2,vy2,vz2,norm2, &
+           vx4,vy4,vz4,norm4)
+      CALL produit_vect(vx3,vy3,vz3,norm3, &
+           vx2,vy2,vz2,norm2, &
+           vx5,vy5,vz5,norm5)
+
+      val_d=angle_d(vx4,vy4,vz4,norm4, &
+           vx5,vy5,vz5,norm5, &
+           vx2,vy2,vz2,norm2)
+
+!     write(*,11) n1,n2,norm1,n3,val,n4,val_d
+ 11   format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+      ind_zmat(i,1)=n1
+      ind_zmat(i,2)=n2
+      ind_zmat(i,3)=n3
+      ind_zmat(i,4)=n4
+      ind_zmat(i,5)=0
+      val_zmat(i,1)=norm1
+      val_zmat(i,2)=val
+      val_zmat(i,3)=val_d
+
+!     WRITE(*,*) "Addligne",i,n1,n2,n3,n4,norm1,val,val_d
+      END
+
+

Property changes on: src/addligne.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/ConvXyzMixed.f90
===================================================================
--- src/ConvXyzMixed.f90	(revision 0)
+++ src/ConvXyzMixed.f90	(revision 1)
@@ -0,0 +1,135 @@
+SUBROUTINE ConvXyzMixed(nb,ncart,x,y,z,ind_zmat,val_zmat)
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.0D0)
+
+
+
+  INTEGER(KINT), INTENT(IN) :: nb,ncart,ind_zmat(nb,5)
+  REAL(KREAL), INTENT(IN) :: x(Nb),y(nb),z(nb)
+  REAL(KREAL), INTENT(INOUT) :: val_zmat(nb,3)
+
+  integer(KINT) :: n1,n2,n3,n4
+  integer(KINT) :: i,i1,i2,ibeg
+
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+     FUNCTION SinAngle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  SinAngle
+     END FUNCTION SINANGLE
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+        use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+  END INTERFACE
+
+  DO I=1,NCart
+     val_zmat(I,1)=x(ind_zmat(I,1))
+     val_zmat(I,2)=y(ind_zmat(I,1))
+     val_zmat(I,3)=z(ind_zmat(I,1))
+  END DO
+
+  SELECT CASE (Ncart)
+     CASE (1)
+        i=2
+        n1=ind_zmat(i,1)
+        n2=ind_zmat(i,2)
+
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+     !           write(*,11) n1,n2,norm1
+
+        val_zmat(i,1)=norm1
+        val_zmat(i,2)=0.0
+        val_zmat(i,3)=0.0
+     i=3
+     n1=ind_zmat(i,1)
+     n2=ind_zmat(i,2)
+     n3=ind_zmat(i,3)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+     val_zmat(i,1)=norm1
+     val_zmat(i,2)=val
+     val_zmat(i,3)=0.0
+
+     Ibeg=4
+     CASE (2)
+
+     i=3
+     n1=ind_zmat(i,1)
+     n2=ind_zmat(i,2)
+     n3=ind_zmat(i,3)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2)
+
+     val_zmat(i,1)=norm1
+     val_zmat(i,2)=val
+     val_zmat(i,3)=0.0
+     Ibeg=4
+  CASE DEFAULT
+     Ibeg=Ncart+1
+  END SELECT
+  DO i=IBeg,nb
+     !        write(*,*) 'Debut procedure Xyz_Zmat4'
+     n1=ind_zmat(i,1)
+     n2=ind_zmat(i,2)
+     n3=ind_zmat(i,3)
+     n4=ind_zmat(i,4)
+
+     CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+     !        write(*,*) 'Debut procedure Xyz_Zmat42'
+     CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+     val=angle(vx1,vy1,vz1,norm1, vx2,vy2,vz2,norm2)
+
+     !        write(*,*) 'Debut procedure Xyz_Zmat43'
+     CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+     CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2,vx4,vy4,vz4,norm4)
+     CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2,vx5,vy5,vz5,norm5)
+     val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5,vx2,vy2,vz2,norm2)
+
+     !               write(*,11) n1,n2,norm1,n3,val,n4,val_d
+11   format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+     val_zmat(i,1)=norm1
+     val_zmat(i,2)=val
+     val_zmat(i,3)=val_d
+
+  END DO
+  RETURN
+END SUBROUTINE ConvXyzMixed
Index: src/AlignPartial.f90
===================================================================
--- src/AlignPartial.f90	(revision 0)
+++ src/AlignPartial.f90	(revision 1)
@@ -0,0 +1,197 @@
+subroutine AlignPartial(na, x,y,z,x2,y2,z2,ListAt,U)
+  !-----------------------------------------------------------------------
+  !  This subroutine calculates the least square rmsd of two coordinate
+  !  sets coord1(3,n) and coord2(3,n) using a method based on quaternion.
+  !  It then calculate the  rotation matrix U and the centers of coord, and uses
+  ! them to align the two molecules.
+  ! This new version does not use all atoms to calculate the RMSD and rotation matrix
+  ! but only those which are 'true' in ListAt
+  !-----------------------------------------------------------------------
+  ! Input parameters:
+  ! Na        : number of atoms
+  ! x,y,z     : coordinates of the first geometry
+  ! x2,y2,z2  : coordinates of the second geometry
+  ! ListAt    : Logical, T if this atom should be considered in the RMSD calc and 
+  !             alignment.
+  ! Debug     : True if additionnal printing is requiered
+  !
+  ! output parameters:
+  ! U         : Real, (3x3) matrix for rotation
+  ! Rmsd      : Read, the rmsd
+  ! x2,y2,z2  : coordinates of the second geometry ALIGNED to the first one
+  !-----------------------------------------------------------------------
+
+  Use VarTypes
+  IMPLICIT NONE
+
+
+  integer(KINT) :: na, NaT
+  Real(KREAL) ::  x(na),y(Na),z(Na)
+  Real(KREAL) ::  x2(Na),y2(Na),z2(Na)
+  Real(KREAL) ::  U(3,3), rmsd
+  LOGICAL  Debug, ListAt(Na)
+
+  REAL(KREAL) :: Coord1(3,Na), Coord2(3,Na)
+  Real(KREAL) ::  xc1,yc1,zc1, xc2,yc2,zc2
+
+
+  integer(KINT) :: i, j, nd, ia
+  Real(KREAL) :: x_norm, y_norm, lambda
+  Real(KREAL) :: Rmatrix(3,3)
+  Real(KREAL) :: S(4,4), dS(4,4), q(4)
+  Real(KREAL) :: tmp(3),tmp1(4),tmp2(4),EigVec(4,4), EigVal(4)
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+
+  debug=valid('CalcRmsd').OR.valid('align').OR.valid('alignpartial')
+
+  ! calculate the barycenters, centroidal coordinates, and the norms
+  x_norm = 0.0d0
+  y_norm = 0.0d0
+  xc1=0.
+  yc1=0.
+  zc1=0.
+  xc2=0.
+  yc2=0.
+  zc2=0.
+
+  if (debug) THEN
+     WRITE(*,*) "DBG AlignPartial X2,Y2,Z2 before align"
+     DO Ia=1,na
+        WRITE(*,*) x2(ia),y2(ia),z2(ia)
+     END DO
+  END IF
+
+  NAt=0
+  do ia=1,na
+     IF (listat(ia)) THEN
+        Nat=NAt+1
+        xc1=xc1+x(ia)
+        xc2=xc2+x2(ia)
+        yc1=yc1+y(ia)
+        yc2=yc2+y2(ia)
+        zc1=zc1+z(ia)
+        zc2=zc2+z2(ia)
+        !     if (debug) WRITE(*,'(A,I5,4(1X,F10.4))') 'ia...',ia,x(ia),
+        !     &                        x2(ia),xc1,xc2
+     END IF
+  END DO
+
+  if (Nat.EQ.0) THEN
+     WRITE(*,*) "ERROR, AlignPartial: ListAt is empty :-)"
+  END IF
+  xc1=xc1/dble(nat)
+  yc1=yc1/dble(nat)
+  zc1=zc1/dble(nat)
+  xc2=xc2/dble(nat)
+  yc2=yc2/dble(nat)
+  zc2=zc2/dble(nat)
+
+  IF (Debug) WRITE(*,*) 'Found :', Nat, ' atoms'
+  IF (debug) WRITE(*,*) (ListAt(I),I=1,Na)
+  IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center1',xc1,yc1,zc1
+  IF (debug) WRITE(*,'(1X,A,3(1X,F10.4))') 'Center2',xc2,yc2,zc2
+  do i=1,na
+     Coord1(1,i)=x(i)-xc1
+     Coord1(2,i)=y(i)-yc1
+     Coord1(3,i)=z(i)-zc1
+     Coord2(1,i)=x2(i)-xc2
+     Coord2(2,i)=y2(i)-yc2
+     Coord2(3,i)=z2(i)-zc2
+     IF (ListAt(I)) THEN
+        x_norm=x_norm+Coord1(1,i)**2+Coord1(2,i)**2+Coord1(3,i)**2
+        y_norm=y_norm+Coord2(1,i)**2+Coord2(2,i)**2+Coord2(3,i)**2
+     END IF
+  end do
+
+  ! calculate the R matrix
+  do i = 1, 3
+     do j = 1, 3
+        Rmatrix(i,j)=0.
+        do ia=1,na
+           If (ListAt(ia))  Rmatrix(i,j) = Rmatrix(i,j)+Coord1(i,ia)*Coord2(j,ia)
+        END DO
+     end do
+  end do
+
+  IF (debug) THEN
+     WRITE(*,*) "R matrix"
+     DO I=1,3
+        WRITE(*,*) (RMatrix(I,j),j=1,3)
+     END DO
+  END IF
+
+
+  ! S matrix
+  S(1, 1) = Rmatrix(1, 1) + Rmatrix(2, 2) + Rmatrix(3, 3)
+  S(2, 1) = Rmatrix(2, 3) - Rmatrix(3, 2)
+  S(3, 1) = Rmatrix(3, 1) - Rmatrix(1, 3)
+  S(4, 1) = Rmatrix(1, 2) - Rmatrix(2, 1)
+
+  S(1, 2) = S(2, 1)
+  S(2, 2) = Rmatrix(1, 1) - Rmatrix(2, 2) - Rmatrix(3, 3)
+  S(3, 2) = Rmatrix(1, 2) + Rmatrix(2, 1)
+  S(4, 2) = Rmatrix(1, 3) + Rmatrix(3, 1)
+
+  S(1, 3) = S(3, 1)
+  S(2, 3) = S(3, 2)
+  S(3, 3) =-Rmatrix(1, 1) + Rmatrix(2, 2) - Rmatrix(3, 3)
+  S(4, 3) = Rmatrix(2, 3) + Rmatrix(3, 2)
+
+  S(1, 4) = S(4, 1)
+  S(2, 4) = S(4, 2)
+  S(3, 4) = S(4, 3)
+  S(4, 4) =-Rmatrix(1, 1) - Rmatrix(2, 2) + Rmatrix(3, 3) 
+
+
+  ! PFL : I use my usual Jacobi diagonalisation
+  ! Calculate eigenvalues and eigenvectors, and 
+  ! take the maximum eigenvalue lambda and the corresponding eigenvector q.
+
+  IF (debug) THEN
+     WRITE(*,*) "S matrix"
+     DO I=1,4
+        WRITE(*,*) (S(I,j),j=1,4)
+     END DO
+  END IF
+
+  Call Jacobi(S,4,EigVal,EigVec,4)
+
+  Call Trie(4,EigVal,EigVec,4)
+
+  Lambda=EigVal(4)
+
+  ! RMS Deviation
+  rmsd=sqrt(max(0.0d0,((x_norm+y_norm)-2.0d0*lambda))/dble(nat))
+  if (debug) WRITE(*,*) "AlignPartial rmsd:",rmsd
+  Call rotation_matrix(EigVec(1,4),U)
+
+
+  IF (debug) THEN
+     WRITE(*,*) "U matrix"
+     DO I=1,3
+        WRITE(*,*) (U(I,j),j=1,3)
+     END DO
+  END IF
+
+  DO I=1,na
+     x2(i)=Coord2(1,i)*U(1,1)+Coord2(2,i)*U(2,1) + Coord2(3,i)*U(3,1) +xc1
+     y2(i)=Coord2(1,i)*U(1,2)+Coord2(2,i)*U(2,2) + Coord2(3,i)*U(3,2) +yc1
+     z2(i)=Coord2(1,i)*U(1,3)+Coord2(2,i)*U(2,3) + Coord2(3,i)*U(3,3) +zc1
+  END DO
+
+  if (debug) THEN
+     WRITE(*,*) "DBG AlignPartial X2,Y2,Z2 after align"
+     DO Ia=1,na
+        WRITE(*,*) x2(ia),y2(ia),z2(ia)
+     END DO
+  END IF
+
+
+END subroutine AlignPartial
Index: src/ConvertZmat_cart_3.f90
===================================================================
--- src/ConvertZmat_cart_3.f90	(revision 0)
+++ src/ConvertZmat_cart_3.f90	(revision 1)
@@ -0,0 +1,92 @@
+!C================================================================
+!C       Converti les positions Zmat en coordonnes cartesiennes
+!C This version deals with the third atoms in A B C
+!C  Used in Mix to Cart.
+!C================================================================
+
+        SUBROUTINE ConvertZmat_cart_3(iat,ind_zmat,d,a_val,x,y,z)
+
+        use Path_module, only : Nat, KINT, KREAL
+
+        IMPLICIT NONE
+
+        integer(KINT) :: iat,n1,n2,n3
+        real(KREAL)    :: x(nat),y(nat),z(nat)
+        real(KREAL) ::  d,a_val
+        integer(KINT) :: ind_zmat(Nat,5)
+
+        real(KREAL) ::  vx1,vy1,vz1,norm1
+        real(KREAL) ::  vvx1,vvy1,vvz1,normv1
+        real(KREAL) ::  vx2,vy2,vz2,norm2
+        real(KREAL) ::  vvx2,vvy2,vvz2,normv2
+        real(KREAL) ::  vx3,vy3,vz3,norm3
+        real(KREAL) ::  vx4,vy4,vz4,norm4
+        real(KREAL) ::  a11_z1,a12_z1
+        real(KREAL) ::  a11_z2,a12_z2
+        real(KREAL) ::  a11_y,a12_y
+
+
+
+!C ind_zmat(1) contient le numero de l'atome, (2) celui par rapport auquel on definit la distance...
+
+          n1=ind_zmat(iat,2)
+          n2=ind_zmat(iat,3)
+
+!          WRITE(*,*) iat,n1,n2
+
+!          WRITE(*,*) "d,val,di",d,a_val,a_dih,a_val*180./3.141592654
+
+          CALL vecteur(n1,n2,x,y,z,vx1,vy1,vz1,norm1)
+
+          vvx1=vx1
+          vvy1=vy1
+          vvz1=vz1
+
+!c rotation autour de z de v1 de phi (a11_z1=cos(phi) et a12_z1=sin(phi) ) tq
+!C  v1 soit dans le plan xOz
+
+          normv1=dsqrt(vvx1*vvx1+vvy1*vvy1)
+
+          IF (normv1 .GE. 1.D-6) THEN
+             a11_z1 = vvx1/normv1
+             a12_z1 = vvy1/normv1
+           ELSE
+             a11_z1 = 1
+             a12_z1 = 0
+          END IF
+
+             CALL rota_z(vx1,vy1,vz1,a11_z1,-a12_z1)
+
+!c rotation autour de y de v1 de theta (a11_y=cos(theta) et a12_y=sin(theta) ) tq
+!C  v1 soit sur l'axe Ox
+
+
+          IF (norm1 .GE. 1.D-8) THEN
+             a11_y = vz1/norm1
+             a12_y = vx1/norm1
+          ELSE
+             a11_y = 1
+             a12_y = 0
+          END IF
+
+             CALL rota_y(vx1,vy1,vz1,a11_y,a12_y)
+
+
+!c calcul le vecteur de l atome dans la nouvelle orientation
+
+          vx4=d*sin(a_val)
+          vy4=0.
+           vz4=d*cos(a_val)
+
+!c calcul le vecteur de l atome
+!c on tourne en sens invers
+          CALL rota_y(vx4,vy4,vz4,a11_y ,-a12_y )
+          CALL rota_z(vx4,vy4,vz4,a11_z1, a12_z1)
+
+!c calcul l atome a partir de v4
+          x(iat)=vx4+x(n1)
+          y(iat)=vy4+y(n1)
+          z(iat)=vz4+z(n1)
+
+        END
+

Property changes on: src/ConvertZmat_cart_3.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: src/Step_RFO_all.f90
===================================================================
--- src/Step_RFO_all.f90	(revision 0)
+++ src/Step_RFO_all.f90	(revision 1)
@@ -0,0 +1,266 @@
+SUBROUTINE Step_RFO_all(NCoord,Step,IGeom,Geom,Grad,Hess,Tangent)
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!This subroutine calculates new coordinates given a Hessian, the forces
+! and the old coordinates
+!
+!!!!!!!!!!
+! v1.0
+! Uses only basic RFO step
+!
+!!!!!!!!!!
+! v 2.0
+! We add the test of ADF here, so that it should be more efficient.
+! This version uses HInv to decide wether it should work with the Hessian
+! or its inverse.
+!
+! v 3.0
+! Uses DIIS. Done by P. Dayal.
+!
+! v3.1
+! Back to origins ! We remove the ADF test here to see what we loose...
+! untill of course its replacement by something more efficient... and free :)
+!!!!!!!!!!!!!!!!!
+!
+! Input:
+!   - NCoord: INTEGER(KINT), Number of degrees of freedom
+!   - IGeom : INTEGER(KINT), Index of the geometry along the path
+!   - Geom  : REAL(KREAL)(NCOORD), Geometry expressed in full coordinates
+!   - Hess  : REAL(KREAL)(Ncoord,NCoord), Hessian at the current geometry
+!  
+!
+! Output:
+!   - Step  : REAL(KREAL)(Ncoord), Calculated step
+!
+! In/Out:
+!   - Tangent: REAL(KREAL)(Ncoord), Tangent to the path, at the current point
+!             if Tangent=0, then we are optimizing a minimum,  tangent is not considered.
+!               Input: Expressed in full coordinates.
+!              Output: Replaced by the tangent expressed in Free vectors
+! (Changes by PFL 3 Jan 2008)
+!   -  Grad: READ(KREAL) (NCoord), Gradient at the current point
+!               Input: Expressed in full coordinates.
+! PFL 18 Jan 2008: Grad is no longer changed on output ->
+!              Output: Replaced by the gradient expressed in Free vector, in the subspace orthogonal to the tangent.
+! <- PFL 18 Jan 2008: Grad is no longer changed on output
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  use Io_module, only : IoOut
+  
+  use Path_module, only : NGeomF, Hinv,Coord,Vfree, NGintMax
+  ! VFree(Ncoord,Ncoord)
+
+  IMPLICIT NONE
+
+  INTEGER, PARAMETER :: KINT=KIND(1)
+  INTEGER, PARAMETER :: KREAL=KIND(1.D0)
+
+  INTEGER(KINT), INTENT(IN) :: NCoord,IGeom
+  REAL(KREAL), INTENT(IN) :: Hess(NCoord,NCoord)
+  REAL(KREAL), INTENT(IN) :: Grad(NCoord),Geom(NCoord)
+  REAL(KREAL), INTENT(INOUT) :: Tangent(Ncoord) ! Destroyed on output
+  REAL(KREAL), INTENT(OUT) :: Step(NCoord)
+
+  INTEGER(KINT) :: NFree
+  REAL(KREAL), ALLOCATABLE :: eigval(:), eigvec(:,:), eigvli(:)
+  REAL(KREAL), ALLOCATABLE :: Tanf(:)
+  REAL(KREAL), ALLOCATABLE :: Grad_f(:),Step_f(:) ! NFree
+
+  REAL(KREAL), PARAMETER :: tiny=1e-20, zero=0., dele3=1e-6, eps=1e-12
+  REAL(KREAL), PARAMETER :: crit=1e-8
+  INTEGER(KINT) :: n, i, j, isignx, im, idx,k, isch
+  REAL(KREAL) :: grd, evl, eval,e1,e2, norm
+  REAL(KREAL) :: dg, dx
+  CHARACTER(120) :: fmt, fmt2, Line
+
+  LOGICAL :: Debug
+
+  REAL(KREAL), ALLOCATABLE :: HFree(:,:) ! NFree,NFree
+  REAL(KREAL), ALLOCATABLE :: Htmp(:,:) ! NCoord,NFree
+
+  LOGICAL, SAVE :: LFirst=.TRUE.
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+  END INTERFACE
+
+  debug=valid("step_rfo_all")
+  if (debug) WRITE(*,*) "=========================== Entering Step_RFO_All ===================="
+  if (debug) WRITE(*,*) "=========================== IGeom=",IGeom," ===================="
+
+! PFL 22.Nov.2007 ->
+! Nfree is equal to Ncoord-1 only when optimizing in the plane
+! orthogonal to the tangent. 
+! In the case of a regular opt, NFree=Ncoord. 
+! Next line has been moved later
+!  NFree=Ncoord-1
+! <- PFL 22.Nov.2007
+
+  IF (debug) THEN
+     WRITE(*,*) 'DBG Step_RFO_All Hess'
+     WRITE(*,*) 'DBG Step_RFO_All NCoord=',NCoord
+
+     Idx=min(12,NCoord)
+     DO I=1,NCoord
+        WRITE(*,'(12(1X,F10.4))') Hess(I,1:Idx)
+     END DO
+     WRITE(*,*) 'DBG Step_RFO_All Grad'
+     WRITE(*,'(12(1X,F10.4))') Grad(1:Idx)
+     WRITE(*,*) 'DBG Step_RFO_All Coord'
+     WRITE(*,'(12(1X,F10.4))') Geom(1:Idx)
+     WRITE(*,*) 'DBG Step_RFO_All Tangent'
+     WRITE(*,'(12(1X,F10.4))') tangent(1:Idx)
+
+  END IF
+
+  Call FreeMv(NCoord,Vfree) ! VFree(Ncoord,Ncoord)
+! we orthogonalize Vfree to the tangent vector of this geom
+! 2007/05/29 Only if Tangent/=0.d0
+  Norm=sqrt(dot_product(Tangent,Tangent))
+  IF (Norm.GT.eps) THEN
+     ALLOCATE(Tanf(NCoord))
+
+     ! We normalize Tangent
+     Tangent=Tangent/Norm
+
+     ! We convert Tangent into vfree only displacements
+     ! This is useless for now (2007.Apr.23) as vfree=Id matrix
+     ! but it will be usefull as soon as we introduce Constraints
+     DO I=1,NCoord
+        Tanf(I)=dot_product(reshape(vfree(:,I),(/NCoord/)),Tangent)
+     END DO
+     Tangent=0.d0
+     DO I=1,NCoord
+        Tangent=Tangent+Tanf(i)*vfree(:,I)
+     END DO
+
+     ! first we substract Tangent from vfree
+     DO I=1,NCoord
+        Norm=dot_product(reshape(vfree(:,i),(/NCoord/)),Tangent)
+        Vfree(:,I)=vfree(:,i)-Norm*Tangent
+     END DO
+
+     Idx=0.
+     ! Schmidt orthogonalization of the vfree vectors
+     DO I=1,NCoord
+        ! We substract the first vectors
+        ! we do it twice as the Schmidt procedure is not numerically stable
+        DO isch=1,2
+           DO J=1,Idx
+              Norm=dot_product(reshape(vfree(:,I),(/NCoord/)),reshape(vfree(:,J),(/NCoord/)))
+              vfree(:,I)=vfree(:,I)-Norm*vfree(:,J)
+           END DO
+        END DO
+        Norm=dot_product(reshape(vfree(:,I),(/NCoord/)),reshape(vfree(:,I),(/NCoord/)))
+        IF (Norm.GE.crit) THEN
+           idx=idx+1
+           vfree(:,idx)=vfree(:,i)/sqrt(Norm)
+        END IF
+     END DO
+  
+     If (Idx/= NCoord-1) THEN
+        WRITE(*,*) "Pb in orthogonalizing vfree to tangent for geom",IGeom
+        WRITE(Ioout,*) "Pb in orthogonalizing vfree to tangent for geom",IGeom
+        STOP
+     END IF
+     
+     DEALLOCATE(Tanf)
+
+     NFree=Idx
+
+  ELSE ! Tangent =0, matches IF (Norm.GT.eps) THEN
+     if (debug) WRITE(*,*) "Tangent=0, using full displacement"
+     NFree=NCoord
+  END IF !IF (Norm.GT.eps) THEN
+  
+  if (debug) WRITE(*,*) 'DBG Step_RFO_All NFree=',NFree
+  
+
+! We now calculate the new step
+! we project the hessian onto the free vectors
+     ALLOCATE(hfree(NFree,NFree),htmp(NCoord,NFree),Grad_f(NFree),Step_f(NFree))
+     DO J=1,NFree
+        DO I=1,NCoord
+           Htmp(I,J)=0.d0
+           DO K=1,NCoord
+              Htmp(I,J)=htmp(I,J)+Hess(I,K)*vfree(K,J)
+           END DO
+        END DO
+     END DO
+     DO J=1,NFree
+        DO I=1,NFree
+           HFree(i,j)=0.d0
+           DO K=1,NCoord
+              HFree(i,j)=hfree(i,j)+vfree(k,i)*htmp(k,j)
+           END DO
+        END DO
+     END DO
+
+! We diagonalize the hessian or its inverse
+  ALLOCATE(eigval(NFree), eigvec(NFree,NFree), eigvli(NFree)) 
+
+  call Jacobi(Hfree,NFree,eigvli,eigvec,NFree)
+
+  if (debug) THEN
+     WRITE(*,*) 'Eigensystem, Step_RFO_all.f90, L225'
+     fmt2='(I5,":",F8.3," -",  (1X,F10.4))'
+     WRITE(fmt2(19:20),'(I2)') min(NFree,99)
+     DO I=1,NFree
+        WRITE(*,fmt2) I,Eigvli(I),eigvec(:,I)
+     END DO
+  END IF
+
+  ! We inverse the eigenvalues if Hess corresponds to Hessian inverse
+  IF (Hinv) THEN
+     do J=1,NFree
+        if (abs(eigvli(j)) <= tiny) eigvli(j) = zero
+        eigval(j) = sign (eigvli(j)**2 / (dele3 + abs(eigvli(j))**3), eigvli(j))
+        if (abs(eigval(j)) <= tiny) eigval(j) = zero
+     end do
+  ELSE
+     eigval=eigvli
+  END IF
+
+  call trie(NFree,eigval,eigvec,NFree)
+
+  DO I=1,NFree
+     Grad_f(I)=dot_product(reshape(vfree(:,I),(/NCoord/)),grad)
+  END DO
+
+  ! We now construct the step
+
+  Step_f=0.d0
+  DO I=1,NFree
+     grd= dot_product(grad_f,reshape(eigvec(:,i),(/NFree/)))
+     eval = 0.5 * (abs(eigval(i)) + sqrt (eigval(i)**2 + 4.*grd**2))
+     dx   = (-grd) / eval
+     step_f = step_f + dx * eigvec(:,i)
+     if (debug) write (*,*) i,eigval(i),eval,grd,dx
+  END DO
+
+  Step=0.d0
+! PFL 04 Apr 2008 -> 
+! Grad is once again modified
+!  Grad=0.d0
+  DO I=1,NFree
+     Step=Step+ step_f(i)*vfree(:,i)
+!     Grad=Grad+ Grad_f(i)*vfree(:,i)
+  END DO
+! <- PFL 04 Apr 2008
+     
+  DEALLOCATE(eigval,eigvec,eigvli,hfree,htmp,grad_f,step_f) 
+
+  if (debug) THEN
+     WRITE(*,*) 'DBG Step_RFO_All Step'
+     WRITE(*,'(12(1X,F8.4))') Step(1:Idx)
+  END IF
+
+  if (debug) WRITE(*,*) "=========================== Step_RFO_All Over ===================="        
+
+END SUBROUTINE STEP_RFO_ALL
+
+
Index: src/Opt_Geom.f90
===================================================================
--- src/Opt_Geom.f90	(revision 0)
+++ src/Opt_Geom.f90	(revision 1)
@@ -0,0 +1,382 @@
+! This subroutine optimizes a geometry. It is mainly here for  debugging purposes..
+! It has been designed to be almost independent of the rest of the code.
+
+ SUBROUTINE Opt_geom(IGeom,Nat,NCoord,Coord,Geom,E,Flag_Opt_Geom,Step_method)
+
+  use Path_module, only : maxcyc,sthresh,gthresh,Hinv,Smax,Nom,Atome,OrderInv,indzmat,&
+						  XyzGeomF,IntCoordF,UMat,ScanCoord,Coordinate,NPrim,&
+						  BTransInv,BTransInv_local,XyzGeomI,Xprimitive_t,ScanCoord,&
+						  Coordinate,Pi,UMat_local,NCart
+  use VarTypes
+  IMPLICIT NONE
+
+  INTEGER(KINT), INTENT(IN) :: Nat,NCoord,IGeom
+  CHARACTER(32), INTENT(IN) :: Coord
+  CHARACTER(32), INTENT(IN) :: Step_method
+  REAL(KREAL), INTENT(INOUT) :: Geom(NCoord)
+  REAL(KREAL), INTENT(OUT) :: E
+  LOGICAL, INTENT(IN) :: Flag_Opt_Geom
+
+! As this subroutine is here for debugging, debug=T !
+  LOGICAL, PARAMETER :: debug=.TRUE.
+  LOGICAL :: Fini
+  LOGICAL, SAVE :: FRST=.TRUE.
+
+! Variables
+  INTEGER(KINT) :: IOpt, I,J,Iat, IBEG
+  REAL(KREAL), ALLOCATABLE :: GradTmp(:),ZeroVec(:) ! 3*Nat or 3*Nat-6
+  REAL(KREAL), ALLOCATABLE :: GeomOld(:),GradOld(:) ! (3*Nat or 3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: GeomRef(:) ! (3*Nat or 3*Nat-6)
+  REAL(KREAL), ALLOCATABLE :: GeomTmp2(:),GradTmp2(:) ! 3*Nat or 3*Nat-6
+  REAL(KREAL), ALLOCATABLE :: Hess_local(:,:)
+  REAL(KREAL), ALLOCATABLE :: GeomCart(:,:) !(Nat,3)
+  REAL(KREAL), ALLOCATABLE :: GeomCart_old(:,:) !(Nat,3)
+  REAL(KREAL), ALLOCATABLE :: Hprim(:,:) !(NPrim,NPrim)
+  REAL(KREAL), ALLOCATABLE :: HprimU(:,:) !(NPrim,3*Nat-6))
+  REAL(KREAL), ALLOCATABLE :: NewGeom(:) !NCoord=3*Nat-6
+  REAL(KREAL), ALLOCATABLE :: NewGradTmp(:)
+  REAL(KREAL), ALLOCATABLE :: Hess_local_inv(:,:) ! used in diis
+  REAL(KREAL) :: NormStep, FactStep, HP
+
+    E=0.
+
+    if (debug) WRITE(*,*) "=================== Geom Optimization =================="
+
+     ALLOCATE(GradTmp2(NCoord),GeomTmp2(NCoord),GradTmp(NCoord))
+     ALLOCATE(GradOld(NCoord),GeomOld(NCoord),ZeroVec(NCoord))
+     ALLOCATE(GeomRef(NCoord))
+     ALLOCATE(Hess_local(NCoord,NCoord))
+	 ALLOCATE(GeomCart(Nat,3),GeomCart_old(Nat,3))
+	 ALLOCATE(NewGeom(NCoord))
+ 	 ALLOCATE(NewGradTmp(NCoord))
+	 ALLOCATE(Hess_local_inv(NCoord,NCoord))
+	 
+     IOpt=0
+     ZeroVec=0.d0
+     
+     ! Initialize the Hessian
+     Hess_local=0.
+
+     SELECT CASE (COORD)
+	 CASE ('ZMAT')
+        ! We use the fact that we know that approximate good hessian values
+        ! are 0.5 for bonds, 0.1 for valence angle and 0.02 for dihedral angles
+        Hess_local(1,1)=0.5d0
+        Hess_local(2,2)=0.5d0
+        Hess_local(3,3)=0.1d0
+        DO J=1,Nat-3
+           Hess_local(3*J+1,3*J+1)=0.5d0
+           Hess_local(3*J+2,3*J+2)=0.1d0
+           Hess_local(3*J+3,3*J+3)=0.02d0
+        END DO
+        IF (HInv) THEN
+           DO I=1,NCoord
+              Hess_local(I,I)=1.d0/Hess_local(I,I)
+           END DO
+        END IF
+
+        IF (Step_method .EQ. "RFO") Then
+                   Hess_local=0.
+           DO I=1,NCoord
+              Hess_local(I,I)=0.5d0
+           END DO
+        END IF
+
+	 CASE ('BAKER')
+	     ! UMat(NPrim,3*Nat-6)
+		 BTransInv_local = BTransInv
+		 UMat_local = UMat
+         ALLOCATE(Hprim(NPrim,NPrim),HprimU(NPrim,NCoord))
+         Hprim=0.d0
+         ScanCoord=>Coordinate
+         I=0
+         DO WHILE (Associated(ScanCoord%next))
+            I=I+1
+            SELECT CASE (ScanCoord%Type)
+			CASE ('BOND')
+			     Hprim(I,I) = 0.5d0
+            CASE ('ANGLE')
+			     Hprim(I,I) = 0.2d0
+            CASE ('DIHEDRAL')
+			     Hprim(I,I) = 0.1d0
+	        END SELECT
+            ScanCoord => ScanCoord%next
+         END DO
+		 
+         ! Hprim U:
+         HprimU=0.d0
+         DO I=1, NCoord
+		    DO J=1,NPrim
+               HprimU(:,I) = HprimU(:,I) + Hprim(:,J)*UMat(J,I)
+            END DO
+         END DO
+
+         ! Hess = U^T Hprim U:
+         Hess_local=0.d0
+         DO I=1, NCoord
+            DO J=1,NPrim
+		       ! UMat^T is needed below.
+			   Hess_local(:,I) = Hess_local(:,I) + UMat(J,:)*HprimU(J,I)
+            END DO
+         END DO
+		 
+		 !Print *, 'Hprim='
+		 DO I=1,NPrim
+		 !   WRITE(*,'(10(1X,F6.3))') Hprim(I,:)
+	     END DO
+		 !Print *, 'UMat='
+		 DO I=1,NPrim
+		  !  WRITE(*,'(3(1X,F6.3))') UMat(I,1:3)
+	     END DO
+		 !Print *, 'HprimU='
+		 DO I=1,NPrim
+		  !  WRITE(*,'(3(1X,F6.3))') HprimU(I,1:3)
+	     END DO
+		 !Print *, 'Hess_local='
+		 DO I=1,NCoord
+		  !  WRITE(*,'(3(1X,F6.3))') Hess_local(I,1:3)
+	     END DO
+		 
+	     DEALLOCATE(Hprim,HprimU)
+		 
+         IF (HInv) THEN
+			Call GenInv(NCoord,Hess_local,Hess_local_inv,NCoord)
+		    Hess_local = Hess_local_inv
+        END IF
+		
+		!Print *, 'Hess_local after inversion='
+		 DO I=1,NCoord
+		 !   WRITE(*,'(3(1X,F6.3))') Hess_local(I,1:3)
+	     END DO
+				 
+        IF (Step_method .EQ. "RFO") Then
+		   Hess_local=0.
+           DO I=1,NCoord
+              Hess_local(I,I)=0.5d0
+           END DO
+        END IF
+		   
+	 CASE ('MIXED','CART','HYBRID')
+        DO J=1,NCoord
+           Hess_local(J,J)=1.
+        END DO
+	 CASE DEFAULT
+        WRITE (*,*) "Coord=",TRIM(COORD)," not recognized, opt_Geom.f90, L164. Stop"
+        STOP
+     END SELECT	
+
+     ! Go to optimization
+	 GeomOld=0.d0 ! Internal coordinates
+	 GeomCart_old=0.d0 ! Cartesian coordinates
+
+     Fini=.FALSE.
+     DO WHILE ((IOpt.LT.MaxCyc).AND.(.NOT.Fini))
+        IOpt=IOpt+1
+
+        ! Calculate the  energy and gradient
+        IF (debug) THEN 
+           WRITE(*,*) 'L134, DBG Opt_Geom, COORD=',TRIM(COORD),' IOpt=',IOpt
+           WRITE(*,*) "Energy and Coordinates:"
+           WRITE(*,'(F12.6,12(1X,F8.3))') E,Geom(1:min(NCoord,12))
+           WRITE(*,*) "Geom Old:"
+           WRITE(*,'(F12.6,12(1X,F8.3))') GEomOld(1:min(NCoord,13))
+           WRITE(*,*) "Grad Old:"
+           WRITE(*,'(F12.6,12(1X,F8.3))') GradOld(1:min(NCoord,13))
+        END IF
+
+        !Call EGrad(E,Geom,GradTmp,NCoord)
+        IF (COORD.EQ.'BAKER') THEN
+           ! GradTmp is gradient and calculated in Egrad.F, INTENT(OUT).
+           ! GeomCart has INTENT(OUT)
+           ! GeomRef is modified in Egrag_baker, so we should not use GeomOld variable
+           GeomRef=GeomOld
+           Call EGrad_baker(E,Geom,GradTmp,NCoord,IGeom,IOpt,GeomCart,Flag_Opt_Geom, &
+                GeomRef,GeomCart_old)
+           GeomCart_old=GeomCart
+        ELSE
+           Call EGrad(E,Geom,GradTmp,NCoord,IGeom,IOpt,GeomCart)
+        END IF
+		
+        IF (debug) THEN 
+           WRITE(*,*) 'L198, DBG Opt_Geom, COORD=',TRIM(COORD),' IOpt=',IOpt
+           WRITE(*,*) "Energy and Coordinates:"
+           WRITE(*,'(F12.6,12(1X,F8.3))') E,Geom(1:min(NCoord,12))
+           WRITE(*,*) "Geom Old:"
+           WRITE(*,'(F12.6,12(1X,F8.3))') GEomOld(1:min(NCoord,13))
+	    END IF
+
+     IF (IOpt.GE.2) THEN
+        ! We have enough geometries and gradient to update the hessian (or its 
+        ! inverse)
+        GradTmp2=GradTmp-GradOld
+        GeomTmp2=Geom-GeomOld
+
+        if (debug) Write(*,*) "Call Hupdate_all, Geom"
+        IF (debug) THEN
+		   WRITE(*,*) "dx before calling",SHAPE(GeomTmp2)
+		   WRITE(*,'(12(1X,F8.4))') GeomTmp2(1:NCoord)
+		   WRITE(*,*) "dgrad before calling",SHAPE(GradTmp2)
+		   WRITE(*,'(12(1X,F8.4))') GradTmp2(1:NCoord)
+		END IF
+           Call Hupdate_all(NCoord,GeomTmp2,GradTmp2,Hess_local)
+        END IF ! matches IF (IOpt.GE.2) THEN
+		
+        GradOld=GradTmp
+        GeomOld=Geom
+
+        ! GradTmp becomes Step in Step_RFO_all.
+		SELECT CASE (Step_method)
+        CASE ('RFO')
+          Call Step_RFO_all(NCoord,GradTmp,IGeom,Geom,GradTmp,Hess_local,ZeroVec)
+		CASE ('GDIIS')
+          Call Step_DIIS(NewGeom,Geom,NewGradTmp,GradTmp,HP,E,Hess_local,NCoord,FRST)
+		 ! q_{m+1} = q'_{m+1} - H^{-1}g'_{m+1}
+			Geom=0.d0
+            DO I=1, NCoord
+			   ! If Hinv=.False., then we need to invert Hess_local
+			   Geom(:) = Geom(:) + Hess_local(:,I)*NewGradTmp(I)
+			END DO
+			Geom(:) = NewGeom(:) - Geom(:)
+			! GradTmp now becomes "step" below:
+		    GradTmp = Geom - GeomOld
+		CASE ('GDIIST')
+          Call Step_GDIIS_Simple_Err(NewGeom,Geom,NewGradTmp,GradTmp,HP,E,Hess_local,NCoord,FRST)
+		 ! q_{m+1} = q'_{m+1} - H^{-1}g'_{m+1}
+			Geom=0.d0
+            DO I=1, NCoord
+			   ! If Hinv=.False., then we need to invert Hess_local
+			   Geom(:) = Geom(:) + Hess_local(:,I)*NewGradTmp(I)
+			END DO
+			Geom(:) = NewGeom(:) - Geom(:)
+			! GradTmp now becomes "step" below:
+		    GradTmp = Geom - GeomOld
+		CASE ('GEDIIS')
+          Call Step_GEDIIS(NewGeom,Geom,GradTmp,E,Hess_local,NCoord,FRST)
+			! GradTmp is actually "step" below:
+		     GradTmp = NewGeom - GeomOld
+		  !Call Step_GEDIIS_All(3,1,GradTmp,Geom,GradTmp,E,Hess_local,NCoord,FRST,ZeroVec)
+ 	    CASE DEFAULT
+          WRITE (*,*) "Step_method=",TRIM(Step_method)," not recognized, opt_Geom.f90, L225. Stop"
+          STOP
+        END SELECT	
+
+        Fini=.TRUE.
+        !   If (IOpt.LT.5) GradTmp=(IOpt*GradTmp+(5-IOpt)*0.01*Grad(IGeom,:))/5.d0
+        NormStep=sqrt(DOT_Product(GradTmp,GradTmp))
+		WRITE(*,'(A,E10.4,1X,A,E10.4)') 'DBG OptGeom L215, NormStep=', NormStep, 'Step Threshold=', SThresh
+        FactStep=min(1.d0,SMax/NormStep)
+        Fini=(NormStep.LE.SThresh)
+        NormStep=sqrt(DOT_Product(GradOld,GradOld)) ! GradOld is the value of gradients.
+		WRITE(*,'(A,E10.4,1X,A,E10.4)') 'DBG OptGeom L219, NormStep (Gradient)=', NormStep, 'Gradient Threshold=', GThresh
+        Fini=(Fini.AND.(NormStep.LE.GThresh))
+        if (debug) WRITE(*,*) "DBG OptGeom FactStep=",FactStep
+        GradTmp=GradTmp*FactStep ! GradTmp is step size here, from Step_RFO_all.
+
+        Call Check_step(IGeom,Coord,Nat,NCoord,GeomOld,GradTmp)
+       
+        Geom=GeomOld+GradTmp ! GradTmp is step size here, from Step_RFO_all.
+
+        IF (debug) THEN
+           WRITE(*,*) "L235, DBG OptGeom, IGeom=",IGeom," IOpt=", IOpt
+           SELECT CASE (COORD)
+           CASE ('ZMAT','BAKER')
+              !WRITE(*,'(12(1X,F8.3))') Geom(1:min(12,NCoord))
+           CASE('CART','HYBRID')
+              DO Iat=1,Nat
+! PFL 30 Apr 2008 ->
+! Deleted ref to orderinv that is created only for coord in zmat, baker, hybrid.
+!                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(iat)), &
+                      Geom(3*Iat-2:3*Iat)
+! <- PFL 30 Apr 2008
+              END DO
+           CASE('MIXED')
+             DO Iat=1,NCart
+                 WRITE(*,'(1X,A5,3(1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                      Geom(3*Iat-2:3*Iat)
+             END DO
+            
+             SELECT CASE (NCart)
+             CASE(1)
+               if (NAt.GE.2) THEN
+                WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(OrderInv(indzmat(2,1)))), &
+                      IndZmat(2,2),Geom(4)
+                IBEG=5
+               END IF
+                IF (NAT.GE.3) THEN
+                WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(OrderInv(indzmat(3,1)))), &
+                      IndZmat(3,2),Geom(5),IndZmat(3,3),Geom(6)
+                IBeg=7
+               END IF
+              CASE(2)
+                WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))')  Nom(Atome(OrderInv(indzmat(3,1)))), &
+                      IndZmat(3,2),Geom(7),IndZmat(3,3),Geom(8)
+                IBeg=9
+              CASE DEFAULT
+                 IBeg=3*NCart+1
+              END SELECT
+
+              DO Iat=max(4,NCart),Nat
+                WRITE(*,'(1X,A5,3(1X,I5,1X,F11.6))') Nom(Atome(OrderInv(indzmat(iat,1)))), &
+                      IndZmat(iat,1),Geom(IBeg),IndZmat(3,2),Geom(IBeg+1), &
+                      IndZmat(3,3),Geom(IBeg+2)*180./pi
+                IBeg=IBeg+3
+              END DO
+
+           CASE DEFAULT
+               WRITE(*,*) "Coord=",TRIM(COORD)," not recognized in OptGeom. L294."
+               STOP
+           END SELECT
+        END IF ! matches IF (debug) THEN
+		
+     END DO ! matches DO WHILE ((IOpt.LT.MaxCyc).AND.(.NOT.Fini))
+	 
+     DEALLOCATE(GradTmp2,GeomTmp2,GradTmp)
+     DEALLOCATE(GradOld,GeomOld)
+     DEALLOCATE(Hess_local)
+	 DEALLOCATE(GeomCart_old)
+	 DEALLOCATE(NewGeom,NewGradTmp)
+     DEALLOCATE(Hess_local_inv)
+
+     IF (Fini) THEN
+        WRITE(*,'(1X,A,I5,A,I5,A,F15.8)') "Optimization for geom ",IGeom," converged in ",Iopt," cycles, Energy =",E
+     ELSE
+        WRITE(*,'(1X,A,I5,A,I5,A,F15.8)') "Optimization  for geom ",IGeom,"*NOT* converged in ",Iopt," cycles, Last Energy = ",E
+     END IF
+	 	 
+	 WRITE(*,*) "Initial Geometry:"
+	 DO I=1, Nat
+	    WRITE(*,'(3(1X,F8.4))')  XyzGeomI(IGeom,:,I)
+	 END DO
+	  WRITE(*,*) "Final Geometry:"
+	 DO I=1, Nat
+	    WRITE(*,'(3(1X,F8.4))') GeomCart(I,:)
+		!IF (I .GT. 1) Then
+        !	WRITE(*,'(F6.4)') Sqrt(((GeomCart(I,1)-GeomCart(I-1,1))*(GeomCart(I,1)-GeomCart(I-1,1)))&
+		!	 + ((GeomCart(I,2)-GeomCart(I-1,2))*(GeomCart(I,2)-GeomCart(I-1,2)))&
+		!	 + ((GeomCart(I,3)-GeomCart(I-1,3))*(GeomCart(I,3)-GeomCart(I-1,3))))
+		!END IF
+	 END DO
+	 
+	 IF (COORD .EQ. "BAKER") Then
+    	 I=0 ! index for the NPrim (NPrim is the number of primitive coordinates).
+	     ScanCoord=>Coordinate
+         DO WHILE (Associated(ScanCoord%next))
+		    I=I+1
+			SELECT CASE (ScanCoord%Type)
+			CASE ('BOND')
+				WRITE(*,'(1X,I3,":",I5," - ",I5," = ",F10.4)') I,ScanCoord%At1,ScanCoord%At2,Xprimitive_t(I)
+			CASE ('ANGLE')
+				WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," = ",F10.4)') I,ScanCoord%At1, &
+				 ScanCoord%At2, ScanCoord%At3,Xprimitive_t(I)*180./Pi		
+			CASE ('DIHEDRAL')
+				WRITE(*,'(1X,I3,":",I5," - ",I5," - ",I5," - ",I5," = ",F10.4)') I,ScanCoord%At1,&
+				ScanCoord%At2, ScanCoord%At3,ScanCoord%At4,Xprimitive_t(I)*180./Pi
+			END SELECT
+			ScanCoord => ScanCoord%next
+		 END DO ! matches DO WHILE (Associated(ScanCoord%next))
+	 END IF
+	 
+     DEALLOCATE(GeomCart)
+	 if (debug) WRITE(*,*) "================== Geom Optimization Over================="
+   END SUBROUTINE Opt_geom
Index: src/IntCoord_der.f90
===================================================================
--- src/IntCoord_der.f90	(revision 0)
+++ src/IntCoord_der.f90	(revision 1)
@@ -0,0 +1,1362 @@
+
+      SUBROUTINE VPRD(X,Y,Z)
+!     ******************************************************************
+!     **  CROSS PRODUCT (VECTOR PRODUCT OF TWO VECTORS)               **
+!     ******************************************************************
+        Use VarTypes
+      IMPLICIT NONE
+      REAL(KREAL),INTENT(IN) :: X(3)
+      REAL(KREAL),INTENT(IN) :: Y(3)
+      REAL(KREAL),INTENT(OUT):: Z(3)
+!     ******************************************************************
+      Z(1)=X(2)*Y(3)-X(3)*Y(2)
+      Z(2)=X(3)*Y(1)-X(1)*Y(3)
+      Z(3)=X(1)*Y(2)-X(2)*Y(1)
+      RETURN
+      END
+
+!     ..................................................................
+      SUBROUTINE CONSTRAINTS_BONDLENGTH_DER(NAT,IAT1,IAT2,R0,B)
+!     ******************************************************************
+!     **                                                              **
+!     **  BOND-LENGTH CONSTRAINT : SET UP COORDINATES                 **   
+!     **                                                              **
+!     ******************************************************************
+        Use VarTypes
+      IMPLICIT NONE
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+
+      INTEGER(KINT)            :: I,J
+      REAL(KREAL)               :: DIS,DI,DJ
+      REAL(KREAL)               :: DELTAK
+      REAL(KREAL)               :: SVAR
+      real(KREAL)               :: dr(3)
+!     ******************************************************************
+      DR(:)=R0(:,IAT2)-R0(:,IAT1)
+!
+!     ==================================================================
+!     == CALCULATE VALUE AND FIRST TWO DERIVATIVES OF D=|R_2-R_2|     ==
+!     ==================================================================
+      DIS=DSQRT(DOT_PRODUCT(DR,DR))
+      DO I=1,3
+         DI=DR(I)/DIS
+         B(I,IAT2)=DI
+         B(I,IAT1)=-DI
+      ENDDO
+      RETURN
+      END SUBROUTINE CONSTRAINTS_BONDLENGTH_DER
+
+      SUBROUTINE CONSTRAINTS_GLC_DER(NAT,VEC,B)
+!     ******************************************************************
+!     **  CONSTRAINTS_SETGLC                                          **
+!     **  SET GENERAL LINEAR CONSTRAINT (GLC) CONST+VEC*R=0           **
+!     **                                                              **
+!     **  APPROXIMATES CONSTRAINT FUNCTION (WITHOUT VALUE)            **
+!     **  BY AN QUADRATIC POLYNOM IN A+B*R+0.5*R*C*R                  **
+!     **  THE CONSTRAINT IS THE POLYNOMIAL MINUS THE VALUE FROM THE   **
+!     **  REFERENCE STRUCTURE                                         **
+!     ******************************************************************
+        Use VarTypes
+      IMPLICIT NONE
+      INTEGER(KINT),INTENT(IN) :: NAT
+      REAL(KREAL)   ,INTENT(IN) :: VEC(3,NAT)
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+      INTEGER(KINT)            :: IAT,I
+!     ******************************************************************
+      DO IAT=1,NAT
+         DO I=1,3
+            B(I,IAT)=VEC(I,IAT)
+         ENDDO
+      ENDDO
+      RETURN
+      END SUBROUTINE CONSTRAINTS_GLC_DER
+
+
+      SUBROUTINE CONSTRAINTS_SUBSTITUTION_DER(NAT,IAT1,IAT2,IAT3,R0,B)
+!     ******************************************************************
+!     **  CONSTRAINTS_SETsubstitution                                 **
+!     **  APPROXIMATES CONSTRAINT FUNCTION (WITHOUT VALUE)            **
+!     **  BY AN QUADRATIC POLYNOMial IN A+B*R+0.5*R*C*R               **
+!     **  THE CONSTRAINT IS THE POLYNOMIAL MINUS THE VALUE FROM THE   **
+!     **  REFERENCE STRUCTURE                                         **
+!     **  CONSTRAINS THE difference OF THE BOND DISTANCES BETWEEN     **
+!     **  R1-R2 AND R2-R3                                             **
+!     ******************************************************************
+      Use Vartypes
+      implicit none
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      INTEGER(KINT),INTENT(IN) :: IAT3
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)               :: X(9),DI(9)
+      real(KREAL)               :: phi
+      REAL(KREAL)               :: X1X2,Y1Y2,Z1Z2,X2X3,Y2Y3,Z2Z3,D12,D22,  &
+                                   D1,D2,D13,D23
+      integer(KINT)            :: i,j
+!     ******************************************************************
+!
+! --- TRANSFER R0 TO X ARRAY TO MAKE HANDLING AND PASSING EASIER
+      DO I=1,3
+       X(I)  =R0(I,IAT1)
+       X(I+3)=R0(I,IAT2)
+       X(I+6)=R0(I,IAT3)
+      ENDDO
+!
+! --- FOR THE FOLLOWING, THE CONSTRAINT ITSELF WILL BE CALLED PHI
+! --- CALCULATE PHI,D PHI/D X_I, D^2 PHI/D X_I D X_J
+!
+      X1X2=X(1)-X(4)
+      Y1Y2=X(2)-X(5)
+      Z1Z2=X(3)-X(6)
+      X2X3=X(4)-X(7)
+      Y2Y3=X(5)-X(8)
+      Z2Z3=X(6)-X(9)
+!
+      D12=(X1X2)**2 + (Y1Y2)**2 + (Z1Z2)**2
+      D22=(X2X3)**2 + (Y2Y3)**2 + (Z2Z3)**2
+      D1= SQRT(D12)
+      D2= SQRT(D22)
+      D13= D1**3
+      D23= D2**3
+      PHI= D1 - D2
+!
+      B(1,IAT1)= (X1X2)/D1
+      B(1,IAT2)= -((X1X2)/D1) - (X2X3)/D2
+      B(1,IAT3)= (X2X3)/D2
+      B(2,IAT1)= (Y1Y2)/D1
+      B(2,IAT2)= -((Y1Y2)/D1) - (Y2Y3)/D2
+      B(2,IAT3)= (Y2Y3)/D2
+      B(3,IAT1)= (Z1Z2)/D1
+      B(3,IAT2)= -((Z1Z2)/D1) - (Z2Z3)/D2
+      B(3,IAT3)= (Z2Z3)/D2
+!
+      RETURN
+      END SUBROUTINE CONSTRAINTS_SUBSTITUTION_DER
+
+!     ..................................................................
+      SUBROUTINE CONSTRAINTS_BONDANGLE_DER(NAT,IAT1,IAT2,IAT3,R0,B)
+!     ******************************************************************
+!     **
+!     **  CONSTRAINS THE ANGLE ENCLOSED BETWEEN ATOMS IAT1--IAT2--IAT3
+!     **  In the followin, IAT1 is also denoted by A, IAT2 by B and IAT3 by C
+!     **
+!     ******************************************************************
+        Use VarTypes
+      IMPLICIT none
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      INTEGER(KINT),INTENT(IN) :: IAT3
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)               :: X(9),DI(9),DIDJ(9,9),B1(9)
+      real(KREAL)               :: phi
+      integer(KINT)            :: i,j,ichk, iat
+      REAL(KREAL)               :: UU    ! U*U
+      REAL(KREAL)               :: VV    ! V*V
+      REAL(KREAL)               :: UV    ! U*V
+      REAL(KREAL)               :: D    ! 1/SQRT(A*B)
+      REAL(KREAL)               :: DADX(9)
+      REAL(KREAL)               :: DBDX(9)
+      REAL(KREAL)               :: DCDX(9)
+      REAL(KREAL)               :: DDDX(9)
+      REAL(KREAL)               :: DJDX(9)
+      REAL(KREAL)               :: DVDX(9)
+      REAL(KREAL)               :: DGDX(9)    ! D(A*B)/DX
+      REAL(KREAL)               :: AB,AB2N,V,PREFAC
+      REAL(KREAL)               :: COSPHI,SINPHI
+      REAL(KREAL)               :: DIVDX,AI
+!
+! Variable used in case of a linear molecule with three atoms call A,B and C
+! Phi is the ABC angle
+! Threshold use to decide that sin(Phi)=0.
+      REAL(KREAL), PARAMETER    :: ThreshSin=1e-7
+! Sine and Cosine of the euler Phi angle between ABC and x axis
+      REAL(KREAL)               :: CosP,SinP
+! Sine and Cosine of the euler theta angle between ABC and z axis
+      REAL(KREAL)               :: CosTheta,SinTheta
+! Vectors CB, CA,AB
+      REAL(KREAL)               ::vCB(3),vCA(3),vAB(3)
+! distance AB in the xAy plane
+      REAL(KREAL)               :: dABxy
+! cosine of the BAC angle
+      REAL(KREAL)               :: CosBAC
+! cosine of the BCA angle
+      REAL(KREAL)               :: CosBCA
+
+!
+! For debugginh purposes:
+      LOGICAL, PARAMETER :: Debug=.False.
+
+
+      IF (Debug) WRITE(*,*) "================ Entering  CONSTRAINTS_BONDANGLE_DER =========="
+!     ******************************************************************
+!
+!     ==================================================================
+!     ==  SET UP CONSTRAINT IN COORDINATE SPACE                       ==
+!     ==================================================================
+!
+!     ==================================================================
+!     == CALCULATE VALUE AND FIRST TWO DERIVATIVES OF                 ==
+!     == PHI=<X1-X2|X3-X2>/SQRT(<X1-X2|X1-X2><X3-X2|X3-X2>)           ==
+!     ==================================================================
+! --- TRANSFER R0 TO X ARRAY TO MAKE HANDLING AND PASSING EASIER
+      DO I=1,3
+       X(I)  =R0(I,IAT1)
+       X(I+3)=R0(I,IAT2)
+       X(I+6)=R0(I,IAT3)
+      ENDDO
+
+      if (debug) THEN
+         WRITE(*,*) "X=",X
+         WRITE(*,*) "A=",X(1)-X(4),X(2)-X(5),X(3)-X(6)
+         WRITE(*,*) "B=",X(7)-X(4),X(8)-X(5),X(9)-X(6)
+      END IF
+
+!     ----------------------------------------------------------------
+!     --- R1=X(1:3)   R2=X(4:6)  R3=X(7:9)
+!     --- U=R1-R2 V=R3-R2
+!     --- A=U*U=d(At1-At2)**2
+!     --- B=V*V=d(At2-At3)**2
+!     --- C=U*V=vec(At2-At1)*vec(At2-At3)
+!     ----------------------------------------------------------------
+      UU=(X(1)-X(4))**2 + (X(2)-X(5))**2 + (X(3)-X(6))**2
+      VV=(X(7)-X(4))**2 + (X(8)-X(5))**2 + (X(9)-X(6))**2
+      UV=(X(1)-X(4))*(X(7)-X(4))  &
+           +(X(2)-X(5))*(X(8)-X(5))   &
+           +(X(3)-X(6))*(X(9)-X(6))
+      AB=UU*VV
+      D=SQRT(AB)
+      COSPHI=UV/D       !=COS(PHI)
+      PHI=DACOS(COSPHI)
+      SINPHI=DSQRT(1.D0-COSPHI**2)
+
+      IF (SINPHI.GE.ThreshSin) THEN
+! The following evaluation of the derivative involves
+! 1/sinphi... so we test that it is not 0 :-)
+!     ---  CALCULATE DADX
+      DADX(1)= 2.D0*(X(1)-X(4))
+      DADX(2)= 2.D0*(X(2)-X(5))
+      DADX(3)= 2.D0*(X(3)-X(6))
+      DADX(4)=-2.D0*(X(1)-X(4))
+      DADX(5)=-2.D0*(X(2)-X(5))
+      DADX(6)=-2.D0*(X(3)-X(6))
+      DADX(7)= 0.D0
+      DADX(8)= 0.D0
+      DADX(9)= 0.D0
+!     ---  CALCULATE DBDX
+      DBDX(1)= 0.D0
+      DBDX(2)= 0.D0
+      DBDX(3)= 0.D0
+      DBDX(4)=-2.D0*(X(7)-X(4))
+      DBDX(5)=-2.D0*(X(8)-X(5))
+      DBDX(6)=-2.D0*(X(9)-X(6))
+      DBDX(7)= 2.D0*(X(7)-X(4))
+      DBDX(8)= 2.D0*(X(8)-X(5))
+      DBDX(9)= 2.D0*(X(9)-X(6))
+! --- CALCULATE DCDX
+      DCDX(1)= X(7)-X(4)
+      DCDX(2)= X(8)-X(5)
+      DCDX(3)= X(9)-X(6)
+      DCDX(4)=-X(7)+2.D0*X(4)-X(1)
+      DCDX(5)=-X(8)+2.D0*X(5)-X(2)
+      DCDX(6)=-X(9)+2.D0*X(6)-X(3)
+      DCDX(7)= X(1)-X(4)
+      DCDX(8)= X(2)-X(5)
+      DCDX(9)= X(3)-X(6)
+
+!       WRITE(*,*) 'PFL DER ANGLE'
+!       WRITE(*,'(15(1X,F10.6))') DADX
+!       WRITE(*,'(15(1X,F10.6))') DBDX
+!       WRITE(*,'(15(1X,F10.6))') DCDX
+
+!     ==================================================================
+!     ==  CALCULATE PHI ETC  ===========================================
+!     ==================================================================
+!     --- CALCULATE DERIVATIVE OF ARCCOS
+      V=-1.D0/SINPHI                 !=-SIN(PHI)=D(ACOS(PHI))/D(COSPHI)
+! --- CALCULATE FIRST DERIVATIVES OF G=A*B
+      DO I=1,9
+        DGDX(I)=DADX(I)*VV+UU*DBDX(I)
+      ENDDO
+! --- CALCULATE DDDX
+      AB2N=0.5D0/D
+      DO I=1,9
+        DDDX(I)=AB2N*DGDX(I)
+      ENDDO
+! --- CALCULATE FIRST DERIVATIVES OF J
+      PREFAC=1.D0/AB
+      DO I=1,9
+        DJDX(I)=(DCDX(I)*D-UV*DDDX(I))*PREFAC
+      ENDDO
+! --- CALCULATE FIRST DERIVATIVE
+      DO I=1,9
+        DI(I)=DJDX(I)*V
+      ENDDO
+!
+! Store it back to B
+      DO I=1,3
+        B(I,IAT1)=DI(I)
+        B(I,IAT2)=DI(I+3)
+        B(I,IAT3)=DI(I+6)
+      ENDDO
+
+   ELSE
+! First calculate cosP, sinP, CosTheta, SinTheta
+         dABxy=sqrt((X(4)-X(1))**2+(X(5)-X(2))**2)
+         cosP=abs((X(7)-X(1)))/sqrt((X(7)-X(1))**2+(X(8)-X(2))**2)
+!         SinP=(X(8)-X(2))/sqrt((X(7)-X(1))**2+(X(8)-X(2))**2)
+         sinP=sqrt(1.d0-cosP**2)
+         cosTheta=(X(6)-X(3))/(sqrt(UU))
+         SinTheta=dABxy/(sqrt(UU))
+         IF (SinTheta.le.ThreshSin) THEN
+! Theta=0, so that the euler Phi angle is ill-defined. We put it to 0:
+            CosP=1.d0
+            SinP=0.d0
+         END IF
+         IF (Debug)   WRITE(*,*) "CosP,SinP ",CosP,SinP
+         if (debug)   WRITE(*,*) "CosTheta,SinTheta",CosTheta,SinTheta
+! We calculate cos(BAC) and cos(BCA) because they are needed to calculate
+! the derivatives for the centre atom (B)
+         DO I=1,3
+            vCB(I)=X(3+I)-X(6+I)
+            vCA(I)=X(I)-X(6+I)
+            vAB(I)=x(3+I)-x(I)
+         END DO
+         CosBCA=DOT_PRODUCT(vCB,vCA)/sqrt(DOT_PRODUCT(vCB,vCB)*DOT_PRODUCT(vCA,vCA))
+         CosBAC=-DOT_PRODUCT(vAB,vCA)/sqrt(DOT_PRODUCT(vAB,vAB)*DOT_PRODUCT(vCA,vCA))
+         if (debug) WRITE(*,*) "CosBAC,CosBCA:",CosBAC,CosBCA
+! Sign of the derivatives are -1 for Phi=Pi and 1 for Phi=0
+! ie is cos(Phi).
+         DI(1)=COSPHI/sqrt(UU)
+         DI(2)=DI(1)
+         DI(3)=0.d0
+         DI(7)=COSPHI/sqrt(VV)
+         DI(8)=DI(7)
+         DI(9)=0.d0
+         DI(4)=CosBCA*DI(1)+cosBAC*DI(7)
+         DI(5)=DI(4)
+         DI(6)=0.D0
+         if (debug) WRITE(*,'(A,9(1X,F12.6))') 'DI=',DI(1:9)
+         if (debug) THEN
+            WRITE(*,'(3(1X,F12.6))') cosTheta*CosP,sinP,-cosP*sinTheta
+            WRITE(*,'(3(1X,F12.6))') -cosTheta*sinP,cosP,sinP*sinTheta
+            WRITE(*,'(3(1X,F12.6))') sinTheta,0.,cosTheta
+         END IF
+! We now take care of the fact that the three fragment are
+! not along the Z-axis
+         B(1,Iat1)=cosTheta*CosP*DI(1)+sinP*DI(2)-cosP*sinTheta*DI(3)
+         B(1,Iat2)=cosTheta*CosP*DI(4)+sinP*DI(5)-cosP*sinTheta*DI(6)
+         B(1,Iat3)=cosTheta*CosP*DI(7)+sinP*DI(8)-cosP*sinTheta*DI(9)
+         B(2,Iat1)=-cosTheta*SinP*DI(1)+cosP*DI(2)+sinP*sinTheta*DI(3)
+         B(2,Iat2)=-cosTheta*SinP*DI(4)+cosP*DI(5)+sinP*sinTheta*DI(6)
+         B(2,Iat3)=-cosTheta*SinP*DI(7)+cosP*DI(8)+sinP*sinTheta*DI(9)
+         B(3,Iat1)=sinTheta*DI(1)+cosTheta*DI(3)
+         B(3,Iat2)=sinTheta*DI(4)+cosTheta*DI(6)
+         B(3,Iat3)=sinTheta*DI(7)+cosTheta*DI(9)
+      END IF
+
+      IF (Debug) WRITE(*,*) "================ Exiting  CONSTRAINTS_BONDANGLE_DER =========="
+      END SUBROUTINE CONSTRAINTS_BONDANGLE_DER
+
+
+!     ..................................................................
+      SUBROUTINE CONSTRAINTS_TORSION_DER(NAT,IAT1,IAT2,IAT3,IAT4,R0,B)
+!     ******************************************************************
+!     **
+!     **  CONSTRAINS THE TORSION OF IAT1-IAT2---IAT3-IAT4
+!     **
+!     ******************************************************************
+        Use VarTypes
+      IMPLICIT none
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      INTEGER(KINT),INTENT(IN) :: IAT3
+      INTEGER(KINT),INTENT(IN) :: IAT4
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+      REAL(KREAL)               :: X(12),DI(12),DIDJ(12,12),B1(12)
+      REAL(KREAL)               :: P(3),Q(3),T(3),U(3),R(3),W(3)
+      real(KREAL)               :: phi
+      integer(KINT)            :: i,j,ichk,k
+
+      REAL(KREAL)   :: TORS, PP,QQ, PQ
+      REAL(KREAL) :: DADX(12),DBDX(12),DCDX(12)
+      REAL(KREAL) :: DDDX(12),DJDX(12),DVDX(12),DGDX(12),DPDX(3,12),DQDX(3,12)
+      REAL(KREAL) :: D2QDX2(3,12,12),D2PDX2(3,12,12)
+      REAL(KREAL) :: D2BDX2(12,12),D2ADX2(12,12),D2CDX2(12,12),D2DDX2(12,12)
+      real(KREAL) :: d,coverd,abyb2n,abyb,ai,divdx,prefac,v
+
+!     ******************************************************************
+!
+! --- TRANSFER R0 TO X ARRAY TO MAKE HANDLING AND PASSING EASIER
+      DO I=1,3
+        X(I)=R0(I,IAT1)
+        X(I+3)=R0(I,IAT2)
+        X(I+6)=R0(I,IAT3)
+        X(I+9)=R0(I,IAT4)
+      ENDDO
+!
+! --- CALCULATE PHI,D PHI/D X_I, D^2 PHI/D X_I D X_J
+      T(:)=X(1:3)  -X(4:6)
+      U(:)=X(7:9)  -X(4:6)
+      R(:)=X(10:12)-X(7:9)
+      W(:)=X(4:6)  -X(7:9)
+      CALL VPRD(T,U,P)
+      CALL VPRD(W,R,Q)
+      PQ=DOT_PRODUCT(P,Q)
+      PP=DOT_PRODUCT(P,P)
+      QQ=DOT_PRODUCT(Q,Q)
+!
+      ABYB=PP*QQ
+      D=ABYB**0.5D0
+      COVERD=PQ/D
+      ABYB2N=0.5D0/D
+!
+      TORS=DACOS(COVERD)
+      WRITE(*,*) "Torsion derivs  Phi=", Tors*180./3.1415926,Iat1,Iat2,Iat3,Iat4
+!
+! ----------------------------------------------------------------
+! --- CALCULATE FIRST DERIVATIVES
+! ----------------------------------------------------------------
+! --- CALCULATE DERIVATIVE OF ARCCOS
+      IF (dabs(DABS(COVERD)-1.d0) < 1.D-9) THEN
+        WRITE(*,*)   'WARNING: DERIVATIVE OF TORSION AT ZERO AND PI IS UNDEFINED!'
+        COVERD=sign(0.999d0,COVERD)
+      TORS=DACOS(COVERD)
+      !WRITE(*,*) "Torsion derivs, Phi=", Tors
+
+!        V=0.D0
+!      ELSE
+     END IF
+        V=-1.D0/DSQRT(1.D0-(COVERD)**2.D0)
+!      ENDIF
+! --- CALCULATE DPDX
+! --- ZERO OUT SPARSE MATRIX
+      DO J=1,3
+       DO I=1,12
+        DPDX(J,I)=0.D0
+        DQDX(J,I)=0.D0
+       ENDDO
+      ENDDO
+      DPDX(1,2)=X(9)-X(6)
+      DPDX(1,3)=X(5)-X(8)
+      DPDX(1,5)=X(3)-X(9)
+      DPDX(1,6)=X(8)-X(2)
+      DPDX(1,8)=X(6)-X(3)
+      DPDX(1,9)=X(2)-X(5)
+      DPDX(2,1)=X(6)-X(9)
+      DPDX(2,3)=X(7)-X(4)
+      DPDX(2,4)=X(9)-X(3)
+      DPDX(2,6)=X(1)-X(7)
+      DPDX(2,7)=X(3)-X(6)
+      DPDX(2,9)=X(4)-X(1)
+      DPDX(3,1)=X(8)-X(5)
+      DPDX(3,2)=X(4)-X(7)
+      DPDX(3,4)=X(2)-X(8)
+      DPDX(3,5)=X(7)-X(1)
+      DPDX(3,7)=X(5)-X(2)
+      DPDX(3,8)=X(1)-X(4)
+! --- CALCULATE DQDX
+      DQDX(1,5)=X(12)-X(9)
+      DQDX(1,6)=X(8)-X(11)
+      DQDX(1,8)=X(6)-X(12)
+      DQDX(1,9)=X(11)-X(5)
+      DQDX(1,11)=X(9)-X(6)
+      DQDX(1,12)=X(5)-X(8)
+      DQDX(2,4)=X(9)-X(12)
+      DQDX(2,6)=X(10)-X(7)
+      DQDX(2,7)=X(12)-X(6)
+      DQDX(2,9)=X(4)-X(10)
+      DQDX(2,10)=X(6)-X(9)
+      DQDX(2,12)=X(7)-X(4)
+      DQDX(3,4)=X(11)-X(8)
+      DQDX(3,5)=X(7)-X(10)
+      DQDX(3,7)=X(5)-X(11)
+      DQDX(3,8)=X(10)-X(4)
+      DQDX(3,10)=X(8)-X(5)
+      DQDX(3,11)=X(4)-X(7)
+
+!       WRITE(*,*) 'DP/DX(1) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DPDX(1,:)
+!       WRITE(*,*) 'DP/DX(2) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DPDX(2,:)
+!       WRITE(*,*) 'DP/DX(3) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DPDX(3,:)
+!       WRITE(*,*) 'DQ/DX(1) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DQDX(1,:)
+!       WRITE(*,*) 'DQ/DX(2) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DQDX(2,:)
+!       WRITE(*,*) 'DQ/DX(3) '
+!       WRITE(*,'(1X,12(F9.5,1X))') DQDX(3,:)
+
+! ---  CALCULATE DADX
+      DO I=1,12
+       DADX(I)=0.D0
+       DBDX(I)=0.D0
+       DCDX(I)=0.D0
+       DO J=1,3
+        DADX(I)=DADX(I)+2.D0*P(J)*DPDX(J,I)
+        DBDX(I)=DBDX(I)+2.D0*Q(J)*DQDX(J,I)
+        DCDX(I)=DCDX(I)+DPDX(J,I)*Q(J)+P(J)*DQDX(J,I)
+       ENDDO
+      ENDDO
+
+! --- CALCULATE FIRST DERIVATIVES OF G
+      DO I=1,12
+       DGDX(I)=DADX(I)*QQ+PP*DBDX(I)
+      ENDDO
+! --- CALCULATE DDDX
+      DO I=1,12
+       DDDX(I)=ABYB2N*DGDX(I)
+      ENDDO
+! --- CALCULATE FIRST DERIVATIVES OF J
+      PREFAC=1.D0/ABYB
+      DO I=1,12
+       DJDX(I)=(DCDX(I)*D-PQ*DDDX(I))*PREFAC
+      ENDDO
+! --- CALCULATE FIRST DERIVATIVE
+      DO I=1,12
+       DI(I)=DJDX(I)*V
+      ENDDO
+
+!        WRITE(*,*) 'PFL 1st DER TORSION'
+!        WRITE(*,'(15(1X,F10.6))') DADX(:)
+!        WRITE(*,'(15(1X,F10.6))') DBDX(:)
+!        WRITE(*,'(15(1X,F10.6))') DCDX(:)
+!        WRITE(*,'(15(1X,F10.6))') DGDX(:)
+!        WRITE(*,'(15(1X,F10.6))') DDDX(:)
+!        WRITE(*,'(15(1X,F10.6))') DJDX(:)
+!        WRITE(*,'(15(1X,F10.6))') DI(:)
+
+
+! -------------------------------------------------------------
+! --- CALCULATE B
+! -------------------------------------------------------------
+
+      WRITE(*,*) 'DER TOR 1'
+      WRITE(*,*) DI(1:3)
+      WRITE(*,*) DI(4:6)
+      WRITE(*,*) DI(7:9)
+      WRITE(*,*) DI(10:12)
+ 
+      DO I=1,3
+         B(I,IAT1)=DI(I)
+         B(I,IAT2)=DI(I+3)
+         B(I,IAT3)=DI(I+6)
+         B(I,IAT4)=DI(I+9)
+      END DO
+      END SUBROUTINE CONSTRAINTS_TORSION_DER
+
+
+!     ..................................................................
+      SUBROUTINE CONSTRAINTS_TORSION_DER3(NAT,IAT1,IAT2,IAT3,IAT4,R0,B)
+!     ******************************************************************
+!     **
+!     **  CONSTRAINS THE TORSION OF IAT1-IAT2---IAT3-IAT4
+!     **
+!     ******************************************************************
+      use VarTypes
+      IMPLICIT none
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      INTEGER(KINT),INTENT(IN) :: IAT3
+      INTEGER(KINT),INTENT(IN) :: IAT4
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)   ,INTENT(OUT):: B(3,NAT)
+      REAL(KREAL)               :: X(12),DI(12),DIDJ(12,12),B1(12)
+      REAL(KREAL)               :: P(3),Q(3),T(3),U(3),R(3),W(3)
+      REAL(KREAL)  :: Rij(3), rkj(3), rkl(3),rmj(3),rnk(3)
+      REAL(KREAL)  :: Nrij, Nrkj, Nrkl, Nrmj, Nrnk
+      REAL(KREAL) :: SignPhi
+      real(KREAL)               :: phi
+      integer(KINT)            :: i,j,ichk,k
+
+      REAL(KREAL)   :: TORS, PP,QQ, PQ
+      REAL(KREAL) :: DADX(12),DBDX(12),DCDX(12)
+      REAL(KREAL) :: DDDX(12),DJDX(12),DVDX(12),DGDX(12),DPDX(3,12),DQDX(3,12)
+      REAL(KREAL) :: D2QDX2(3,12,12),D2PDX2(3,12,12)
+      REAL(KREAL) :: D2BDX2(12,12),D2ADX2(12,12),D2CDX2(12,12),D2DDX2(12,12)
+      real(KREAL) :: d,coverd,abyb2n,abyb,ai,divdx,prefac,v
+
+      LOGICAL :: Debug=.TRUE.
+
+!     ******************************************************************
+!
+      if (debug)    WRITE(*,*) "============= Entering CONSTRAINTS_TORSION_DER3 ==============="
+
+! --- TRANSFER R0 TO X ARRAY TO MAKE HANDLING AND PASSING EASIER
+    
+      DO I=1,3
+        X(I)=R0(I,IAT1)
+        X(I+3)=R0(I,IAT2)
+        X(I+6)=R0(I,IAT3)
+        X(I+9)=R0(I,IAT4)
+      ENDDO
+
+      if (debug) THEN
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt1,R0(:,IAT1)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt2,R0(:,IAT2)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt3,R0(:,IAT3)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt4,R0(:,IAT4)
+      END IF
+!
+      Rij=X(4:6)-X(1:3)
+      Rkj=X(4:6)-X(7:9)
+      Rkl=X(10:12)-X(7:9)
+      
+      Call VPRD(Rij,Rkj,Rmj)
+      Call Vprd(Rkj,Rkl,Rnk)
+      NRmj=DOT_PRODUCT(Rmj,Rmj)
+      NRnk=DOT_PRODUCT(Rnk,Rnk)
+      NRkj=sqrt(DOT_PRODUCT(Rkj,Rkj))
+
+      Coverd=DOT_PRODUCT(Rmj,Rnk)/sqrt(NRmj*NRnk)
+      CALL VPRD(Rmj,Rnk,T)
+      SignPhi=Sign(1.d0,DOT_PRODUCT(Rkj,T))
+!      SignPhi=Sign(1.d0,DOT_PRODUCT(Rkj,T))
+!      WRITE(*,*) "DBG Tor 2 signphi, dacos(coverd), sign(1.d0,signphi)", &
+!           signphi, dacos(coverd), sign(1.d0,signphi)
+!
+      TORS=-1.d0*DACOS(COVERD)*signPhi
+      
+      if (debug) WRITE(*,*) "Torsion derivs 3, Phi=", Tors*180./3.1415926,Iat1,Iat2,Iat3,Iat4
+!
+! ----------------------------------------------------------------
+! --- CALCULATE FIRST DERIVATIVES
+! ----------------------------------------------------------------
+      DI(1:3)=NRkj/NRmj*Rmj
+      DI(10:12)=-NRkj/NRnk*Rnk
+      DI(4:6)=(DOT_PRODUCT(Rij,Rkj)/Nrkj**2-1.d0)*DI(1:3)-(DOT_PRODUCT(Rkl,Rkj)/NRkj**2)*DI(10:12)
+      DI(7:9)=(DOT_PRODUCT(Rkl,Rkj)/Nrkj**2-1.d0)*DI(10:12)-(DOT_PRODUCT(Rij,Rkj)/NRkj**2)*DI(1:3)
+
+
+      DI=DI*SignPhi
+
+      if (debug) THEN
+         WRITE(*,*) 'DER TOR 3'
+         WRITE(*,*) DI(1:3)
+         WRITE(*,*) DI(4:6)
+         WRITE(*,*) DI(7:9)
+         WRITE(*,*) DI(10:12)
+      END IF
+ 
+      DO I=1,3
+         B(I,IAT1)=DI(I)
+         B(I,IAT2)=DI(I+3)
+         B(I,IAT3)=DI(I+6)
+         B(I,IAT4)=DI(I+9)
+      END DO
+
+      if (debug)    WRITE(*,*) "============= CONSTRAINTS_TORSION_DER3  over ==============="
+
+    END SUBROUTINE CONSTRAINTS_TORSION_DER3
+
+
+!     ..................................................................
+      SUBROUTINE CONSTRAINTS_TORSION_DER2(NAT,IAT1,IAT2,IAT3,IAT4,R0,DZDC)
+!     ******************************************************************
+!     **
+!     **  CONSTRAINS THE TORSION OF IAT1-IAT2---IAT3-IAT4
+!
+!          corresponding to P - Q - R - S atoms iun the following
+! This comes from ADF, and in turns comes from formulas from: "Vibrational States", S.Califano (Wiley, 1976)
+    !       derivatives w.r.t P: (a*b)B/abs(a*b)**2)
+    !       w.r.t.  S : (b*c)B/abs(b*c)**2
+    !       w.r.t.  Q : 1/B**2  x ( C*dS + (a-b)*dP ) * b
+    !       where * stands for vector product and capitals denote lengths
+    !       -------------------------------------------------------------
+    !       a=P-Q
+    !       b=R-Q
+    !       theta=angle(a,b)
+    !       phi (negative of the dihedral angle)
+    !       c=S-R
+
+!     **
+!     ******************************************************************
+      use VarTypes
+      IMPLICIT none
+      INTEGER(KINT),INTENT(IN) :: NAT
+      INTEGER(KINT),INTENT(IN) :: IAT1
+      INTEGER(KINT),INTENT(IN) :: IAT2
+      INTEGER(KINT),INTENT(IN) :: IAT3
+      INTEGER(KINT),INTENT(IN) :: IAT4
+      REAL(KREAL)   ,INTENT(IN) :: R0(3,NAT)
+      REAL(KREAL)   ,INTENT(OUT):: DZDC(3,NAT)
+      REAL(KREAL)               :: DI(12)
+      REAL(KREAL)               :: A(3),B(3),C(3),Vec(3)
+      REAL(KREAL)               :: U(3),V(3)
+      real(KREAL)               :: phi
+      integer(KINT)            :: i,j,ichk,k
+
+      REAL(KREAL)   :: norm1,norm2,norm3
+      real(KREAL) :: s,bleng
+
+      REAL(KREAL), PARAMETER :: eps=1e-10
+
+      LOGICAL :: Debug,Failed,valid
+      EXTERNAL :: Valid
+
+!     ******************************************************************
+!
+      debug=valid('TORSION_DER') 
+      if (debug)    WRITE(*,*) "============= Entering CONSTRAINTS_TORSION_DER2 ==============="
+
+      if (debug) THEN
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt1,R0(:,IAT1)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt2,R0(:,IAT2)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt3,R0(:,IAT3)
+         WRITE(*,'(1X,I5,3(1X,F10.6))') IAt4,R0(:,IAT4)
+      END IF
+!
+      A=R0(:,IAT1)-R0(:,IAT2)
+      B=R0(:,IAT3)-R0(:,IAT2)
+      C=R0(:,IAT4)-R0(:,IAT3)
+      DZDC=0.
+   
+      
+! ----------------------------------------------------------------
+! --- We check that PQR and QRS are not aligned.
+! If they are, we return 0. as derivatives instead of just crashing.
+! ----------------------------------------------------------------
+    call produit_vect (b(1),b(2),b(3),Norm1,c(1),c(2),c(3),Norm2, vec(1),vec(2),vec(3),Norm3)
+     norm1=sqrt(dot_product(b,b))
+     norm2=sqrt(dot_product(c,c))
+    Failed=.FALSE.
+     
+     if (Norm3 <= eps) then
+           WRITE(*,*) '*** WARNING: ILL-DEFINED DIHEDRAL ANGLE(S)'
+           write (*,*) 'QRS aligned',iat2,iat3,iat4
+           Failed=.TRUE.
+     end if
+     call produit_vect (b(1),b(2),b(3),Norm1,a(1),a(2),a(3),Norm2, vec(1),vec(2),vec(3),Norm3)
+     if (norm3 <= eps) then
+           WRITE(*,*) '*** WARNING: ILL-DEFINED DIHEDRAL ANGLE(S)'
+           write (*,*) 'PQR aligned',iat1,iat2,iat3
+           Failed=.TRUE.
+     end if
+
+! ----------------------------------------------------------------
+! --- CALCULATE FIRST DERIVATIVES
+! ----------------------------------------------------------------
+
+     bleng = sqrt (b(1)**2 + b(2)**2 + b(3)**2)
+     call produit_vect (a(1),a(2),a(3),Norm1,b(1),b(2),b(3),Norm2, vec(1),vec(2),vec(3),Norm3)
+     s = bleng / (vec(1)**2 + vec(2)**2 + vec(3)**2)
+!     dzdc(:,ip,3,ip) = s * vec
+      dzdc(:,iat1) = s * vec
+
+     call produit_vect (b(1),b(2),b(3),Norm1,c(1),c(2),c(3),Norm2, vec(1),vec(2),vec(3),Norm3)
+     s = bleng / (vec(1)**2 + vec(2)**2 + vec(3)**2)
+!    dzdc(:,is,3,ip) = s * vec
+     dzdc(:,iat4) = s * vec
+
+
+     call produit_vect (c(1),c(2),c(3),Norm1,    &
+          dzdc(1,iat4),  dzdc(2,iat4),  dzdc(3,iat4), Norm2, &
+          u(1),u(2),u(3),Norm3)
+     vec = a - b
+     call produit_vect (vec(1),vec(2),vec(3),Norm1,    &
+          dzdc(1,iat1),  dzdc(2,iat1),  dzdc(3,iat1), Norm2, &
+          v(1),v(2),v(3),Norm3)
+     vec = u + v
+     call produit_vect (vec(1),vec(2),vec(3),Norm1,    &
+          b(1), b(2), b(3), Norm2, &
+          u(1),u(2),u(3),Norm3)
+
+!     dzdc(:,iq,3,ip) = u / bleng**2
+!     dzdc(:,ir,3,ip) = - (dzdc(:,ip,3,ip) + dzdc(:,iq,3,ip) + dzdc(:,is,3,ip))
+     dzdc(:,iat2) = u / bleng**2
+     dzdc(:,iat3) = - (dzdc(:,iat1) + dzdc(:,iat2) + dzdc(:,iat4))
+
+      if (debug) THEN
+         WRITE(*,*) 'DER TOR 2'
+         WRITE(*,*) DZDC(:,IAT1)
+         WRITE(*,*) DZDC(:,IAT2)
+         WRITE(*,*) DZDC(:,IAT3)
+         WRITE(*,*) DZDC(:,IAT4)
+      END IF
+ 
+      if (Failed) DZDC=0.
+
+      if (debug)    WRITE(*,*) "============= CONSTRAINTS_TORSION_DER2  over ==============="
+
+    END SUBROUTINE CONSTRAINTS_TORSION_DER2
+
+! Not yet implemented
+
+
+! !     ..................................................................
+!       SUBROUTINE CONSTRAINTS_COGSEP_DER(NAT,GROUP1,GROUP2,R0,RMass,B)
+! !     ******************************************************************
+! !     **  SET UP CONSTRAINT IN COORDINATE SPACE                       **
+! !     **  CONSTRAINT IS THE DISTANCE BETWEEN THE CENTER OF GRAVITIES  **
+! !     **  OF TWO NAMED GROUPS                                         **
+! !     **                                                              **
+! !     **  THE CONSTRAINT IS EXPRESSED AS A+B*R+0.5*R*C*R=0            **
+! !     **                                                              **
+! !     ******************************************************************
+!        use Geometry_module
+
+!        Use VarTypes
+!       IMPLICIT NONE
+!       INTEGER(KINT)  ,INTENT(IN) :: NAT
+!       CHARACTER(*),INTENT(IN) :: GROUP1  ! NAME OF FIRST GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP2  ! NAME OF SECOND GROUP
+!       REAL(KREAL)     ,INTENT(OUT):: B(3,NAT)
+!       REAL(KREAL)     ,INTENT(IN) :: R0(3,NAT)
+!       REAL(KREAL)                 :: RMASS(NAT),A
+!       LOGICAL(4)              :: TMEMBER1(NAT)
+!       LOGICAL(4)              :: TMEMBER2(NAT)
+!       REAL(KREAL)                 :: SUMMASS1,SUMMASS2
+!       REAL(KREAL)                 :: COG1(3)   ! COG OF FIRST GROUP
+!       REAL(KREAL)                 :: COG2(3)   ! COG OF SECOND GROUP
+!       REAL(KREAL)                 :: X(3)      ! COG1-COG2
+!       REAL(KREAL)                 :: COGSEP    
+!       REAL(KREAL)                 :: DADX(3)   
+!       INTEGER(KINT)              :: I,J,IAT,IAT1,IAT2
+! !     ******************************************************************
+
+!       CALL GROUPLIST_MEMBERS(GROUP1,TMEMBER1)
+!       CALL GROUPLIST_MEMBERS(GROUP2,TMEMBER2)
+! !
+! !     ==================================================================
+! !     ==  CALCULATE CENTERS OF GRAVITY                                ==
+! !     ==================================================================
+!       SUMMASS1=0.D0
+!       SUMMASS2=0.D0
+!       COG1(:)=0.D0
+!       COG2(:)=0.D0
+!       DO IAT=1,NAT
+!         IF(TMEMBER1(IAT)) THEN
+!           SUMMASS1=SUMMASS1+RMASS(IAT)
+!           COG1(:)=COG1(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!         IF(TMEMBER2(IAT)) THEN
+!           SUMMASS2=SUMMASS2+RMASS(IAT)
+!           COG2(:)=COG2(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!       ENDDO
+!       COG1(:)=COG1(:)/SUMMASS1
+!       COG2(:)=COG2(:)/SUMMASS2
+! !
+! !     =============================================================
+! !     ==  SEPARATION BETWEEN THE CENTERS OF GRAVITY              ==
+! !     =============================================================
+!       X(:)=COG1(:)-COG2(:)
+! !
+! !     =============================================================
+! !     ==  CALCULATE A(X) AND ITS DERIVATIVES                     ==
+! !     =============================================================
+!       A=SQRT(DOT_PRODUCT(X(:),X(:)))
+!       DADX(:)=X(:)/A
+
+!       DO IAT1=1,NAT
+!          IF(TMEMBER1(IAT1)) THEN
+!             B(:,IAT1)=B(:,IAT1)+DADX(:)*RMASS(IAT1)/SUMMASS1
+!          END IF
+!          IF(TMEMBER2(IAT1)) THEN
+!             B(:,IAT1)=B(:,IAT1)-DADX(:)*RMASS(IAT1)/SUMMASS2
+!          END IF
+!       END DO
+
+!       END SUBROUTINE CONSTRAINTS_COGSEP_DER
+
+
+! !     ..................................................................
+!       SUBROUTINE CONSTRAINTS_COGANG_DER(NAT,GROUP1,GROUP2,GROUP3,R0,RMass,B)
+! !     ******************************************************************
+! !     **  SET UP CONSTRAINT IN COORDINATE SPACE                       **
+! !     **  CONSTRAINT IS THE ANGLE    BETWEEN THE CENTER OF GRAVITIES  **
+! !     **  OF THREE NAMED GROUPS                                       **
+! !     **                                                              **
+! !     **  THE CONSTRAINT IS EXPRESSED AS A+B*R+0.5*R*C*R=0            **
+! ! This makes heavy use of BONDANGLEDERIVS
+! !     **                                                              **
+! !     ******************************************************************
+!       IMPLICIT NONE
+!       INTEGER(KINT)  ,INTENT(IN) :: NAT
+!       CHARACTER(*),INTENT(IN) :: GROUP1  ! NAME OF FIRST GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP2  ! NAME OF SECOND GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP3  ! NAME OF THIRD GROUP
+!       REAL(KREAL)     ,INTENT(OUT):: B(3,NAT)
+!       REAL(KREAL)     ,INTENT(IN) :: R0(3,NAT)
+!       REAL(KREAL)                 :: RMASS(NAT)
+!       LOGICAL(4)              :: TMEMBER1(NAT)
+!       LOGICAL(4)              :: TMEMBER2(NAT)
+!       LOGICAL(4)              :: TMEMBER3(NAT)
+!       REAL(KREAL)                 :: SUMMASS1,SUMMASS2, SUMMASS3
+!       REAL(KREAL)                 :: COG1(3)   ! COG OF FIRST GROUP
+!       REAL(KREAL)                 :: COG2(3)   ! COG OF SECOND GROUP
+!       REAL(KREAL)                 :: COG3(3)   ! COG OF THIRD GROUP
+!       REAL(KREAL)            :: DCOG1(3,NAT), DCOG2(3,NAT), DCOG3(3,NAT)
+!       REAL(KREAL)                 :: vecU(3), vecV(3)
+!       REAL(KREAL)                 :: UU, VV, UV
+!       INTEGER(KINT)              :: I,J,IAT,IAT1,IAT2,JAT
+!       REAL(KREAL)           :: Pi
+! ! From BONDANGLEDERIVS
+!       REAL(KREAL)               :: D    ! 1/SQRT(A*B)
+!       REAL(KREAL)               :: DUUDX(3,NAT)
+!       REAL(KREAL)               :: DVVDX(3,NAT)
+!       REAL(KREAL)               :: DUVDX(3,NAT)
+!       REAL(KREAL)               :: DDDX(3,NAT)
+!       REAL(KREAL)               :: DJDX(3,NAT)
+!       REAL(KREAL)               :: DVDX(3,NAT)
+!       REAL(KREAL)               :: DGDX(3,NAT)    ! D(A*B)/DX
+!       REAL(KREAL)               :: AB,AB2N,V,PREFAC
+!       REAL(KREAL)               :: PHI,COSPHI,SINPHI
+!       REAL(KREAL)               :: DIVDX,AI
+
+
+! !     ******************************************************************
+!       CALL GROUPLIST_MEMBERS(GROUP1,TMEMBER1)
+!       CALL GROUPLIST_MEMBERS(GROUP2,TMEMBER2)
+!       CALL GROUPLIST_MEMBERS(GROUP3,TMEMBER3)
+! !
+! !     ==================================================================
+! !     ==  CALCULATE CENTERS OF GRAVITY                                ==
+! !     ==================================================================
+!       SUMMASS1=0.D0
+!       SUMMASS2=0.D0
+!       SUMMASS3=0.D0
+!       COG1(:)=0.D0
+!       COG2(:)=0.D0
+!       COG3(:)=0.D0
+!       DO IAT=1,NAT
+!         IF(TMEMBER1(IAT)) THEN
+!           SUMMASS1=SUMMASS1+RMASS(IAT)
+!           COG1(:)=COG1(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!         IF(TMEMBER2(IAT)) THEN
+!           SUMMASS2=SUMMASS2+RMASS(IAT)
+!           COG2(:)=COG2(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!         IF(TMEMBER3(IAT)) THEN
+!           SUMMASS3=SUMMASS3+RMASS(IAT)
+!           COG3(:)=COG3(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+
+!       ENDDO
+!       COG1(:)=COG1(:)/SUMMASS1
+!       COG2(:)=COG2(:)/SUMMASS2
+!       COG3(:)=COG3(:)/SUMMASS3
+! !
+! !
+!       vecU(:)=COG1(:)-COG2(:)
+!       vecV(:)=COG3(:)-COG2(:)
+
+!       UV=DOT_PRODUCT(vecU,vecV)
+!       UU=DOT_PRODUCT(vecU,vecU)
+!       VV=DOT_PRODUCT(vecV,vecV)
+! ! We now calculate the first derivatives of the COG vs the atomic
+! ! Coords... 
+!       DCOG1=0.
+!       DCOG2=0.
+!       DCOG3=0.
+!       DO IAT=1,NAT
+!         IF (TMEMBER1(IAT))  DCOG1(:,IAT)=RMASS(IAT)/SUMMASS1
+!         IF (TMEMBER2(IAT))  DCOG2(:,IAT)=RMASS(IAT)/SUMMASS2
+!         IF (TMEMBER3(IAT))  DCOG3(:,IAT)=RMASS(IAT)/SUMMASS3
+!       END DO
+! ! We now calculate the first derivatives of UU, VV, UV
+!       DUUDX=0.
+!       DVVDX=0.
+!       DUVDX=0.
+!       DO IAT=1,NAT
+!         DUUDX(:,IAT)=2.D0*(COG1(:)-COG2(:))*(DCOG1(:,IAT)-DCOG2(:,IAT))
+!         DVVDX(:,IAT)=2.D0*(COG3(:)-COG2(:))*(DCOG3(:,IAT)-DCOG2(:,IAT))
+!         DUVDX(:,IAT)=(COG3(:)-COG2(:))*(DCOG1(:,IAT)-DCOG2(:,IAT)) +    &
+!         (DCOG3(:,IAT)-DCOG2(:,IAT))*(COG1(:)-COG2(:))
+!       END DO
+
+! !       WRITE(*,*) 'PFL DER COGANGLE'
+! !       WRITE(*,'(15(1X,F10.6))') DUUDX(:,:)
+! !       WRITE(*,'(15(1X,F10.6))') DVVDX(:,:)
+! !       WRITE(*,'(15(1X,F10.6))') DUVDX(:,:)
+
+
+! ! We now go for the hard part: calculate Phi, dPhi/dx, d2Phi/dxidxj
+!       Pi=DACOS(-1.D0)
+!       AB=UU*VV
+!       D=SQRT(AB)
+!       COSPHI=UV/D       !=COS(PHI)
+!       PHI=DACOS(COSPHI)
+! !      WRITE(*,*) 'COGANGLE Phi=',Phi,Phi*180/Pi
+! !     --- CALCULATE DERIVATIVE OF ARCCOS
+!       SINPHI=DSQRT(1.D0-COSPHI**2)
+!       V=-1.D0/SINPHI                 !=-SIN(PHI)=D(ACOS(PHI))/D(COSPHI)
+! ! --- CALCULATE FIRST DERIVATIVES OF G=A*B
+!       DGDX(:,:)=DUUDX(:,:)*VV+DVVDX(:,:)*UU
+! ! --- CALCULATE DDDX
+!       AB2N=0.5D0/D
+!       DDDX(:,:)=AB2N*DGDX(:,:)
+! ! --- CALCULATE FIRST DERIVATIVES OF J = COS(PHI)
+!       PREFAC=1.D0/AB
+!       DJDX(:,:)=(DUVDX(:,:)*D-UV*DDDX(:,:))*PREFAC
+! ! --- CALCULATE FIRST DERIVATIVE
+!       B(:,:)=DJDX(:,:)*V
+
+!       END SUBROUTINE CONSTRAINTS_COGANG_DER
+
+! !     ..................................................................
+!       SUBROUTINE CONSTRAINTS_COGTORSION_DER(NAT,GROUP1,GROUP2, GROUP3,GROUP4, R0,RMAss,B)
+! !     ******************************************************************
+! !     **  SET UP CONSTRAINT IN COORDINATE SPACE                       **
+! !     **  CONSTRAINT IS THE ANGLE    BETWEEN THE CENTER OF GRAVITIES  **
+! !     **  OF THREE NAMED GROUPS                                       **
+! !     **                                                              **
+! !     **  THE CONSTRAINT IS EXPRESSED AS A+B*R+0.5*R*C*R=0            **
+! ! This makes heavy use of BONDANGLEDERIVS
+! !     **                                                              **
+! !     ******************************************************************
+!       IMPLICIT NONE
+!       INTEGER(KINT)  ,INTENT(IN) :: NAT
+!       CHARACTER(*),INTENT(IN) :: GROUP1  ! NAME OF FIRST GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP2  ! NAME OF SECOND GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP3  ! NAME OF THIRD GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP4  ! NAME OF FOURTH GROUP
+!       REAL(KREAL)     ,INTENT(OUT):: B(3,NAT)
+!       REAL(KREAL)     ,INTENT(IN) :: R0(3,NAT)
+!       REAL(KREAL)                 :: RMASS(NAT)
+!       LOGICAL(4)              :: TMEMBER1(NAT)
+!       LOGICAL(4)              :: TMEMBER2(NAT)
+!       LOGICAL(4)              :: TMEMBER3(NAT)
+!       LOGICAL(4)              :: TMEMBER4(NAT)
+!       REAL(KREAL)                 :: SUMMASS1,SUMMASS2, SUMMASS3, SUMMASS4
+!       REAL(KREAL)                 :: COG1(3)   ! COG OF FIRST GROUP
+!       REAL(KREAL)                 :: COG2(3)   ! COG OF SECOND GROUP
+!       REAL(KREAL)                 :: COG3(3)   ! COG OF THIRD GROUP
+!       REAL(KREAL)                 :: COG4(3)   ! COG OF FOURTH GROUP
+! ! Even thought D COG(i)/DXj =0 (ie COG_x depends only on x-coordinates
+! ! of the atoms, not on y or z), we store a 3,3*NAT matrix to make 
+! ! handling easier below
+!       REAL(KREAL)                 :: DCOG1(3,3,NAT), DCOG2(3,3,NAT),              &
+!                                 DCOG3(3,3,NAT), DCOG4(3,3,NAT)
+!       REAL(KREAL)                 :: T(3), U(3), R(3), W(3), P(3), Q(3)
+!       REAL(KREAL)                 :: PP, QQ, PQ
+!       INTEGER(KINT)              :: I,J,IAT,IAT1,IAT2,JAT
+!       REAL(KREAL)                 :: Pi, Phi
+! ! From BONDANGLEDERIVS
+!       REAL(KREAL)               :: D    ! SQRT(PP*QQ)
+!       REAL(KREAL)               :: DPDX(3,3,NAT)
+!       REAL(KREAL)               :: DQDX(3,3,NAT)
+!       REAL(KREAL)               :: DPPDX(3,NAT)
+!       REAL(KREAL)               :: DQQDX(3,NAT)
+!       REAL(KREAL)               :: DPQDX(3,NAT)
+!       REAL(KREAL)               :: DDDX(3,NAT)
+!       REAL(KREAL)               :: DJDX(3,NAT) ! D(C/D)/DX*D2
+!       REAL(KREAL)               :: DVDX(3,NAT)
+!       REAL(KREAL)               :: DGDX(3,NAT)    ! D(A*B)/DX
+!       REAL(KREAL)               :: AB,AB2N,V,PREFAC,ABYB,ABYB2N
+!       REAL(KREAL)               :: COSPHI,SINPHI
+
+
+! !     ******************************************************************
+
+! !      WRITE(*,*) 'ENTERING SET_COGTORSION'
+! !      WRITE(*,*) 'G1:',TRIM(GROUP1),' G2:',TRIM(GROUP2),' G3:',TRIM(GROUP3),' G4:',TRIM(GROUP4)
+
+! !     ==================================================================
+! !     == DETERMINE GROUPS AND ATOM-MASSES
+! !     ==================================================================
+
+!       CALL GROUPLIST_MEMBERS(GROUP1,TMEMBER1)
+!       CALL GROUPLIST_MEMBERS(GROUP2,TMEMBER2)
+!       CALL GROUPLIST_MEMBERS(GROUP3,TMEMBER3)
+!       CALL GROUPLIST_MEMBERS(GROUP4,TMEMBER4)
+
+! !
+! !     ==================================================================
+! !     == CALCULATE CENTER OF GRAVITY FOR GROUPS
+! !     ==================================================================
+!       SUMMASS1=0.D0
+!       SUMMASS2=0.D0
+!       SUMMASS3=0.D0
+!       SUMMASS4=0.D0
+
+!       COG1=0.D0
+!       COG2=0.D0
+!       COG3=0.D0
+!       COG4=0.D0
+
+!       DO IAT=1,NAT
+! ! One atom can belong to many groups as we are looking at
+! ! center of gravity of the groups
+!         IF (TMEMBER1(IAT)) THEN
+!           SUMMASS1=SUMMASS1+RMASS(IAT)
+!           COG1(:)=COG1(:)+RMASS(IAT)*R0(:,IAT)
+!         END IF
+!         IF (TMEMBER2(IAT)) THEN
+!           SUMMASS2=SUMMASS2+RMASS(IAT)
+!           COG2(:)=COG2(:)+RMASS(IAT)*R0(:,IAT)
+!         END IF
+!         IF (TMEMBER3(IAT)) THEN
+!           SUMMASS3=SUMMASS3+RMASS(IAT)
+!           COG3(:)=COG3(:)+RMASS(IAT)*R0(:,IAT)
+!         END IF
+!         IF (TMEMBER4(IAT)) THEN
+!           SUMMASS4=SUMMASS4+RMASS(IAT)
+!           COG4(:)=COG4(:)+RMASS(IAT)*R0(:,IAT)
+!         END IF
+!       ENDDO
+
+!       COG1(:)=COG1(:)/SUMMASS1
+!       COG2(:)=COG2(:)/SUMMASS2
+!       COG3(:)=COG3(:)/SUMMASS3
+!       COG4(:)=COG4(:)/SUMMASS4
+!       T(:)=COG1(:)-COG2(:)
+!       U(:)=COG3(:)-COG2(:)
+!       R(:)=COG4(:)-COG3(:)
+!       W(:)=COG2(:)-COG3(:)
+
+!       CALL VPRD(T,U,P)                     ! P=CROSS-PRODUCT(T,U)
+!       CALL VPRD(W,R,Q)
+!       PQ=DOT_PRODUCT(P,Q)
+!       PP=DOT_PRODUCT(P,P)
+!       QQ=DOT_PRODUCT(Q,Q)
+!       ABYB=PP*QQ
+!       D=SQRT(ABYB)
+
+!       ABYB2N=0.5D0/D
+!       COSPHI=PQ/D
+!       Phi=DACOS(COSPHI)
+!       Pi=DACOS(-1.0D0)
+!       SINPHI=DSQRT(1.D0-(COSPHI)**2.D0)
+
+! ! --- CALCULATE DERIVATIVE OF ARCCOS
+!       IF (dabs(DABS(COSPHI)-1.d0) < 1.D-9) THEN
+!         WRITE(*,*)   'WARNING: DERIVATIVE OF TORSION AT ZERO AND PI IS 
+!      &UNDEFINED!'
+!         V=0.D0
+!       ELSE
+!         V=-1.D0/SINPHI
+!       ENDIF
+
+! !      WRITE(*,*)  'Phi et al',Phi,Phi*180./Pi,cosphi,sinphi,V
+
+! ! We now calculate the first derivatives of the COG vs the atomic
+! ! Coords... 
+!       DCOG1=0.
+!       DCOG2=0.
+!       DCOG3=0.
+!       DCOG4=0.
+!       DO IAT=1,NAT
+!         IF (TMEMBER1(IAT))  THEN
+!            DO J=1,3
+!               DCOG1(J,J,IAT)=RMASS(IAT)/SUMMASS1
+!            END DO
+!         END IF
+!         IF (TMEMBER2(IAT))  THEN
+!            DO J=1,3
+!               DCOG2(J,J,IAT)=RMASS(IAT)/SUMMASS2
+!            END DO
+!         END IF
+!         IF (TMEMBER3(IAT))  THEN
+!            DO J=1,3
+!               DCOG3(J,J,IAT)=RMASS(IAT)/SUMMASS3
+!            END DO
+!         END IF
+!         IF (TMEMBER4(IAT))  THEN
+!            DO J=1,3
+!               DCOG4(J,J,IAT)=RMASS(IAT)/SUMMASS4
+!            END DO
+!         END IF
+!       END DO
+
+! ! We now calculate the first derivatives of P, Q
+!       DPDX=0.
+!       DQDX=0.
+!       DO I=1,NAT
+!          DO J=1,3
+!             DPDX(1,J,I)=(DCOG1(2,J,I)-DCOG2(2,J,I))*(COG3(3)-COG2(3))     &
+!      &                 +(COG1(2)-COG2(2))*(DCOG3(3,J,I)-DCOG2(3,J,I))     &
+!      &                 -(DCOG1(3,J,I)-DCOG2(3,J,I))*(COG3(2)-COG2(2))     &
+!      &                 -(COG1(3)-COG2(3))*(DCOG3(2,J,I)-DCOG2(2,J,I)) 
+!             DPDX(2,J,I)=(DCOG1(3,J,I)-DCOG2(3,J,I))*(COG3(1)-COG2(1))     &
+!      &                 +(COG1(3)-COG2(3))*(DCOG3(1,J,I)-DCOG2(1,J,I))     &
+!      &                 -(DCOG1(1,J,I)-DCOG2(1,J,I))*(COG3(3)-COG2(3))     &
+!      &                 -( COG1(1)-COG2(1))*(DCOG3(3,J,I)-DCOG2(3,J,I)) 
+!             DPDX(3,J,I)=(DCOG1(1,J,I)-DCOG2(1,J,I))*(COG3(2)-COG2(2))     &
+!      &                 +(COG1(1)-COG2(1))*(DCOG3(2,J,I)-DCOG2(2,J,I))     &
+!      &                 -(DCOG1(2,J,I)-DCOG2(2,J,I))*(COG3(1)-COG2(1))     &
+!      &                 -(COG1(2)-COG2(2))*(DCOG3(1,J,I)-DCOG2(1,J,I)) 
+!             DQDX(1,J,I)=(DCOG2(2,J,I)-DCOG3(2,J,I))*(COG4(3)-COG3(3))     &
+!      &                 +(COG2(2)-COG3(2))*(DCOG4(3,J,I)-DCOG3(3,J,I))     &
+!      &                 -(DCOG2(3,J,I)-DCOG3(3,J,I))*(COG4(2)-COG3(2))     &
+!      &                 -(COG2(3)-COG3(3))*(DCOG4(2,J,I)-DCOG3(2,J,I)) 
+!             DQDX(2,J,I)=(DCOG2(3,J,I)-DCOG3(3,J,I))*(COG4(1)-COG3(1))     &
+!      &                 +(COG2(3)-COG3(3))*(DCOG4(1,J,I)-DCOG3(1,J,I))     &
+!      &                 -(DCOG2(1,J,I)-DCOG3(1,J,I))*(COG4(3)-COG3(3))     &
+!      &                 -( COG2(1)-COG3(1))*(DCOG4(3,J,I)-DCOG3(3,J,I)) 
+!             DQDX(3,J,I)=(DCOG2(1,J,I)-DCOG3(1,J,I))*(COG4(2)-COG3(2))     &
+!      &                 +(COG2(1)-COG3(1))*(DCOG4(2,J,I)-DCOG3(2,J,I))     &
+!      &                 -(DCOG2(2,J,I)-DCOG3(2,J,I))*(COG4(1)-COG3(1))     &
+!      &                 -(COG2(2)-COG3(2))*(DCOG4(1,J,I)-DCOG3(1,J,I)) 
+
+!          END DO
+!       END DO
+
+
+! !       WRITE(*,*) 'DP/DX(1) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DPDX(1,1:3,5:8)
+! !       WRITE(*,*) 'DP/DX(2) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DPDX(2,1:3,5:8)
+! !       WRITE(*,*) 'DP/DX(3) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DPDX(3,1:3,5:8)
+! !       WRITE(*,*) 'DQ/DX(1) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DQDX(1,1:3,5:8)
+! !       WRITE(*,*) 'DQ/DX(2) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DQDX(2,1:3,5:8)
+! !       WRITE(*,*) 'DQ/DX(3) '
+! !       WRITE(*,'(1X,12(F9.5,1X))') DQDX(3,1:3,5:8)
+
+! ! We now calculate the first derivatives of PP, QQ and PQ and DD/DX*2D
+      
+!       DPPDX=0.
+!       DQQDX=0.
+!       DPQDX=0.
+!       PREFAC=1.d0/ABYB
+!       DO IAT=1,NAT
+!          DO J=1,3
+!             DPPDX(J,IAT)=2.D0*(P(1)*DPDX(1,J,IAT)+P(2)*DPDX(2,J,IAT)+
+!      &                P(3)*DPDX(3,J,IAT))
+!             DQQDX(J,IAT)=2.D0*(Q(1)*DQDX(1,J,IAT)+Q(2)*DQDX(2,J,IAT)+ 
+!      &                Q(3)*DQDX(3,J,IAT))
+!             DPQDX(J,IAT)=P(1)*DQDX(1,J,IAT)+DPDX(1,J,IAT)*Q(1)  
+!      &               +P(2)*DQDX(2,J,IAT)+DPDX(2,J,IAT)*Q(2)
+!      &               +P(3)*DQDX(3,J,IAT)+DPDX(3,J,IAT)*Q(3) 
+!             DGDX(J,IAT)=DPPDX(J,IAT)*QQ+PP*DQQDX(J,IAT)
+!             DDDX(J,IAT)=DGDX(J,IAT)*ABYB2N
+!             DJDX(J,IAT)=(DPQDX(J,IAT)*D-PQ*DDDX(J,IAT))*PREFAC
+!             B(J,IAT)=DJDX(J,IAT)*V
+!          END DO
+!       END DO
+      
+!       END SUBROUTINE CONSTRAINTS_COGTORSION_DER
+
+
+! !     ..................................................................
+!       SUBROUTINE CONSTRAINTS_COGDIFF_DER(NAT,GROUP1,GROUP2,   
+!      &    GROUP3,R0,RMAss,B)
+! !     ******************************************************************
+! !     **  SET UP CONSTRAINT IN COORDINATE SPACE                       **
+! !     **  CONSTRAINT IS THE DIFFERENCE BETWEEN THE DISTANCES BETWEEN  **
+! !     **  THE CENTER OF GRAVITIES  OF THREE NAMED GROUPS              **
+! !     **                                                              **
+! !     **  THE CONSTRAINT IS EXPRESSED AS A+B*R+0.5*R*C*R=0            **
+! !     **                                                              **
+! !     ******************************************************************
+!       IMPLICIT NONE
+!       INTEGER(KINT)  ,INTENT(IN) :: NAT
+!       CHARACTER(*),INTENT(IN) :: GROUP1  ! NAME OF FIRST GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP2  ! NAME OF SECOND GROUP
+!       CHARACTER(*),INTENT(IN) :: GROUP3  ! NAME OF THIRD GROUP
+!       REAL(KREAL)     ,INTENT(OUT):: B(3,NAT)
+!       REAL(KREAL)     ,INTENT(IN) :: R0(3,NAT)
+!       REAL(KREAL)     ,INTENT(IN) :: RMASS(NAT)
+!       LOGICAL(4)              :: TMEMBER1(NAT)
+!       LOGICAL(4)              :: TMEMBER2(NAT)
+!       LOGICAL(4)              :: TMEMBER3(NAT)
+!       REAL(KREAL)                 :: SUMMASS1,SUMMASS2, SUMMASS3
+!       REAL(KREAL)                 :: COG1(3)   ! COG OF FIRST GROUP
+!       REAL(KREAL)                 :: COG2(3)   ! COG OF SECOND GROUP
+!       REAL(KREAL)                 :: COG3(3)   ! COG OF THIRD GROUP
+!       REAL(KREAL)            :: DCOG1(3,NAT), DCOG2(3,NAT), DCOG3(3,NAT)
+!       REAL(KREAL)                 :: vecU(3), vecV(3)
+!       REAL(KREAL)                 :: UU, VV, UV
+!       INTEGER(KINT)              :: I,J,IAT,IAT1,IAT2,JAT
+!       REAL(KREAL)           :: Pi
+! ! From BONDANGLEDERIVS
+!       REAL(KREAL)               :: D1,D2 
+!       REAL(KREAL)               :: DUUDX(3,NAT)
+!       REAL(KREAL)               :: DVVDX(3,NAT)
+!       REAL(KREAL)               :: DUVDX(3,NAT)
+!       REAL(KREAL)               :: DDDX(3,NAT)
+!       REAL(KREAL)               :: DJDX(3,NAT)
+!       REAL(KREAL)               :: DVDX(3,NAT)
+!       REAL(KREAL)               :: DGDX(3,NAT)    ! D(A*B)/DX
+!       REAL(KREAL)               :: DIDJ(3,NAT,3,NAT), DI(3,NAT)
+!       REAL(KREAL)               :: AB,AB2N,V,PREFAC
+!       REAL(KREAL)               :: PHI,COSPHI,SINPHI
+!       REAL(KREAL)               :: DIVDX,AI
+
+
+! !     ******************************************************************
+
+!       CALL GROUPLIST_MEMBERS(GROUP1,TMEMBER1)
+!       CALL GROUPLIST_MEMBERS(GROUP2,TMEMBER2)
+!       CALL GROUPLIST_MEMBERS(GROUP3,TMEMBER3)
+! !
+! !     ==================================================================
+! !     ==  CALCULATE CENTERS OF GRAVITY                                ==
+! !     ==================================================================
+!       SUMMASS1=0.D0
+!       SUMMASS2=0.D0
+!       SUMMASS3=0.D0
+!       COG1(:)=0.D0
+!       COG2(:)=0.D0
+!       COG3(:)=0.D0
+!       DO IAT=1,NAT
+!         IF(TMEMBER1(IAT)) THEN
+!           SUMMASS1=SUMMASS1+RMASS(IAT)
+!           COG1(:)=COG1(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!         IF(TMEMBER2(IAT)) THEN
+!           SUMMASS2=SUMMASS2+RMASS(IAT)
+!           COG2(:)=COG2(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+!         IF(TMEMBER3(IAT)) THEN
+!           SUMMASS3=SUMMASS3+RMASS(IAT)
+!           COG3(:)=COG3(:)+RMASS(IAT)*R0(:,IAT)
+!         ENDIF
+
+!       ENDDO
+!       COG1(:)=COG1(:)/SUMMASS1
+!       COG2(:)=COG2(:)/SUMMASS2
+!       COG3(:)=COG3(:)/SUMMASS3
+! !
+! !
+!       vecU(:)=COG1(:)-COG2(:)
+!       vecV(:)=COG3(:)-COG2(:)
+
+!       UU=DOT_PRODUCT(vecU,vecU)
+!       VV=DOT_PRODUCT(vecV,vecV)
+! ! We now calculate the first derivatives of the COG vs the atomic
+! ! Coords... 
+!       DCOG1=0.
+!       DCOG2=0.
+!       DCOG3=0.
+!       DO IAT=1,NAT
+!         IF (TMEMBER1(IAT))  DCOG1(:,IAT)=RMASS(IAT)/SUMMASS1
+!         IF (TMEMBER2(IAT))  DCOG2(:,IAT)=RMASS(IAT)/SUMMASS2
+!         IF (TMEMBER3(IAT))  DCOG3(:,IAT)=RMASS(IAT)/SUMMASS3
+!       END DO
+! ! We now calculate the first derivatives of UU, VV
+!       DUUDX=0.
+!       DVVDX=0.
+!       DO IAT=1,NAT
+!         DUUDX(:,IAT)=2.D0*(COG1(:)-COG2(:))*(DCOG1(:,IAT)-DCOG2(:,IAT))
+!         DVVDX(:,IAT)=2.D0*(COG3(:)-COG2(:))*(DCOG3(:,IAT)-DCOG2(:,IAT))
+!       END DO
+! !       WRITE(*,*) 'PFL DER COGDIFF'
+! !       WRITE(*,'(15(1X,F10.6))') DUUDX(:,:)
+! !       WRITE(*,'(15(1X,F10.6))') DVVDX(:,:)
+
+! ! We now use the fact that Sigma=sqrt(UU) - sqrt(VV) to calculate the 
+! ! first  derivatives of Sigma along R
+
+! ! Calculate the first derivatives and second derivatives.
+!       D1=dsqrt(UU)
+!       D2=dsqrt(VV)
+!       B(:,:)=0.5d0*( DUUDX(:,:)/D1 - DVVDX(:,:)/D2 )
+
+!       END SUBROUTINE CONSTRAINTS_COGDIFF_DER
+
Index: src/m_mrgrnk.f90
===================================================================
--- src/m_mrgrnk.f90	(revision 0)
+++ src/m_mrgrnk.f90	(revision 1)
@@ -0,0 +1,649 @@
+!!! Downloaded from http://www.fortran-2000.com/rank/index.html
+!!! on October 13th, 2010
+
+Module m_mrgrnk
+! PFL 2010 Oct 13 ->
+!Integer, Parameter :: kdp = selected_real_kind(15)
+Integer, Parameter :: kdp = KIND(1.0D0)
+! <- PFL 2010 Oct 13
+public :: mrgrnk
+private :: kdp
+private :: R_mrgrnk, I_mrgrnk, D_mrgrnk
+interface mrgrnk
+  module procedure D_mrgrnk, R_mrgrnk, I_mrgrnk
+end interface mrgrnk
+contains
+
+ Subroutine D_mrgrnk (XDONT, IRNGT)
+! Subroutine Dmrgrnk (XDONT, IRNGT)
+! __________________________________________________________
+!   MRGRNK = Merge-sort ranking of an array
+!   For performance reasons, the first 2 passes are taken
+!   out of the standard loop, and use dedicated coding.
+! __________________________________________________________
+! __________________________________________________________
+
+   use VarTypes
+ 
+   IMPLICIT NONE
+
+
+  interface
+     function valid(string) result (isValid)
+       logical                  :: isValid
+       character(*), intent(in) :: string
+     end function valid
+  end interface
+
+
+
+      Real (KREAL), Dimension (:), Intent (In) :: XDONT
+      Integer(KINT), Dimension (:), Intent (Out) :: IRNGT
+! __________________________________________________________
+      Real (KREAL) :: XVALA, XVALB
+!
+      Integer(KINT), ALLOCATABLE :: JWRKT(:) ! SIZE(IRNGT)
+      Integer(KINT) :: LMTNA, LMTNC, IRNG1, IRNG2
+      Integer(KINT) :: NVAL, IIND, IWRKD, IWRK, IWRKF, JINDA, IINDA, IINDB
+
+      LOGICAL :: Debug
+
+      Debug=Valid("DEBUG MRGRNK")
+
+  if (debug) WRITE(*,*) "================================= Entering DMRGRNK ==============="
+!
+      NVAL = Min (SIZE(XDONT), SIZE(IRNGT))
+      if (debug) WRITE(*,*) "D_mrgrnk",NVAL, Size(XDONT),SIZE(IRNGT)
+      Select Case (NVAL)
+      Case (:0)
+         Return
+      Case (1)
+         IRNGT (1) = 1
+         Return
+      Case Default
+         Continue
+      End Select
+
+      if (debug) WRITE(*,*) "D_mrgrnk, XDONT",XDONT
+      if (debug) WRITE(*,*) "D_mrgrnk, IRNGT",IRNGT
+
+      ALLOCATE(JWRKT(SIZE(IRNGT)))
+!
+!  Fill-in the index array, creating ordered couples
+!
+      Do IIND = 2, NVAL, 2
+         If (XDONT(IIND-1) <= XDONT(IIND)) Then
+            IRNGT (IIND-1) = IIND - 1
+            IRNGT (IIND) = IIND
+         Else
+            IRNGT (IIND-1) = IIND
+            IRNGT (IIND) = IIND - 1
+         End If
+      End Do
+      If (Modulo(NVAL, 2) /= 0) Then
+         IRNGT (NVAL) = NVAL
+      End If
+!
+!  We will now have ordered subsets A - B - A - B - ...
+!  and merge A and B couples into     C   -   C   - ...
+!
+      LMTNA = 2
+      LMTNC = 4
+!
+!  First iteration. The length of the ordered subsets goes from 2 to 4
+!
+      Do
+         If (NVAL <= 2) Exit
+!
+!   Loop on merges of A and B into C
+!
+         Do IWRKD = 0, NVAL - 1, 4
+            If ((IWRKD+4) > NVAL) Then
+               If ((IWRKD+2) >= NVAL) Exit
+!
+!   1 2 3
+!
+               If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Exit
+!
+!   1 3 2
+!
+               If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+                  IRNG2 = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNG2
+!
+!   3 1 2
+!
+               Else
+                  IRNG1 = IRNGT (IWRKD+1)
+                  IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNG1
+               End If
+               Exit
+            End If
+!
+!   1 2 3 4
+!
+            If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Cycle
+!
+!   1 3 x x
+!
+            If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   1 3 2 4
+                  IRNGT (IWRKD+3) = IRNG2
+               Else
+!   1 3 4 2
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+!
+!   3 x x x
+!
+            Else
+               IRNG1 = IRNGT (IWRKD+1)
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG1) <= XDONT(IRNGT(IWRKD+4))) Then
+                  IRNGT (IWRKD+2) = IRNG1
+                  If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   3 1 2 4
+                     IRNGT (IWRKD+3) = IRNG2
+                  Else
+!   3 1 4 2
+                     IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                     IRNGT (IWRKD+4) = IRNG2
+                  End If
+               Else
+!   3 4 1 2
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+3) = IRNG1
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+            End If
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 4
+         Exit
+      End Do
+!
+!  Iteration loop. Each time, the length of the ordered subsets
+!  is doubled.
+!
+      Do
+         If (LMTNA >= NVAL) Exit
+         IWRKF = 0
+         LMTNC = 2 * LMTNC
+!
+!   Loop on merges of A and B into C
+!
+         Do
+            IWRK = IWRKF
+            IWRKD = IWRKF + 1
+            JINDA = IWRKF + LMTNA
+            IWRKF = IWRKF + LMTNC
+            If (IWRKF >= NVAL) Then
+               If (JINDA >= NVAL) Exit
+               IWRKF = NVAL
+            End If
+            IINDA = 1
+            IINDB = JINDA + 1
+!
+!   Shortcut for the case when the max of A is smaller
+!   than the min of B. This line may be activated when the
+!   initial set is already close to sorted.
+!
+!          IF (XDONT(IRNGT(JINDA)) <= XDONT(IRNGT(IINDB))) CYCLE
+!
+!  One steps in the C subset, that we build in the final rank array
+!
+!  Make a copy of the rank array for the merge iteration
+!
+            JWRKT (1:LMTNA) = IRNGT (IWRKD:JINDA)
+!
+            XVALA = XDONT (JWRKT(IINDA))
+            XVALB = XDONT (IRNGT(IINDB))
+!
+            Do
+               IWRK = IWRK + 1
+!
+!  We still have unprocessed values in both A and B
+!
+               If (XVALA > XVALB) Then
+                  IRNGT (IWRK) = IRNGT (IINDB)
+                  IINDB = IINDB + 1
+                  If (IINDB > IWRKF) Then
+!  Only A still with unprocessed values
+                     IRNGT (IWRK+1:IWRKF) = JWRKT (IINDA:LMTNA)
+                     Exit
+                  End If
+                  XVALB = XDONT (IRNGT(IINDB))
+               Else
+                  IRNGT (IWRK) = JWRKT (IINDA)
+                  IINDA = IINDA + 1
+                  If (IINDA > LMTNA) Exit! Only B still with unprocessed values
+                  XVALA = XDONT (JWRKT(IINDA))
+               End If
+!
+            End Do
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 2 * LMTNA
+      End Do
+
+      DEALLOCATE(JWRKT)
+  if (debug) WRITE(*,*) "================================= Exiting DMRGRNK ==============="
+!
+      Return
+!
+    End Subroutine D_mrgrnk
+
+Subroutine R_mrgrnk (XDONT, IRNGT)
+! __________________________________________________________
+!   MRGRNK = Merge-sort ranking of an array
+!   For performance reasons, the first 2 passes are taken
+!   out of the standard loop, and use dedicated coding.
+! __________________________________________________________
+! _________________________________________________________
+      Real, Dimension (:), Intent (In) :: XDONT
+      Integer, Dimension (:), Intent (Out) :: IRNGT
+! __________________________________________________________
+      Real :: XVALA, XVALB
+!
+      Integer, Dimension (SIZE(IRNGT)) :: JWRKT
+      Integer :: LMTNA, LMTNC, IRNG1, IRNG2
+      Integer :: NVAL, IIND, IWRKD, IWRK, IWRKF, JINDA, IINDA, IINDB
+!
+
+      NVAL = Min (SIZE(XDONT), SIZE(IRNGT))
+!      if (debug) WRITE(*,*) "R_MRGRNK:", NVAL
+      Select Case (NVAL)
+      Case (:0)
+         Return
+      Case (1)
+         IRNGT (1) = 1
+         Return
+      Case Default
+         Continue
+      End Select
+!
+!  Fill-in the index array, creating ordered couples
+!
+      Do IIND = 2, NVAL, 2
+         If (XDONT(IIND-1) <= XDONT(IIND)) Then
+            IRNGT (IIND-1) = IIND - 1
+            IRNGT (IIND) = IIND
+         Else
+            IRNGT (IIND-1) = IIND
+            IRNGT (IIND) = IIND - 1
+         End If
+      End Do
+      If (Modulo(NVAL, 2) /= 0) Then
+         IRNGT (NVAL) = NVAL
+      End If
+!
+!  We will now have ordered subsets A - B - A - B - ...
+!  and merge A and B couples into     C   -   C   - ...
+!
+      LMTNA = 2
+      LMTNC = 4
+!
+!  First iteration. The length of the ordered subsets goes from 2 to 4
+!
+      Do
+         If (NVAL <= 2) Exit
+!
+!   Loop on merges of A and B into C
+!
+         Do IWRKD = 0, NVAL - 1, 4
+            If ((IWRKD+4) > NVAL) Then
+               If ((IWRKD+2) >= NVAL) Exit
+!
+!   1 2 3
+!
+               If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Exit
+!
+!   1 3 2
+!
+               If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+                  IRNG2 = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNG2
+!
+!   3 1 2
+!
+               Else
+                  IRNG1 = IRNGT (IWRKD+1)
+                  IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNG1
+               End If
+               Exit
+            End If
+!
+!   1 2 3 4
+!
+            If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Cycle
+!
+!   1 3 x x
+!
+            If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   1 3 2 4
+                  IRNGT (IWRKD+3) = IRNG2
+               Else
+!   1 3 4 2
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+!
+!   3 x x x
+!
+            Else
+               IRNG1 = IRNGT (IWRKD+1)
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG1) <= XDONT(IRNGT(IWRKD+4))) Then
+                  IRNGT (IWRKD+2) = IRNG1
+                  If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   3 1 2 4
+                     IRNGT (IWRKD+3) = IRNG2
+                  Else
+!   3 1 4 2
+                     IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                     IRNGT (IWRKD+4) = IRNG2
+                  End If
+               Else
+!   3 4 1 2
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+3) = IRNG1
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+            End If
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 4
+         Exit
+      End Do
+!
+!  Iteration loop. Each time, the length of the ordered subsets
+!  is doubled.
+!
+      Do
+         If (LMTNA >= NVAL) Exit
+         IWRKF = 0
+         LMTNC = 2 * LMTNC
+!
+!   Loop on merges of A and B into C
+!
+         Do
+            IWRK = IWRKF
+            IWRKD = IWRKF + 1
+            JINDA = IWRKF + LMTNA
+            IWRKF = IWRKF + LMTNC
+            If (IWRKF >= NVAL) Then
+               If (JINDA >= NVAL) Exit
+               IWRKF = NVAL
+            End If
+            IINDA = 1
+            IINDB = JINDA + 1
+!
+!   Shortcut for the case when the max of A is smaller
+!   than the min of B. This line may be activated when the
+!   initial set is already close to sorted.
+!
+!          IF (XDONT(IRNGT(JINDA)) <= XDONT(IRNGT(IINDB))) CYCLE
+!
+!  One steps in the C subset, that we build in the final rank array
+!
+!  Make a copy of the rank array for the merge iteration
+!
+            JWRKT (1:LMTNA) = IRNGT (IWRKD:JINDA)
+!
+            XVALA = XDONT (JWRKT(IINDA))
+            XVALB = XDONT (IRNGT(IINDB))
+!
+            Do
+               IWRK = IWRK + 1
+!
+!  We still have unprocessed values in both A and B
+!
+               If (XVALA > XVALB) Then
+                  IRNGT (IWRK) = IRNGT (IINDB)
+                  IINDB = IINDB + 1
+                  If (IINDB > IWRKF) Then
+!  Only A still with unprocessed values
+                     IRNGT (IWRK+1:IWRKF) = JWRKT (IINDA:LMTNA)
+                     Exit
+                  End If
+                  XVALB = XDONT (IRNGT(IINDB))
+               Else
+                  IRNGT (IWRK) = JWRKT (IINDA)
+                  IINDA = IINDA + 1
+                  If (IINDA > LMTNA) Exit! Only B still with unprocessed values
+                  XVALA = XDONT (JWRKT(IINDA))
+               End If
+!
+            End Do
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 2 * LMTNA
+      End Do
+!
+      Return
+!
+End Subroutine R_mrgrnk
+Subroutine I_mrgrnk (XDONT, IRNGT)
+! __________________________________________________________
+!   MRGRNK = Merge-sort ranking of an array
+!   For performance reasons, the first 2 passes are taken
+!   out of the standard loop, and use dedicated coding.
+! __________________________________________________________
+! __________________________________________________________
+      Integer, Dimension (:), Intent (In)  :: XDONT
+      Integer, Dimension (:), Intent (Out) :: IRNGT
+! __________________________________________________________
+      Integer :: XVALA, XVALB
+!
+      Integer, Dimension (SIZE(IRNGT)) :: JWRKT
+      Integer :: LMTNA, LMTNC, IRNG1, IRNG2
+      Integer :: NVAL, IIND, IWRKD, IWRK, IWRKF, JINDA, IINDA, IINDB
+!
+      NVAL = Min (SIZE(XDONT), SIZE(IRNGT))
+!      WRITE(*,*) "I_mrgrnk",NVAL
+      Select Case (NVAL)
+      Case (:0)
+         Return
+      Case (1)
+         IRNGT (1) = 1
+         Return
+      Case Default
+         Continue
+      End Select
+!
+!  Fill-in the index array, creating ordered couples
+!
+      Do IIND = 2, NVAL, 2
+         If (XDONT(IIND-1) <= XDONT(IIND)) Then
+            IRNGT (IIND-1) = IIND - 1
+            IRNGT (IIND) = IIND
+         Else
+            IRNGT (IIND-1) = IIND
+            IRNGT (IIND) = IIND - 1
+         End If
+      End Do
+      If (Modulo(NVAL, 2) /= 0) Then
+         IRNGT (NVAL) = NVAL
+      End If
+!
+!  We will now have ordered subsets A - B - A - B - ...
+!  and merge A and B couples into     C   -   C   - ...
+!
+      LMTNA = 2
+      LMTNC = 4
+!
+!  First iteration. The length of the ordered subsets goes from 2 to 4
+!
+      Do
+         If (NVAL <= 2) Exit
+!
+!   Loop on merges of A and B into C
+!
+         Do IWRKD = 0, NVAL - 1, 4
+            If ((IWRKD+4) > NVAL) Then
+               If ((IWRKD+2) >= NVAL) Exit
+!
+!   1 2 3
+!
+               If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Exit
+!
+!   1 3 2
+!
+               If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+                  IRNG2 = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNG2
+!
+!   3 1 2
+!
+               Else
+                  IRNG1 = IRNGT (IWRKD+1)
+                  IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+2)
+                  IRNGT (IWRKD+2) = IRNG1
+               End If
+               Exit
+            End If
+!
+!   1 2 3 4
+!
+            If (XDONT(IRNGT(IWRKD+2)) <= XDONT(IRNGT(IWRKD+3))) Cycle
+!
+!   1 3 x x
+!
+            If (XDONT(IRNGT(IWRKD+1)) <= XDONT(IRNGT(IWRKD+3))) Then
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+2) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   1 3 2 4
+                  IRNGT (IWRKD+3) = IRNG2
+               Else
+!   1 3 4 2
+                  IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+!
+!   3 x x x
+!
+            Else
+               IRNG1 = IRNGT (IWRKD+1)
+               IRNG2 = IRNGT (IWRKD+2)
+               IRNGT (IWRKD+1) = IRNGT (IWRKD+3)
+               If (XDONT(IRNG1) <= XDONT(IRNGT(IWRKD+4))) Then
+                  IRNGT (IWRKD+2) = IRNG1
+                  If (XDONT(IRNG2) <= XDONT(IRNGT(IWRKD+4))) Then
+!   3 1 2 4
+                     IRNGT (IWRKD+3) = IRNG2
+                  Else
+!   3 1 4 2
+                     IRNGT (IWRKD+3) = IRNGT (IWRKD+4)
+                     IRNGT (IWRKD+4) = IRNG2
+                  End If
+               Else
+!   3 4 1 2
+                  IRNGT (IWRKD+2) = IRNGT (IWRKD+4)
+                  IRNGT (IWRKD+3) = IRNG1
+                  IRNGT (IWRKD+4) = IRNG2
+               End If
+            End If
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 4
+         Exit
+      End Do
+!
+!  Iteration loop. Each time, the length of the ordered subsets
+!  is doubled.
+!
+      Do
+         If (LMTNA >= NVAL) Exit
+         IWRKF = 0
+         LMTNC = 2 * LMTNC
+!
+!   Loop on merges of A and B into C
+!
+         Do
+            IWRK = IWRKF
+            IWRKD = IWRKF + 1
+            JINDA = IWRKF + LMTNA
+            IWRKF = IWRKF + LMTNC
+            If (IWRKF >= NVAL) Then
+               If (JINDA >= NVAL) Exit
+               IWRKF = NVAL
+            End If
+            IINDA = 1
+            IINDB = JINDA + 1
+!
+!   Shortcut for the case when the max of A is smaller
+!   than the min of B. This line may be activated when the
+!   initial set is already close to sorted.
+!
+!          IF (XDONT(IRNGT(JINDA)) <= XDONT(IRNGT(IINDB))) CYCLE
+!
+!  One steps in the C subset, that we build in the final rank array
+!
+!  Make a copy of the rank array for the merge iteration
+!
+            JWRKT (1:LMTNA) = IRNGT (IWRKD:JINDA)
+!
+            XVALA = XDONT (JWRKT(IINDA))
+            XVALB = XDONT (IRNGT(IINDB))
+!
+            Do
+               IWRK = IWRK + 1
+!
+!  We still have unprocessed values in both A and B
+!
+               If (XVALA > XVALB) Then
+                  IRNGT (IWRK) = IRNGT (IINDB)
+                  IINDB = IINDB + 1
+                  If (IINDB > IWRKF) Then
+!  Only A still with unprocessed values
+                     IRNGT (IWRK+1:IWRKF) = JWRKT (IINDA:LMTNA)
+                     Exit
+                  End If
+                  XVALB = XDONT (IRNGT(IINDB))
+               Else
+                  IRNGT (IWRK) = JWRKT (IINDA)
+                  IINDA = IINDA + 1
+                  If (IINDA > LMTNA) Exit! Only B still with unprocessed values
+                  XVALA = XDONT (JWRKT(IINDA))
+               End If
+!
+            End Do
+         End Do
+!
+!  The Cs become As and Bs
+!
+         LMTNA = 2 * LMTNA
+      End Do
+!
+      Return
+!
+End Subroutine I_mrgrnk
+end module m_mrgrnk
Index: src/Io_module.f90
===================================================================
--- src/Io_module.f90	(revision 0)
+++ src/Io_module.f90	(revision 1)
@@ -0,0 +1,91 @@
+MODULE Io_Module
+! This module contains all variables related to IO
+
+  use VarTypes
+
+  IMPLICIT NONE
+
+  SAVE
+
+  INTEGER(KINT) :: IOIN=11, IOOUT=12, IOCART=14
+  INTEGER(KINT), PARAMETER :: IOTMP=21,IOTMP2=22, IOTMP3=23
+
+  TYPE Input_Line
+     CHARACTER(LCHARS) :: Line
+     TYPE (Input_Line), POINTER :: Next
+  END TYPE Input_Line
+
+  CHARACTER(SCHARS) :: RunMode
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! 
+!  Some parameters for unit conversion
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+  REAL(KREAL), PARAMETER :: ev2au= 0.036749324445d0
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Variables for Gaussian input
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  TYPE (Input_line), POINTER :: Gauss_Root, Gauss_End, Gauss_Comment
+  TYPE (Input_Line), POINTER :: Current, Previous
+
+  CHARACTER(LCHARS) :: Gauss_Charge
+  CHARACTER(LCHARS), ALLOCATABLE :: Gauss_paste(:)
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Variables for MOPAC input
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  TYPE (Input_line), POINTER :: Mopac_Root, Mopac_End, Mopac_Comment
+  TYPE (Input_Line), POINTER :: CurCom
+  CHARACTER(LCHARS) :: Mopac_EndGeom
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! Variables for VASP input/output
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  CHARACTER(LCHARS) :: Vasp_Title, Vasp_Types, Vasp_comment, Vasp_direct
+  REAL(KREAL) :: vasp_Param
+  CHARACTER(4), ALLOCATABLE :: FFF(:,:) !(3,na)
+  INTEGER(KINT) :: NbTypes
+  INTEGER(KINT), PARAMETER :: MaxType=100
+  CHARACTER(2) :: Attypes(MaxType)='  '
+! WriteVasp controls the printing of the images coordinates in POSCAR files.
+  LOGICAL :: WriteVasp
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! For debug
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  CHARACTER(132) :: DebugFile='Path.valid'
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! For Printing
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  CHARACTER(LCHARS) :: PathName
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! For Energy+Gradient calculations
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! CalcName: Prefix for the files used for the energy and gradient calculations
+  CHARACTER(LCHARS) :: CalcName
+
+! ISuffix: Suffix for the input file
+  CHARACTER(LCHARS) :: ISuffix
+! OSuffix: suffix for the output file.
+  CHARACTER(LCHARS) :: OSuffix
+
+
+END MODULE IO_MODULE
Index: src/ConvXyzZmat.f90
===================================================================
--- src/ConvXyzZmat.f90	(revision 0)
+++ src/ConvXyzZmat.f90	(revision 1)
@@ -0,0 +1,133 @@
+SUBROUTINE ConvXyzZmat(nb,x,y,z,ind_zmat,val_zmat)
+
+  Use VarTypes
+
+  IMPLICIT NONE
+
+  integer(KINT) :: i,i1,i2
+
+  integer(KINT) :: n1,n2,n3,n4,nb
+  real(KREAL) ::  x(Nb),y(Nb),z(Nb)
+  real(KREAL) ::  val_zmat(Nb,3)
+  integer(KINT) :: ind_zmat(Nb,5)
+  real(KREAL) ::  vx1,vy1,vz1,norm1
+  real(KREAL) ::  vx2,vy2,vz2,norm2
+  real(KREAL) ::  vx3,vy3,vz3,norm3
+  real(KREAL) ::  vx4,vy4,vz4,norm4
+  real(KREAL) ::  vx5,vy5,vz5,norm5
+  real(KREAL) ::  val,val_d
+
+  LOGICAL :: Debug
+
+
+  INTERFACE
+     function valid(string) result (isValid)
+       CHARACTER(*), intent(in) :: string
+       logical                  :: isValid
+     END function VALID
+
+     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  angle
+     END FUNCTION ANGLE
+
+
+     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
+       use Path_module, only :  Pi,KINT, KREAL
+       real(KREAL) ::  v1x,v1y,v1z,norm1
+       real(KREAL) ::  v2x,v2y,v2z,norm2
+       real(KREAL) ::  v3x,v3y,v3z,norm3
+       real(KREAL) ::  angle_d,ca,sa
+     END FUNCTION ANGLE_D
+
+  END INTERFACE
+
+  debug=valid("ConvXyzZmat")
+
+ if (debug) THEN
+     Call Header("ConvXyz Zmat")
+     WRITe(*,*) Nb
+     DO I=1,Nb
+        WRITe(*,'(3(1X,F15.8))') x(I),y(i),z(i)
+     END DO
+  END IF
+  IF (nb .GE. 1) THEN
+
+     val_zmat(1,1)=0.0
+     val_zmat(1,2)=0.0
+     val_zmat(1,3)=0.0
+     !        write(*,*) 'Debut procedure Xyz_Zmat'
+
+     IF (nb .GE. 2) THEN
+        !            write(*,*) 'Debut procedure Xyz_Zmat 2'
+        i=2
+        n1=ind_zmat(i,1)
+        n2=ind_zmat(i,2)
+
+        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+        !           write(*,11) n1,n2,norm1
+
+        val_zmat(i,1)=norm1
+        val_zmat(i,2)=0.0
+        val_zmat(i,3)=0.0
+
+        IF (nb .GE. 3) THEN
+           !        write(*,*) 'Debut procedure Xyz_Zmat3'
+           i=3
+           n1=ind_zmat(i,1)
+           n2=ind_zmat(i,2)
+           n3=ind_zmat(i,3)
+
+           CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+           CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+           val=angle(vx1,vy1,vz1,norm1, &
+                vx2,vy2,vz2,norm2)
+
+           val_zmat(i,1)=norm1
+           val_zmat(i,2)=val
+           val_zmat(i,3)=0.0
+
+           DO i=4,nb
+              !        write(*,*) 'Debut procedure Xyz_Zmat4'
+              n1=ind_zmat(i,1)
+              n2=ind_zmat(i,2)
+              n3=ind_zmat(i,3)
+              n4=ind_zmat(i,4)
+
+              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
+
+              !        write(*,*) 'Debut procedure Xyz_Zmat42'
+              CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
+              val=angle(vx1,vy1,vz1,norm1, &
+                   vx2,vy2,vz2,norm2)
+
+              !        write(*,*) 'Debut procedure Xyz_Zmat43'
+              CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
+              CALL produit_vect(vx1,vy1,vz1,norm1, &
+                   vx2,vy2,vz2,norm2, &
+                   vx4,vy4,vz4,norm4)
+              CALL produit_vect(vx3,vy3,vz3,norm3, &
+                   vx2,vy2,vz2,norm2, &
+                   vx5,vy5,vz5,norm5)
+              val_d=angle_d(vx4,vy4,vz4,norm4, &
+                   vx5,vy5,vz5,norm5, &
+                   vx2,vy2,vz2,norm2)
+
+              !               write(*,11) n1,n2,norm1,n3,val,n4,val_d
+11            format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
+
+              val_zmat(i,1)=norm1
+              val_zmat(i,2)=val
+              val_zmat(i,3)=val_d
+
+           END DO
+        END IF
+     END IF
+  ELSE
+     RETURN
+  END IF
+  RETURN
+END SUBROUTINE ConvXyzZmat

Property changes on: src/ConvXyzZmat.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: Mini_help.pdf
===================================================================
--- Mini_help.pdf	(revision 0)
+++ Mini_help.pdf	(revision 1)
@@ -0,0 +1 @@
+link ./doc/Mini_help.pdf
\ No newline at end of file

Property changes on: Mini_help.pdf
___________________________________________________________________
Added: svn:special
   + *

Index: examples/Mopac/CSMe6_mixed/run_Path
===================================================================
--- examples/Mopac/CSMe6_mixed/run_Path	(revision 0)
+++ examples/Mopac/CSMe6_mixed/run_Path	(revision 1)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=CSMe6_Syn
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### MOPAC Stuff
+# In fact, this is useless as they are defined again in the mopac script
+cat << EOF > ./mopac
+#!/bin/bash
+
+set -x
+## You might have to change MOPAC_ROOT and/or MOPAC_LICENSE
+export MOPAC_ROOT=~/Programs/MOPAC2009
+export MOPAC_LICENSE=\${MOPAC_ROOT}
+export mopac=\${MOPAC_ROOT}/MOPAC2009.exe
+
+echo "Running \${mopac} \$1"
+\${mopac} \$1
+Out=\`basename \$1 .mop\`.out
+
+EOF
+chmod u+x ./mopac
+#
+# Some libraries... that might need to be adapted to your system
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+

Property changes on: examples/Mopac/CSMe6_mixed/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Mopac/CSMe6_mixed/CSMe6_Syn.path
===================================================================
--- examples/Mopac/CSMe6_mixed/CSMe6_Syn.path	(revision 0)
+++ examples/Mopac/CSMe6_mixed/CSMe6_Syn.path	(revision 1)
@@ -0,0 +1,136 @@
+ &path
+ nat=36, 
+ ngeomi=2,
+ ngeomf=34, 
+ OptReac=.F.,
+ OptProd=F,
+ EReac=.03857508019805293629,
+ EProd=.03615352007407159510,
+ PathOnly=.F.,
+ PathName="CSMe6_Syn_RM1",
+ maxcyc=51, 
+ IReparam=10,
+ ISpline=30, 
+ Prog='mopac',
+ ProgExe="./mopac",
+ coord='mixed',
+ HInv=T/
+36
+ Reac RM1
+C 0.6555 1.2052 0.1621
+C -0.7174 1.1248 0.3775
+C -1.3798 -0.0879 0.2109
+C -0.6601 -1.2306 -0.1227
+C 0.7112 -1.1478 -0.3482
+C 1.3733 0.0658 -0.1887
+S -1.5759 2.5417 0.9630
+C -2.3579 3.1457 -0.5357
+S -3.1165 -0.1464 0.4686
+C -3.7081 -0.3731 -1.2135
+S -1.4506 -2.7883 -0.3059
+C -1.8444 -3.1790 1.4032
+S 1.5702 -2.5583 -0.9473
+C 2.2413 -3.2446 0.5683
+S 3.1002 0.1284 -0.5044
+C 3.7689 0.3777 1.1449
+S 1.4626 2.7517 0.3724
+C 1.6982 3.2436 -1.3398
+H -2.5429 4.2175 -0.3992
+H -3.3200 2.6563 -0.7176
+H -1.7349 3.0158 -1.4250
+H -4.8023 -0.3264 -1.1781
+H -3.4155 -1.3430 -1.6295
+H -3.3494 0.4096 -1.8886
+H -2.2493 -4.1971 1.4137
+H -2.5955 -2.5016 1.8231
+H -0.9615 -3.1518 2.0484
+H 2.5842 -4.2597 0.3373
+H 1.4992 -3.3100 1.3693
+H 3.0956 -2.6690 0.9382
+H 4.8492 0.2043 1.0801
+H 3.3499 -0.3186 1.8769
+H 3.6051 1.3973 1.5095
+H 2.2663 4.1804 -1.3320
+H 0.7462 3.4203 -1.8491
+H 2.2625 2.5018 -1.9137
+36
+ Prod RM1
+C 0.3336 1.2042 -0.3914
+C -0.9712 0.7545 -0.5676
+C -1.3296 -0.5223 -0.1469
+C -0.3792 -1.3544 0.4371
+C 0.9137 -0.8883 0.6545
+C 1.2739 0.3860 0.2269
+S -2.1494 1.7710 -1.3854
+C -2.8254 2.6987 -0.0015
+S -3.0001 -1.0564 -0.2590
+C -3.0750 -1.6606 -1.9496
+S -0.7864 -3.0215 0.8151
+C -1.3767 -2.8698 2.5056
+S 2.0532 -1.8725 1.5613
+C 2.9464 -2.7099 0.2461
+S 2.9366 0.9248 0.4090
+C 2.8265 1.8789 1.9293
+S 0.7795 2.8329 -0.8809
+C 1.2493 2.5595 -2.5946
+H -2.0582 3.2807 0.5183
+H -3.3218 2.0486 0.7253
+H -3.5683 3.3921 -0.4120
+H -4.1068 -1.9839 -2.1276
+H -2.4118 -2.5155 -2.1108
+H -2.8255 -0.8834 -2.6785
+H -1.6544 -3.8758 2.8397
+H -2.2578 -2.2250 2.5781
+H -0.6052 -2.4823 3.1778
+H 2.2824 -3.2934 -0.3985
+H 3.6527 -3.3961 0.7267
+H 3.5132 -2.0121 -0.3771
+H 3.8516 2.1190 2.2333
+H 2.3472 1.3183 2.7377
+H 2.2789 2.8156 1.7852
+H 1.5922 3.5214 -2.9915
+H 0.4067 2.2153 -3.2019
+H 2.0639 1.8352 -2.6883
+ RM1 1SCF GRADIENTS CHARGE=0
+
+ Syncrhonous path for CSMe6 isomerizatio
+ C    -1.3595     0.3048    -0.0225
+ C    -0.3758     1.3199    -0.0195
+ C     0.9962     0.9787    -0.0468
+ C     1.3820    -0.3787     0.0197
+ C     0.4020    -1.3974    -0.0488
+ C    -0.9745    -1.0581    -0.0708
+ S    -0.8497     3.0456     0.1921
+ C    -1.0997     3.5708    -1.5419
+ S     2.2386     2.2492    -0.3387
+ C     2.6602     2.7818     1.3597
+ S     3.1016    -0.7980     0.3577
+ C     3.7880    -1.0189    -1.3231
+ S     0.9335    -3.1001    -0.3064
+ C     0.9183    -3.7739     1.3937
+ S    -2.1777    -2.3839     0.1146
+ C    -3.1545    -2.3366    -1.4333
+ S    -3.1059     0.7539    -0.0362
+ C    -3.4104     1.0102     1.7504
+ H    -1.9003     2.9890    -2.0049
+ H     3.0717     1.9443     1.9281
+ H     3.7110    -0.0883    -1.8903
+ H    -0.0918    -3.7592     1.8110
+ H    -2.5012    -2.4404    -2.3031
+ H    -2.8103     1.8430     2.1244
+ H    -1.3951     4.6232    -1.5042
+ H    -0.1689     3.4764    -2.1067
+ H     3.4244     3.5574     1.2561
+ H     1.7836     3.2026     1.8580
+ H     4.8433    -1.2748    -1.1913
+ H     3.2795    -1.8374    -1.8384
+ H     1.2571    -4.8109     1.3134
+ H     1.6110    -3.2186     2.0310
+ H    -3.8146    -3.2078    -1.3837
+ H    -3.7506    -1.4261    -1.4991
+ H    -4.4715     1.2571     1.8468
+ H    -3.2014     0.0940     2.3076
+
+
+
+
Index: examples/Mopac/HCN_zmat/HCN_RM1.path
===================================================================
--- examples/Mopac/HCN_zmat/HCN_RM1.path	(revision 0)
+++ examples/Mopac/HCN_zmat/HCN_RM1.path	(revision 1)
@@ -0,0 +1,35 @@
+ &path
+ nat=3, 
+ ngeomi=2,
+ ngeomf=18, 
+ OptReac=.T.,
+ OptProd=T,
+ PathOnly=.F.,
+ PathName="HCN_RM1",
+ maxcyc=11, 
+ IReparam=5,
+ ISpline=75, 
+ Prog='mopac',
+ ProgExe="./mopac",
+ coord='zmat',
+ HInv=T/
+  3
+  HCN: E= 0.04937470
+  H     0.0000     0.0000     0.0340
+  C     0.0000     0.0000     1.1030
+  N     0.0000     0.0000     2.2631
+  3
+  Energy :      0.07780150
+  H     0.000000     0.000000     2.187629
+  C     0.000000     0.000000     0.04206
+  N     0.000000     0.000000     1.220411
+* Comment: HCN -> CNH conversion
+ RM1 1SCF GRADIENTS CHARGE=0
+
+ Title: HCN -> CNH in RM1
+   H     0.0000     0.0000     0.0340
+   C     0.0000     0.0000     1.1030
+   N     0.0000     0.0000     2.2631
+
+
+
Index: examples/Mopac/HCN_zmat/list
===================================================================
--- examples/Mopac/HCN_zmat/list	(revision 0)
+++ examples/Mopac/HCN_zmat/list	(revision 1)
@@ -0,0 +1,3 @@
+b 1 2
+b 2 3
+a 1 2 3
Index: examples/Mopac/HCN_zmat/run_Path
===================================================================
--- examples/Mopac/HCN_zmat/run_Path	(revision 0)
+++ examples/Mopac/HCN_zmat/run_Path	(revision 1)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=HCN_RM1
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### MOPAC Stuff
+# In fact, this is useless as they are defined again in the mopac script
+cat << EOF > ./mopac
+#!/bin/bash
+
+set -x
+## You might have to change MOPAC_ROOT and/or MOPAC_LICENSE
+export MOPAC_ROOT=~/Programs/MOPAC2009
+export MOPAC_LICENSE=\${MOPAC_ROOT}
+export mopac=\${MOPAC_ROOT}/MOPAC2009.exe
+
+echo "Running \${mopac} \$1"
+\${mopac} \$1
+Out=\`basename \$1 .mop\`.out
+
+EOF
+chmod u+x ./mopac
+#
+# Some libraries... that might need to be adapted to your system
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+

Property changes on: examples/Mopac/HCN_zmat/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Mopac/CSMe6_cart/run_Path
===================================================================
--- examples/Mopac/CSMe6_cart/run_Path	(revision 0)
+++ examples/Mopac/CSMe6_cart/run_Path	(revision 1)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=CSMe6_Syn
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### MOPAC Stuff
+# In fact, this is useless as they are defined again in the mopac script
+cat << EOF > ./mopac
+#!/bin/bash
+
+set -x
+## You might have to change MOPAC_ROOT and/or MOPAC_LICENSE
+export MOPAC_ROOT=~/Programs/MOPAC2009
+export MOPAC_LICENSE=\${MOPAC_ROOT}
+export mopac=\${MOPAC_ROOT}/MOPAC2009.exe
+
+echo "Running \${mopac} \$1"
+\${mopac} \$1
+Out=\`basename \$1 .mop\`.out
+
+EOF
+chmod u+x ./mopac
+#
+# Some libraries... that might need to be adapted to your system
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+
+
+

Property changes on: examples/Mopac/CSMe6_cart/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Mopac/CSMe6_cart/CSMe6_Syn.path
===================================================================
--- examples/Mopac/CSMe6_cart/CSMe6_Syn.path	(revision 0)
+++ examples/Mopac/CSMe6_cart/CSMe6_Syn.path	(revision 1)
@@ -0,0 +1,136 @@
+ &path
+ nat=36, 
+ ngeomi=2,
+ ngeomf=34, 
+ OptReac=.F.,
+ OptProd=F,
+ EReac=.03857508019805293629,
+ EProd=.03615352007407159510,
+ PathOnly=.F.,
+ PathName="CSMe6_Syn_RM1",
+ maxcyc=151, 
+ IReparam=50,
+ ISpline=75, 
+ Prog='mopac',
+ ProgExe="./mopac",
+ coord='cart',
+ HInv=T/
+36
+ Reac RM1
+C 0.6555 1.2052 0.1621
+C -0.7174 1.1248 0.3775
+C -1.3798 -0.0879 0.2109
+C -0.6601 -1.2306 -0.1227
+C 0.7112 -1.1478 -0.3482
+C 1.3733 0.0658 -0.1887
+S -1.5759 2.5417 0.9630
+C -2.3579 3.1457 -0.5357
+S -3.1165 -0.1464 0.4686
+C -3.7081 -0.3731 -1.2135
+S -1.4506 -2.7883 -0.3059
+C -1.8444 -3.1790 1.4032
+S 1.5702 -2.5583 -0.9473
+C 2.2413 -3.2446 0.5683
+S 3.1002 0.1284 -0.5044
+C 3.7689 0.3777 1.1449
+S 1.4626 2.7517 0.3724
+C 1.6982 3.2436 -1.3398
+H -2.5429 4.2175 -0.3992
+H -3.3200 2.6563 -0.7176
+H -1.7349 3.0158 -1.4250
+H -4.8023 -0.3264 -1.1781
+H -3.4155 -1.3430 -1.6295
+H -3.3494 0.4096 -1.8886
+H -2.2493 -4.1971 1.4137
+H -2.5955 -2.5016 1.8231
+H -0.9615 -3.1518 2.0484
+H 2.5842 -4.2597 0.3373
+H 1.4992 -3.3100 1.3693
+H 3.0956 -2.6690 0.9382
+H 4.8492 0.2043 1.0801
+H 3.3499 -0.3186 1.8769
+H 3.6051 1.3973 1.5095
+H 2.2663 4.1804 -1.3320
+H 0.7462 3.4203 -1.8491
+H 2.2625 2.5018 -1.9137
+36
+ Prod RM1
+C 0.3336 1.2042 -0.3914
+C -0.9712 0.7545 -0.5676
+C -1.3296 -0.5223 -0.1469
+C -0.3792 -1.3544 0.4371
+C 0.9137 -0.8883 0.6545
+C 1.2739 0.3860 0.2269
+S -2.1494 1.7710 -1.3854
+C -2.8254 2.6987 -0.0015
+S -3.0001 -1.0564 -0.2590
+C -3.0750 -1.6606 -1.9496
+S -0.7864 -3.0215 0.8151
+C -1.3767 -2.8698 2.5056
+S 2.0532 -1.8725 1.5613
+C 2.9464 -2.7099 0.2461
+S 2.9366 0.9248 0.4090
+C 2.8265 1.8789 1.9293
+S 0.7795 2.8329 -0.8809
+C 1.2493 2.5595 -2.5946
+H -2.0582 3.2807 0.5183
+H -3.3218 2.0486 0.7253
+H -3.5683 3.3921 -0.4120
+H -4.1068 -1.9839 -2.1276
+H -2.4118 -2.5155 -2.1108
+H -2.8255 -0.8834 -2.6785
+H -1.6544 -3.8758 2.8397
+H -2.2578 -2.2250 2.5781
+H -0.6052 -2.4823 3.1778
+H 2.2824 -3.2934 -0.3985
+H 3.6527 -3.3961 0.7267
+H 3.5132 -2.0121 -0.3771
+H 3.8516 2.1190 2.2333
+H 2.3472 1.3183 2.7377
+H 2.2789 2.8156 1.7852
+H 1.5922 3.5214 -2.9915
+H 0.4067 2.2153 -3.2019
+H 2.0639 1.8352 -2.6883
+ RM1 1SCF GRADIENTS CHARGE=0
+
+ Syncrhonous path for CSMe6 isomerizatio
+ C    -1.3595     0.3048    -0.0225
+ C    -0.3758     1.3199    -0.0195
+ C     0.9962     0.9787    -0.0468
+ C     1.3820    -0.3787     0.0197
+ C     0.4020    -1.3974    -0.0488
+ C    -0.9745    -1.0581    -0.0708
+ S    -0.8497     3.0456     0.1921
+ C    -1.0997     3.5708    -1.5419
+ S     2.2386     2.2492    -0.3387
+ C     2.6602     2.7818     1.3597
+ S     3.1016    -0.7980     0.3577
+ C     3.7880    -1.0189    -1.3231
+ S     0.9335    -3.1001    -0.3064
+ C     0.9183    -3.7739     1.3937
+ S    -2.1777    -2.3839     0.1146
+ C    -3.1545    -2.3366    -1.4333
+ S    -3.1059     0.7539    -0.0362
+ C    -3.4104     1.0102     1.7504
+ H    -1.9003     2.9890    -2.0049
+ H     3.0717     1.9443     1.9281
+ H     3.7110    -0.0883    -1.8903
+ H    -0.0918    -3.7592     1.8110
+ H    -2.5012    -2.4404    -2.3031
+ H    -2.8103     1.8430     2.1244
+ H    -1.3951     4.6232    -1.5042
+ H    -0.1689     3.4764    -2.1067
+ H     3.4244     3.5574     1.2561
+ H     1.7836     3.2026     1.8580
+ H     4.8433    -1.2748    -1.1913
+ H     3.2795    -1.8374    -1.8384
+ H     1.2571    -4.8109     1.3134
+ H     1.6110    -3.2186     2.0310
+ H    -3.8146    -3.2078    -1.3837
+ H    -3.7506    -1.4261    -1.4991
+ H    -4.4715     1.2571     1.8468
+ H    -3.2014     0.0940     2.3076
+
+
+
+
Index: examples/Test/Cart/Dep_tgt.awk
===================================================================
--- examples/Test/Cart/Dep_tgt.awk	(revision 0)
+++ examples/Test/Cart/Dep_tgt.awk	(revision 1)
@@ -0,0 +1,19 @@
+BEGIN{
+it=-1
+pi=3.14159265358979
+}
+{ if ($1=="PATHNAME") { i=index($3,",");  if (i==0) {Nom=$3} else {Nom=substr($3,1,i-1) }; Nom=Nom "_tgt_";next}
+}
+
+/Visualization of tangents/,/END of tangents/ {
+    if ($1=="Visualization") { it++; File=Nom  it ".dat"; 
+               print "#Tangents for Iopt=" it > File; next;}
+    if ($1=="END") { next }
+    if (NF==0) {print "" >> File; next}
+    printf(" %12.5f %12.5f %12.5f",$1*1.,$2*1.,$3*180./pi) >> File
+	for(j=4;j<=NF;j+=3) { printf(" %12.5f %12.5f %12.5f",$j*1.,$(j+1)*180./pi,$(j+2)*180./pi) >> File }  
+    print "" >> File
+	}
+END{
+}
+   

Property changes on: examples/Test/Cart/Dep_tgt.awk
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/Path2dat.awk
===================================================================
--- examples/Test/Cart/Path2dat.awk	(revision 0)
+++ examples/Test/Cart/Path2dat.awk	(revision 1)
@@ -0,0 +1,15 @@
+BEGIN{
+	Nat=3
+Pi=3.141592653589793238462643383
+ConvDeg=1.
+}
+{ getline;
+ getline; printf(" %.6f ",$3)
+ getline; printf(" %.6f %.6f",$3,$5*ConvDeg)
+ for (i=4;i<=Nat;i++) {
+ getline; printf(" %.6f %.6f %.6f ",$3,$5*ConvDeg,$7*ConvDeg)
+ }
+  print ""
+ }
+ END{
+	 }

Property changes on: examples/Test/Cart/Path2dat.awk
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/HCN_PES_2D.dat
===================================================================
--- examples/Test/Cart/HCN_PES_2D.dat	(revision 0)
+++ examples/Test/Cart/HCN_PES_2D.dat	(revision 1)
@@ -0,0 +1,5334 @@
+
+#Surface 0 of 1 surfaces
+
+# Contour 0, label:     -0.2
+ 1.76942  0 -0.2 
+ 1.76781  1.82 -0.2 
+ 1.76288  3.64 -0.2 
+ 1.7576  4.7807 -0.2 
+ 1.75456  5.45 -0.2 
+ 1.7428  7.27 -0.2 
+ 1.7424  7.3191 -0.2 
+ 1.72779  9.09 -0.2 
+ 1.7273  9.14015 -0.2 
+ 1.7121  10.6404 -0.2 
+ 1.70928  10.91 -0.2 
+ 1.697  11.9528 -0.2 
+ 1.68718  12.73 -0.2 
+ 1.6818  13.1275 -0.2 
+ 1.6667  14.1936 -0.2 
+ 1.66134  14.55 -0.2 
+ 1.6515  15.1821 -0.2 
+ 1.6364  16.0871 -0.2 
+ 1.63158  16.36 -0.2 
+ 1.6212  16.9562 -0.2 
+ 1.6061  17.7642 -0.2 
+ 1.59772  18.18 -0.2 
+ 1.5909  18.5329 -0.2 
+ 1.5758  19.2757 -0.2 
+ 1.5606  19.9479 -0.2 
+ 1.55939  20 -0.2 
+ 1.5455  20.6439 -0.2 
+ 1.5303  21.2835 -0.2 
+ 1.51645  21.82 -0.2 
+ 1.5152  21.8731 -0.2 
+ 1.5  22.4981 -0.2 
+ 1.4848  23.0684 -0.2 
+ 1.4697  23.5895 -0.2 
+ 1.46818  23.64 -0.2 
+ 1.4545  24.1489 -0.2 
+ 1.4394  24.6708 -0.2 
+ 1.4242  25.15 -0.2 
+ 1.4141  25.45 -0.2 
+ 1.4091  25.622 -0.2 
+ 1.3939  26.1182 -0.2 
+ 1.3788  26.5759 -0.2 
+ 1.3636  26.9989 -0.2 
+ 1.3533  27.27 -0.2 
+ 1.3485  27.4178 -0.2 
+ 1.3333  27.8629 -0.2 
+ 1.3182  28.276 -0.2 
+ 1.303  28.6603 -0.2 
+ 1.2879  29.0186 -0.2 
+ 1.28475  29.09 -0.2 
+ 1.2727  29.414 -0.2 
+ 1.2576  29.7987 -0.2 
+ 1.2424  30.1591 -0.2 
+ 1.2273  30.4975 -0.2 
+ 1.2121  30.8162 -0.2 
+ 1.20747  30.91 -0.2 
+ 1.197  31.1645 -0.2 
+ 1.1818  31.5136 -0.2 
+ 1.1667  31.8443 -0.2 
+ 1.1515  32.1589 -0.2 
+ 1.1364  32.4592 -0.2 
+ 1.12213  32.73 -0.2 
+ 1.1212  32.7513 -0.2 
+ 1.1061  33.0892 -0.2 
+ 1.0909  33.4149 -0.2 
+ 1.0758  33.7309 -0.2 
+ 1.0606  34.0394 -0.2 
+ 1.0455  34.3427 -0.2 
+ 1.03501  34.55 -0.2 
+ 1.0303  34.6614 -0.2 
+ 1.0152  35.0187 -0.2 
+ 1  35.3762 -0.2 
+
+
+# Contour 1, label:    -0.21
+ 1.77431  0 -0.21 
+ 1.7727  1.7229 -0.21 
+ 1.77262  1.82 -0.21 
+ 1.76784  3.64 -0.21 
+ 1.75958  5.45 -0.21 
+ 1.7576  5.76299 -0.21 
+ 1.74806  7.27 -0.21 
+ 1.7424  7.96423 -0.21 
+ 1.73311  9.09 -0.21 
+ 1.7273  9.68053 -0.21 
+ 1.71461  10.91 -0.21 
+ 1.7121  11.1261 -0.21 
+ 1.697  12.3894 -0.21 
+ 1.6927  12.73 -0.21 
+ 1.6818  13.5346 -0.21 
+ 1.66695  14.55 -0.21 
+ 1.6667  14.5664 -0.21 
+ 1.6515  15.5418 -0.21 
+ 1.63747  16.36 -0.21 
+ 1.6364  16.4229 -0.21 
+ 1.6212  17.2909 -0.21 
+ 1.6061  18.0724 -0.21 
+ 1.60393  18.18 -0.21 
+ 1.5909  18.854 -0.21 
+ 1.5758  19.5727 -0.21 
+ 1.56608  20 -0.21 
+ 1.5606  20.2579 -0.21 
+ 1.5455  20.9394 -0.21 
+ 1.5303  21.5585 -0.21 
+ 1.52355  21.82 -0.21 
+ 1.5152  22.1756 -0.21 
+ 1.5  22.7808 -0.21 
+ 1.4848  23.3331 -0.21 
+ 1.47585  23.64 -0.21 
+ 1.4697  23.8762 -0.21 
+ 1.4545  24.4277 -0.21 
+ 1.4394  24.9334 -0.21 
+ 1.4242  25.398 -0.21 
+ 1.42245  25.45 -0.21 
+ 1.4091  25.9089 -0.21 
+ 1.3939  26.3901 -0.21 
+ 1.3788  26.8343 -0.21 
+ 1.3636  27.245 -0.21 
+ 1.36265  27.27 -0.21 
+ 1.3485  27.7059 -0.21 
+ 1.3333  28.1384 -0.21 
+ 1.3182  28.5401 -0.21 
+ 1.303  28.914 -0.21 
+ 1.29552  29.09 -0.21 
+ 1.2879  29.3029 -0.21 
+ 1.2727  29.704 -0.21 
+ 1.2576  30.0791 -0.21 
+ 1.2424  30.4307 -0.21 
+ 1.2273  30.7613 -0.21 
+ 1.22015  30.91 -0.21 
+ 1.2121  31.1107 -0.21 
+ 1.197  31.4724 -0.21 
+ 1.1818  31.8144 -0.21 
+ 1.1667  32.1389 -0.21 
+ 1.1515  32.4481 -0.21 
+ 1.13713  32.73 -0.21 
+ 1.1364  32.7472 -0.21 
+ 1.1212  33.094 -0.21 
+ 1.1061  33.4274 -0.21 
+ 1.0909  33.7496 -0.21 
+ 1.0758  34.0629 -0.21 
+ 1.0606  34.3696 -0.21 
+ 1.0516  34.55 -0.21 
+ 1.0455  34.6963 -0.21 
+ 1.0303  35.055 -0.21 
+ 1.0152  35.4118 -0.21 
+ 1  35.7699 -0.21 
+
+
+# Contour 2, label:    -0.22
+ 1.77952  0 -0.22 
+ 1.77787  1.82 -0.22 
+ 1.77282  3.64 -0.22 
+ 1.7727  3.66687 -0.22 
+ 1.76483  5.45 -0.22 
+ 1.7576  6.59385 -0.22 
+ 1.75332  7.27 -0.22 
+ 1.7424  8.60937 -0.22 
+ 1.73844  9.09 -0.22 
+ 1.7273  10.2209 -0.22 
+ 1.72019  10.91 -0.22 
+ 1.7121  11.6057 -0.22 
+ 1.69829  12.73 -0.22 
+ 1.697  12.828 -0.22 
+ 1.6818  13.9417 -0.22 
+ 1.6729  14.55 -0.22 
+ 1.6667  14.9592 -0.22 
+ 1.6515  15.9015 -0.22 
+ 1.64364  16.36 -0.22 
+ 1.6364  16.787 -0.22 
+ 1.6212  17.6256 -0.22 
+ 1.61036  18.18 -0.22 
+ 1.6061  18.4065 -0.22 
+ 1.5909  19.1751 -0.22 
+ 1.5758  19.8697 -0.22 
+ 1.57284  20 -0.22 
+ 1.5606  20.576 -0.22 
+ 1.5455  21.2349 -0.22 
+ 1.53067  21.82 -0.22 
+ 1.5303  21.8359 -0.22 
+ 1.5152  22.4781 -0.22 
+ 1.5  23.0635 -0.22 
+ 1.4848  23.5978 -0.22 
+ 1.48357  23.64 -0.22 
+ 1.4697  24.1726 -0.22 
+ 1.4545  24.7064 -0.22 
+ 1.4394  25.1961 -0.22 
+ 1.43104  25.45 -0.22 
+ 1.4242  25.6896 -0.22 
+ 1.4091  26.1957 -0.22 
+ 1.3939  26.6621 -0.22 
+ 1.3788  27.0928 -0.22 
+ 1.37222  27.27 -0.22 
+ 1.3636  27.5414 -0.22 
+ 1.3485  27.9941 -0.22 
+ 1.3333  28.4139 -0.22 
+ 1.3182  28.8041 -0.22 
+ 1.30635  29.09 -0.22 
+ 1.303  29.1858 -0.22 
+ 1.2879  29.6038 -0.22 
+ 1.2727  29.9941 -0.22 
+ 1.2576  30.3594 -0.22 
+ 1.2424  30.7024 -0.22 
+ 1.23279  30.91 -0.22 
+ 1.2273  31.052 -0.22 
+ 1.2121  31.4267 -0.22 
+ 1.197  31.7804 -0.22 
+ 1.1818  32.1152 -0.22 
+ 1.1667  32.4336 -0.22 
+ 1.15188  32.73 -0.22 
+ 1.1515  32.7391 -0.22 
+ 1.1364  33.0954 -0.22 
+ 1.1212  33.4368 -0.22 
+ 1.1061  33.7657 -0.22 
+ 1.0909  34.0843 -0.22 
+ 1.0758  34.3949 -0.22 
+ 1.06809  34.55 -0.22 
+ 1.0606  34.7304 -0.22 
+ 1.0455  35.0914 -0.22 
+ 1.0303  35.4486 -0.22 
+ 1.0152  35.805 -0.22 
+ 1  36.1636 -0.22 
+
+
+# Contour 3, label:    -0.23
+ 1.78472  0 -0.23 
+ 1.78313  1.82 -0.23 
+ 1.77826  3.64 -0.23 
+ 1.7727  4.85602 -0.23 
+ 1.77008  5.45 -0.23 
+ 1.75866  7.27 -0.23 
+ 1.7576  7.40272 -0.23 
+ 1.74388  9.09 -0.23 
+ 1.7424  9.24194 -0.23 
+ 1.7273  10.7613 -0.23 
+ 1.72577  10.91 -0.23 
+ 1.7121  12.0854 -0.23 
+ 1.70418  12.73 -0.23 
+ 1.697  13.2743 -0.23 
+ 1.6818  14.3487 -0.23 
+ 1.67886  14.55 -0.23 
+ 1.6667  15.352 -0.23 
+ 1.6515  16.2613 -0.23 
+ 1.64981  16.36 -0.23 
+ 1.6364  17.151 -0.23 
+ 1.6212  17.9603 -0.23 
+ 1.6169  18.18 -0.23 
+ 1.6061  18.7543 -0.23 
+ 1.5909  19.4962 -0.23 
+ 1.57978  20 -0.23 
+ 1.5758  20.1926 -0.23 
+ 1.5606  20.8942 -0.23 
+ 1.5455  21.5304 -0.23 
+ 1.53816  21.82 -0.23 
+ 1.5303  22.1603 -0.23 
+ 1.5152  22.7807 -0.23 
+ 1.5  23.3462 -0.23 
+ 1.4916  23.64 -0.23 
+ 1.4848  23.9056 -0.23 
+ 1.4697  24.469 -0.23 
+ 1.4545  24.9851 -0.23 
+ 1.43969  25.45 -0.23 
+ 1.4394  25.4606 -0.23 
+ 1.4242  25.9928 -0.23 
+ 1.4091  26.4826 -0.23 
+ 1.3939  26.9341 -0.23 
+ 1.38186  27.27 -0.23 
+ 1.3788  27.3698 -0.23 
+ 1.3636  27.8435 -0.23 
+ 1.3485  28.2822 -0.23 
+ 1.3333  28.6894 -0.23 
+ 1.3182  29.0681 -0.23 
+ 1.31729  29.09 -0.23 
+ 1.303  29.4986 -0.23 
+ 1.2879  29.9047 -0.23 
+ 1.2727  30.2842 -0.23 
+ 1.2576  30.6398 -0.23 
+ 1.24539  30.91 -0.23 
+ 1.2424  30.989 -0.23 
+ 1.2273  31.3772 -0.23 
+ 1.2121  31.7428 -0.23 
+ 1.197  32.0883 -0.23 
+ 1.1818  32.4161 -0.23 
+ 1.1667  32.7282 -0.23 
+ 1.16661  32.73 -0.23 
+ 1.1515  33.0938 -0.23 
+ 1.1364  33.4436 -0.23 
+ 1.1212  33.7796 -0.23 
+ 1.1061  34.1039 -0.23 
+ 1.0909  34.419 -0.23 
+ 1.08451  34.55 -0.23 
+ 1.0758  34.7638 -0.23 
+ 1.0606  35.1279 -0.23 
+ 1.0455  35.4865 -0.23 
+ 1.0303  35.8423 -0.23 
+ 1.0152  36.1982 -0.23 
+ 1.00835  36.36 -0.23 
+ 1  36.598 -0.23 
+
+
+# Contour 4, label:    -0.24
+ 1.79008  0 -0.24 
+ 1.78842  1.82 -0.24 
+ 1.7879  2.01348 -0.24 
+ 1.7837  3.64 -0.24 
+ 1.77557  5.45 -0.24 
+ 1.7727  5.91033 -0.24 
+ 1.76432  7.27 -0.24 
+ 1.7576  8.11549 -0.24 
+ 1.74967  9.09 -0.24 
+ 1.7424  9.83781 -0.24 
+ 1.73164  10.91 -0.24 
+ 1.7273  11.2925 -0.24 
+ 1.7121  12.565 -0.24 
+ 1.71007  12.73 -0.24 
+ 1.697  13.7205 -0.24 
+ 1.68505  14.55 -0.24 
+ 1.6818  14.7672 -0.24 
+ 1.6667  15.7448 -0.24 
+ 1.65631  16.36 -0.24 
+ 1.6515  16.6477 -0.24 
+ 1.6364  17.515 -0.24 
+ 1.62361  18.18 -0.24 
+ 1.6212  18.3097 -0.24 
+ 1.6061  19.1021 -0.24 
+ 1.5909  19.8173 -0.24 
+ 1.58687  20 -0.24 
+ 1.5758  20.5358 -0.24 
+ 1.5606  21.2123 -0.24 
+ 1.54566  21.82 -0.24 
+ 1.5455  21.827 -0.24 
+ 1.5303  22.4846 -0.24 
+ 1.5152  23.0832 -0.24 
+ 1.5  23.6289 -0.24 
+ 1.49968  23.64 -0.24 
+ 1.4848  24.2215 -0.24 
+ 1.4697  24.7655 -0.24 
+ 1.4545  25.2638 -0.24 
+ 1.44857  25.45 -0.24 
+ 1.4394  25.7819 -0.24 
+ 1.4242  26.2961 -0.24 
+ 1.4091  26.7694 -0.24 
+ 1.3939  27.2061 -0.24 
+ 1.39161  27.27 -0.24 
+ 1.3788  27.6871 -0.24 
+ 1.3636  28.1455 -0.24 
+ 1.3485  28.5703 -0.24 
+ 1.3333  28.9648 -0.24 
+ 1.3283  29.09 -0.24 
+ 1.3182  29.3891 -0.24 
+ 1.303  29.8115 -0.24 
+ 1.2879  30.2055 -0.24 
+ 1.2727  30.5742 -0.24 
+ 1.25806  30.91 -0.24 
+ 1.2576  30.9226 -0.24 
+ 1.2424  31.3245 -0.24 
+ 1.2273  31.7024 -0.24 
+ 1.2121  32.0588 -0.24 
+ 1.197  32.3963 -0.24 
+ 1.1818  32.7169 -0.24 
+ 1.18117  32.73 -0.24 
+ 1.1667  33.0899 -0.24 
+ 1.1515  33.4484 -0.24 
+ 1.1364  33.7918 -0.24 
+ 1.1212  34.1223 -0.24 
+ 1.1061  34.4422 -0.24 
+ 1.10088  34.55 -0.24 
+ 1.0909  34.7969 -0.24 
+ 1.0758  35.1648 -0.24 
+ 1.0606  35.5255 -0.24 
+ 1.0455  35.8816 -0.24 
+ 1.0303  36.2359 -0.24 
+ 1.02503  36.36 -0.24 
+ 1.0152  36.64 -0.24 
+ 1  37.0727 -0.24 
+
+
+# Contour 5, label:    -0.25
+ 1.79571  0 -0.25 
+ 1.79411  1.82 -0.25 
+ 1.78923  3.64 -0.25 
+ 1.7879  3.93883 -0.25 
+ 1.78132  5.45 -0.25 
+ 1.7727  6.83008 -0.25 
+ 1.76999  7.27 -0.25 
+ 1.7576  8.82827 -0.25 
+ 1.75547  9.09 -0.25 
+ 1.7424  10.4337 -0.25 
+ 1.73762  10.91 -0.25 
+ 1.7273  11.8203 -0.25 
+ 1.71629  12.73 -0.25 
+ 1.7121  13.0514 -0.25 
+ 1.697  14.1668 -0.25 
+ 1.69148  14.55 -0.25 
+ 1.6818  15.1969 -0.25 
+ 1.6667  16.1376 -0.25 
+ 1.66295  16.36 -0.25 
+ 1.6515  17.0443 -0.25 
+ 1.6364  17.879 -0.25 
+ 1.63061  18.18 -0.25 
+ 1.6212  18.6871 -0.25 
+ 1.6061  19.4499 -0.25 
+ 1.59415  20 -0.25 
+ 1.5909  20.1599 -0.25 
+ 1.5758  20.879 -0.25 
+ 1.5606  21.5305 -0.25 
+ 1.55348  21.82 -0.25 
+ 1.5455  22.1756 -0.25 
+ 1.5303  22.809 -0.25 
+ 1.5152  23.3857 -0.25 
+ 1.50811  23.64 -0.25 
+ 1.5  23.9642 -0.25 
+ 1.4848  24.5374 -0.25 
+ 1.4697  25.0619 -0.25 
+ 1.45758  25.45 -0.25 
+ 1.4545  25.5633 -0.25 
+ 1.4394  26.1031 -0.25 
+ 1.4242  26.5993 -0.25 
+ 1.4091  27.0563 -0.25 
+ 1.4016  27.27 -0.25 
+ 1.3939  27.5257 -0.25 
+ 1.3788  28.0045 -0.25 
+ 1.3636  28.4476 -0.25 
+ 1.3485  28.8584 -0.25 
+ 1.33945  29.09 -0.25 
+ 1.3333  29.2759 -0.25 
+ 1.3182  29.7151 -0.25 
+ 1.303  30.1243 -0.25 
+ 1.2879  30.5064 -0.25 
+ 1.2727  30.8643 -0.25 
+ 1.27071  30.91 -0.25 
+ 1.2576  31.2695 -0.25 
+ 1.2424  31.66 -0.25 
+ 1.2273  32.0276 -0.25 
+ 1.2121  32.3749 -0.25 
+ 1.197  32.7042 -0.25 
+ 1.19578  32.73 -0.25 
+ 1.1818  33.0846 -0.25 
+ 1.1667  33.4521 -0.25 
+ 1.1515  33.8031 -0.25 
+ 1.1364  34.14 -0.25 
+ 1.1212  34.4651 -0.25 
+ 1.11717  34.55 -0.25 
+ 1.1061  34.8302 -0.25 
+ 1.0909  35.2025 -0.25 
+ 1.0758  35.5658 -0.25 
+ 1.0606  35.923 -0.25 
+ 1.0455  36.2766 -0.25 
+ 1.04192  36.36 -0.25 
+ 1.0303  36.6874 -0.25 
+ 1.0152  37.1159 -0.25 
+ 1  37.5474 -0.25 
+
+
+# Contour 6, label:    -0.26
+ 1.80134  0 -0.26 
+ 1.7998  1.82 -0.26 
+ 1.79511  3.64 -0.26 
+ 1.7879  5.25759 -0.26 
+ 1.78706  5.45 -0.26 
+ 1.77593  7.27 -0.26 
+ 1.7727  7.68152 -0.26 
+ 1.76155  9.09 -0.26 
+ 1.7576  9.50645 -0.26 
+ 1.74371  10.91 -0.26 
+ 1.7424  11.0267 -0.26 
+ 1.7273  12.3481 -0.26 
+ 1.72268  12.73 -0.26 
+ 1.7121  13.5414 -0.26 
+ 1.69797  14.55 -0.26 
+ 1.697  14.6165 -0.26 
+ 1.6818  15.6265 -0.26 
+ 1.66976  16.36 -0.26 
+ 1.6667  16.5478 -0.26 
+ 1.6515  17.4409 -0.26 
+ 1.63768  18.18 -0.26 
+ 1.6364  18.251 -0.26 
+ 1.6212  19.0645 -0.26 
+ 1.6061  19.7977 -0.26 
+ 1.60171  20 -0.26 
+ 1.5909  20.5308 -0.26 
+ 1.5758  21.2222 -0.26 
+ 1.56135  21.82 -0.26 
+ 1.5606  21.8537 -0.26 
+ 1.5455  22.5241 -0.26 
+ 1.5303  23.1334 -0.26 
+ 1.5166  23.64 -0.26 
+ 1.5152  23.6976 -0.26 
+ 1.5  24.3017 -0.26 
+ 1.4848  24.8534 -0.26 
+ 1.4697  25.3583 -0.26 
+ 1.46684  25.45 -0.26 
+ 1.4545  25.9044 -0.26 
+ 1.4394  26.4243 -0.26 
+ 1.4242  26.9025 -0.26 
+ 1.41172  27.27 -0.26 
+ 1.4091  27.36 -0.26 
+ 1.3939  27.86 -0.26 
+ 1.3788  28.3219 -0.26 
+ 1.3636  28.7496 -0.26 
+ 1.35074  29.09 -0.26 
+ 1.3485  29.16 -0.26 
+ 1.3333  29.6166 -0.26 
+ 1.3182  30.0412 -0.26 
+ 1.303  30.4371 -0.26 
+ 1.2879  30.8073 -0.26 
+ 1.28352  30.91 -0.26 
+ 1.2727  31.213 -0.26 
+ 1.2576  31.6164 -0.26 
+ 1.2424  31.9954 -0.26 
+ 1.2273  32.3528 -0.26 
+ 1.2121  32.691 -0.26 
+ 1.21031  32.73 -0.26 
+ 1.197  33.0787 -0.26 
+ 1.1818  33.4553 -0.26 
+ 1.1667  33.8142 -0.26 
+ 1.1515  34.1578 -0.26 
+ 1.1364  34.4882 -0.26 
+ 1.1335  34.55 -0.26 
+ 1.1212  34.8645 -0.26 
+ 1.1061  35.2415 -0.26 
+ 1.0909  35.6081 -0.26 
+ 1.0758  35.9669 -0.26 
+ 1.0606  36.3206 -0.26 
+ 1.05891  36.36 -0.26 
+ 1.0455  36.7401 -0.26 
+ 1.0303  37.1657 -0.26 
+ 1.0152  37.5918 -0.26 
+ 1  38.0221 -0.26 
+
+
+# Contour 7, label:    -0.27
+ 1.80735  0 -0.27 
+ 1.80574  1.82 -0.27 
+ 1.803  2.84331 -0.27 
+ 1.80099  3.64 -0.27 
+ 1.79321  5.45 -0.27 
+ 1.7879  6.32094 -0.27 
+ 1.78213  7.27 -0.27 
+ 1.7727  8.47032 -0.27 
+ 1.76779  9.09 -0.27 
+ 1.7576  10.1646 -0.27 
+ 1.75022  10.91 -0.27 
+ 1.7424  11.6084 -0.27 
+ 1.72919  12.73 -0.27 
+ 1.7273  12.879 -0.27 
+ 1.7121  14.0314 -0.27 
+ 1.70483  14.55 -0.27 
+ 1.697  15.0873 -0.27 
+ 1.6818  16.0562 -0.27 
+ 1.67681  16.36 -0.27 
+ 1.6667  16.9807 -0.27 
+ 1.6515  17.8375 -0.27 
+ 1.6451  18.18 -0.27 
+ 1.6364  18.6614 -0.27 
+ 1.6212  19.4419 -0.27 
+ 1.60943  20 -0.27 
+ 1.6061  20.168 -0.27 
+ 1.5909  20.9018 -0.27 
+ 1.5758  21.5654 -0.27 
+ 1.56964  21.82 -0.27 
+ 1.5606  22.229 -0.27 
+ 1.5455  22.8727 -0.27 
+ 1.5303  23.4578 -0.27 
+ 1.52537  23.64 -0.27 
+ 1.5152  24.0588 -0.27 
+ 1.5  24.6391 -0.27 
+ 1.4848  25.1693 -0.27 
+ 1.4763  25.45 -0.27 
+ 1.4697  25.7007 -0.27 
+ 1.4545  26.2454 -0.27 
+ 1.4394  26.7455 -0.27 
+ 1.4242  27.2057 -0.27 
+ 1.42202  27.27 -0.27 
+ 1.4091  27.7129 -0.27 
+ 1.3939  28.1943 -0.27 
+ 1.3788  28.6393 -0.27 
+ 1.3636  29.0517 -0.27 
+ 1.36215  29.09 -0.27 
+ 1.3485  29.5169 -0.27 
+ 1.3333  29.9573 -0.27 
+ 1.3182  30.3673 -0.27 
+ 1.303  30.75 -0.27 
+ 1.2964  30.91 -0.27 
+ 1.2879  31.1561 -0.27 
+ 1.2727  31.5726 -0.27 
+ 1.2576  31.9633 -0.27 
+ 1.2424  32.3309 -0.27 
+ 1.2273  32.678 -0.27 
+ 1.22496  32.73 -0.27 
+ 1.2121  33.0732 -0.27 
+ 1.197  33.4592 -0.27 
+ 1.1818  33.8261 -0.27 
+ 1.1667  34.1764 -0.27 
+ 1.1515  34.5124 -0.27 
+ 1.14978  34.55 -0.27 
+ 1.1364  34.9005 -0.27 
+ 1.1212  35.2825 -0.27 
+ 1.1061  35.6527 -0.27 
+ 1.0909  36.0137 -0.27 
+ 1.07614  36.36 -0.27 
+ 1.0758  36.3698 -0.27 
+ 1.0606  36.7983 -0.27 
+ 1.0455  37.2219 -0.27 
+ 1.0303  37.6439 -0.27 
+ 1.0152  38.0676 -0.27 
+ 1.01123  38.18 -0.27 
+ 1  38.5617 -0.27 
+
+
+# Contour 8, label:    -0.28
+ 1.81353  0 -0.28 
+ 1.81198  1.82 -0.28 
+ 1.80726  3.64 -0.28 
+ 1.803  4.60527 -0.28 
+ 1.79942  5.45 -0.28 
+ 1.78836  7.27 -0.28 
+ 1.7879  7.3306 -0.28 
+ 1.77416  9.09 -0.28 
+ 1.7727  9.24611 -0.28 
+ 1.7576  10.8227 -0.28 
+ 1.75674  10.91 -0.28 
+ 1.7424  12.1902 -0.28 
+ 1.73604  12.73 -0.28 
+ 1.7273  13.418 -0.28 
+ 1.7121  14.5214 -0.28 
+ 1.7117  14.55 -0.28 
+ 1.697  15.5581 -0.28 
+ 1.68403  16.36 -0.28 
+ 1.6818  16.4986 -0.28 
+ 1.6667  17.4136 -0.28 
+ 1.65259  18.18 -0.28 
+ 1.6515  18.241 -0.28 
+ 1.6364  19.0718 -0.28 
+ 1.6212  19.8193 -0.28 
+ 1.61739  20 -0.28 
+ 1.6061  20.5698 -0.28 
+ 1.5909  21.2727 -0.28 
+ 1.57805  21.82 -0.28 
+ 1.5758  21.9246 -0.28 
+ 1.5606  22.6043 -0.28 
+ 1.5455  23.2212 -0.28 
+ 1.53436  23.64 -0.28 
+ 1.5303  23.8099 -0.28 
+ 1.5152  24.42 -0.28 
+ 1.5  24.9765 -0.28 
+ 1.48592  25.45 -0.28 
+ 1.4848  25.4932 -0.28 
+ 1.4697  26.0637 -0.28 
+ 1.4545  26.5865 -0.28 
+ 1.4394  27.0668 -0.28 
+ 1.43263  27.27 -0.28 
+ 1.4242  27.5642 -0.28 
+ 1.4091  28.0658 -0.28 
+ 1.3939  28.5286 -0.28 
+ 1.3788  28.9567 -0.28 
+ 1.37386  29.09 -0.28 
+ 1.3636  29.4171 -0.28 
+ 1.3485  29.8737 -0.28 
+ 1.3333  30.298 -0.28 
+ 1.3182  30.6934 -0.28 
+ 1.30944  30.91 -0.28 
+ 1.303  31.1002 -0.28 
+ 1.2879  31.5299 -0.28 
+ 1.2727  31.9322 -0.28 
+ 1.2576  32.3101 -0.28 
+ 1.2424  32.6663 -0.28 
+ 1.23962  32.73 -0.28 
+ 1.2273  33.0693 -0.28 
+ 1.2121  33.4647 -0.28 
+ 1.197  33.8397 -0.28 
+ 1.1818  34.1969 -0.28 
+ 1.1667  34.5386 -0.28 
+ 1.16618  34.55 -0.28 
+ 1.1515  34.9392 -0.28 
+ 1.1364  35.3265 -0.28 
+ 1.1212  35.7006 -0.28 
+ 1.1061  36.064 -0.28 
+ 1.09347  36.36 -0.28 
+ 1.0909  36.4331 -0.28 
+ 1.0758  36.8624 -0.28 
+ 1.0606  37.2848 -0.28 
+ 1.0455  37.7037 -0.28 
+ 1.0303  38.1221 -0.28 
+ 1.02823  38.18 -0.28 
+ 1.0152  38.6199 -0.28 
+ 1  39.1338 -0.28 
+
+
+# Contour 9, label:    -0.29
+ 1.81984  0 -0.29 
+ 1.81824  1.82 -0.29 
+ 1.8182  1.83352 -0.29 
+ 1.81371  3.64 -0.29 
+ 1.80589  5.45 -0.29 
+ 1.803  5.92941 -0.29 
+ 1.79507  7.27 -0.29 
+ 1.7879  8.20501 -0.29 
+ 1.78099  9.09 -0.29 
+ 1.7727  9.97422 -0.29 
+ 1.76368  10.91 -0.29 
+ 1.7576  11.4672 -0.29 
+ 1.74294  12.73 -0.29 
+ 1.7424  12.7728 -0.29 
+ 1.7273  13.957 -0.29 
+ 1.71911  14.55 -0.29 
+ 1.7121  15.0368 -0.29 
+ 1.697  16.0289 -0.29 
+ 1.69164  16.36 -0.29 
+ 1.6818  16.9721 -0.29 
+ 1.6667  17.8465 -0.29 
+ 1.66056  18.18 -0.29 
+ 1.6515  18.6881 -0.29 
+ 1.6364  19.4821 -0.29 
+ 1.62564  20 -0.29 
+ 1.6212  20.2274 -0.29 
+ 1.6061  20.9716 -0.29 
+ 1.5909  21.6437 -0.29 
+ 1.58676  21.82 -0.29 
+ 1.5758  22.3295 -0.29 
+ 1.5606  22.9796 -0.29 
+ 1.5455  23.5698 -0.29 
+ 1.54363  23.64 -0.29 
+ 1.5303  24.1974 -0.29 
+ 1.5152  24.7812 -0.29 
+ 1.5  25.314 -0.29 
+ 1.49595  25.45 -0.29 
+ 1.4848  25.8803 -0.29 
+ 1.4697  26.4267 -0.29 
+ 1.4545  26.9276 -0.29 
+ 1.44344  27.27 -0.29 
+ 1.4394  27.4155 -0.29 
+ 1.4242  27.9377 -0.29 
+ 1.4091  28.4187 -0.29 
+ 1.3939  28.8629 -0.29 
+ 1.38575  29.09 -0.29 
+ 1.3788  29.3187 -0.29 
+ 1.3636  29.7917 -0.29 
+ 1.3485  30.2305 -0.29 
+ 1.3333  30.6387 -0.29 
+ 1.32268  30.91 -0.29 
+ 1.3182  31.0465 -0.29 
+ 1.303  31.4895 -0.29 
+ 1.2879  31.9036 -0.29 
+ 1.2727  32.2919 -0.29 
+ 1.2576  32.657 -0.29 
+ 1.25447  32.73 -0.29 
+ 1.2424  33.0684 -0.29 
+ 1.2273  33.4732 -0.29 
+ 1.2121  33.8562 -0.29 
+ 1.197  34.2202 -0.29 
+ 1.18259  34.55 -0.29 
+ 1.1818  34.5717 -0.29 
+ 1.1667  34.9817 -0.29 
+ 1.1515  35.3744 -0.29 
+ 1.1364  35.7525 -0.29 
+ 1.1212  36.1186 -0.29 
+ 1.11103  36.36 -0.29 
+ 1.1061  36.5026 -0.29 
+ 1.0909  36.9331 -0.29 
+ 1.0758  37.355 -0.29 
+ 1.0606  37.7714 -0.29 
+ 1.0457  38.18 -0.29 
+ 1.0455  38.1866 -0.29 
+ 1.0303  38.6906 -0.29 
+ 1.0152  39.1957 -0.29 
+ 1  39.7058 -0.29 
+
+ 2.5  70.076 -0.29 
+ 2.4848  70.3033 -0.29 
+ 2.4697  70.5579 -0.29 
+ 2.4545  70.8407 -0.29 
+ 2.45121  70.91 -0.29 
+ 2.4394  71.1906 -0.29 
+ 2.4242  71.5851 -0.29 
+ 2.4091  72.0097 -0.29 
+ 2.3939  72.4681 -0.29 
+ 2.38594  72.73 -0.29 
+ 2.3788  72.9975 -0.29 
+ 2.3636  73.6112 -0.29 
+ 2.3485  74.2618 -0.29 
+ 2.34223  74.55 -0.29 
+ 2.3333  75.0207 -0.29 
+ 2.3182  75.8749 -0.29 
+ 2.31007  76.36 -0.29 
+ 2.303  76.8571 -0.29 
+ 2.2879  77.9916 -0.29 
+ 2.28553  78.18 -0.29 
+ 2.2727  79.4062 -0.29 
+ 2.26687  80 -0.29 
+ 2.2576  81.1649 -0.29 
+ 2.25267  81.82 -0.29 
+ 2.2424  83.5826 -0.29 
+ 2.24209  83.64 -0.29 
+ 2.23511  85.45 -0.29 
+ 2.23079  87.27 -0.29 
+ 2.22905  89.09 -0.29 
+ 2.22975  90.91 -0.29 
+ 2.23267  92.73 -0.29 
+ 2.2376  94.55 -0.29 
+ 2.2424  95.8664 -0.29 
+ 2.24439  96.36 -0.29 
+ 2.25326  98.18 -0.29 
+ 2.2576  98.9625 -0.29 
+ 2.26386  100 -0.29 
+ 2.2727  101.344 -0.29 
+ 2.27614  101.82 -0.29 
+ 2.2879  103.358 -0.29 
+ 2.29023  103.64 -0.29 
+ 2.303  105.128 -0.29 
+ 2.30602  105.45 -0.29 
+ 2.3182  106.737 -0.29 
+ 2.32363  107.27 -0.29 
+ 2.3333  108.218 -0.29 
+ 2.34294  109.09 -0.29 
+ 2.3485  109.599 -0.29 
+ 2.3636  110.891 -0.29 
+ 2.36384  110.91 -0.29 
+ 2.3788  112.103 -0.29 
+ 2.38718  112.73 -0.29 
+ 2.3939  113.25 -0.29 
+ 2.4091  114.338 -0.29 
+ 2.4123  114.55 -0.29 
+ 2.4242  115.367 -0.29 
+ 2.4394  116.338 -0.29 
+ 2.43978  116.36 -0.29 
+ 2.4545  117.272 -0.29 
+ 2.4697  118.155 -0.29 
+ 2.47017  118.18 -0.29 
+ 2.4848  118.996 -0.29 
+ 2.5  119.789 -0.29 
+
+
+# Contour 10, label:     -0.3
+ 1.82655  0 -0.3 
+ 1.82502  1.82 -0.3 
+ 1.82034  3.64 -0.3 
+ 1.8182  4.13728 -0.3 
+ 1.81271  5.45 -0.3 
+ 1.803  7.06195 -0.3 
+ 1.80177  7.27 -0.3 
+ 1.7879  9.07942 -0.3 
+ 1.78782  9.09 -0.3 
+ 1.7727  10.7023 -0.3 
+ 1.7707  10.91 -0.3 
+ 1.7576  12.1096 -0.3 
+ 1.7504  12.73 -0.3 
+ 1.7424  13.3669 -0.3 
+ 1.7273  14.496 -0.3 
+ 1.72655  14.55 -0.3 
+ 1.7121  15.5537 -0.3 
+ 1.69941  16.36 -0.3 
+ 1.697  16.514 -0.3 
+ 1.6818  17.4456 -0.3 
+ 1.66865  18.18 -0.3 
+ 1.6667  18.2921 -0.3 
+ 1.6515  19.1352 -0.3 
+ 1.6364  19.8925 -0.3 
+ 1.63417  20 -0.3 
+ 1.6212  20.6635 -0.3 
+ 1.6061  21.3734 -0.3 
+ 1.59577  21.82 -0.3 
+ 1.5909  22.0498 -0.3 
+ 1.5758  22.7345 -0.3 
+ 1.5606  23.3549 -0.3 
+ 1.55324  23.64 -0.3 
+ 1.5455  23.9727 -0.3 
+ 1.5303  24.5849 -0.3 
+ 1.5152  25.1424 -0.3 
+ 1.50626  25.45 -0.3 
+ 1.5  25.6971 -0.3 
+ 1.4848  26.2675 -0.3 
+ 1.4697  26.7896 -0.3 
+ 1.4545  27.2687 -0.3 
+ 1.45446  27.27 -0.3 
+ 1.4394  27.8116 -0.3 
+ 1.4242  28.3111 -0.3 
+ 1.4091  28.7716 -0.3 
+ 1.39788  29.09 -0.3 
+ 1.3939  29.2233 -0.3 
+ 1.3788  29.7129 -0.3 
+ 1.3636  30.1663 -0.3 
+ 1.3485  30.5873 -0.3 
+ 1.33609  30.91 -0.3 
+ 1.3333  30.9967 -0.3 
+ 1.3182  31.4531 -0.3 
+ 1.303  31.8789 -0.3 
+ 1.2879  32.2774 -0.3 
+ 1.2727  32.6515 -0.3 
+ 1.26943  32.73 -0.3 
+ 1.2576  33.0719 -0.3 
+ 1.2424  33.486 -0.3 
+ 1.2273  33.877 -0.3 
+ 1.2121  34.2478 -0.3 
+ 1.19923  34.55 -0.3 
+ 1.197  34.6129 -0.3 
+ 1.1818  35.0295 -0.3 
+ 1.1667  35.4276 -0.3 
+ 1.1515  35.8097 -0.3 
+ 1.1364  36.1786 -0.3 
+ 1.12877  36.36 -0.3 
+ 1.1212  36.5793 -0.3 
+ 1.1061  37.0114 -0.3 
+ 1.0909  37.4331 -0.3 
+ 1.0758  37.8476 -0.3 
+ 1.06352  38.18 -0.3 
+ 1.0606  38.2755 -0.3 
+ 1.0455  38.7743 -0.3 
+ 1.0303  39.2716 -0.3 
+ 1.0152  39.7715 -0.3 
+ 1.00837  40 -0.3 
+ 1  40.3367 -0.3 
+
+ 2.3477  156.36 -0.3 
+ 2.3485  156.751 -0.3 
+ 2.35158  158.18 -0.3 
+ 2.35512  160 -0.3 
+ 2.35827  161.82 -0.3 
+ 2.36107  163.64 -0.3 
+ 2.36352  165.45 -0.3 
+ 2.3636  165.52 -0.3 
+ 2.36578  167.27 -0.3 
+ 2.36775  169.09 -0.3 
+ 2.36937  170.91 -0.3 
+ 2.37068  172.73 -0.3 
+ 2.37171  174.55 -0.3 
+ 2.37243  176.36 -0.3 
+ 2.37286  178.18 -0.3 
+ 2.373  180 -0.3 
+
+ 2.5  59.2027 -0.3 
+ 2.4848  59.5686 -0.3 
+ 2.4697  59.9388 -0.3 
+ 2.46728  60 -0.3 
+ 2.4545  60.3466 -0.3 
+ 2.4394  60.7665 -0.3 
+ 2.4242  61.1927 -0.3 
+ 2.4091  61.6251 -0.3 
+ 2.40248  61.82 -0.3 
+ 2.3939  62.0928 -0.3 
+ 2.3788  62.5908 -0.3 
+ 2.3636  63.0975 -0.3 
+ 2.3485  63.6143 -0.3 
+ 2.34778  63.64 -0.3 
+ 2.3333  64.1959 -0.3 
+ 2.3182  64.7915 -0.3 
+ 2.303  65.3991 -0.3 
+ 2.30179  65.45 -0.3 
+ 2.2879  66.0918 -0.3 
+ 2.2727  66.8041 -0.3 
+ 2.2631  67.27 -0.3 
+ 2.2576  67.5637 -0.3 
+ 2.2424  68.3992 -0.3 
+ 2.23019  69.09 -0.3 
+ 2.2273  69.2712 -0.3 
+ 2.2121  70.2547 -0.3 
+ 2.20229  70.91 -0.3 
+ 2.197  71.3048 -0.3 
+ 2.1818  72.4674 -0.3 
+ 2.1785  72.73 -0.3 
+ 2.1667  73.7902 -0.3 
+ 2.15843  74.55 -0.3 
+ 2.1515  75.2728 -0.3 
+ 2.14148  76.36 -0.3 
+ 2.1364  77.0009 -0.3 
+ 2.12732  78.18 -0.3 
+ 2.1212  79.1164 -0.3 
+ 2.11567  80 -0.3 
+ 2.10623  81.82 -0.3 
+ 2.1061  81.8517 -0.3 
+ 2.09901  83.64 -0.3 
+ 2.09352  85.45 -0.3 
+ 2.0909  86.7076 -0.3 
+ 2.08979  87.27 -0.3 
+ 2.08775  89.09 -0.3 
+ 2.08714  90.91 -0.3 
+ 2.08786  92.73 -0.3 
+ 2.08981  94.55 -0.3 
+ 2.0909  95.2031 -0.3 
+ 2.09297  96.36 -0.3 
+ 2.09725  98.18 -0.3 
+ 2.1024  100 -0.3 
+ 2.1061  101.142 -0.3 
+ 2.10841  101.82 -0.3 
+ 2.11525  103.64 -0.3 
+ 2.1212  105.109 -0.3 
+ 2.12267  105.45 -0.3 
+ 2.13089  107.27 -0.3 
+ 2.1364  108.456 -0.3 
+ 2.13949  109.09 -0.3 
+ 2.14853  110.91 -0.3 
+ 2.1515  111.502 -0.3 
+ 2.15802  112.73 -0.3 
+ 2.1667  114.378 -0.3 
+ 2.16765  114.55 -0.3 
+ 2.17758  116.36 -0.3 
+ 2.1818  117.151 -0.3 
+ 2.18761  118.18 -0.3 
+ 2.197  119.892 -0.3 
+ 2.19762  120 -0.3 
+ 2.20772  121.82 -0.3 
+ 2.2121  122.642 -0.3 
+ 2.21771  123.64 -0.3 
+ 2.2273  125.417 -0.3 
+ 2.22748  125.45 -0.3 
+ 2.23723  127.27 -0.3 
+ 2.2424  128.293 -0.3 
+ 2.24665  129.09 -0.3 
+ 2.25581  130.91 -0.3 
+ 2.2576  131.285 -0.3 
+ 2.26476  132.73 -0.3 
+ 2.2727  134.447 -0.3 
+ 2.2732  134.55 -0.3 
+ 2.28157  136.36 -0.3 
+ 2.2879  137.847 -0.3 
+ 2.28938  138.18 -0.3 
+ 2.29696  140 -0.3 
+ 2.303  141.577 -0.3 
+ 2.30399  141.82 -0.3 
+ 2.31087  143.64 -0.3 
+ 2.31719  145.45 -0.3 
+ 2.3182  145.764 -0.3 
+ 2.32327  147.27 -0.3 
+ 2.32888  149.09 -0.3 
+ 2.3333  150.665 -0.3 
+ 2.33403  150.91 -0.3 
+ 2.33905  152.73 -0.3 
+ 2.3436  154.55 -0.3 
+ 2.3477  156.36 -0.3 
+
+
+# Contour 11, label:    -0.31
+ 1.83326  0 -0.31 
+ 1.8318  1.82 -0.31 
+ 1.82735  3.64 -0.31 
+ 1.81964  5.45 -0.31 
+ 1.8182  5.69525 -0.31 
+ 1.80901  7.27 -0.31 
+ 1.803  8.06274 -0.31 
+ 1.79519  9.09 -0.31 
+ 1.7879  9.8874 -0.31 
+ 1.77818  10.91 -0.31 
+ 1.7727  11.4181 -0.31 
+ 1.75787  12.73 -0.31 
+ 1.7576  12.7524 -0.31 
+ 1.7424  13.961 -0.31 
+ 1.73448  14.55 -0.31 
+ 1.7273  15.0618 -0.31 
+ 1.7121  16.0706 -0.31 
+ 1.70755  16.36 -0.31 
+ 1.697  17.0329 -0.31 
+ 1.6818  17.919 -0.31 
+ 1.67713  18.18 -0.31 
+ 1.6667  18.7803 -0.31 
+ 1.6515  19.5823 -0.31 
+ 1.64306  20 -0.31 
+ 1.6364  20.3502 -0.31 
+ 1.6212  21.0996 -0.31 
+ 1.6061  21.7752 -0.31 
+ 1.60506  21.82 -0.31 
+ 1.5909  22.4878 -0.31 
+ 1.5758  23.1395 -0.31 
+ 1.56308  23.64 -0.31 
+ 1.5606  23.748 -0.31 
+ 1.5455  24.3894 -0.31 
+ 1.5303  24.9723 -0.31 
+ 1.51682  25.45 -0.31 
+ 1.5152  25.5158 -0.31 
+ 1.5  26.111 -0.31 
+ 1.4848  26.6547 -0.31 
+ 1.4697  27.1526 -0.31 
+ 1.46597  27.27 -0.31 
+ 1.4545  27.6895 -0.31 
+ 1.4394  28.2077 -0.31 
+ 1.4242  28.6846 -0.31 
+ 1.41035  29.09 -0.31 
+ 1.4091  29.133 -0.31 
+ 1.3939  29.6393 -0.31 
+ 1.3788  30.1072 -0.31 
+ 1.3636  30.5409 -0.31 
+ 1.34984  30.91 -0.31 
+ 1.3485  30.9528 -0.31 
+ 1.3333  31.4225 -0.31 
+ 1.3182  31.8598 -0.31 
+ 1.303  32.2683 -0.31 
+ 1.2879  32.6511 -0.31 
+ 1.28467  32.73 -0.31 
+ 1.2727  33.0818 -0.31 
+ 1.2576  33.5049 -0.31 
+ 1.2424  33.9037 -0.31 
+ 1.2273  34.2809 -0.31 
+ 1.21598  34.55 -0.31 
+ 1.2121  34.6609 -0.31 
+ 1.197  35.0841 -0.31 
+ 1.1818  35.4873 -0.31 
+ 1.1667  35.8734 -0.31 
+ 1.1515  36.245 -0.31 
+ 1.14674  36.36 -0.31 
+ 1.1364  36.6647 -0.31 
+ 1.1212  37.0984 -0.31 
+ 1.1061  37.5201 -0.31 
+ 1.0909  37.9331 -0.31 
+ 1.0818  38.18 -0.31 
+ 1.0758  38.377 -0.31 
+ 1.0606  38.8713 -0.31 
+ 1.0455  39.3619 -0.31 
+ 1.0303  39.8526 -0.31 
+ 1.02583  40 -0.31 
+ 1.0152  40.4225 -0.31 
+ 1  41.0298 -0.31 
+
+ 2.17769  147.27 -0.31 
+ 2.1818  148.971 -0.31 
+ 2.1821  149.09 -0.31 
+ 2.1864  150.91 -0.31 
+ 2.19035  152.73 -0.31 
+ 2.19398  154.55 -0.31 
+ 2.197  156.199 -0.31 
+ 2.19731  156.36 -0.31 
+ 2.20045  158.18 -0.31 
+ 2.20331  160 -0.31 
+ 2.20587  161.82 -0.31 
+ 2.20815  163.64 -0.31 
+ 2.21018  165.45 -0.31 
+ 2.21193  167.27 -0.31 
+ 2.2121  167.475 -0.31 
+ 2.21352  169.09 -0.31 
+ 2.21486  170.91 -0.31 
+ 2.21595  172.73 -0.31 
+ 2.2168  174.55 -0.31 
+ 2.21739  176.36 -0.31 
+ 2.21775  178.18 -0.31 
+ 2.21787  180 -0.31 
+
+ 2.5  52.5634 -0.31 
+ 2.49415  52.73 -0.31 
+ 2.4848  53.01 -0.31 
+ 2.4697  53.4664 -0.31 
+ 2.4545  53.92 -0.31 
+ 2.4394  54.3711 -0.31 
+ 2.43346  54.55 -0.31 
+ 2.4242  54.8432 -0.31 
+ 2.4091  55.3285 -0.31 
+ 2.3939  55.8137 -0.31 
+ 2.3788  56.2995 -0.31 
+ 2.37696  56.36 -0.31 
+ 2.3636  56.8277 -0.31 
+ 2.3485  57.3634 -0.31 
+ 2.3333  57.9016 -0.31 
+ 2.32564  58.18 -0.31 
+ 2.3182  58.468 -0.31 
+ 2.303  59.0641 -0.31 
+ 2.2879  59.6649 -0.31 
+ 2.27959  60 -0.31 
+ 2.2727  60.2978 -0.31 
+ 2.2576  60.9688 -0.31 
+ 2.2424  61.6463 -0.31 
+ 2.23864  61.82 -0.31 
+ 2.2273  62.3837 -0.31 
+ 2.2121  63.1458 -0.31 
+ 2.20249  63.64 -0.31 
+ 2.197  63.9439 -0.31 
+ 2.1818  64.8013 -0.31 
+ 2.17055  65.45 -0.31 
+ 2.1667  65.6934 -0.31 
+ 2.1515  66.6725 -0.31 
+ 2.14245  67.27 -0.31 
+ 2.1364  67.7083 -0.31 
+ 2.1212  68.8251 -0.31 
+ 2.11771  69.09 -0.31 
+ 2.1061  70.0614 -0.31 
+ 2.09609  70.91 -0.31 
+ 2.0909  71.3992 -0.31 
+ 2.07718  72.73 -0.31 
+ 2.0758  72.8808 -0.31 
+ 2.06074  74.55 -0.31 
+ 2.0606  74.5681 -0.31 
+ 2.04674  76.36 -0.31 
+ 2.0455  76.5446 -0.31 
+ 2.03477  78.18 -0.31 
+ 2.0303  78.975 -0.31 
+ 2.02473  80 -0.31 
+ 2.01646  81.82 -0.31 
+ 2.0152  82.1633 -0.31 
+ 2.0099  83.64 -0.31 
+ 2.00483  85.45 -0.31 
+ 2.00114  87.27 -0.31 
+ 2  88.1495 -0.31 
+ 1.99882  89.09 -0.31 
+ 1.99776  90.91 -0.31 
+ 1.99781  92.73 -0.31 
+ 1.99889  94.55 -0.31 
+ 2  95.5424 -0.31 
+ 2.00095  96.36 -0.31 
+ 2.00394  98.18 -0.31 
+ 2.0077  100 -0.31 
+ 2.01212  101.82 -0.31 
+ 2.0152  102.94 -0.31 
+ 2.0172  103.64 -0.31 
+ 2.02286  105.45 -0.31 
+ 2.02892  107.27 -0.31 
+ 2.0303  107.663 -0.31 
+ 2.03554  109.09 -0.31 
+ 2.04244  110.91 -0.31 
+ 2.0455  111.697 -0.31 
+ 2.04964  112.73 -0.31 
+ 2.05702  114.55 -0.31 
+ 2.0606  115.427 -0.31 
+ 2.06459  116.36 -0.31 
+ 2.07227  118.18 -0.31 
+ 2.0758  119.026 -0.31 
+ 2.08  120 -0.31 
+ 2.08767  121.82 -0.31 
+ 2.0909  122.605 -0.31 
+ 2.09535  123.64 -0.31 
+ 2.10294  125.45 -0.31 
+ 2.1061  126.233 -0.31 
+ 2.11041  127.27 -0.31 
+ 2.11768  129.09 -0.31 
+ 2.1212  130.012 -0.31 
+ 2.12479  130.91 -0.31 
+ 2.13173  132.73 -0.31 
+ 2.1364  134.02 -0.31 
+ 2.13838  134.55 -0.31 
+ 2.14483  136.36 -0.31 
+ 2.15091  138.18 -0.31 
+ 2.1515  138.367 -0.31 
+ 2.1569  140 -0.31 
+ 2.16253  141.82 -0.31 
+ 2.1667  143.262 -0.31 
+ 2.16783  143.64 -0.31 
+ 2.17295  145.45 -0.31 
+ 2.17769  147.27 -0.31 
+
+
+# Contour 12, label:    -0.32
+ 1.84065  0 -0.32 
+ 1.83913  1.82 -0.32 
+ 1.83447  3.64 -0.32 
+ 1.8333  3.9148 -0.32 
+ 1.82705  5.45 -0.32 
+ 1.8182  6.95556 -0.32 
+ 1.81636  7.27 -0.32 
+ 1.803  9.03387 -0.32 
+ 1.80257  9.09 -0.32 
+ 1.7879  10.6946 -0.32 
+ 1.78585  10.91 -0.32 
+ 1.7727  12.1289 -0.32 
+ 1.76591  12.73 -0.32 
+ 1.7576  13.4087 -0.32 
+ 1.74247  14.55 -0.32 
+ 1.7424  14.5554 -0.32 
+ 1.7273  15.6306 -0.32 
+ 1.71598  16.36 -0.32 
+ 1.7121  16.611 -0.32 
+ 1.697  17.5519 -0.32 
+ 1.68591  18.18 -0.32 
+ 1.6818  18.4198 -0.32 
+ 1.6667  19.2685 -0.32 
+ 1.65214  20 -0.32 
+ 1.6515  20.034 -0.32 
+ 1.6364  20.8246 -0.32 
+ 1.6212  21.5357 -0.32 
+ 1.61481  21.82 -0.32 
+ 1.6061  22.2419 -0.32 
+ 1.5909  22.9258 -0.32 
+ 1.5758  23.5445 -0.32 
+ 1.57337  23.64 -0.32 
+ 1.5606  24.197 -0.32 
+ 1.5455  24.806 -0.32 
+ 1.5303  25.3598 -0.32 
+ 1.52776  25.45 -0.32 
+ 1.5152  25.9595 -0.32 
+ 1.5  26.525 -0.32 
+ 1.4848  27.0419 -0.32 
+ 1.47777  27.27 -0.32 
+ 1.4697  27.5737 -0.32 
+ 1.4545  28.1107 -0.32 
+ 1.4394  28.6038 -0.32 
+ 1.4242  29.058 -0.32 
+ 1.42311  29.09 -0.32 
+ 1.4091  29.5729 -0.32 
+ 1.3939  30.0552 -0.32 
+ 1.3788  30.5015 -0.32 
+ 1.36381  30.91 -0.32 
+ 1.3636  30.917 -0.32 
+ 1.3485  31.3997 -0.32 
+ 1.3333  31.8482 -0.32 
+ 1.3182  32.2665 -0.32 
+ 1.303  32.6577 -0.32 
+ 1.30012  32.73 -0.32 
+ 1.2879  33.0999 -0.32 
+ 1.2727  33.5318 -0.32 
+ 1.2576  33.9379 -0.32 
+ 1.2424  34.3213 -0.32 
+ 1.23302  34.55 -0.32 
+ 1.2273  34.7179 -0.32 
+ 1.2121  35.1473 -0.32 
+ 1.197  35.5554 -0.32 
+ 1.1818  35.9451 -0.32 
+ 1.1667  36.3192 -0.32 
+ 1.16502  36.36 -0.32 
+ 1.1515  36.7604 -0.32 
+ 1.1364  37.1955 -0.32 
+ 1.1212  37.6174 -0.32 
+ 1.1061  38.0289 -0.32 
+ 1.10048  38.18 -0.32 
+ 1.0909  38.4925 -0.32 
+ 1.0758  38.9827 -0.32 
+ 1.0606  39.4671 -0.32 
+ 1.0455  39.9495 -0.32 
+ 1.04393  40 -0.32 
+ 1.0303  40.5298 -0.32 
+ 1.0152  41.1232 -0.32 
+ 1  41.7228 -0.32 
+
+ 2.06764  141.82 -0.32 
+ 2.0724  143.64 -0.32 
+ 2.0758  145.017 -0.32 
+ 2.0769  145.45 -0.32 
+ 2.0812  147.27 -0.32 
+ 2.08522  149.09 -0.32 
+ 2.08895  150.91 -0.32 
+ 2.0909  151.936 -0.32 
+ 2.09247  152.73 -0.32 
+ 2.09581  154.55 -0.32 
+ 2.09888  156.36 -0.32 
+ 2.10168  158.18 -0.32 
+ 2.10422  160 -0.32 
+ 2.1061  161.49 -0.32 
+ 2.10653  161.82 -0.32 
+ 2.10866  163.64 -0.32 
+ 2.11054  165.45 -0.32 
+ 2.11219  167.27 -0.32 
+ 2.11361  169.09 -0.32 
+ 2.1148  170.91 -0.32 
+ 2.11576  172.73 -0.32 
+ 2.11651  174.55 -0.32 
+ 2.11705  176.36 -0.32 
+ 2.11736  178.18 -0.32 
+ 2.11747  180 -0.32 
+
+ 2.5  47.4425 -0.32 
+ 2.4848  47.9488 -0.32 
+ 2.4697  48.4472 -0.32 
+ 2.4545  48.939 -0.32 
+ 2.44989  49.09 -0.32 
+ 2.4394  49.4476 -0.32 
+ 2.4242  49.9611 -0.32 
+ 2.4091  50.4691 -0.32 
+ 2.39585  50.91 -0.32 
+ 2.3939  50.9779 -0.32 
+ 2.3788  51.5151 -0.32 
+ 2.3636  52.0489 -0.32 
+ 2.3485  52.5805 -0.32 
+ 2.34429  52.73 -0.32 
+ 2.3333  53.1396 -0.32 
+ 2.3182  53.7089 -0.32 
+ 2.303  54.278 -0.32 
+ 2.29587  54.55 -0.32 
+ 2.2879  54.8695 -0.32 
+ 2.2727  55.4817 -0.32 
+ 2.2576  56.0956 -0.32 
+ 2.25115  56.36 -0.32 
+ 2.2424  56.7428 -0.32 
+ 2.2273  57.4169 -0.32 
+ 2.2121  58.0937 -0.32 
+ 2.21022  58.18 -0.32 
+ 2.197  58.8266 -0.32 
+ 2.1818  59.5711 -0.32 
+ 2.17323  60 -0.32 
+ 2.1667  60.35 -0.32 
+ 2.1515  61.1733 -0.32 
+ 2.13977  61.82 -0.32 
+ 2.1364  62.0196 -0.32 
+ 2.1212  62.9343 -0.32 
+ 2.10967  63.64 -0.32 
+ 2.1061  63.8755 -0.32 
+ 2.0909  64.8906 -0.32 
+ 2.0827  65.45 -0.32 
+ 2.0758  65.9647 -0.32 
+ 2.0606  67.1078 -0.32 
+ 2.0585  67.27 -0.32 
+ 2.0455  68.3691 -0.32 
+ 2.03704  69.09 -0.32 
+ 2.0303  69.7226 -0.32 
+ 2.01793  70.91 -0.32 
+ 2.0152  71.2013 -0.32 
+ 2.00101  72.73 -0.32 
+ 2  72.8525 -0.32 
+ 1.98619  74.55 -0.32 
+ 1.9848  74.7426 -0.32 
+ 1.97341  76.36 -0.32 
+ 1.9697  76.9659 -0.32 
+ 1.96237  78.18 -0.32 
+ 1.9545  79.6945 -0.32 
+ 1.95295  80 -0.32 
+ 1.94523  81.82 -0.32 
+ 1.9394  83.4912 -0.32 
+ 1.93889  83.64 -0.32 
+ 1.93399  85.45 -0.32 
+ 1.93032  87.27 -0.32 
+ 1.92784  89.09 -0.32 
+ 1.92648  90.91 -0.32 
+ 1.92615  92.73 -0.32 
+ 1.92678  94.55 -0.32 
+ 1.92829  96.36 -0.32 
+ 1.9306  98.18 -0.32 
+ 1.93361  100 -0.32 
+ 1.93725  101.82 -0.32 
+ 1.9394  102.757 -0.32 
+ 1.94148  103.64 -0.32 
+ 1.94624  105.45 -0.32 
+ 1.95139  107.27 -0.32 
+ 1.9545  108.304 -0.32 
+ 1.95695  109.09 -0.32 
+ 1.96289  110.91 -0.32 
+ 1.96901  112.73 -0.32 
+ 1.9697  112.931 -0.32 
+ 1.97541  114.55 -0.32 
+ 1.98188  116.36 -0.32 
+ 1.9848  117.181 -0.32 
+ 1.9885  118.18 -0.32 
+ 1.9952  120 -0.32 
+ 2  121.319 -0.32 
+ 2.00188  121.82 -0.32 
+ 2.0086  123.64 -0.32 
+ 2.01515  125.45 -0.32 
+ 2.0152  125.463 -0.32 
+ 2.0217  127.27 -0.32 
+ 2.02803  129.09 -0.32 
+ 2.0303  129.766 -0.32 
+ 2.03429  130.91 -0.32 
+ 2.04039  132.73 -0.32 
+ 2.0455  134.327 -0.32 
+ 2.04623  134.55 -0.32 
+ 2.05195  136.36 -0.32 
+ 2.05737  138.18 -0.32 
+ 2.0606  139.324 -0.32 
+ 2.06259  140 -0.32 
+ 2.06764  141.82 -0.32 
+
+
+# Contour 13, label:    -0.33
+ 1.84805  0 -0.33 
+ 1.8466  1.82 -0.33 
+ 1.8422  3.64 -0.33 
+ 1.83457  5.45 -0.33 
+ 1.8333  5.66829 -0.33 
+ 1.8242  7.27 -0.33 
+ 1.8182  8.0813 -0.33 
+ 1.81064  9.09 -0.33 
+ 1.803  9.93502 -0.33 
+ 1.79398  10.91 -0.33 
+ 1.7879  11.488 -0.33 
+ 1.77406  12.73 -0.33 
+ 1.7727  12.8422 -0.33 
+ 1.7576  14.065 -0.33 
+ 1.75117  14.55 -0.33 
+ 1.7424  15.1827 -0.33 
+ 1.7273  16.1993 -0.33 
+ 1.72481  16.36 -0.33 
+ 1.7121  17.1811 -0.33 
+ 1.697  18.0708 -0.33 
+ 1.69507  18.18 -0.33 
+ 1.6818  18.9541 -0.33 
+ 1.6667  19.7567 -0.33 
+ 1.66186  20 -0.33 
+ 1.6515  20.5515 -0.33 
+ 1.6364  21.2991 -0.33 
+ 1.62486  21.82 -0.33 
+ 1.6212  21.9997 -0.33 
+ 1.6061  22.7167 -0.33 
+ 1.5909  23.3638 -0.33 
+ 1.58407  23.64 -0.33 
+ 1.5758  24.0108 -0.33 
+ 1.5606  24.6461 -0.33 
+ 1.5455  25.2227 -0.33 
+ 1.53918  25.45 -0.33 
+ 1.5303  25.8157 -0.33 
+ 1.5152  26.4031 -0.33 
+ 1.5  26.9389 -0.33 
+ 1.48996  27.27 -0.33 
+ 1.4848  27.4671 -0.33 
+ 1.4697  28.0226 -0.33 
+ 1.4545  28.5319 -0.33 
+ 1.4394  28.9999 -0.33 
+ 1.43637  29.09 -0.33 
+ 1.4242  29.5164 -0.33 
+ 1.4091  30.0128 -0.33 
+ 1.3939  30.4711 -0.33 
+ 1.3788  30.8957 -0.33 
+ 1.37828  30.91 -0.33 
+ 1.3636  31.3872 -0.33 
+ 1.3485  31.8466 -0.33 
+ 1.3333  32.274 -0.33 
+ 1.3182  32.6731 -0.33 
+ 1.31597  32.73 -0.33 
+ 1.303  33.1288 -0.33 
+ 1.2879  33.5688 -0.33 
+ 1.2727  33.9817 -0.33 
+ 1.2576  34.3708 -0.33 
+ 1.25034  34.55 -0.33 
+ 1.2424  34.7862 -0.33 
+ 1.2273  35.2212 -0.33 
+ 1.2121  35.6337 -0.33 
+ 1.197  36.0266 -0.33 
+ 1.18358  36.36 -0.33 
+ 1.1818  36.414 -0.33 
+ 1.1667  36.8682 -0.33 
+ 1.1515  37.3046 -0.33 
+ 1.1364  37.7263 -0.33 
+ 1.1212  38.1364 -0.33 
+ 1.11959  38.18 -0.33 
+ 1.1061  38.6233 -0.33 
+ 1.0909  39.1097 -0.33 
+ 1.0758  39.5883 -0.33 
+ 1.06265  40 -0.33 
+ 1.0606  40.0776 -0.33 
+ 1.0455  40.6593 -0.33 
+ 1.0303  41.2399 -0.33 
+ 1.0153  41.82 -0.33 
+ 1.0152  41.8246 -0.33 
+ 1  42.546 -0.33 
+
+ 1.9697  133.789 -0.33 
+ 1.972  134.55 -0.33 
+ 1.97728  136.36 -0.33 
+ 1.98231  138.18 -0.33 
+ 1.9848  139.124 -0.33 
+ 1.98718  140 -0.33 
+ 1.99189  141.82 -0.33 
+ 1.99634  143.64 -0.33 
+ 2  145.219 -0.33 
+ 2.00055  145.45 -0.33 
+ 2.00461  147.27 -0.33 
+ 2.00842  149.09 -0.33 
+ 2.01196  150.91 -0.33 
+ 2.0152  152.699 -0.33 
+ 2.01526  152.73 -0.33 
+ 2.01839  154.55 -0.33 
+ 2.02127  156.36 -0.33 
+ 2.02391  158.18 -0.33 
+ 2.02632  160 -0.33 
+ 2.0285  161.82 -0.33 
+ 2.0303  163.496 -0.33 
+ 2.03046  163.64 -0.33 
+ 2.03227  165.45 -0.33 
+ 2.03385  167.27 -0.33 
+ 2.03521  169.09 -0.33 
+ 2.03635  170.91 -0.33 
+ 2.03728  172.73 -0.33 
+ 2.03801  174.55 -0.33 
+ 2.03852  176.36 -0.33 
+ 2.03883  178.18 -0.33 
+ 2.03893  180 -0.33 
+
+ 2.5  43.1261 -0.33 
+ 2.48547  43.64 -0.33 
+ 2.4848  43.6641 -0.33 
+ 2.4697  44.2159 -0.33 
+ 2.4545  44.7571 -0.33 
+ 2.4394  45.2895 -0.33 
+ 2.43483  45.45 -0.33 
+ 2.4242  45.8365 -0.33 
+ 2.4091  46.3854 -0.33 
+ 2.3939  46.9271 -0.33 
+ 2.38431  47.27 -0.33 
+ 2.3788  47.4741 -0.33 
+ 2.3636  48.0361 -0.33 
+ 2.3485  48.5925 -0.33 
+ 2.33483  49.09 -0.33 
+ 2.3333  49.148 -0.33 
+ 2.3182  49.7321 -0.33 
+ 2.303  50.3124 -0.33 
+ 2.2879  50.89 -0.33 
+ 2.28738  50.91 -0.33 
+ 2.2727  51.5041 -0.33 
+ 2.2576  52.1177 -0.33 
+ 2.24242  52.73 -0.33 
+ 2.2424  52.7308 -0.33 
+ 2.2273  53.3875 -0.33 
+ 2.2121  54.0446 -0.33 
+ 2.20055  54.55 -0.33 
+ 2.197  54.7132 -0.33 
+ 2.1818  55.4184 -0.33 
+ 2.1667  56.1254 -0.33 
+ 2.16173  56.36 -0.33 
+ 2.1515  56.8751 -0.33 
+ 2.1364  57.6473 -0.33 
+ 2.12602  58.18 -0.33 
+ 2.1212  58.4433 -0.33 
+ 2.1061  59.2869 -0.33 
+ 2.09334  60 -0.33 
+ 2.0909  60.1458 -0.33 
+ 2.0758  61.0714 -0.33 
+ 2.06359  61.82 -0.33 
+ 2.0606  62.0172 -0.33 
+ 2.0455  63.0365 -0.33 
+ 2.03659  63.64 -0.33 
+ 2.0303  64.0982 -0.33 
+ 2.0152  65.2184 -0.33 
+ 2.0121  65.45 -0.33 
+ 2  66.4398 -0.33 
+ 1.98994  67.27 -0.33 
+ 1.9848  67.735 -0.33 
+ 1.97006  69.09 -0.33 
+ 1.9697  69.1265 -0.33 
+ 1.9545  70.6784 -0.33 
+ 1.95227  70.91 -0.33 
+ 1.9394  72.3936 -0.33 
+ 1.9365  72.73 -0.33 
+ 1.9242  74.3249 -0.33 
+ 1.92249  74.55 -0.33 
+ 1.91032  76.36 -0.33 
+ 1.9091  76.569 -0.33 
+ 1.89975  78.18 -0.33 
+ 1.8939  79.3499 -0.33 
+ 1.89071  80 -0.33 
+ 1.88318  81.82 -0.33 
+ 1.8788  83.1049 -0.33 
+ 1.87699  83.64 -0.33 
+ 1.87209  85.45 -0.33 
+ 1.86838  87.27 -0.33 
+ 1.86578  89.09 -0.33 
+ 1.86423  90.91 -0.33 
+ 1.86366  92.73 -0.33 
+ 1.86399  94.55 -0.33 
+ 1.86516  96.36 -0.33 
+ 1.86708  98.18 -0.33 
+ 1.86967  100 -0.33 
+ 1.87287  101.82 -0.33 
+ 1.8766  103.64 -0.33 
+ 1.8788  104.594 -0.33 
+ 1.88081  105.45 -0.33 
+ 1.88546  107.27 -0.33 
+ 1.89043  109.09 -0.33 
+ 1.8939  110.296 -0.33 
+ 1.89572  110.91 -0.33 
+ 1.90132  112.73 -0.33 
+ 1.90707  114.55 -0.33 
+ 1.9091  115.176 -0.33 
+ 1.913  116.36 -0.33 
+ 1.919  118.18 -0.33 
+ 1.9242  119.756 -0.33 
+ 1.92503  120 -0.33 
+ 1.93121  121.82 -0.33 
+ 1.93729  123.64 -0.33 
+ 1.9394  124.277 -0.33 
+ 1.94335  125.45 -0.33 
+ 1.94932  127.27 -0.33 
+ 1.9545  128.896 -0.33 
+ 1.95514  129.09 -0.33 
+ 1.96095  130.91 -0.33 
+ 1.96656  132.73 -0.33 
+ 1.9697  133.789 -0.33 
+
+
+# Contour 14, label:    -0.34
+ 1.85607  0 -0.34 
+ 1.85459  1.82 -0.34 
+ 1.85006  3.64 -0.34 
+ 1.8485  4.01476 -0.34 
+ 1.84273  5.45 -0.34 
+ 1.8333  7.07392 -0.34 
+ 1.83219  7.27 -0.34 
+ 1.81879  9.09 -0.34 
+ 1.8182  9.15683 -0.34 
+ 1.803  10.8319 -0.34 
+ 1.80228  10.91 -0.34 
+ 1.7879  12.2764 -0.34 
+ 1.78284  12.73 -0.34 
+ 1.7727  13.5689 -0.34 
+ 1.76005  14.55 -0.34 
+ 1.7576  14.731 -0.34 
+ 1.7424  15.8099 -0.34 
+ 1.7341  16.36 -0.34 
+ 1.7273  16.8105 -0.34 
+ 1.7121  17.7512 -0.34 
+ 1.70473  18.18 -0.34 
+ 1.697  18.643 -0.34 
+ 1.6818  19.4885 -0.34 
+ 1.67189  20 -0.34 
+ 1.6667  20.2838 -0.34 
+ 1.6515  21.0689 -0.34 
+ 1.6364  21.7735 -0.34 
+ 1.63537  21.82 -0.34 
+ 1.6212  22.5157 -0.34 
+ 1.6061  23.1915 -0.34 
+ 1.59517  23.64 -0.34 
+ 1.5909  23.8342 -0.34 
+ 1.5758  24.496 -0.34 
+ 1.5606  25.0952 -0.34 
+ 1.55101  25.45 -0.34 
+ 1.5455  25.6833 -0.34 
+ 1.5303  26.2924 -0.34 
+ 1.5152  26.8468 -0.34 
+ 1.50264  27.27 -0.34 
+ 1.5  27.3729 -0.34 
+ 1.4848  27.9467 -0.34 
+ 1.4697  28.4715 -0.34 
+ 1.4545  28.953 -0.34 
+ 1.45003  29.09 -0.34 
+ 1.4394  29.4731 -0.34 
+ 1.4242  29.9829 -0.34 
+ 1.4091  30.4527 -0.34 
+ 1.3939  30.8871 -0.34 
+ 1.39308  30.91 -0.34 
+ 1.3788  31.3882 -0.34 
+ 1.3636  31.8575 -0.34 
+ 1.3485  32.2935 -0.34 
+ 1.3333  32.6998 -0.34 
+ 1.33215  32.73 -0.34 
+ 1.3182  33.1712 -0.34 
+ 1.303  33.6186 -0.34 
+ 1.2879  34.0377 -0.34 
+ 1.2727  34.4317 -0.34 
+ 1.26803  34.55 -0.34 
+ 1.2576  34.8683 -0.34 
+ 1.2424  35.3082 -0.34 
+ 1.2273  35.7244 -0.34 
+ 1.2121  36.12 -0.34 
+ 1.20262  36.36 -0.34 
+ 1.197  36.5343 -0.34 
+ 1.1818  36.9904 -0.34 
+ 1.1667  37.4275 -0.34 
+ 1.1515  37.8487 -0.34 
+ 1.13931  38.18 -0.34 
+ 1.1364  38.2763 -0.34 
+ 1.1212  38.7715 -0.34 
+ 1.1061  39.2538 -0.34 
+ 1.0909  39.7268 -0.34 
+ 1.08214  40 -0.34 
+ 1.0758  40.2402 -0.34 
+ 1.0606  40.8123 -0.34 
+ 1.0455  41.3807 -0.34 
+ 1.03381  41.82 -0.34 
+ 1.0303  41.9798 -0.34 
+ 1.0152  42.6824 -0.34 
+ 1  43.3905 -0.34 
+
+ 1.8803  125.45 -0.34 
+ 1.88596  127.27 -0.34 
+ 1.8915  129.09 -0.34 
+ 1.8939  129.902 -0.34 
+ 1.89696  130.91 -0.34 
+ 1.90232  132.73 -0.34 
+ 1.9075  134.55 -0.34 
+ 1.9091  135.132 -0.34 
+ 1.91253  136.36 -0.34 
+ 1.91737  138.18 -0.34 
+ 1.92199  140 -0.34 
+ 1.9242  140.909 -0.34 
+ 1.92647  141.82 -0.34 
+ 1.93077  143.64 -0.34 
+ 1.93484  145.45 -0.34 
+ 1.93868  147.27 -0.34 
+ 1.9394  147.633 -0.34 
+ 1.94233  149.09 -0.34 
+ 1.94576  150.91 -0.34 
+ 1.94896  152.73 -0.34 
+ 1.95193  154.55 -0.34 
+ 1.9545  156.246 -0.34 
+ 1.95468  156.36 -0.34 
+ 1.95728  158.18 -0.34 
+ 1.95966  160 -0.34 
+ 1.96181  161.82 -0.34 
+ 1.96374  163.64 -0.34 
+ 1.96546  165.45 -0.34 
+ 1.96697  167.27 -0.34 
+ 1.96827  169.09 -0.34 
+ 1.96937  170.91 -0.34 
+ 1.9697  171.585 -0.34 
+ 1.97027  172.73 -0.34 
+ 1.97098  174.55 -0.34 
+ 1.97148  176.36 -0.34 
+ 1.97178  178.18 -0.34 
+ 1.97189  180 -0.34 
+
+ 2.5  39.2648 -0.34 
+ 2.4848  39.8548 -0.34 
+ 2.48108  40 -0.34 
+ 2.4697  40.4499 -0.34 
+ 2.4545  41.0382 -0.34 
+ 2.4394  41.6152 -0.34 
+ 2.43399  41.82 -0.34 
+ 2.4242  42.1979 -0.34 
+ 2.4091  42.7791 -0.34 
+ 2.3939  43.3511 -0.34 
+ 2.38625  43.64 -0.34 
+ 2.3788  43.9266 -0.34 
+ 2.3636  44.5062 -0.34 
+ 2.3485  45.0786 -0.34 
+ 2.3386  45.45 -0.34 
+ 2.3333  45.6558 -0.34 
+ 2.3182  46.2489 -0.34 
+ 2.303  46.8364 -0.34 
+ 2.29183  47.27 -0.34 
+ 2.2879  47.4277 -0.34 
+ 2.2727  48.0399 -0.34 
+ 2.2576  48.6481 -0.34 
+ 2.24657  49.09 -0.34 
+ 2.2424  49.2637 -0.34 
+ 2.2273  49.9036 -0.34 
+ 2.2121  50.5417 -0.34 
+ 2.20344  50.91 -0.34 
+ 2.197  51.1961 -0.34 
+ 2.1818  51.8734 -0.34 
+ 2.1667  52.5505 -0.34 
+ 2.16272  52.73 -0.34 
+ 2.1515  53.262 -0.34 
+ 2.1364  53.9863 -0.34 
+ 2.12463  54.55 -0.34 
+ 2.1212  54.7225 -0.34 
+ 2.1061  55.4972 -0.34 
+ 2.0909  56.2737 -0.34 
+ 2.08925  56.36 -0.34 
+ 2.0758  57.1089 -0.34 
+ 2.0606  57.9533 -0.34 
+ 2.0566  58.18 -0.34 
+ 2.0455  58.8493 -0.34 
+ 2.0303  59.7661 -0.34 
+ 2.02649  60 -0.34 
+ 2.0152  60.743 -0.34 
+ 2  61.7419 -0.34 
+ 1.99883  61.82 -0.34 
+ 1.9848  62.8249 -0.34 
+ 1.97356  63.64 -0.34 
+ 1.9697  63.941 -0.34 
+ 1.9545  65.1302 -0.34 
+ 1.95047  65.45 -0.34 
+ 1.9394  66.4124 -0.34 
+ 1.92953  67.27 -0.34 
+ 1.9242  67.7773 -0.34 
+ 1.91059  69.09 -0.34 
+ 1.9091  69.2482 -0.34 
+ 1.8939  70.8655 -0.34 
+ 1.89349  70.91 -0.34 
+ 1.8788  72.6698 -0.34 
+ 1.8783  72.73 -0.34 
+ 1.86474  74.55 -0.34 
+ 1.8636  74.7217 -0.34 
+ 1.8529  76.36 -0.34 
+ 1.8485  77.1347 -0.34 
+ 1.84257  78.18 -0.34 
+ 1.83366  80 -0.34 
+ 1.8333  80.0878 -0.34 
+ 1.82624  81.82 -0.34 
+ 1.82011  83.64 -0.34 
+ 1.8182  84.3424 -0.34 
+ 1.8152  85.45 -0.34 
+ 1.81145  87.27 -0.34 
+ 1.80878  89.09 -0.34 
+ 1.80712  90.91 -0.34 
+ 1.8064  92.73 -0.34 
+ 1.80654  94.55 -0.34 
+ 1.80748  96.36 -0.34 
+ 1.80915  98.18 -0.34 
+ 1.81147  100 -0.34 
+ 1.81438  101.82 -0.34 
+ 1.81779  103.64 -0.34 
+ 1.8182  103.83 -0.34 
+ 1.82169  105.45 -0.34 
+ 1.82599  107.27 -0.34 
+ 1.83061  109.09 -0.34 
+ 1.8333  110.092 -0.34 
+ 1.83555  110.91 -0.34 
+ 1.84078  112.73 -0.34 
+ 1.84617  114.55 -0.34 
+ 1.8485  115.316 -0.34 
+ 1.85171  116.36 -0.34 
+ 1.85736  118.18 -0.34 
+ 1.86303  120 -0.34 
+ 1.8636  120.184 -0.34 
+ 1.86882  121.82 -0.34 
+ 1.87459  123.64 -0.34 
+ 1.8788  124.979 -0.34 
+ 1.8803  125.45 -0.34 
+
+
+# Contour 15, label:    -0.35
+ 1.86419  0 -0.35 
+ 1.8636  0.699755 -0.35 
+ 1.86274  1.82 -0.35 
+ 1.85848  3.64 -0.35 
+ 1.85111  5.45 -0.35 
+ 1.8485  5.91121 -0.35 
+ 1.84088  7.27 -0.35 
+ 1.8333  8.30812 -0.35 
+ 1.82759  9.09 -0.35 
+ 1.8182  10.1558 -0.35 
+ 1.81132  10.91 -0.35 
+ 1.803  11.7103 -0.35 
+ 1.79194  12.73 -0.35 
+ 1.7879  13.0726 -0.35 
+ 1.7727  14.2956 -0.35 
+ 1.76942  14.55 -0.35 
+ 1.7576  15.4245 -0.35 
+ 1.74367  16.36 -0.35 
+ 1.7424  16.4454 -0.35 
+ 1.7273  17.4385 -0.35 
+ 1.71474  18.18 -0.35 
+ 1.7121  18.3399 -0.35 
+ 1.697  19.2293 -0.35 
+ 1.68228  20 -0.35 
+ 1.6818  20.0265 -0.35 
+ 1.6667  20.8496 -0.35 
+ 1.6515  21.5863 -0.35 
+ 1.64646  21.82 -0.35 
+ 1.6364  22.3273 -0.35 
+ 1.6212  23.0317 -0.35 
+ 1.60678  23.64 -0.35 
+ 1.6061  23.6716 -0.35 
+ 1.5909  24.3598 -0.35 
+ 1.5758  24.9812 -0.35 
+ 1.56331  25.45 -0.35 
+ 1.5606  25.5664 -0.35 
+ 1.5455  26.1968 -0.35 
+ 1.5303  26.769 -0.35 
+ 1.51583  27.27 -0.35 
+ 1.5152  27.2954 -0.35 
+ 1.5  27.8868 -0.35 
+ 1.4848  28.4264 -0.35 
+ 1.4697  28.9204 -0.35 
+ 1.46425  29.09 -0.35 
+ 1.4545  29.4466 -0.35 
+ 1.4394  29.9689 -0.35 
+ 1.4242  30.4493 -0.35 
+ 1.4091  30.8926 -0.35 
+ 1.40849  30.91 -0.35 
+ 1.3939  31.4059 -0.35 
+ 1.3788  31.8843 -0.35 
+ 1.3636  32.3277 -0.35 
+ 1.3489  32.73 -0.35 
+ 1.3485  32.7432 -0.35 
+ 1.3333  33.2304 -0.35 
+ 1.3182  33.6841 -0.35 
+ 1.303  34.1084 -0.35 
+ 1.2879  34.5065 -0.35 
+ 1.2862  34.55 -0.35 
+ 1.2727  34.9673 -0.35 
+ 1.2576  35.4112 -0.35 
+ 1.2424  35.8302 -0.35 
+ 1.2273  36.2276 -0.35 
+ 1.22211  36.36 -0.35 
+ 1.2121  36.6725 -0.35 
+ 1.197  37.1298 -0.35 
+ 1.1818  37.5668 -0.35 
+ 1.1667  37.9869 -0.35 
+ 1.15957  38.18 -0.35 
+ 1.1515  38.4471 -0.35 
+ 1.1364  38.9393 -0.35 
+ 1.1212  39.4172 -0.35 
+ 1.1061  39.8843 -0.35 
+ 1.10234  40 -0.35 
+ 1.0909  40.4279 -0.35 
+ 1.0758  40.9903 -0.35 
+ 1.0606  41.5469 -0.35 
+ 1.05324  41.82 -0.35 
+ 1.0455  42.1685 -0.35 
+ 1.0303  42.8532 -0.35 
+ 1.0152  43.5401 -0.35 
+ 1.01304  43.64 -0.35 
+ 1  44.3652 -0.35 
+
+ 1.80046  118.18 -0.35 
+ 1.803  119.029 -0.35 
+ 1.80596  120 -0.35 
+ 1.81152  121.82 -0.35 
+ 1.81706  123.64 -0.35 
+ 1.8182  124.016 -0.35 
+ 1.82258  125.45 -0.35 
+ 1.82802  127.27 -0.35 
+ 1.8333  129.071 -0.35 
+ 1.83336  129.09 -0.35 
+ 1.83868  130.91 -0.35 
+ 1.84386  132.73 -0.35 
+ 1.8485  134.413 -0.35 
+ 1.84888  134.55 -0.35 
+ 1.85376  136.36 -0.35 
+ 1.85846  138.18 -0.35 
+ 1.86295  140 -0.35 
+ 1.8636  140.273 -0.35 
+ 1.86734  141.82 -0.35 
+ 1.87153  143.64 -0.35 
+ 1.8755  145.45 -0.35 
+ 1.8788  147.052 -0.35 
+ 1.87925  147.27 -0.35 
+ 1.88283  149.09 -0.35 
+ 1.88618  150.91 -0.35 
+ 1.88932  152.73 -0.35 
+ 1.89223  154.55 -0.35 
+ 1.8939  155.669 -0.35 
+ 1.89495  156.36 -0.35 
+ 1.8975  158.18 -0.35 
+ 1.89983  160 -0.35 
+ 1.90195  161.82 -0.35 
+ 1.90385  163.64 -0.35 
+ 1.90554  165.45 -0.35 
+ 1.90704  167.27 -0.35 
+ 1.90832  169.09 -0.35 
+ 1.9091  170.402 -0.35 
+ 1.90941  170.91 -0.35 
+ 1.9103  172.73 -0.35 
+ 1.911  174.55 -0.35 
+ 1.91149  176.36 -0.35 
+ 1.91179  178.18 -0.35 
+ 1.91189  180 -0.35 
+
+ 2.5  35.6959 -0.35 
+ 2.4848  36.3355 -0.35 
+ 2.48422  36.36 -0.35 
+ 2.4697  36.9803 -0.35 
+ 2.4545  37.611 -0.35 
+ 2.44062  38.18 -0.35 
+ 2.4394  38.2305 -0.35 
+ 2.4242  38.8554 -0.35 
+ 2.4091  39.468 -0.35 
+ 2.39569  40 -0.35 
+ 2.3939  40.072 -0.35 
+ 2.3788  40.6853 -0.35 
+ 2.3636  41.2886 -0.35 
+ 2.35013  41.82 -0.35 
+ 2.3485  41.8855 -0.35 
+ 2.3333  42.4958 -0.35 
+ 2.3182  43.0985 -0.35 
+ 2.3044  43.64 -0.35 
+ 2.303  43.6961 -0.35 
+ 2.2879  44.3091 -0.35 
+ 2.2727  44.9161 -0.35 
+ 2.25934  45.45 -0.35 
+ 2.2576  45.5221 -0.35 
+ 2.2424  46.1528 -0.35 
+ 2.2273  46.7795 -0.35 
+ 2.21539  47.27 -0.35 
+ 2.2121  47.4103 -0.35 
+ 2.197  48.0644 -0.35 
+ 2.1818  48.7163 -0.35 
+ 2.17319  49.09 -0.35 
+ 2.1667  49.3827 -0.35 
+ 2.1515  50.0687 -0.35 
+ 2.1364  50.7543 -0.35 
+ 2.13299  50.91 -0.35 
+ 2.1212  51.4719 -0.35 
+ 2.1061  52.1989 -0.35 
+ 2.09505  52.73 -0.35 
+ 2.0909  52.9393 -0.35 
+ 2.0758  53.7143 -0.35 
+ 2.0606  54.4908 -0.35 
+ 2.05946  54.55 -0.35 
+ 2.0455  55.3132 -0.35 
+ 2.0303  56.1408 -0.35 
+ 2.02634  56.36 -0.35 
+ 2.0152  57.0175 -0.35 
+ 2  57.9125 -0.35 
+ 1.9955  58.18 -0.35 
+ 1.9848  58.8574 -0.35 
+ 1.9697  59.8241 -0.35 
+ 1.96696  60 -0.35 
+ 1.9545  60.856 -0.35 
+ 1.9406  61.82 -0.35 
+ 1.9394  61.9098 -0.35 
+ 1.9242  63.0468 -0.35 
+ 1.91636  63.64 -0.35 
+ 1.9091  64.2304 -0.35 
+ 1.89407  65.45 -0.35 
+ 1.8939  65.4647 -0.35 
+ 1.8788  66.8229 -0.35 
+ 1.87381  67.27 -0.35 
+ 1.8636  68.2723 -0.35 
+ 1.85536  69.09 -0.35 
+ 1.8485  69.8393 -0.35 
+ 1.83868  70.91 -0.35 
+ 1.8333  71.5605 -0.35 
+ 1.82373  72.73 -0.35 
+ 1.8182  73.4869 -0.35 
+ 1.81041  74.55 -0.35 
+ 1.803  75.6875 -0.35 
+ 1.79866  76.36 -0.35 
+ 1.78845  78.18 -0.35 
+ 1.7879  78.2945 -0.35 
+ 1.77965  80 -0.35 
+ 1.7727  81.6928 -0.35 
+ 1.77218  81.82 -0.35 
+ 1.76608  83.64 -0.35 
+ 1.76116  85.45 -0.35 
+ 1.7576  87.1678 -0.35 
+ 1.75739  87.27 -0.35 
+ 1.75467  89.09 -0.35 
+ 1.75295  90.91 -0.35 
+ 1.75214  92.73 -0.35 
+ 1.75218  94.55 -0.35 
+ 1.75299  96.36 -0.35 
+ 1.75452  98.18 -0.35 
+ 1.75667  100 -0.35 
+ 1.7576  100.619 -0.35 
+ 1.75941  101.82 -0.35 
+ 1.76265  103.64 -0.35 
+ 1.76634  105.45 -0.35 
+ 1.77042  107.27 -0.35 
+ 1.7727  108.214 -0.35 
+ 1.77486  109.09 -0.35 
+ 1.77961  110.91 -0.35 
+ 1.78459  112.73 -0.35 
+ 1.7879  113.9 -0.35 
+ 1.78975  114.55 -0.35 
+ 1.79506  116.36 -0.35 
+ 1.80046  118.18 -0.35 
+
+
+# Contour 16, label:    -0.36
+ 1.87312  0 -0.36 
+ 1.87168  1.82 -0.36 
+ 1.86727  3.64 -0.36 
+ 1.8636  4.53441 -0.36 
+ 1.86002  5.45 -0.36 
+ 1.8498  7.27 -0.36 
+ 1.8485  7.45307 -0.36 
+ 1.83672  9.09 -0.36 
+ 1.8333  9.48265 -0.36 
+ 1.82063  10.91 -0.36 
+ 1.8182  11.1495 -0.36 
+ 1.803  12.5869 -0.36 
+ 1.80145  12.73 -0.36 
+ 1.7879  13.8794 -0.36 
+ 1.77937  14.55 -0.36 
+ 1.7727  15.0498 -0.36 
+ 1.7576  16.1181 -0.36 
+ 1.754  16.36 -0.36 
+ 1.7424  17.1389 -0.36 
+ 1.7273  18.0664 -0.36 
+ 1.72538  18.18 -0.36 
+ 1.7121  18.9851 -0.36 
+ 1.697  19.8157 -0.36 
+ 1.69348  20 -0.36 
+ 1.6818  20.6468 -0.36 
+ 1.6667  21.4153 -0.36 
+ 1.6581  21.82 -0.36 
+ 1.6515  22.157 -0.36 
+ 1.6364  22.8896 -0.36 
+ 1.6212  23.5477 -0.36 
+ 1.61901  23.64 -0.36 
+ 1.6061  24.2426 -0.36 
+ 1.5909  24.8854 -0.36 
+ 1.57626  25.45 -0.36 
+ 1.5758  25.4703 -0.36 
+ 1.5606  26.121 -0.36 
+ 1.5455  26.7102 -0.36 
+ 1.5303  27.2457 -0.36 
+ 1.5296  27.27 -0.36 
+ 1.5152  27.8475 -0.36 
+ 1.5  28.4007 -0.36 
+ 1.4848  28.9061 -0.36 
+ 1.47904  29.09 -0.36 
+ 1.4697  29.4414 -0.36 
+ 1.4545  29.975 -0.36 
+ 1.4394  30.4647 -0.36 
+ 1.4244  30.91 -0.36 
+ 1.4242  30.9172 -0.36 
+ 1.4091  31.4445 -0.36 
+ 1.3939  31.9306 -0.36 
+ 1.3788  32.3804 -0.36 
+ 1.36619  32.73 -0.36 
+ 1.3636  32.8166 -0.36 
+ 1.3485  33.3102 -0.36 
+ 1.3333  33.769 -0.36 
+ 1.3182  34.1971 -0.36 
+ 1.3049  34.55 -0.36 
+ 1.303  34.611 -0.36 
+ 1.2879  35.087 -0.36 
+ 1.2727  35.5334 -0.36 
+ 1.2576  35.9541 -0.36 
+ 1.2424  36.3522 -0.36 
+ 1.2421  36.36 -0.36 
+ 1.2273  36.8322 -0.36 
+ 1.2121  37.2894 -0.36 
+ 1.197  37.7253 -0.36 
+ 1.1818  38.1432 -0.36 
+ 1.18046  38.18 -0.36 
+ 1.1667  38.6413 -0.36 
+ 1.1515  39.1297 -0.36 
+ 1.1364  39.6024 -0.36 
+ 1.12333  40 -0.36 
+ 1.1212  40.079 -0.36 
+ 1.1061  40.6432 -0.36 
+ 1.0909  41.1956 -0.36 
+ 1.0758  41.7403 -0.36 
+ 1.0736  41.82 -0.36 
+ 1.0606  42.3932 -0.36 
+ 1.0455  43.0601 -0.36 
+ 1.03231  43.64 -0.36 
+ 1.0303  43.7466 -0.36 
+ 1.0152  44.5686 -0.36 
+ 1  45.3945 -0.36 
+
+ 1.7273  111.302 -0.36 
+ 1.73111  112.73 -0.36 
+ 1.73614  114.55 -0.36 
+ 1.7413  116.36 -0.36 
+ 1.7424  116.742 -0.36 
+ 1.74662  118.18 -0.36 
+ 1.75201  120 -0.36 
+ 1.75742  121.82 -0.36 
+ 1.7576  121.88 -0.36 
+ 1.76284  123.64 -0.36 
+ 1.76821  125.45 -0.36 
+ 1.7727  126.988 -0.36 
+ 1.77354  127.27 -0.36 
+ 1.77885  129.09 -0.36 
+ 1.78404  130.91 -0.36 
+ 1.7879  132.298 -0.36 
+ 1.7891  132.73 -0.36 
+ 1.79404  134.55 -0.36 
+ 1.79882  136.36 -0.36 
+ 1.803  138.014 -0.36 
+ 1.80343  138.18 -0.36 
+ 1.80793  140 -0.36 
+ 1.81224  141.82 -0.36 
+ 1.81635  143.64 -0.36 
+ 1.8182  144.495 -0.36 
+ 1.82027  145.45 -0.36 
+ 1.824  147.27 -0.36 
+ 1.82751  149.09 -0.36 
+ 1.83082  150.91 -0.36 
+ 1.8333  152.372 -0.36 
+ 1.83392  152.73 -0.36 
+ 1.83686  154.55 -0.36 
+ 1.83959  156.36 -0.36 
+ 1.8421  158.18 -0.36 
+ 1.8444  160 -0.36 
+ 1.8465  161.82 -0.36 
+ 1.84838  163.64 -0.36 
+ 1.8485  163.766 -0.36 
+ 1.85008  165.45 -0.36 
+ 1.85157  167.27 -0.36 
+ 1.85286  169.09 -0.36 
+ 1.85395  170.91 -0.36 
+ 1.85483  172.73 -0.36 
+ 1.85552  174.55 -0.36 
+ 1.85601  176.36 -0.36 
+ 1.8563  178.18 -0.36 
+ 1.8564  180 -0.36 
+
+ 2.5  32.3001 -0.36 
+ 2.49079  32.73 -0.36 
+ 2.4848  33.0064 -0.36 
+ 2.4697  33.7016 -0.36 
+ 2.4545  34.3805 -0.36 
+ 2.45071  34.55 -0.36 
+ 2.4394  35.0512 -0.36 
+ 2.4242  35.7096 -0.36 
+ 2.4091  36.3546 -0.36 
+ 2.40897  36.36 -0.36 
+ 2.3939  37.0056 -0.36 
+ 2.3788  37.6446 -0.36 
+ 2.36588  38.18 -0.36 
+ 2.3636  38.2753 -0.36 
+ 2.3485  38.9107 -0.36 
+ 2.3333  39.5361 -0.36 
+ 2.32199  40 -0.36 
+ 2.3182  40.1579 -0.36 
+ 2.303  40.7866 -0.36 
+ 2.2879  41.4077 -0.36 
+ 2.27776  41.82 -0.36 
+ 2.2727  42.0295 -0.36 
+ 2.2576  42.6602 -0.36 
+ 2.2424  43.2852 -0.36 
+ 2.23383  43.64 -0.36 
+ 2.2273  43.9152 -0.36 
+ 2.2121  44.5531 -0.36 
+ 2.197  45.1872 -0.36 
+ 2.19073  45.45 -0.36 
+ 2.1818  45.8373 -0.36 
+ 2.1667  46.4978 -0.36 
+ 2.1515  47.1563 -0.36 
+ 2.14892  47.27 -0.36 
+ 2.1364  47.8402 -0.36 
+ 2.1212  48.5281 -0.36 
+ 2.10888  49.09 -0.36 
+ 2.1061  49.2222 -0.36 
+ 2.0909  49.9456 -0.36 
+ 2.0758  50.6689 -0.36 
+ 2.07077  50.91 -0.36 
+ 2.0606  51.4202 -0.36 
+ 2.0455  52.1853 -0.36 
+ 2.03473  52.73 -0.36 
+ 2.0303  52.9651 -0.36 
+ 2.0152  53.7783 -0.36 
+ 2.00081  54.55 -0.36 
+ 2  54.5955 -0.36 
+ 1.9848  55.459 -0.36 
+ 1.9697  56.3234 -0.36 
+ 1.96906  56.36 -0.36 
+ 1.9545  57.2503 -0.36 
+ 1.93942  58.18 -0.36 
+ 1.9394  58.1814 -0.36 
+ 1.9242  59.1803 -0.36 
+ 1.91183  60 -0.36 
+ 1.9091  60.1938 -0.36 
+ 1.8939  61.2708 -0.36 
+ 1.88622  61.82 -0.36 
+ 1.8788  62.3907 -0.36 
+ 1.8636  63.555 -0.36 
+ 1.8625  63.64 -0.36 
+ 1.8485  64.8059 -0.36 
+ 1.84072  65.45 -0.36 
+ 1.8333  66.1224 -0.36 
+ 1.82073  67.27 -0.36 
+ 1.8182  67.5231 -0.36 
+ 1.803  69.0349 -0.36 
+ 1.80245  69.09 -0.36 
+ 1.7879  70.698 -0.36 
+ 1.78597  70.91 -0.36 
+ 1.7727  72.5294 -0.36 
+ 1.77107  72.73 -0.36 
+ 1.75785  74.55 -0.36 
+ 1.7576  74.5887 -0.36 
+ 1.74611  76.36 -0.36 
+ 1.7424  77.0189 -0.36 
+ 1.7359  78.18 -0.36 
+ 1.7273  79.9666 -0.36 
+ 1.72714  80 -0.36 
+ 1.71968  81.82 -0.36 
+ 1.71351  83.64 -0.36 
+ 1.7121  84.1571 -0.36 
+ 1.70859  85.45 -0.36 
+ 1.70481  87.27 -0.36 
+ 1.70209  89.09 -0.36 
+ 1.70035  90.91 -0.36 
+ 1.69952  92.73 -0.36 
+ 1.69953  94.55 -0.36 
+ 1.7003  96.36 -0.36 
+ 1.70176  98.18 -0.36 
+ 1.70386  100 -0.36 
+ 1.70651  101.82 -0.36 
+ 1.70966  103.64 -0.36 
+ 1.7121  104.868 -0.36 
+ 1.71327  105.45 -0.36 
+ 1.71729  107.27 -0.36 
+ 1.72163  109.09 -0.36 
+ 1.72626  110.91 -0.36 
+ 1.7273  111.302 -0.36 
+
+
+# Contour 17, label:    -0.37
+ 1.88236  0 -0.37 
+ 1.88089  1.82 -0.37 
+ 1.8788  2.68148 -0.37 
+ 1.8766  3.64 -0.37 
+ 1.8695  5.45 -0.37 
+ 1.8636  6.50385 -0.37 
+ 1.85942  7.27 -0.37 
+ 1.8485  8.80311 -0.37 
+ 1.84644  9.09 -0.37 
+ 1.8333  10.5985 -0.37 
+ 1.83053  10.91 -0.37 
+ 1.8182  12.1271 -0.37 
+ 1.81175  12.73 -0.37 
+ 1.803  13.4818 -0.37 
+ 1.78978  14.55 -0.37 
+ 1.7879  14.6944 -0.37 
+ 1.7727  15.8189 -0.37 
+ 1.76486  16.36 -0.37 
+ 1.7576  16.8603 -0.37 
+ 1.7424  17.8324 -0.37 
+ 1.73667  18.18 -0.37 
+ 1.7273  18.7632 -0.37 
+ 1.7121  19.6302 -0.37 
+ 1.70522  20 -0.37 
+ 1.697  20.4677 -0.37 
+ 1.6818  21.2671 -0.37 
+ 1.67036  21.82 -0.37 
+ 1.6667  22.0118 -0.37 
+ 1.6515  22.7714 -0.37 
+ 1.6364  23.4519 -0.37 
+ 1.632  23.64 -0.37 
+ 1.6212  24.1509 -0.37 
+ 1.6061  24.8136 -0.37 
+ 1.5909  25.4111 -0.37 
+ 1.58989  25.45 -0.37 
+ 1.5758  26.071 -0.37 
+ 1.5606  26.6756 -0.37 
+ 1.5455  27.2236 -0.37 
+ 1.54418  27.27 -0.37 
+ 1.5303  27.8344 -0.37 
+ 1.5152  28.3996 -0.37 
+ 1.5  28.9147 -0.37 
+ 1.49459  29.09 -0.37 
+ 1.4848  29.4633 -0.37 
+ 1.4697  30.0062 -0.37 
+ 1.4545  30.5034 -0.37 
+ 1.44116  30.91 -0.37 
+ 1.4394  30.9743 -0.37 
+ 1.4242  31.5091 -0.37 
+ 1.4091  32.0011 -0.37 
+ 1.3939  32.4554 -0.37 
+ 1.38425  32.73 -0.37 
+ 1.3788  32.9172 -0.37 
+ 1.3636  33.4153 -0.37 
+ 1.3485  33.8773 -0.37 
+ 1.3333  34.3076 -0.37 
+ 1.32438  34.55 -0.37 
+ 1.3182  34.7535 -0.37 
+ 1.303  35.2314 -0.37 
+ 1.2879  35.6788 -0.37 
+ 1.2727  36.0995 -0.37 
+ 1.26295  36.36 -0.37 
+ 1.2576  36.5358 -0.37 
+ 1.2424  37.0172 -0.37 
+ 1.2273  37.4728 -0.37 
+ 1.2121  37.9062 -0.37 
+ 1.20225  38.18 -0.37 
+ 1.197  38.3589 -0.37 
+ 1.1818  38.8626 -0.37 
+ 1.1667  39.3458 -0.37 
+ 1.1515  39.8122 -0.37 
+ 1.14535  40 -0.37 
+ 1.1364  40.3347 -0.37 
+ 1.1212  40.8896 -0.37 
+ 1.1061  41.4311 -0.37 
+ 1.09507  41.82 -0.37 
+ 1.0909  41.9998 -0.37 
+ 1.0758  42.6568 -0.37 
+ 1.0606  43.3057 -0.37 
+ 1.05287  43.64 -0.37 
+ 1.0455  44.0262 -0.37 
+ 1.0303  44.8227 -0.37 
+ 1.01848  45.45 -0.37 
+ 1.0152  45.6618 -0.37 
+ 1  46.658 -0.37 
+
+ 1.65474  101.82 -0.37 
+ 1.65793  103.64 -0.37 
+ 1.66155  105.45 -0.37 
+ 1.66555  107.27 -0.37 
+ 1.6667  107.753 -0.37 
+ 1.66986  109.09 -0.37 
+ 1.67444  110.91 -0.37 
+ 1.67924  112.73 -0.37 
+ 1.6818  113.665 -0.37 
+ 1.68425  114.55 -0.37 
+ 1.68942  116.36 -0.37 
+ 1.69468  118.18 -0.37 
+ 1.697  118.971 -0.37 
+ 1.70001  120 -0.37 
+ 1.70536  121.82 -0.37 
+ 1.71069  123.64 -0.37 
+ 1.7121  124.119 -0.37 
+ 1.71605  125.45 -0.37 
+ 1.72137  127.27 -0.37 
+ 1.72661  129.09 -0.37 
+ 1.7273  129.335 -0.37 
+ 1.73174  130.91 -0.37 
+ 1.73676  132.73 -0.37 
+ 1.74163  134.55 -0.37 
+ 1.7424  134.843 -0.37 
+ 1.74642  136.36 -0.37 
+ 1.75105  138.18 -0.37 
+ 1.7555  140 -0.37 
+ 1.7576  140.894 -0.37 
+ 1.75978  141.82 -0.37 
+ 1.76387  143.64 -0.37 
+ 1.76776  145.45 -0.37 
+ 1.77145  147.27 -0.37 
+ 1.7727  147.921 -0.37 
+ 1.77498  149.09 -0.37 
+ 1.77832  150.91 -0.37 
+ 1.78145  152.73 -0.37 
+ 1.78437  154.55 -0.37 
+ 1.78708  156.36 -0.37 
+ 1.7879  156.953 -0.37 
+ 1.78959  158.18 -0.37 
+ 1.7919  160 -0.37 
+ 1.79399  161.82 -0.37 
+ 1.79589  163.64 -0.37 
+ 1.79758  165.45 -0.37 
+ 1.79906  167.27 -0.37 
+ 1.80034  169.09 -0.37 
+ 1.80143  170.91 -0.37 
+ 1.80231  172.73 -0.37 
+ 1.803  174.55 -0.37 
+ 1.8035  176.36 -0.37 
+ 1.8038  178.18 -0.37 
+ 1.8039  180 -0.37 
+
+ 2.5  28.9747 -0.37 
+ 2.49779  29.09 -0.37 
+ 2.4848  29.7507 -0.37 
+ 2.4697  30.5073 -0.37 
+ 2.4615  30.91 -0.37 
+ 2.4545  31.2478 -0.37 
+ 2.4394  31.9731 -0.37 
+ 2.4242  32.6823 -0.37 
+ 2.42318  32.73 -0.37 
+ 2.4091  33.383 -0.37 
+ 2.3939  34.07 -0.37 
+ 2.3832  34.55 -0.37 
+ 2.3788  34.7456 -0.37 
+ 2.3636  35.4134 -0.37 
+ 2.3485  36.0695 -0.37 
+ 2.34173  36.36 -0.37 
+ 2.3333  36.7242 -0.37 
+ 2.3182  37.3759 -0.37 
+ 2.303  38.0182 -0.37 
+ 2.29919  38.18 -0.37 
+ 2.2879  38.664 -0.37 
+ 2.2727  39.3056 -0.37 
+ 2.2576  39.9398 -0.37 
+ 2.25616  40 -0.37 
+ 2.2424  40.5845 -0.37 
+ 2.2273  41.2247 -0.37 
+ 2.21307  41.82 -0.37 
+ 2.2121  41.8613 -0.37 
+ 2.197  42.5128 -0.37 
+ 2.1818  43.1603 -0.37 
+ 2.1706  43.64 -0.37 
+ 2.1667  43.8099 -0.37 
+ 2.1515  44.4714 -0.37 
+ 2.1364  45.1307 -0.37 
+ 2.12906  45.45 -0.37 
+ 2.1212  45.8042 -0.37 
+ 2.1061  46.4912 -0.37 
+ 2.0909  47.1772 -0.37 
+ 2.08887  47.27 -0.37 
+ 2.0758  47.8896 -0.37 
+ 2.0606  48.6058 -0.37 
+ 2.05043  49.09 -0.37 
+ 2.0455  49.3337 -0.37 
+ 2.0303  50.0852 -0.37 
+ 2.0152  50.8376 -0.37 
+ 2.01375  50.91 -0.37 
+ 2  51.6267 -0.37 
+ 1.9848  52.4204 -0.37 
+ 1.97894  52.73 -0.37 
+ 1.9697  53.2425 -0.37 
+ 1.9545  54.0831 -0.37 
+ 1.94614  54.55 -0.37 
+ 1.9394  54.9451 -0.37 
+ 1.9242  55.8333 -0.37 
+ 1.91527  56.36 -0.37 
+ 1.9091  56.748 -0.37 
+ 1.8939  57.7002 -0.37 
+ 1.88631  58.18 -0.37 
+ 1.8788  58.6854 -0.37 
+ 1.8636  59.7036 -0.37 
+ 1.85921  60 -0.37 
+ 1.8485  60.7743 -0.37 
+ 1.83394  61.82 -0.37 
+ 1.8333  61.8697 -0.37 
+ 1.8182  63.0463 -0.37 
+ 1.81053  63.64 -0.37 
+ 1.803  64.2664 -0.37 
+ 1.78887  65.45 -0.37 
+ 1.7879  65.5385 -0.37 
+ 1.7727  66.9219 -0.37 
+ 1.7689  67.27 -0.37 
+ 1.7576  68.4024 -0.37 
+ 1.75068  69.09 -0.37 
+ 1.7424  69.9986 -0.37 
+ 1.73413  70.91 -0.37 
+ 1.7273  71.7473 -0.37 
+ 1.71922  72.73 -0.37 
+ 1.7121  73.701 -0.37 
+ 1.70591  74.55 -0.37 
+ 1.697  75.9265 -0.37 
+ 1.69417  76.36 -0.37 
+ 1.68388  78.18 -0.37 
+ 1.6818  78.6087 -0.37 
+ 1.67508  80 -0.37 
+ 1.66765  81.82 -0.37 
+ 1.6667  82.1038 -0.37 
+ 1.66149  83.64 -0.37 
+ 1.65656  85.45 -0.37 
+ 1.65278  87.27 -0.37 
+ 1.6515  88.1292 -0.37 
+ 1.65008  89.09 -0.37 
+ 1.64838  90.91 -0.37 
+ 1.64759  92.73 -0.37 
+ 1.64763  94.55 -0.37 
+ 1.64844  96.36 -0.37 
+ 1.64994  98.18 -0.37 
+ 1.6515  99.5262 -0.37 
+ 1.65205  100 -0.37 
+ 1.65474  101.82 -0.37 
+
+
+# Contour 18, label:    -0.38
+ 1.89215  0 -0.38 
+ 1.89079  1.82 -0.38 
+ 1.88663  3.64 -0.38 
+ 1.87942  5.45 -0.38 
+ 1.8788  5.56446 -0.38 
+ 1.86963  7.27 -0.38 
+ 1.8636  8.12702 -0.38 
+ 1.85686  9.09 -0.38 
+ 1.8485  10.0747 -0.38 
+ 1.84119  10.91 -0.38 
+ 1.8333  11.6984 -0.38 
+ 1.82256  12.73 -0.38 
+ 1.8182  13.1148 -0.38 
+ 1.803  14.3803 -0.38 
+ 1.8009  14.55 -0.38 
+ 1.7879  15.5499 -0.38 
+ 1.77632  16.36 -0.38 
+ 1.7727  16.6131 -0.38 
+ 1.7576  17.6286 -0.38 
+ 1.74863  18.18 -0.38 
+ 1.7424  18.5732 -0.38 
+ 1.7273  19.4752 -0.38 
+ 1.71767  20 -0.38 
+ 1.7121  20.3212 -0.38 
+ 1.697  21.1498 -0.38 
+ 1.68331  21.82 -0.38 
+ 1.6818  21.9005 -0.38 
+ 1.6667  22.6853 -0.38 
+ 1.6515  23.3859 -0.38 
+ 1.64571  23.64 -0.38 
+ 1.6364  24.0924 -0.38 
+ 1.6212  24.7729 -0.38 
+ 1.6061  25.3846 -0.38 
+ 1.60443  25.45 -0.38 
+ 1.5909  26.0543 -0.38 
+ 1.5758  26.6718 -0.38 
+ 1.5606  27.2301 -0.38 
+ 1.55949  27.27 -0.38 
+ 1.5455  27.8546 -0.38 
+ 1.5303  28.4292 -0.38 
+ 1.5152  28.9516 -0.38 
+ 1.51101  29.09 -0.38 
+ 1.5  29.5186 -0.38 
+ 1.4848  30.0685 -0.38 
+ 1.4697  30.5709 -0.38 
+ 1.45872  30.91 -0.38 
+ 1.4545  31.0657 -0.38 
+ 1.4394  31.6056 -0.38 
+ 1.4242  32.101 -0.38 
+ 1.4091  32.5576 -0.38 
+ 1.40311  32.73 -0.38 
+ 1.3939  33.0508 -0.38 
+ 1.3788  33.551 -0.38 
+ 1.3636  34.0139 -0.38 
+ 1.3485  34.4444 -0.38 
+ 1.34466  34.55 -0.38 
+ 1.3333  34.9282 -0.38 
+ 1.3182  35.4058 -0.38 
+ 1.303  35.8519 -0.38 
+ 1.2879  36.2707 -0.38 
+ 1.28458  36.36 -0.38 
+ 1.2727  36.7539 -0.38 
+ 1.2576  37.2325 -0.38 
+ 1.2424  37.6844 -0.38 
+ 1.2273  38.1135 -0.38 
+ 1.22491  38.18 -0.38 
+ 1.2121  38.6179 -0.38 
+ 1.197  39.1155 -0.38 
+ 1.1818  39.5917 -0.38 
+ 1.16841  40 -0.38 
+ 1.1667  40.0641 -0.38 
+ 1.1515  40.6271 -0.38 
+ 1.1364  41.171 -0.38 
+ 1.1212  41.7002 -0.38 
+ 1.11779  41.82 -0.38 
+ 1.1061  42.3232 -0.38 
+ 1.0909  42.9631 -0.38 
+ 1.0758  43.5931 -0.38 
+ 1.07469  43.64 -0.38 
+ 1.0606  44.3604 -0.38 
+ 1.0455  45.1308 -0.38 
+ 1.03928  45.45 -0.38 
+ 1.0303  46.0135 -0.38 
+ 1.0152  46.9734 -0.38 
+ 1.0106  47.27 -0.38 
+ 1  48.0958 -0.38 
+
+ 1.59677  96.36 -0.38 
+ 1.59839  98.18 -0.38 
+ 1.60063  100 -0.38 
+ 1.60343  101.82 -0.38 
+ 1.6061  103.303 -0.38 
+ 1.6067  103.64 -0.38 
+ 1.61039  105.45 -0.38 
+ 1.61444  107.27 -0.38 
+ 1.6188  109.09 -0.38 
+ 1.6212  110.032 -0.38 
+ 1.62345  110.91 -0.38 
+ 1.62833  112.73 -0.38 
+ 1.63339  114.55 -0.38 
+ 1.6364  115.598 -0.38 
+ 1.63857  116.36 -0.38 
+ 1.64384  118.18 -0.38 
+ 1.64916  120 -0.38 
+ 1.6515  120.795 -0.38 
+ 1.65454  121.82 -0.38 
+ 1.65994  123.64 -0.38 
+ 1.6653  125.45 -0.38 
+ 1.6667  125.927 -0.38 
+ 1.67061  127.27 -0.38 
+ 1.67583  129.09 -0.38 
+ 1.68095  130.91 -0.38 
+ 1.6818  131.22 -0.38 
+ 1.686  132.73 -0.38 
+ 1.69093  134.55 -0.38 
+ 1.69571  136.36 -0.38 
+ 1.697  136.869 -0.38 
+ 1.70033  138.18 -0.38 
+ 1.70477  140 -0.38 
+ 1.70904  141.82 -0.38 
+ 1.7121  143.183 -0.38 
+ 1.71314  143.64 -0.38 
+ 1.71708  145.45 -0.38 
+ 1.72083  147.27 -0.38 
+ 1.72437  149.09 -0.38 
+ 1.7273  150.684 -0.38 
+ 1.72771  150.91 -0.38 
+ 1.73085  152.73 -0.38 
+ 1.73378  154.55 -0.38 
+ 1.7365  156.36 -0.38 
+ 1.73902  158.18 -0.38 
+ 1.74133  160 -0.38 
+ 1.7424  160.929 -0.38 
+ 1.74344  161.82 -0.38 
+ 1.74537  163.64 -0.38 
+ 1.74709  165.45 -0.38 
+ 1.7486  167.27 -0.38 
+ 1.74991  169.09 -0.38 
+ 1.75102  170.91 -0.38 
+ 1.75192  172.73 -0.38 
+ 1.75262  174.55 -0.38 
+ 1.75313  176.36 -0.38 
+ 1.75342  178.18 -0.38 
+ 1.75352  180 -0.38 
+
+ 2.5  25.6347 -0.38 
+ 2.4848  26.4946 -0.38 
+ 2.47086  27.27 -0.38 
+ 2.4697  27.3326 -0.38 
+ 2.4545  28.1419 -0.38 
+ 2.4394  28.9325 -0.38 
+ 2.43635  29.09 -0.38 
+ 2.4242  29.7023 -0.38 
+ 2.4091  30.4546 -0.38 
+ 2.39978  30.91 -0.38 
+ 2.3939  31.1918 -0.38 
+ 2.3788  31.9145 -0.38 
+ 2.3636  32.6236 -0.38 
+ 2.36133  32.73 -0.38 
+ 2.3485  33.3237 -0.38 
+ 2.3333  34.0121 -0.38 
+ 2.32136  34.55 -0.38 
+ 2.3182  34.6907 -0.38 
+ 2.303  35.3621 -0.38 
+ 2.2879  36.0238 -0.38 
+ 2.28013  36.36 -0.38 
+ 2.2727  36.6838 -0.38 
+ 2.2576  37.3431 -0.38 
+ 2.2424  37.9947 -0.38 
+ 2.23811  38.18 -0.38 
+ 2.2273  38.6498 -0.38 
+ 2.2121  39.3025 -0.38 
+ 2.197  39.9499 -0.38 
+ 2.19583  40 -0.38 
+ 2.1818  40.6078 -0.38 
+ 2.1667  41.2626 -0.38 
+ 2.15372  41.82 -0.38 
+ 2.1515  41.9169 -0.38 
+ 2.1364  42.5844 -0.38 
+ 2.1212  43.2496 -0.38 
+ 2.11235  43.64 -0.38 
+ 2.1061  43.9206 -0.38 
+ 2.0909  44.6007 -0.38 
+ 2.0758  45.2802 -0.38 
+ 2.07202  45.45 -0.38 
+ 2.0606  45.9807 -0.38 
+ 2.0455  46.6881 -0.38 
+ 2.03303  47.27 -0.38 
+ 2.0303  47.4014 -0.38 
+ 2.0152  48.1383 -0.38 
+ 2  48.876 -0.38 
+ 1.99562  49.09 -0.38 
+ 1.9848  49.6383 -0.38 
+ 1.9697  50.4105 -0.38 
+ 1.95991  50.91 -0.38 
+ 1.9545  51.1978 -0.38 
+ 1.9394  52.0096 -0.38 
+ 1.92594  52.73 -0.38 
+ 1.9242  52.8279 -0.38 
+ 1.9091  53.6844 -0.38 
+ 1.8939  54.5421 -0.38 
+ 1.89376  54.55 -0.38 
+ 1.8788  55.4435 -0.38 
+ 1.8636  56.3456 -0.38 
+ 1.86336  56.36 -0.38 
+ 1.8485  57.3073 -0.38 
+ 1.83472  58.18 -0.38 
+ 1.8333  58.2756 -0.38 
+ 1.8182  59.3003 -0.38 
+ 1.80782  60 -0.38 
+ 1.803  60.3471 -0.38 
+ 1.7879  61.4418 -0.38 
+ 1.78264  61.82 -0.38 
+ 1.7727  62.5892 -0.38 
+ 1.75918  63.64 -0.38 
+ 1.7576  63.7723 -0.38 
+ 1.7424  65.0323 -0.38 
+ 1.73738  65.45 -0.38 
+ 1.7273  66.3684 -0.38 
+ 1.71731  67.27 -0.38 
+ 1.7121  67.7854 -0.38 
+ 1.69896  69.09 -0.38 
+ 1.697  69.3045 -0.38 
+ 1.68221  70.91 -0.38 
+ 1.6818  70.9593 -0.38 
+ 1.6672  72.73 -0.38 
+ 1.6667  72.7975 -0.38 
+ 1.65372  74.55 -0.38 
+ 1.6515  74.8881 -0.38 
+ 1.64188  76.36 -0.38 
+ 1.6364  77.3304 -0.38 
+ 1.63155  78.18 -0.38 
+ 1.62268  80 -0.38 
+ 1.6212  80.3609 -0.38 
+ 1.61524  81.82 -0.38 
+ 1.60914  83.64 -0.38 
+ 1.6061  84.7774 -0.38 
+ 1.60428  85.45 -0.38 
+ 1.60057  87.27 -0.38 
+ 1.59796  89.09 -0.38 
+ 1.59635  90.91 -0.38 
+ 1.59567  92.73 -0.38 
+ 1.59584  94.55 -0.38 
+ 1.59677  96.36 -0.38 
+
+
+# Contour 19, label:    -0.39
+ 1.90286  0 -0.39 
+ 1.90147  1.82 -0.39 
+ 1.89721  3.64 -0.39 
+ 1.8939  4.47743 -0.39 
+ 1.89025  5.45 -0.39 
+ 1.88044  7.27 -0.39 
+ 1.8788  7.5095 -0.39 
+ 1.8679  9.09 -0.39 
+ 1.8636  9.60291 -0.39 
+ 1.85247  10.91 -0.39 
+ 1.8485  11.3178 -0.39 
+ 1.83402  12.73 -0.39 
+ 1.8333  12.794 -0.39 
+ 1.8182  14.1187 -0.39 
+ 1.81294  14.55 -0.39 
+ 1.803  15.3246 -0.39 
+ 1.78861  16.36 -0.39 
+ 1.7879  16.4106 -0.39 
+ 1.7727  17.4672 -0.39 
+ 1.76142  18.18 -0.39 
+ 1.7576  18.4274 -0.39 
+ 1.7424  19.3616 -0.39 
+ 1.731  20 -0.39 
+ 1.7273  20.2191 -0.39 
+ 1.7121  21.0739 -0.39 
+ 1.69726  21.82 -0.39 
+ 1.697  21.8343 -0.39 
+ 1.6818  22.6413 -0.39 
+ 1.6667  23.3589 -0.39 
+ 1.66038  23.64 -0.39 
+ 1.6515  24.0773 -0.39 
+ 1.6364  24.7723 -0.39 
+ 1.6212  25.395 -0.39 
+ 1.61983  25.45 -0.39 
+ 1.6061  26.08 -0.39 
+ 1.5909  26.707 -0.39 
+ 1.57587  27.27 -0.39 
+ 1.5758  27.2732 -0.39 
+ 1.5606  27.9166 -0.39 
+ 1.5455  28.4973 -0.39 
+ 1.5303  29.024 -0.39 
+ 1.52835  29.09 -0.39 
+ 1.5152  29.6158 -0.39 
+ 1.5  30.1693 -0.39 
+ 1.4848  30.6738 -0.39 
+ 1.47734  30.91 -0.39 
+ 1.4697  31.1996 -0.39 
+ 1.4545  31.741 -0.39 
+ 1.4394  32.2368 -0.39 
+ 1.4242  32.6929 -0.39 
+ 1.42294  32.73 -0.39 
+ 1.4091  33.2247 -0.39 
+ 1.3939  33.7237 -0.39 
+ 1.3788  34.1847 -0.39 
+ 1.36594  34.55 -0.39 
+ 1.3636  34.6306 -0.39 
+ 1.3485  35.1416 -0.39 
+ 1.3333  35.6158 -0.39 
+ 1.3182  36.058 -0.39 
+ 1.30727  36.36 -0.39 
+ 1.303  36.5061 -0.39 
+ 1.2879  37.0105 -0.39 
+ 1.2727  37.4834 -0.39 
+ 1.2576  37.9292 -0.39 
+ 1.24873  38.18 -0.39 
+ 1.2424  38.4011 -0.39 
+ 1.2273  38.9162 -0.39 
+ 1.2121  39.4051 -0.39 
+ 1.197  39.8721 -0.39 
+ 1.19278  40 -0.39 
+ 1.1818  40.4108 -0.39 
+ 1.1667  40.9614 -0.39 
+ 1.1515  41.4921 -0.39 
+ 1.14201  41.82 -0.39 
+ 1.1364  42.0588 -0.39 
+ 1.1212  42.6962 -0.39 
+ 1.1061  43.317 -0.39 
+ 1.09816  43.64 -0.39 
+ 1.0909  44.0012 -0.39 
+ 1.0758  44.7547 -0.39 
+ 1.0616  45.45 -0.39 
+ 1.0606  45.5102 -0.39 
+ 1.0455  46.4424 -0.39 
+ 1.03191  47.27 -0.39 
+ 1.0303  47.3891 -0.39 
+ 1.0152  48.5395 -0.39 
+ 1.008  49.09 -0.39 
+ 1  49.8303 -0.39 
+
+ 1.54745  87.27 -0.39 
+ 1.5455  88.7397 -0.39 
+ 1.54503  89.09 -0.39 
+ 1.54361  90.91 -0.39 
+ 1.54313  92.73 -0.39 
+ 1.54351  94.55 -0.39 
+ 1.54466  96.36 -0.39 
+ 1.5455  97.1892 -0.39 
+ 1.54649  98.18 -0.39 
+ 1.54891  100 -0.39 
+ 1.55188  101.82 -0.39 
+ 1.55533  103.64 -0.39 
+ 1.5592  105.45 -0.39 
+ 1.5606  106.054 -0.39 
+ 1.56342  107.27 -0.39 
+ 1.56797  109.09 -0.39 
+ 1.57277  110.91 -0.39 
+ 1.5758  112.008 -0.39 
+ 1.57777  112.73 -0.39 
+ 1.58291  114.55 -0.39 
+ 1.58817  116.36 -0.39 
+ 1.5909  117.285 -0.39 
+ 1.59355  118.18 -0.39 
+ 1.59899  120 -0.39 
+ 1.60446  121.82 -0.39 
+ 1.6061  122.366 -0.39 
+ 1.6099  123.64 -0.39 
+ 1.6153  125.45 -0.39 
+ 1.62064  127.27 -0.39 
+ 1.6212  127.463 -0.39 
+ 1.62595  129.09 -0.39 
+ 1.63116  130.91 -0.39 
+ 1.63626  132.73 -0.39 
+ 1.6364  132.783 -0.39 
+ 1.6412  134.55 -0.39 
+ 1.646  136.36 -0.39 
+ 1.65064  138.18 -0.39 
+ 1.6515  138.528 -0.39 
+ 1.65516  140 -0.39 
+ 1.6595  141.82 -0.39 
+ 1.66366  143.64 -0.39 
+ 1.6667  145.026 -0.39 
+ 1.66763  145.45 -0.39 
+ 1.67139  147.27 -0.39 
+ 1.67495  149.09 -0.39 
+ 1.67831  150.91 -0.39 
+ 1.68147  152.73 -0.39 
+ 1.6818  152.933 -0.39 
+ 1.68445  154.55 -0.39 
+ 1.68723  156.36 -0.39 
+ 1.6898  158.18 -0.39 
+ 1.69216  160 -0.39 
+ 1.69431  161.82 -0.39 
+ 1.69625  163.64 -0.39 
+ 1.697  164.421 -0.39 
+ 1.69799  165.45 -0.39 
+ 1.69951  167.27 -0.39 
+ 1.70083  169.09 -0.39 
+ 1.70195  170.91 -0.39 
+ 1.70286  172.73 -0.39 
+ 1.70357  174.55 -0.39 
+ 1.70407  176.36 -0.39 
+ 1.70438  178.18 -0.39 
+ 1.70448  180 -0.39 
+
+ 2.5  22.1797 -0.39 
+ 2.4848  23.1566 -0.39 
+ 2.47722  23.64 -0.39 
+ 2.4697  24.0933 -0.39 
+ 2.4545  24.9911 -0.39 
+ 2.44667  25.45 -0.39 
+ 2.4394  25.861 -0.39 
+ 2.4242  26.7039 -0.39 
+ 2.4139  27.27 -0.39 
+ 2.4091  27.5248 -0.39 
+ 2.3939  28.3201 -0.39 
+ 2.37899  29.09 -0.39 
+ 2.3788  29.0996 -0.39 
+ 2.3636  29.8571 -0.39 
+ 2.3485  30.6009 -0.39 
+ 2.34213  30.91 -0.39 
+ 2.3333  31.3306 -0.39 
+ 2.3182  32.0469 -0.39 
+ 2.30349  32.73 -0.39 
+ 2.303  32.7524 -0.39 
+ 2.2879  33.4492 -0.39 
+ 2.2727  34.1361 -0.39 
+ 2.26354  34.55 -0.39 
+ 2.2576  34.8152 -0.39 
+ 2.2424  35.4867 -0.39 
+ 2.2273  36.1512 -0.39 
+ 2.22252  36.36 -0.39 
+ 2.2121  36.8173 -0.39 
+ 2.197  37.4809 -0.39 
+ 2.1818  38.1399 -0.39 
+ 2.18088  38.18 -0.39 
+ 2.1667  38.8039 -0.39 
+ 2.1515  39.4648 -0.39 
+ 2.13924  40 -0.39 
+ 2.1364  40.1256 -0.39 
+ 2.1212  40.794 -0.39 
+ 2.1061  41.4606 -0.39 
+ 2.09792  41.82 -0.39 
+ 2.0909  42.1334 -0.39 
+ 2.0758  42.8132 -0.39 
+ 2.0606  43.493 -0.39 
+ 2.05735  43.64 -0.39 
+ 2.0455  44.1844 -0.39 
+ 2.0303  44.879 -0.39 
+ 2.01792  45.45 -0.39 
+ 2.0152  45.5794 -0.39 
+ 2  46.3016 -0.39 
+ 1.9848  47.0251 -0.39 
+ 1.97971  47.27 -0.39 
+ 1.9697  47.767 -0.39 
+ 1.9545  48.5188 -0.39 
+ 1.94306  49.09 -0.39 
+ 1.9394  49.2796 -0.39 
+ 1.9242  50.0643 -0.39 
+ 1.9091  50.8506 -0.39 
+ 1.90796  50.91 -0.39 
+ 1.8939  51.6699 -0.39 
+ 1.8788  52.4931 -0.39 
+ 1.87444  52.73 -0.39 
+ 1.8636  53.3457 -0.39 
+ 1.8485  54.2103 -0.39 
+ 1.84253  54.55 -0.39 
+ 1.8333  55.1003 -0.39 
+ 1.8182  56.0058 -0.39 
+ 1.81225  56.36 -0.39 
+ 1.803  56.9463 -0.39 
+ 1.7879  57.9086 -0.39 
+ 1.78361  58.18 -0.39 
+ 1.7727  58.9131 -0.39 
+ 1.7576  59.9328 -0.39 
+ 1.75659  60 -0.39 
+ 1.7424  61.0152 -0.39 
+ 1.73119  61.82 -0.39 
+ 1.7273  62.1208 -0.39 
+ 1.7121  63.2825 -0.39 
+ 1.70744  63.64 -0.39 
+ 1.697  64.5009 -0.39 
+ 1.68537  65.45 -0.39 
+ 1.6818  65.7697 -0.39 
+ 1.6667  67.1226 -0.39 
+ 1.66504  67.27 -0.39 
+ 1.6515  68.586 -0.39 
+ 1.64633  69.09 -0.39 
+ 1.6364  70.1594 -0.39 
+ 1.62935  70.91 -0.39 
+ 1.6212  71.8799 -0.39 
+ 1.61406  72.73 -0.39 
+ 1.6061  73.8003 -0.39 
+ 1.60046  74.55 -0.39 
+ 1.5909  75.9905 -0.39 
+ 1.58845  76.36 -0.39 
+ 1.57809  78.18 -0.39 
+ 1.5758  78.6525 -0.39 
+ 1.56919  80 -0.39 
+ 1.56176  81.82 -0.39 
+ 1.5606  82.1687 -0.39 
+ 1.55572  83.64 -0.39 
+ 1.55098  85.45 -0.39 
+ 1.54745  87.27 -0.39 
+
+
+# Contour 20, label:     -0.4
+ 1.91424  0 -0.4 
+ 1.91285  1.82 -0.4 
+ 1.9091  3.42148 -0.4 
+ 1.90862  3.64 -0.4 
+ 1.90191  5.45 -0.4 
+ 1.8939  6.93612 -0.4 
+ 1.89215  7.27 -0.4 
+ 1.87977  9.09 -0.4 
+ 1.8788  9.20882 -0.4 
+ 1.86454  10.91 -0.4 
+ 1.8636  11.0078 -0.4 
+ 1.8485  12.546 -0.4 
+ 1.84661  12.73 -0.4 
+ 1.8333  13.92 -0.4 
+ 1.82582  14.55 -0.4 
+ 1.8182  15.1606 -0.4 
+ 1.803  16.2797 -0.4 
+ 1.80188  16.36 -0.4 
+ 1.7879  17.3636 -0.4 
+ 1.77516  18.18 -0.4 
+ 1.7727  18.3417 -0.4 
+ 1.7576  19.3036 -0.4 
+ 1.74534  20 -0.4 
+ 1.7424  20.1764 -0.4 
+ 1.7273  21.0527 -0.4 
+ 1.71224  21.82 -0.4 
+ 1.7121  21.8279 -0.4 
+ 1.697  22.6521 -0.4 
+ 1.6818  23.3821 -0.4 
+ 1.67615  23.64 -0.4 
+ 1.6667  24.1182 -0.4 
+ 1.6515  24.8229 -0.4 
+ 1.63646  25.45 -0.4 
+ 1.6364  25.4527 -0.4 
+ 1.6212  26.1596 -0.4 
+ 1.6061  26.7915 -0.4 
+ 1.59348  27.27 -0.4 
+ 1.5909  27.3838 -0.4 
+ 1.5758  28.0309 -0.4 
+ 1.5606  28.6132 -0.4 
+ 1.54704  29.09 -0.4 
+ 1.5455  29.154 -0.4 
+ 1.5303  29.7648 -0.4 
+ 1.5152  30.3174 -0.4 
+ 1.5  30.8199 -0.4 
+ 1.49719  30.91 -0.4 
+ 1.4848  31.3857 -0.4 
+ 1.4697  31.9242 -0.4 
+ 1.4545  32.4163 -0.4 
+ 1.44424  32.73 -0.4 
+ 1.4394  32.9095 -0.4 
+ 1.4242  33.4475 -0.4 
+ 1.4091  33.9413 -0.4 
+ 1.3939  34.3966 -0.4 
+ 1.38862  34.55 -0.4 
+ 1.3788  34.8975 -0.4 
+ 1.3636  35.4016 -0.4 
+ 1.3485  35.8686 -0.4 
+ 1.3333  36.3034 -0.4 
+ 1.33129  36.36 -0.4 
+ 1.3182  36.8178 -0.4 
+ 1.303  37.3131 -0.4 
+ 1.2879  37.7767 -0.4 
+ 1.2739  38.18 -0.4 
+ 1.2727  38.223 -0.4 
+ 1.2576  38.7576 -0.4 
+ 1.2424  39.2609 -0.4 
+ 1.2273  39.7378 -0.4 
+ 1.21869  40 -0.4 
+ 1.2121  40.2491 -0.4 
+ 1.197  40.8093 -0.4 
+ 1.1818  41.3443 -0.4 
+ 1.16788  41.82 -0.4 
+ 1.1667  41.8701 -0.4 
+ 1.1515  42.5093 -0.4 
+ 1.1364  43.1255 -0.4 
+ 1.12341  43.64 -0.4 
+ 1.1212  43.7478 -0.4 
+ 1.1061  44.4912 -0.4 
+ 1.0909  45.2158 -0.4 
+ 1.08605  45.45 -0.4 
+ 1.0758  46.0625 -0.4 
+ 1.0606  46.9563 -0.4 
+ 1.05535  47.27 -0.4 
+ 1.0455  47.9912 -0.4 
+ 1.03032  49.09 -0.4 
+ 1.0303  49.0915 -0.4 
+ 1.0152  50.4647 -0.4 
+ 1.01033  50.91 -0.4 
+ 1  52.0505 -0.4 
+
+ 1.5152  79.7101 -0.4 
+ 1.51378  80 -0.4 
+ 1.5064  81.82 -0.4 
+ 1.50051  83.64 -0.4 
+ 1.5  83.8406 -0.4 
+ 1.49592  85.45 -0.4 
+ 1.4926  87.27 -0.4 
+ 1.49043  89.09 -0.4 
+ 1.48932  90.91 -0.4 
+ 1.48917  92.73 -0.4 
+ 1.48987  94.55 -0.4 
+ 1.49135  96.36 -0.4 
+ 1.49352  98.18 -0.4 
+ 1.49629  100 -0.4 
+ 1.4996  101.82 -0.4 
+ 1.5  102.011 -0.4 
+ 1.50336  103.64 -0.4 
+ 1.50753  105.45 -0.4 
+ 1.51204  107.27 -0.4 
+ 1.5152  108.464 -0.4 
+ 1.51683  109.09 -0.4 
+ 1.52182  110.91 -0.4 
+ 1.52701  112.73 -0.4 
+ 1.5303  113.848 -0.4 
+ 1.53236  114.55 -0.4 
+ 1.53784  116.36 -0.4 
+ 1.5434  118.18 -0.4 
+ 1.5455  118.861 -0.4 
+ 1.54897  120 -0.4 
+ 1.55455  121.82 -0.4 
+ 1.5601  123.64 -0.4 
+ 1.5606  123.802 -0.4 
+ 1.56565  125.45 -0.4 
+ 1.57114  127.27 -0.4 
+ 1.5758  128.836 -0.4 
+ 1.57655  129.09 -0.4 
+ 1.58182  130.91 -0.4 
+ 1.58697  132.73 -0.4 
+ 1.5909  134.153 -0.4 
+ 1.592  134.55 -0.4 
+ 1.59691  136.36 -0.4 
+ 1.60167  138.18 -0.4 
+ 1.6061  139.94 -0.4 
+ 1.60625  140 -0.4 
+ 1.61063  141.82 -0.4 
+ 1.61483  143.64 -0.4 
+ 1.61884  145.45 -0.4 
+ 1.6212  146.577 -0.4 
+ 1.62266  147.27 -0.4 
+ 1.62631  149.09 -0.4 
+ 1.62975  150.91 -0.4 
+ 1.63299  152.73 -0.4 
+ 1.63601  154.55 -0.4 
+ 1.6364  154.798 -0.4 
+ 1.63882  156.36 -0.4 
+ 1.64141  158.18 -0.4 
+ 1.6438  160 -0.4 
+ 1.64598  161.82 -0.4 
+ 1.64794  163.64 -0.4 
+ 1.6497  165.45 -0.4 
+ 1.65124  167.27 -0.4 
+ 1.6515  167.619 -0.4 
+ 1.6526  169.09 -0.4 
+ 1.65374  170.91 -0.4 
+ 1.65468  172.73 -0.4 
+ 1.6554  174.55 -0.4 
+ 1.65592  176.36 -0.4 
+ 1.65623  178.18 -0.4 
+ 1.65633  180 -0.4 
+
+ 2.5  18.436 -0.4 
+ 2.4848  19.5832 -0.4 
+ 2.47925  20 -0.4 
+ 2.4697  20.6667 -0.4 
+ 2.4545  21.7039 -0.4 
+ 2.4528  21.82 -0.4 
+ 2.4394  22.6797 -0.4 
+ 2.4242  23.6297 -0.4 
+ 2.42403  23.64 -0.4 
+ 2.4091  24.523 -0.4 
+ 2.3939  25.398 -0.4 
+ 2.393  25.45 -0.4 
+ 2.3788  26.2389 -0.4 
+ 2.3636  27.0628 -0.4 
+ 2.35977  27.27 -0.4 
+ 2.3485  27.8601 -0.4 
+ 2.3333  28.6394 -0.4 
+ 2.32448  29.09 -0.4 
+ 2.3182  29.402 -0.4 
+ 2.303  30.1465 -0.4 
+ 2.2879  30.8805 -0.4 
+ 2.28729  30.91 -0.4 
+ 2.2727  31.5988 -0.4 
+ 2.2576  32.3074 -0.4 
+ 2.24847  32.73 -0.4 
+ 2.2424  33.0075 -0.4 
+ 2.2273  33.6986 -0.4 
+ 2.2121  34.3831 -0.4 
+ 2.20841  34.55 -0.4 
+ 2.197  35.0598 -0.4 
+ 2.1818  35.7304 -0.4 
+ 2.16754  36.36 -0.4 
+ 2.1667  36.3974 -0.4 
+ 2.1515  37.0677 -0.4 
+ 2.1364  37.7344 -0.4 
+ 2.12624  38.18 -0.4 
+ 2.1212  38.4017 -0.4 
+ 2.1061  39.0709 -0.4 
+ 2.0909  39.7391 -0.4 
+ 2.08502  40 -0.4 
+ 2.0758  40.4124 -0.4 
+ 2.0606  41.0884 -0.4 
+ 2.0455  41.7653 -0.4 
+ 2.04428  41.82 -0.4 
+ 2.0303  42.4536 -0.4 
+ 2.0152  43.1437 -0.4 
+ 2.00431  43.64 -0.4 
+ 2  43.8389 -0.4 
+ 1.9848  44.5429 -0.4 
+ 1.9697  45.2492 -0.4 
+ 1.9654  45.45 -0.4 
+ 1.9545  45.9735 -0.4 
+ 1.9394  46.7059 -0.4 
+ 1.92774  47.27 -0.4 
+ 1.9242  47.4465 -0.4 
+ 1.9091  48.2051 -0.4 
+ 1.8939  48.9666 -0.4 
+ 1.89146  49.09 -0.4 
+ 1.8788  49.7517 -0.4 
+ 1.8636  50.543 -0.4 
+ 1.85661  50.91 -0.4 
+ 1.8485  51.3527 -0.4 
+ 1.8333  52.1778 -0.4 
+ 1.82321  52.73 -0.4 
+ 1.8182  53.0164 -0.4 
+ 1.803  53.8793 -0.4 
+ 1.79127  54.55 -0.4 
+ 1.7879  54.7513 -0.4 
+ 1.7727  55.6516 -0.4 
+ 1.76081  56.36 -0.4 
+ 1.7576  56.5635 -0.4 
+ 1.7424  57.5162 -0.4 
+ 1.73186  58.18 -0.4 
+ 1.7273  58.4851 -0.4 
+ 1.7121  59.4915 -0.4 
+ 1.70444  60 -0.4 
+ 1.697  60.5282 -0.4 
+ 1.6818  61.5956 -0.4 
+ 1.67861  61.82 -0.4 
+ 1.6667  62.7203 -0.4 
+ 1.65441  63.64 -0.4 
+ 1.6515  63.874 -0.4 
+ 1.6364  65.091 -0.4 
+ 1.63189  65.45 -0.4 
+ 1.6212  66.383 -0.4 
+ 1.61106  67.27 -0.4 
+ 1.6061  67.7462 -0.4 
+ 1.59195  69.09 -0.4 
+ 1.5909  69.2003 -0.4 
+ 1.5758  70.7906 -0.4 
+ 1.57465  70.91 -0.4 
+ 1.5606  72.5469 -0.4 
+ 1.55903  72.73 -0.4 
+ 1.5455  74.5164 -0.4 
+ 1.54524  74.55 -0.4 
+ 1.53306  76.36 -0.4 
+ 1.5303  76.8406 -0.4 
+ 1.52261  78.18 -0.4 
+ 1.5152  79.7101 -0.4 
+
+
+# Contour 21, label:    -0.41
+ 1.92653  0 -0.41 
+ 1.92512  1.82 -0.41 
+ 1.9242  2.21761 -0.41 
+ 1.92117  3.64 -0.41 
+ 1.9145  5.45 -0.41 
+ 1.9091  6.47925 -0.41 
+ 1.90503  7.27 -0.41 
+ 1.8939  8.91541 -0.41 
+ 1.89273  9.09 -0.41 
+ 1.8788  10.7974 -0.41 
+ 1.87786  10.91 -0.41 
+ 1.8636  12.393 -0.41 
+ 1.86024  12.73 -0.41 
+ 1.8485  13.8086 -0.41 
+ 1.83983  14.55 -0.41 
+ 1.8333  15.081 -0.41 
+ 1.8182  16.2311 -0.41 
+ 1.81643  16.36 -0.41 
+ 1.803  17.3383 -0.41 
+ 1.79022  18.18 -0.41 
+ 1.7879  18.3372 -0.41 
+ 1.7727  19.3197 -0.41 
+ 1.76104  20 -0.41 
+ 1.7576  20.2126 -0.41 
+ 1.7424  21.1033 -0.41 
+ 1.72871  21.82 -0.41 
+ 1.7273  21.9003 -0.41 
+ 1.7121  22.7344 -0.41 
+ 1.697  23.4699 -0.41 
+ 1.69332  23.64 -0.41 
+ 1.6818  24.2314 -0.41 
+ 1.6667  24.939 -0.41 
+ 1.65459  25.45 -0.41 
+ 1.6515  25.5999 -0.41 
+ 1.6364  26.3076 -0.41 
+ 1.6212  26.9379 -0.41 
+ 1.61266  27.27 -0.41 
+ 1.6061  27.567 -0.41 
+ 1.5909  28.2111 -0.41 
+ 1.5758  28.7887 -0.41 
+ 1.56733  29.09 -0.41 
+ 1.5606  29.3736 -0.41 
+ 1.5455  29.9784 -0.41 
+ 1.5303  30.5239 -0.41 
+ 1.51873  30.91 -0.41 
+ 1.5152  31.052 -0.41 
+ 1.5  31.6363 -0.41 
+ 1.4848  32.166 -0.41 
+ 1.4697  32.6489 -0.41 
+ 1.46707  32.73 -0.41 
+ 1.4545  33.2026 -0.41 
+ 1.4394  33.7301 -0.41 
+ 1.4242  34.2131 -0.41 
+ 1.41295  34.55 -0.41 
+ 1.4091  34.6912 -0.41 
+ 1.3939  35.2259 -0.41 
+ 1.3788  35.7178 -0.41 
+ 1.3636  36.1726 -0.41 
+ 1.35713  36.36 -0.41 
+ 1.3485  36.6715 -0.41 
+ 1.3333  37.1893 -0.41 
+ 1.3182  37.6704 -0.41 
+ 1.303  38.12 -0.41 
+ 1.30095  38.18 -0.41 
+ 1.2879  38.6554 -0.41 
+ 1.2727  39.1732 -0.41 
+ 1.2576  39.66 -0.41 
+ 1.24652  40 -0.41 
+ 1.2424  40.1581 -0.41 
+ 1.2273  40.7285 -0.41 
+ 1.2121  41.2684 -0.41 
+ 1.197  41.7833 -0.41 
+ 1.19591  41.82 -0.41 
+ 1.1818  42.4149 -0.41 
+ 1.1667  43.0286 -0.41 
+ 1.1515  43.6194 -0.41 
+ 1.15098  43.64 -0.41 
+ 1.1364  44.3503 -0.41 
+ 1.1212  45.061 -0.41 
+ 1.11285  45.45 -0.41 
+ 1.1061  45.8431 -0.41 
+ 1.0909  46.7152 -0.41 
+ 1.08119  47.27 -0.41 
+ 1.0758  47.6515 -0.41 
+ 1.0606  48.719 -0.41 
+ 1.05538  49.09 -0.41 
+ 1.0455  49.9535 -0.41 
+ 1.03449  50.91 -0.41 
+ 1.0303  51.3555 -0.41 
+ 1.01761  52.73 -0.41 
+ 1.0152  53.0469 -0.41 
+ 1.00395  54.55 -0.41 
+ 1  55.1813 -0.41 
+
+ 1.50093  72.73 -0.41 
+ 1.5  72.8507 -0.41 
+ 1.48679  74.55 -0.41 
+ 1.4848  74.8431 -0.41 
+ 1.47452  76.36 -0.41 
+ 1.4697  77.2018 -0.41 
+ 1.46402  78.18 -0.41 
+ 1.45522  80 -0.41 
+ 1.4545  80.1828 -0.41 
+ 1.44803  81.82 -0.41 
+ 1.4424  83.64 -0.41 
+ 1.4394  84.9329 -0.41 
+ 1.43818  85.45 -0.41 
+ 1.43522  87.27 -0.41 
+ 1.43347  89.09 -0.41 
+ 1.43281  90.91 -0.41 
+ 1.43314  92.73 -0.41 
+ 1.43433  94.55 -0.41 
+ 1.43631  96.36 -0.41 
+ 1.43897  98.18 -0.41 
+ 1.4394  98.416 -0.41 
+ 1.44219  100 -0.41 
+ 1.44593  101.82 -0.41 
+ 1.45011  103.64 -0.41 
+ 1.4545  105.377 -0.41 
+ 1.45468  105.45 -0.41 
+ 1.45957  107.27 -0.41 
+ 1.46474  109.09 -0.41 
+ 1.4697  110.764 -0.41 
+ 1.47013  110.91 -0.41 
+ 1.47562  112.73 -0.41 
+ 1.48125  114.55 -0.41 
+ 1.4848  115.668 -0.41 
+ 1.48699  116.36 -0.41 
+ 1.49279  118.18 -0.41 
+ 1.49863  120 -0.41 
+ 1.5  120.425 -0.41 
+ 1.50445  121.82 -0.41 
+ 1.51025  123.64 -0.41 
+ 1.5152  125.201 -0.41 
+ 1.51598  125.45 -0.41 
+ 1.5216  127.27 -0.41 
+ 1.52713  129.09 -0.41 
+ 1.5303  130.153 -0.41 
+ 1.53256  130.91 -0.41 
+ 1.53788  132.73 -0.41 
+ 1.54307  134.55 -0.41 
+ 1.5455  135.425 -0.41 
+ 1.54808  136.36 -0.41 
+ 1.55291  138.18 -0.41 
+ 1.55757  140 -0.41 
+ 1.5606  141.233 -0.41 
+ 1.56205  141.82 -0.41 
+ 1.56637  143.64 -0.41 
+ 1.57049  145.45 -0.41 
+ 1.57442  147.27 -0.41 
+ 1.5758  147.946 -0.41 
+ 1.57812  149.09 -0.41 
+ 1.58161  150.91 -0.41 
+ 1.58489  152.73 -0.41 
+ 1.58796  154.55 -0.41 
+ 1.59082  156.36 -0.41 
+ 1.5909  156.416 -0.41 
+ 1.59349  158.18 -0.41 
+ 1.59594  160 -0.41 
+ 1.59818  161.82 -0.41 
+ 1.6002  163.64 -0.41 
+ 1.60201  165.45 -0.41 
+ 1.6036  167.27 -0.41 
+ 1.60498  169.09 -0.41 
+ 1.6061  170.836 -0.41 
+ 1.60615  170.91 -0.41 
+ 1.60709  172.73 -0.41 
+ 1.60783  174.55 -0.41 
+ 1.60836  176.36 -0.41 
+ 1.60867  178.18 -0.41 
+ 1.60878  180 -0.41 
+
+ 2.5  14.098 -0.41 
+ 2.49564  14.55 -0.41 
+ 2.4848  15.5434 -0.41 
+ 2.47585  16.36 -0.41 
+ 2.4697  16.8713 -0.41 
+ 2.4545  18.1108 -0.41 
+ 2.45365  18.18 -0.41 
+ 2.4394  19.2466 -0.41 
+ 2.42912  20 -0.41 
+ 2.4242  20.3351 -0.41 
+ 2.4091  21.3597 -0.41 
+ 2.40219  21.82 -0.41 
+ 2.3939  22.3391 -0.41 
+ 2.3788  23.279 -0.41 
+ 2.3729  23.64 -0.41 
+ 2.3636  24.1772 -0.41 
+ 2.3485  25.0441 -0.41 
+ 2.34131  25.45 -0.41 
+ 2.3333  25.8854 -0.41 
+ 2.3182  26.7026 -0.41 
+ 2.30752  27.27 -0.41 
+ 2.303  27.5021 -0.41 
+ 2.2879  28.276 -0.41 
+ 2.2727  29.0403 -0.41 
+ 2.27171  29.09 -0.41 
+ 2.2576  29.7813 -0.41 
+ 2.2424  30.513 -0.41 
+ 2.23416  30.91 -0.41 
+ 2.2273  31.233 -0.41 
+ 2.2121  31.9404 -0.41 
+ 2.197  32.6422 -0.41 
+ 2.1951  32.73 -0.41 
+ 2.1818  33.3333 -0.41 
+ 2.1667  34.0188 -0.41 
+ 2.15489  34.55 -0.41 
+ 2.1515  34.7 -0.41 
+ 2.1364  35.3719 -0.41 
+ 2.1212  36.0421 -0.41 
+ 2.11404  36.36 -0.41 
+ 2.1061  36.7127 -0.41 
+ 2.0909  37.3831 -0.41 
+ 2.0758  38.0538 -0.41 
+ 2.07295  38.18 -0.41 
+ 2.0606  38.7262 -0.41 
+ 2.0455  39.3992 -0.41 
+ 2.03198  40 -0.41 
+ 2.0303  40.0751 -0.41 
+ 2.0152  40.7556 -0.41 
+ 2  41.4385 -0.41 
+ 1.99154  41.82 -0.41 
+ 1.9848  42.1276 -0.41 
+ 1.9697  42.8226 -0.41 
+ 1.9545  43.5213 -0.41 
+ 1.95194  43.64 -0.41 
+ 1.9394  44.2281 -0.41 
+ 1.9242  44.9388 -0.41 
+ 1.9134  45.45 -0.41 
+ 1.9091  45.6589 -0.41 
+ 1.8939  46.3937 -0.41 
+ 1.8788  47.1328 -0.41 
+ 1.87598  47.27 -0.41 
+ 1.8636  47.8883 -0.41 
+ 1.8485  48.6505 -0.41 
+ 1.83976  49.09 -0.41 
+ 1.8333  49.4249 -0.41 
+ 1.8182  50.2132 -0.41 
+ 1.80482  50.91 -0.41 
+ 1.803  51.0084 -0.41 
+ 1.7879  51.8268 -0.41 
+ 1.7727  52.648 -0.41 
+ 1.77119  52.73 -0.41 
+ 1.7576  53.4977 -0.41 
+ 1.7424  54.3519 -0.41 
+ 1.73889  54.55 -0.41 
+ 1.7273  55.2309 -0.41 
+ 1.7121  56.1175 -0.41 
+ 1.70795  56.36 -0.41 
+ 1.697  57.0385 -0.41 
+ 1.6818  57.9726 -0.41 
+ 1.67843  58.18 -0.41 
+ 1.6667  58.9448 -0.41 
+ 1.6515  59.9277 -0.41 
+ 1.65038  60 -0.41 
+ 1.6364  60.9637 -0.41 
+ 1.62387  61.82 -0.41 
+ 1.6212  62.0157 -0.41 
+ 1.6061  63.1234 -0.41 
+ 1.59898  63.64 -0.41 
+ 1.5909  64.2702 -0.41 
+ 1.57582  65.45 -0.41 
+ 1.5758  65.452 -0.41 
+ 1.5606  66.737 -0.41 
+ 1.55431  67.27 -0.41 
+ 1.5455  68.0917 -0.41 
+ 1.53467  69.09 -0.41 
+ 1.5303  69.5371 -0.41 
+ 1.51691  70.91 -0.41 
+ 1.5152  71.1067 -0.41 
+ 1.50093  72.73 -0.41 
+
+
+# Contour 22, label:    -0.42
+ 1.94011  0 -0.42 
+ 1.9394  0.92974 -0.42 
+ 1.93878  1.82 -0.42 
+ 1.93495  3.64 -0.42 
+ 1.92831  5.45 -0.42 
+ 1.9242  6.24368 -0.42 
+ 1.91908  7.27 -0.42 
+ 1.9091  8.78538 -0.42 
+ 1.90709  9.09 -0.42 
+ 1.8939  10.7302 -0.42 
+ 1.89244  10.91 -0.42 
+ 1.8788  12.3686 -0.42 
+ 1.87525  12.73 -0.42 
+ 1.8636  13.817 -0.42 
+ 1.85528  14.55 -0.42 
+ 1.8485  15.1172 -0.42 
+ 1.8333  16.2865 -0.42 
+ 1.83232  16.36 -0.42 
+ 1.8182  17.4181 -0.42 
+ 1.80681  18.18 -0.42 
+ 1.803  18.442 -0.42 
+ 1.7879  19.4339 -0.42 
+ 1.77834  20 -0.42 
+ 1.7727  20.354 -0.42 
+ 1.7576  21.2482 -0.42 
+ 1.74683  21.82 -0.42 
+ 1.7424  22.0763 -0.42 
+ 1.7273  22.9097 -0.42 
+ 1.71212  23.64 -0.42 
+ 1.7121  23.6412 -0.42 
+ 1.697  24.4382 -0.42 
+ 1.6818  25.1389 -0.42 
+ 1.67461  25.45 -0.42 
+ 1.6667  25.8445 -0.42 
+ 1.6515  26.5428 -0.42 
+ 1.6364  27.1625 -0.42 
+ 1.63367  27.27 -0.42 
+ 1.6212  27.8426 -0.42 
+ 1.6061  28.4739 -0.42 
+ 1.5909  29.0384 -0.42 
+ 1.58948  29.09 -0.42 
+ 1.5758  29.6826 -0.42 
+ 1.5606  30.2722 -0.42 
+ 1.5455  30.8027 -0.42 
+ 1.54232  30.91 -0.42 
+ 1.5303  31.3994 -0.42 
+ 1.5152  31.9664 -0.42 
+ 1.5  32.4794 -0.42 
+ 1.49213  32.73 -0.42 
+ 1.4848  33.0163 -0.42 
+ 1.4697  33.5763 -0.42 
+ 1.4545  34.0852 -0.42 
+ 1.43942  34.55 -0.42 
+ 1.4394  34.5508 -0.42 
+ 1.4242  35.1147 -0.42 
+ 1.4091  35.6291 -0.42 
+ 1.3939  36.1015 -0.42 
+ 1.3852  36.36 -0.42 
+ 1.3788  36.5984 -0.42 
+ 1.3636  37.1364 -0.42 
+ 1.3485  37.6324 -0.42 
+ 1.3333  38.0929 -0.42 
+ 1.33038  38.18 -0.42 
+ 1.3182  38.6353 -0.42 
+ 1.303  39.165 -0.42 
+ 1.2879  39.6592 -0.42 
+ 1.27691  40 -0.42 
+ 1.2727  40.1641 -0.42 
+ 1.2576  40.7425 -0.42 
+ 1.2424  41.2852 -0.42 
+ 1.2273  41.7985 -0.42 
+ 1.22666  41.82 -0.42 
+ 1.2121  42.4365 -0.42 
+ 1.197  43.0465 -0.42 
+ 1.1818  43.628 -0.42 
+ 1.18149  43.64 -0.42 
+ 1.1667  44.3546 -0.42 
+ 1.1515  45.0515 -0.42 
+ 1.1427  45.45 -0.42 
+ 1.1364  45.8102 -0.42 
+ 1.1212  46.6618 -0.42 
+ 1.11016  47.27 -0.42 
+ 1.1061  47.55 -0.42 
+ 1.0909  48.5884 -0.42 
+ 1.08354  49.09 -0.42 
+ 1.0758  49.7461 -0.42 
+ 1.06184  50.91 -0.42 
+ 1.0606  51.0385 -0.42 
+ 1.0455  52.6235 -0.42 
+ 1.04449  52.73 -0.42 
+ 1.03043  54.55 -0.42 
+ 1.0303  54.57 -0.42 
+ 1.01934  56.36 -0.42 
+ 1.0152  57.1802 -0.42 
+ 1.01029  58.18 -0.42 
+ 1.00287  60 -0.42 
+ 1  60.8487 -0.42 
+
+ 1.5  66.7167 -0.42 
+ 1.49316  67.27 -0.42 
+ 1.4848  68.0167 -0.42 
+ 1.4728  69.09 -0.42 
+ 1.4697  69.3996 -0.42 
+ 1.4545  70.8976 -0.42 
+ 1.45437  70.91 -0.42 
+ 1.4394  72.5743 -0.42 
+ 1.43798  72.73 -0.42 
+ 1.4242  74.4645 -0.42 
+ 1.42352  74.55 -0.42 
+ 1.41109  76.36 -0.42 
+ 1.4091  76.7077 -0.42 
+ 1.40052  78.18 -0.42 
+ 1.3939  79.5725 -0.42 
+ 1.39186  80 -0.42 
+ 1.38494  81.82 -0.42 
+ 1.37972  83.64 -0.42 
+ 1.3788  84.0854 -0.42 
+ 1.37594  85.45 -0.42 
+ 1.37356  87.27 -0.42 
+ 1.37246  89.09 -0.42 
+ 1.3725  90.91 -0.42 
+ 1.37355  92.73 -0.42 
+ 1.3755  94.55 -0.42 
+ 1.37823  96.36 -0.42 
+ 1.3788  96.659 -0.42 
+ 1.38158  98.18 -0.42 
+ 1.3855  100 -0.42 
+ 1.38993  101.82 -0.42 
+ 1.3939  103.302 -0.42 
+ 1.39479  103.64 -0.42 
+ 1.39997  105.45 -0.42 
+ 1.40547  107.27 -0.42 
+ 1.4091  108.418 -0.42 
+ 1.41117  109.09 -0.42 
+ 1.41701  110.91 -0.42 
+ 1.423  112.73 -0.42 
+ 1.4242  113.086 -0.42 
+ 1.42909  114.55 -0.42 
+ 1.43525  116.36 -0.42 
+ 1.4394  117.577 -0.42 
+ 1.44142  118.18 -0.42 
+ 1.44754  120 -0.42 
+ 1.45365  121.82 -0.42 
+ 1.4545  122.073 -0.42 
+ 1.45972  123.64 -0.42 
+ 1.46572  125.45 -0.42 
+ 1.4697  126.671 -0.42 
+ 1.47162  127.27 -0.42 
+ 1.47737  129.09 -0.42 
+ 1.483  130.91 -0.42 
+ 1.4848  131.507 -0.42 
+ 1.4885  132.73 -0.42 
+ 1.49386  134.55 -0.42 
+ 1.49905  136.36 -0.42 
+ 1.5  136.703 -0.42 
+ 1.50407  138.18 -0.42 
+ 1.5089  140 -0.42 
+ 1.51354  141.82 -0.42 
+ 1.5152  142.499 -0.42 
+ 1.51796  143.64 -0.42 
+ 1.52217  145.45 -0.42 
+ 1.52617  147.27 -0.42 
+ 1.52997  149.09 -0.42 
+ 1.5303  149.258 -0.42 
+ 1.53357  150.91 -0.42 
+ 1.53696  152.73 -0.42 
+ 1.54014  154.55 -0.42 
+ 1.54309  156.36 -0.42 
+ 1.5455  157.963 -0.42 
+ 1.54582  158.18 -0.42 
+ 1.54832  160 -0.42 
+ 1.5506  161.82 -0.42 
+ 1.55266  163.64 -0.42 
+ 1.5545  165.45 -0.42 
+ 1.55612  167.27 -0.42 
+ 1.55753  169.09 -0.42 
+ 1.55872  170.91 -0.42 
+ 1.55969  172.73 -0.42 
+ 1.56045  174.55 -0.42 
+ 1.5606  175.054 -0.42 
+ 1.56099  176.36 -0.42 
+ 1.56132  178.18 -0.42 
+ 1.56143  180 -0.42 
+
+ 2.5  8.11933 -0.42 
+ 2.49432  9.09 -0.42 
+ 2.4848  10.4235 -0.42 
+ 2.48133  10.91 -0.42 
+ 2.4697  12.2934 -0.42 
+ 2.46598  12.73 -0.42 
+ 2.4545  13.9046 -0.42 
+ 2.44817  14.55 -0.42 
+ 2.4394  15.3428 -0.42 
+ 2.42794  16.36 -0.42 
+ 2.4242  16.6624 -0.42 
+ 2.4091  17.8791 -0.42 
+ 2.4053  18.18 -0.42 
+ 2.3939  19.01 -0.42 
+ 2.38021  20 -0.42 
+ 2.3788  20.0946 -0.42 
+ 2.3636  21.101 -0.42 
+ 2.35267  21.82 -0.42 
+ 2.3485  22.0775 -0.42 
+ 2.3333  23.0018 -0.42 
+ 2.32275  23.64 -0.42 
+ 2.3182  23.8997 -0.42 
+ 2.303  24.7534 -0.42 
+ 2.29054  25.45 -0.42 
+ 2.2879  25.5919 -0.42 
+ 2.2727  26.3976 -0.42 
+ 2.2576  27.1948 -0.42 
+ 2.25616  27.27 -0.42 
+ 2.2424  27.9607 -0.42 
+ 2.2273  28.7173 -0.42 
+ 2.21977  29.09 -0.42 
+ 2.2121  29.458 -0.42 
+ 2.197  30.1828 -0.42 
+ 2.1818  30.904 -0.42 
+ 2.18167  30.91 -0.42 
+ 2.1667  31.6052 -0.42 
+ 2.1515  32.3033 -0.42 
+ 2.14225  32.73 -0.42 
+ 2.1364  32.9952 -0.42 
+ 2.1212  33.6773 -0.42 
+ 2.1061  34.3591 -0.42 
+ 2.10185  34.55 -0.42 
+ 2.0909  35.0318 -0.42 
+ 2.0758  35.7006 -0.42 
+ 2.06087  36.36 -0.42 
+ 2.0606  36.3718 -0.42 
+ 2.0455  37.0405 -0.42 
+ 2.0303  37.7117 -0.42 
+ 2.01982  38.18 -0.42 
+ 2.0152  38.3856 -0.42 
+ 2  39.0584 -0.42 
+ 1.9848  39.7357 -0.42 
+ 1.97893  40 -0.42 
+ 1.9697  40.4161 -0.42 
+ 1.9545  41.0993 -0.42 
+ 1.9394  41.7887 -0.42 
+ 1.93871  41.82 -0.42 
+ 1.9242  42.4824 -0.42 
+ 1.9091  43.1815 -0.42 
+ 1.8992  43.64 -0.42 
+ 1.8939  43.8866 -0.42 
+ 1.8788  44.5951 -0.42 
+ 1.8636  45.3103 -0.42 
+ 1.86065  45.45 -0.42 
+ 1.8485  46.0384 -0.42 
+ 1.8333  46.7732 -0.42 
+ 1.82316  47.27 -0.42 
+ 1.8182  47.5177 -0.42 
+ 1.803  48.2719 -0.42 
+ 1.7879  49.0324 -0.42 
+ 1.78675  49.09 -0.42 
+ 1.7727  49.8085 -0.42 
+ 1.7576  50.5901 -0.42 
+ 1.75138  50.91 -0.42 
+ 1.7424  51.3863 -0.42 
+ 1.7273  52.1924 -0.42 
+ 1.71719  52.73 -0.42 
+ 1.7121  53.0104 -0.42 
+ 1.697  53.845 -0.42 
+ 1.68419  54.55 -0.42 
+ 1.6818  54.6868 -0.42 
+ 1.6667  55.5493 -0.42 
+ 1.65245  56.36 -0.42 
+ 1.6515  56.4169 -0.42 
+ 1.6364  57.3224 -0.42 
+ 1.62202  58.18 -0.42 
+ 1.6212  58.2317 -0.42 
+ 1.6061  59.1814 -0.42 
+ 1.593  60 -0.42 
+ 1.5909  60.1398 -0.42 
+ 1.5758  61.1423 -0.42 
+ 1.5655  61.82 -0.42 
+ 1.5606  62.1659 -0.42 
+ 1.5455  63.2318 -0.42 
+ 1.53965  63.64 -0.42 
+ 1.5303  64.3411 -0.42 
+ 1.51557  65.45 -0.42 
+ 1.5152  65.4808 -0.42 
+ 1.5  66.7167 -0.42 
+
+
+# Contour 23, label:    -0.43
+ 1.02225  65.45 -0.43 
+ 1.01947  67.27 -0.43 
+ 1.01702  69.09 -0.43 
+ 1.0152  70.5128 -0.43 
+ 1.01473  70.91 -0.43 
+ 1.0126  72.73 -0.43 
+ 1.01026  74.55 -0.43 
+ 1.00755  76.36 -0.43 
+ 1.00434  78.18 -0.43 
+ 1.00053  80 -0.43 
+ 1  80.2204 -0.43 
+
+ 1.95522  0 -0.43 
+ 1.9545  0.962195 -0.43 
+ 1.95393  1.82 -0.43 
+ 1.95022  3.64 -0.43 
+ 1.94378  5.45 -0.43 
+ 1.9394  6.32038 -0.43 
+ 1.93475  7.27 -0.43 
+ 1.9242  8.89622 -0.43 
+ 1.92296  9.09 -0.43 
+ 1.9091  10.8635 -0.43 
+ 1.90873  10.91 -0.43 
+ 1.8939  12.5212 -0.43 
+ 1.89191  12.73 -0.43 
+ 1.8788  13.9896 -0.43 
+ 1.87254  14.55 -0.43 
+ 1.8636  15.3113 -0.43 
+ 1.85027  16.36 -0.43 
+ 1.8485  16.4988 -0.43 
+ 1.8333  17.6397 -0.43 
+ 1.82546  18.18 -0.43 
+ 1.8182  18.6945 -0.43 
+ 1.803  19.6785 -0.43 
+ 1.79772  20 -0.43 
+ 1.7879  20.6358 -0.43 
+ 1.7727  21.517 -0.43 
+ 1.76715  21.82 -0.43 
+ 1.7576  22.3899 -0.43 
+ 1.7424  23.2064 -0.43 
+ 1.73363  23.64 -0.43 
+ 1.7273  23.9896 -0.43 
+ 1.7121  24.7664 -0.43 
+ 1.697  25.446 -0.43 
+ 1.69691  25.45 -0.43 
+ 1.6818  26.2152 -0.43 
+ 1.6667  26.8895 -0.43 
+ 1.65737  27.27 -0.43 
+ 1.6515  27.5514 -0.43 
+ 1.6364  28.2362 -0.43 
+ 1.6212  28.8413 -0.43 
+ 1.6146  29.09 -0.43 
+ 1.6061  29.4738 -0.43 
+ 1.5909  30.1047 -0.43 
+ 1.5758  30.6664 -0.43 
+ 1.5688  30.91 -0.43 
+ 1.5606  31.2578 -0.43 
+ 1.5455  31.8579 -0.43 
+ 1.5303  32.3954 -0.43 
+ 1.52017  32.73 -0.43 
+ 1.5152  32.9332 -0.43 
+ 1.5  33.5206 -0.43 
+ 1.4848  34.0494 -0.43 
+ 1.4697  34.5293 -0.43 
+ 1.46903  34.55 -0.43 
+ 1.4545  35.109 -0.43 
+ 1.4394  35.6396 -0.43 
+ 1.4242  36.1232 -0.43 
+ 1.41642  36.36 -0.43 
+ 1.4091  36.6419 -0.43 
+ 1.3939  37.1931 -0.43 
+ 1.3788  37.6973 -0.43 
+ 1.3636  38.1621 -0.43 
+ 1.36301  38.18 -0.43 
+ 1.3485  38.7376 -0.43 
+ 1.3333  39.2722 -0.43 
+ 1.3182  39.7673 -0.43 
+ 1.31078  40 -0.43 
+ 1.303  40.3098 -0.43 
+ 1.2879  40.8888 -0.43 
+ 1.2727  41.4278 -0.43 
+ 1.26115  41.82 -0.43 
+ 1.2576  41.9737 -0.43 
+ 1.2424  42.6138 -0.43 
+ 1.2273  43.2133 -0.43 
+ 1.21602  43.64 -0.43 
+ 1.2121  43.8283 -0.43 
+ 1.197  44.545 -0.43 
+ 1.1818  45.2219 -0.43 
+ 1.17665  45.45 -0.43 
+ 1.1667  46.0135 -0.43 
+ 1.1515  46.8384 -0.43 
+ 1.14343  47.27 -0.43 
+ 1.1364  47.7473 -0.43 
+ 1.1212  48.75 -0.43 
+ 1.11603  49.09 -0.43 
+ 1.1061  49.9169 -0.43 
+ 1.09381  50.91 -0.43 
+ 1.0909  51.2081 -0.43 
+ 1.07599  52.73 -0.43 
+ 1.0758  52.755 -0.43 
+ 1.06186  54.55 -0.43 
+ 1.0606  54.7519 -0.43 
+ 1.05082  56.36 -0.43 
+ 1.0455  57.4497 -0.43 
+ 1.04201  58.18 -0.43 
+ 1.03514  60 -0.43 
+ 1.0303  61.5801 -0.43 
+ 1.0296  61.82 -0.43 
+ 1.02555  63.64 -0.43 
+ 1.02225  65.45 -0.43 
+
+ 1.50123  61.82 -0.43 
+ 1.5  61.9029 -0.43 
+ 1.4848  62.9113 -0.43 
+ 1.47388  63.64 -0.43 
+ 1.4697  63.9402 -0.43 
+ 1.4545  65.0143 -0.43 
+ 1.44833  65.45 -0.43 
+ 1.4394  66.1443 -0.43 
+ 1.42477  67.27 -0.43 
+ 1.4242  67.3184 -0.43 
+ 1.4091  68.5948 -0.43 
+ 1.40316  69.09 -0.43 
+ 1.3939  69.9572 -0.43 
+ 1.38371  70.91 -0.43 
+ 1.3788  71.4338 -0.43 
+ 1.36644  72.73 -0.43 
+ 1.3636  73.075 -0.43 
+ 1.35141  74.55 -0.43 
+ 1.3485  74.9652 -0.43 
+ 1.33852  76.36 -0.43 
+ 1.3333  77.257 -0.43 
+ 1.32786  78.18 -0.43 
+ 1.31941  80 -0.43 
+ 1.3182  80.3424 -0.43 
+ 1.31281  81.82 -0.43 
+ 1.30816  83.64 -0.43 
+ 1.30528  85.45 -0.43 
+ 1.30394  87.27 -0.43 
+ 1.30398  89.09 -0.43 
+ 1.30521  90.91 -0.43 
+ 1.30748  92.73 -0.43 
+ 1.31067  94.55 -0.43 
+ 1.31466  96.36 -0.43 
+ 1.3182  97.735 -0.43 
+ 1.31929  98.18 -0.43 
+ 1.32433  100 -0.43 
+ 1.32988  101.82 -0.43 
+ 1.3333  102.863 -0.43 
+ 1.33577  103.64 -0.43 
+ 1.34193  105.45 -0.43 
+ 1.34837  107.27 -0.43 
+ 1.3485  107.304 -0.43 
+ 1.35484  109.09 -0.43 
+ 1.36148  110.91 -0.43 
+ 1.3636  111.477 -0.43 
+ 1.36819  112.73 -0.43 
+ 1.37495  114.55 -0.43 
+ 1.3788  115.569 -0.43 
+ 1.3817  116.36 -0.43 
+ 1.38838  118.18 -0.43 
+ 1.3939  119.686 -0.43 
+ 1.39504  120 -0.43 
+ 1.40162  121.82 -0.43 
+ 1.40814  123.64 -0.43 
+ 1.4091  123.908 -0.43 
+ 1.41449  125.45 -0.43 
+ 1.42071  127.27 -0.43 
+ 1.4242  128.31 -0.43 
+ 1.4268  129.09 -0.43 
+ 1.43275  130.91 -0.43 
+ 1.43855  132.73 -0.43 
+ 1.4394  133.003 -0.43 
+ 1.44412  134.55 -0.43 
+ 1.44951  136.36 -0.43 
+ 1.4545  138.105 -0.43 
+ 1.45471  138.18 -0.43 
+ 1.45974  140 -0.43 
+ 1.46455  141.82 -0.43 
+ 1.46917  143.64 -0.43 
+ 1.4697  143.856 -0.43 
+ 1.47353  145.45 -0.43 
+ 1.47768  147.27 -0.43 
+ 1.48161  149.09 -0.43 
+ 1.4848  150.656 -0.43 
+ 1.48532  150.91 -0.43 
+ 1.48882  152.73 -0.43 
+ 1.49209  154.55 -0.43 
+ 1.49514  156.36 -0.43 
+ 1.49797  158.18 -0.43 
+ 1.5  159.605 -0.43 
+ 1.50056  160 -0.43 
+ 1.50293  161.82 -0.43 
+ 1.50506  163.64 -0.43 
+ 1.50697  165.45 -0.43 
+ 1.50866  167.27 -0.43 
+ 1.51012  169.09 -0.43 
+ 1.51135  170.91 -0.43 
+ 1.51236  172.73 -0.43 
+ 1.51315  174.55 -0.43 
+ 1.51371  176.36 -0.43 
+ 1.51404  178.18 -0.43 
+ 1.51416  180 -0.43 
+
+ 2.47865  0 -0.43 
+ 2.47745  1.82 -0.43 
+ 2.47387  3.64 -0.43 
+ 2.4697  4.90143 -0.43 
+ 2.46787  5.45 -0.43 
+ 2.45942  7.27 -0.43 
+ 2.4545  8.09484 -0.43 
+ 2.44857  9.09 -0.43 
+ 2.4394  10.3518 -0.43 
+ 2.43528  10.91 -0.43 
+ 2.4242  12.1891 -0.43 
+ 2.4195  12.73 -0.43 
+ 2.4091  13.7755 -0.43 
+ 2.40126  14.55 -0.43 
+ 2.3939  15.1953 -0.43 
+ 2.38055  16.36 -0.43 
+ 2.3788  16.4987 -0.43 
+ 2.3636  17.6869 -0.43 
+ 2.35727  18.18 -0.43 
+ 2.3485  18.8067 -0.43 
+ 2.3333  19.8738 -0.43 
+ 2.3315  20 -0.43 
+ 2.3182  20.8652 -0.43 
+ 2.30326  21.82 -0.43 
+ 2.303  21.8358 -0.43 
+ 2.2879  22.7395 -0.43 
+ 2.2727  23.6344 -0.43 
+ 2.2726  23.64 -0.43 
+ 2.2576  24.47 -0.43 
+ 2.2424  25.2984 -0.43 
+ 2.23962  25.45 -0.43 
+ 2.2273  26.0936 -0.43 
+ 2.2121  26.8768 -0.43 
+ 2.20448  27.27 -0.43 
+ 2.197  27.6408 -0.43 
+ 2.1818  28.3844 -0.43 
+ 2.16744  29.09 -0.43 
+ 2.1667  29.125 -0.43 
+ 2.1515  29.8376 -0.43 
+ 2.1364  30.5495 -0.43 
+ 2.12869  30.91 -0.43 
+ 2.1212  31.2505 -0.43 
+ 2.1061  31.9392 -0.43 
+ 2.0909  32.6305 -0.43 
+ 2.08872  32.73 -0.43 
+ 2.0758  33.3063 -0.43 
+ 2.0606  33.9815 -0.43 
+ 2.04797  34.55 -0.43 
+ 2.0455  34.6583 -0.43 
+ 2.0303  35.3195 -0.43 
+ 2.0152  35.9863 -0.43 
+ 2.00673  36.36 -0.43 
+ 2  36.6539 -0.43 
+ 1.9848  37.3193 -0.43 
+ 1.9697  37.9922 -0.43 
+ 1.96547  38.18 -0.43 
+ 1.9545  38.6619 -0.43 
+ 1.9394  39.3342 -0.43 
+ 1.92455  40 -0.43 
+ 1.9242  40.0156 -0.43 
+ 1.9091  40.6915 -0.43 
+ 1.8939  41.3759 -0.43 
+ 1.8842  41.82 -0.43 
+ 1.8788  42.0664 -0.43 
+ 1.8636  42.7577 -0.43 
+ 1.8485  43.4584 -0.43 
+ 1.84457  43.64 -0.43 
+ 1.8333  44.1592 -0.43 
+ 1.8182  44.8648 -0.43 
+ 1.80574  45.45 -0.43 
+ 1.803  45.5803 -0.43 
+ 1.7879  46.3017 -0.43 
+ 1.7727  47.032 -0.43 
+ 1.76779  47.27 -0.43 
+ 1.7576  47.7695 -0.43 
+ 1.7424  48.5131 -0.43 
+ 1.73078  49.09 -0.43 
+ 1.7273  49.2659 -0.43 
+ 1.7121  50.026 -0.43 
+ 1.697  50.7933 -0.43 
+ 1.69468  50.91 -0.43 
+ 1.6818  51.5722 -0.43 
+ 1.6667  52.3577 -0.43 
+ 1.65949  52.73 -0.43 
+ 1.6515  53.1554 -0.43 
+ 1.6364  53.9629 -0.43 
+ 1.62538  54.55 -0.43 
+ 1.6212  54.7795 -0.43 
+ 1.6061  55.6088 -0.43 
+ 1.59239  56.36 -0.43 
+ 1.5909  56.4456 -0.43 
+ 1.5758  57.3111 -0.43 
+ 1.56062  58.18 -0.43 
+ 1.5606  58.1812 -0.43 
+ 1.5455  59.0851 -0.43 
+ 1.5303  59.9932 -0.43 
+ 1.53019  60 -0.43 
+ 1.5152  60.9436 -0.43 
+ 1.50123  61.82 -0.43 
+
+
+# Contour 24, label:    -0.44
+ 1.07059  69.09 -0.44 
+ 1.07137  70.91 -0.44 
+ 1.07212  72.73 -0.44 
+ 1.07251  74.55 -0.44 
+ 1.07217  76.36 -0.44 
+ 1.07074  78.18 -0.44 
+ 1.06783  80 -0.44 
+ 1.06305  81.82 -0.44 
+ 1.0606  82.4812 -0.44 
+ 1.05708  83.64 -0.44 
+ 1.04978  85.45 -0.44 
+ 1.0455  86.3044 -0.44 
+ 1.04147  87.27 -0.44 
+ 1.03239  89.09 -0.44 
+ 1.0303  89.4543 -0.44 
+ 1.02339  90.91 -0.44 
+ 1.0152  92.4283 -0.44 
+ 1.01382  92.73 -0.44 
+ 1.00469  94.55 -0.44 
+ 1  95.4048 -0.44 
+
+ 1.97258  0 -0.44 
+ 1.97128  1.82 -0.44 
+ 1.9697  2.55179 -0.44 
+ 1.96754  3.64 -0.44 
+ 1.96137  5.45 -0.44 
+ 1.9545  6.83714 -0.44 
+ 1.95245  7.27 -0.44 
+ 1.94118  9.09 -0.44 
+ 1.9394  9.32936 -0.44 
+ 1.9274  10.91 -0.44 
+ 1.9242  11.2757 -0.44 
+ 1.91106  12.73 -0.44 
+ 1.9091  12.9282 -0.44 
+ 1.8939  14.3878 -0.44 
+ 1.89215  14.55 -0.44 
+ 1.8788  15.7232 -0.44 
+ 1.87085  16.36 -0.44 
+ 1.8636  16.9415 -0.44 
+ 1.8485  18.0529 -0.44 
+ 1.84669  18.18 -0.44 
+ 1.8333  19.148 -0.44 
+ 1.81995  20 -0.44 
+ 1.8182  20.1193 -0.44 
+ 1.803  21.1067 -0.44 
+ 1.79049  21.82 -0.44 
+ 1.7879  21.9832 -0.44 
+ 1.7727  22.8874 -0.44 
+ 1.7581  23.64 -0.44 
+ 1.7576  23.669 -0.44 
+ 1.7424  24.5212 -0.44 
+ 1.7273  25.2536 -0.44 
+ 1.72299  25.45 -0.44 
+ 1.7121  26.0288 -0.44 
+ 1.697  26.7506 -0.44 
+ 1.68471  27.27 -0.44 
+ 1.6818  27.4165 -0.44 
+ 1.6667  28.1462 -0.44 
+ 1.6515  28.7815 -0.44 
+ 1.64358  29.09 -0.44 
+ 1.6364  29.4293 -0.44 
+ 1.6212  30.0899 -0.44 
+ 1.6061  30.6706 -0.44 
+ 1.59943  30.91 -0.44 
+ 1.5909  31.2875 -0.44 
+ 1.5758  31.9073 -0.44 
+ 1.5606  32.4563 -0.44 
+ 1.55254  32.73 -0.44 
+ 1.5455  33.0296 -0.44 
+ 1.5303  33.6297 -0.44 
+ 1.5152  34.1644 -0.44 
+ 1.50324  34.55 -0.44 
+ 1.5  34.6821 -0.44 
+ 1.4848  35.2766 -0.44 
+ 1.4697  35.8088 -0.44 
+ 1.4545  36.2897 -0.44 
+ 1.45224  36.36 -0.44 
+ 1.4394  36.8722 -0.44 
+ 1.4242  37.4211 -0.44 
+ 1.4091  37.9191 -0.44 
+ 1.40069  38.18 -0.44 
+ 1.3939  38.4515 -0.44 
+ 1.3788  39.0273 -0.44 
+ 1.3636  39.5517 -0.44 
+ 1.34964  40 -0.44 
+ 1.3485  40.0473 -0.44 
+ 1.3333  40.664 -0.44 
+ 1.3182  41.228 -0.44 
+ 1.303  41.7488 -0.44 
+ 1.30091  41.82 -0.44 
+ 1.2879  42.3931 -0.44 
+ 1.2727  43.0111 -0.44 
+ 1.2576  43.5854 -0.44 
+ 1.25615  43.64 -0.44 
+ 1.2424  44.3052 -0.44 
+ 1.2273  44.9904 -0.44 
+ 1.21662  45.45 -0.44 
+ 1.2121  45.7048 -0.44 
+ 1.197  46.5401 -0.44 
+ 1.18282  47.27 -0.44 
+ 1.1818  47.3389 -0.44 
+ 1.1667  48.3543 -0.44 
+ 1.15505  49.09 -0.44 
+ 1.1515  49.3826 -0.44 
+ 1.1364  50.6079 -0.44 
+ 1.13259  50.91 -0.44 
+ 1.1212  52.0815 -0.44 
+ 1.1148  52.73 -0.44 
+ 1.1061  53.8788 -0.44 
+ 1.10095  54.55 -0.44 
+ 1.0909  56.2447 -0.44 
+ 1.09023  56.36 -0.44 
+ 1.08262  58.18 -0.44 
+ 1.07694  60 -0.44 
+ 1.0758  60.5557 -0.44 
+ 1.0733  61.82 -0.44 
+ 1.07119  63.64 -0.44 
+ 1.07021  65.45 -0.44 
+ 1.0701  67.27 -0.44 
+ 1.07059  69.09 -0.44 
+
+ 1.4545  60.1741 -0.44 
+ 1.4394  61.0474 -0.44 
+ 1.426  61.82 -0.44 
+ 1.4242  61.9306 -0.44 
+ 1.4091  62.8477 -0.44 
+ 1.39598  63.64 -0.44 
+ 1.3939  63.7748 -0.44 
+ 1.3788  64.7402 -0.44 
+ 1.36757  65.45 -0.44 
+ 1.3636  65.7269 -0.44 
+ 1.3485  66.7636 -0.44 
+ 1.34096  67.27 -0.44 
+ 1.3333  67.8431 -0.44 
+ 1.3182  68.9623 -0.44 
+ 1.3164  69.09 -0.44 
+ 1.303  70.1727 -0.44 
+ 1.29374  70.91 -0.44 
+ 1.2879  71.4496 -0.44 
+ 1.27355  72.73 -0.44 
+ 1.2727  72.8209 -0.44 
+ 1.2576  74.3701 -0.44 
+ 1.25574  74.55 -0.44 
+ 1.2424  76.1585 -0.44 
+ 1.24064  76.36 -0.44 
+ 1.22858  78.18 -0.44 
+ 1.2273  78.4502 -0.44 
+ 1.21935  80 -0.44 
+ 1.21362  81.82 -0.44 
+ 1.2121  82.7941 -0.44 
+ 1.21067  83.64 -0.44 
+ 1.21024  85.45 -0.44 
+ 1.21206  87.27 -0.44 
+ 1.2121  87.2886 -0.44 
+ 1.21531  89.09 -0.44 
+ 1.21993  90.91 -0.44 
+ 1.2257  92.73 -0.44 
+ 1.2273  93.1536 -0.44 
+ 1.23197  94.55 -0.44 
+ 1.23888  96.36 -0.44 
+ 1.2424  97.1987 -0.44 
+ 1.24618  98.18 -0.44 
+ 1.25379  100 -0.44 
+ 1.2576  100.854 -0.44 
+ 1.26158  101.82 -0.44 
+ 1.26948  103.64 -0.44 
+ 1.2727  104.347 -0.44 
+ 1.27746  105.45 -0.44 
+ 1.28553  107.27 -0.44 
+ 1.2879  107.788 -0.44 
+ 1.29351  109.09 -0.44 
+ 1.30149  110.91 -0.44 
+ 1.303  111.248 -0.44 
+ 1.30938  112.73 -0.44 
+ 1.31727  114.55 -0.44 
+ 1.3182  114.763 -0.44 
+ 1.32492  116.36 -0.44 
+ 1.33252  118.18 -0.44 
+ 1.3333  118.366 -0.44 
+ 1.33996  120 -0.44 
+ 1.3473  121.82 -0.44 
+ 1.3485  122.119 -0.44 
+ 1.35439  123.64 -0.44 
+ 1.36134  125.45 -0.44 
+ 1.3636  126.052 -0.44 
+ 1.36811  127.27 -0.44 
+ 1.3747  129.09 -0.44 
+ 1.3788  130.246 -0.44 
+ 1.3811  130.91 -0.44 
+ 1.38723  132.73 -0.44 
+ 1.39318  134.55 -0.44 
+ 1.3939  134.774 -0.44 
+ 1.39892  136.36 -0.44 
+ 1.40445  138.18 -0.44 
+ 1.4091  139.767 -0.44 
+ 1.40977  140 -0.44 
+ 1.4148  141.82 -0.44 
+ 1.41961  143.64 -0.44 
+ 1.4242  145.45 -0.44 
+ 1.42856  147.27 -0.44 
+ 1.43269  149.09 -0.44 
+ 1.43659  150.91 -0.44 
+ 1.4394  152.305 -0.44 
+ 1.44024  152.73 -0.44 
+ 1.44363  154.55 -0.44 
+ 1.44678  156.36 -0.44 
+ 1.4497  158.18 -0.44 
+ 1.45238  160 -0.44 
+ 1.4545  161.572 -0.44 
+ 1.45483  161.82 -0.44 
+ 1.45705  163.64 -0.44 
+ 1.45903  165.45 -0.44 
+ 1.46078  167.27 -0.44 
+ 1.4623  169.09 -0.44 
+ 1.46358  170.91 -0.44 
+ 1.46463  172.73 -0.44 
+ 1.46544  174.55 -0.44 
+ 1.46602  176.36 -0.44 
+ 1.46637  178.18 -0.44 
+ 1.46648  180 -0.44 
+
+ 2.43359  0 -0.44 
+ 2.43235  1.82 -0.44 
+ 2.42864  3.64 -0.44 
+ 2.4242  4.94299 -0.44 
+ 2.42247  5.45 -0.44 
+ 2.41382  7.27 -0.44 
+ 2.4091  8.04634 -0.44 
+ 2.40265  9.09 -0.44 
+ 2.3939  10.2536 -0.44 
+ 2.38895  10.91 -0.44 
+ 2.3788  12.0556 -0.44 
+ 2.37272  12.73 -0.44 
+ 2.3636  13.6149 -0.44 
+ 2.35392  14.55 -0.44 
+ 2.3485  15.0146 -0.44 
+ 2.3333  16.2945 -0.44 
+ 2.33252  16.36 -0.44 
+ 2.3182  17.4536 -0.44 
+ 2.30854  18.18 -0.44 
+ 2.303  18.5616 -0.44 
+ 2.2879  19.5991 -0.44 
+ 2.28198  20 -0.44 
+ 2.2727  20.5816 -0.44 
+ 2.2576  21.5268 -0.44 
+ 2.25285  21.82 -0.44 
+ 2.2424  22.423 -0.44 
+ 2.2273  23.2941 -0.44 
+ 2.22123  23.64 -0.44 
+ 2.2121  24.1273 -0.44 
+ 2.197  24.9338 -0.44 
+ 2.18724  25.45 -0.44 
+ 2.1818  25.7248 -0.44 
+ 2.1667  26.4868 -0.44 
+ 2.1515  27.2506 -0.44 
+ 2.15111  27.27 -0.44 
+ 2.1364  27.9745 -0.44 
+ 2.1212  28.6995 -0.44 
+ 2.11307  29.09 -0.44 
+ 2.1061  29.4113 -0.44 
+ 2.0909  30.1055 -0.44 
+ 2.0758  30.8057 -0.44 
+ 2.07353  30.91 -0.44 
+ 2.0606  31.4818 -0.44 
+ 2.0455  32.1581 -0.44 
+ 2.03279  32.73 -0.44 
+ 2.0303  32.8383 -0.44 
+ 2.0152  33.4974 -0.44 
+ 2  34.1653 -0.44 
+ 1.99133  34.55 -0.44 
+ 1.9848  34.8293 -0.44 
+ 1.9697  35.4813 -0.44 
+ 1.9545  36.1451 -0.44 
+ 1.94964  36.36 -0.44 
+ 1.9394  36.8028 -0.44 
+ 1.9242  37.4618 -0.44 
+ 1.9091  38.1352 -0.44 
+ 1.90809  38.18 -0.44 
+ 1.8939  38.7931 -0.44 
+ 1.8788  39.4611 -0.44 
+ 1.86677  40 -0.44 
+ 1.8636  40.139 -0.44 
+ 1.8485  40.8063 -0.44 
+ 1.8333  41.4873 -0.44 
+ 1.82601  41.82 -0.44 
+ 1.8182  42.1704 -0.44 
+ 1.803  42.8523 -0.44 
+ 1.7879  43.5494 -0.44 
+ 1.78593  43.64 -0.44 
+ 1.7727  44.2357 -0.44 
+ 1.7576  44.9305 -0.44 
+ 1.74641  45.45 -0.44 
+ 1.7424  45.6358 -0.44 
+ 1.7273  46.3394 -0.44 
+ 1.7121  47.0556 -0.44 
+ 1.70759  47.27 -0.44 
+ 1.697  47.7728 -0.44 
+ 1.6818  48.4944 -0.44 
+ 1.6695  49.09 -0.44 
+ 1.6667  49.2266 -0.44 
+ 1.6515  49.957 -0.44 
+ 1.6364  50.6979 -0.44 
+ 1.63204  50.91 -0.44 
+ 1.6212  51.4429 -0.44 
+ 1.6061  52.1932 -0.44 
+ 1.5953  52.73 -0.44 
+ 1.5909  52.9527 -0.44 
+ 1.5758  53.7168 -0.44 
+ 1.5606  54.4893 -0.44 
+ 1.5594  54.55 -0.44 
+ 1.5455  55.2674 -0.44 
+ 1.5303  56.0521 -0.44 
+ 1.52434  56.36 -0.44 
+ 1.5152  56.8522 -0.44 
+ 1.5  57.6627 -0.44 
+ 1.49029  58.18 -0.44 
+ 1.4848  58.486 -0.44 
+ 1.4697  59.3244 -0.44 
+ 1.45748  60 -0.44 
+ 1.4545  60.1741 -0.44 
+
+
+# Contour 25, label:    -0.45
+ 1.41815  180 -0.45 
+ 1.41803  178.18 -0.45 
+ 1.41767  176.36 -0.45 
+ 1.41706  174.55 -0.45 
+ 1.41622  172.73 -0.45 
+ 1.41513  170.91 -0.45 
+ 1.4138  169.09 -0.45 
+ 1.41222  167.27 -0.45 
+ 1.4104  165.45 -0.45 
+ 1.4091  164.306 -0.45 
+ 1.40833  163.64 -0.45 
+ 1.40598  161.82 -0.45 
+ 1.40339  160 -0.45 
+ 1.40055  158.18 -0.45 
+ 1.39746  156.36 -0.45 
+ 1.39413  154.55 -0.45 
+ 1.3939  154.435 -0.45 
+ 1.39053  152.73 -0.45 
+ 1.38668  150.91 -0.45 
+ 1.38258  149.09 -0.45 
+ 1.3788  147.504 -0.45 
+ 1.37823  147.27 -0.45 
+ 1.37356  145.45 -0.45 
+ 1.36864  143.64 -0.45 
+ 1.3636  141.862 -0.45 
+ 1.36348  141.82 -0.45 
+ 1.35803  140 -0.45 
+ 1.35235  138.18 -0.45 
+ 1.3485  136.992 -0.45 
+ 1.34639  136.36 -0.45 
+ 1.34011  134.55 -0.45 
+ 1.3336  132.73 -0.45 
+ 1.3333  132.648 -0.45 
+ 1.32679  130.91 -0.45 
+ 1.31977  129.09 -0.45 
+ 1.3182  128.693 -0.45 
+ 1.31237  127.27 -0.45 
+ 1.30472  125.45 -0.45 
+ 1.303  125.049 -0.45 
+ 1.29677  123.64 -0.45 
+ 1.2886  121.82 -0.45 
+ 1.2879  121.665 -0.45 
+ 1.27997  120 -0.45 
+ 1.2727  118.495 -0.45 
+ 1.27111  118.18 -0.45 
+ 1.26187  116.36 -0.45 
+ 1.2576  115.527 -0.45 
+ 1.25225  114.55 -0.45 
+ 1.2424  112.751 -0.45 
+ 1.24228  112.73 -0.45 
+ 1.23172  110.91 -0.45 
+ 1.2273  110.146 -0.45 
+ 1.22061  109.09 -0.45 
+ 1.2121  107.736 -0.45 
+ 1.20888  107.27 -0.45 
+ 1.197  105.533 -0.45 
+ 1.19635  105.45 -0.45 
+ 1.18237  103.64 -0.45 
+ 1.1818  103.565 -0.45 
+ 1.1667  101.848 -0.45 
+ 1.16639  101.82 -0.45 
+ 1.1515  100.419 -0.45 
+ 1.1456  100 -0.45 
+ 1.1364  99.3301 -0.45 
+ 1.1212  98.62 -0.45 
+ 1.1061  98.3032 -0.45 
+ 1.0909  98.3714 -0.45 
+ 1.0758  98.8173 -0.45 
+ 1.0606  99.6355 -0.45 
+ 1.05607  100 -0.45 
+ 1.0455  100.793 -0.45 
+ 1.0352  101.82 -0.45 
+ 1.0303  102.282 -0.45 
+ 1.01908  103.64 -0.45 
+ 1.0152  104.087 -0.45 
+ 1.00556  105.45 -0.45 
+ 1  106.212 -0.45 
+
+ 1.91566  14.55 -0.45 
+ 1.9242  13.7143 -0.45 
+ 1.93372  12.73 -0.45 
+ 1.9394  12.0862 -0.45 
+ 1.94935  10.91 -0.45 
+ 1.9545  10.2056 -0.45 
+ 1.96263  9.09 -0.45 
+ 1.9697  7.89408 -0.45 
+ 1.97343  7.27 -0.45 
+ 1.98182  5.45 -0.45 
+ 1.9848  4.52286 -0.45 
+ 1.98786  3.64 -0.45 
+ 1.99159  1.82 -0.45 
+ 1.99281  0 -0.45 
+
+ 1.3939  58.4713 -0.45 
+ 1.3788  59.1696 -0.45 
+ 1.3636  59.8667 -0.45 
+ 1.36059  60 -0.45 
+ 1.3485  60.5572 -0.45 
+ 1.3333  61.2374 -0.45 
+ 1.32004  61.82 -0.45 
+ 1.3182  61.9058 -0.45 
+ 1.303  62.5561 -0.45 
+ 1.2879  63.1775 -0.45 
+ 1.27571  63.64 -0.45 
+ 1.2727  63.7625 -0.45 
+ 1.2576  64.2955 -0.45 
+ 1.2424  64.7538 -0.45 
+ 1.2273  65.1129 -0.45 
+ 1.2121  65.332 -0.45 
+ 1.197  65.3527 -0.45 
+ 1.1818  65.0765 -0.45 
+ 1.1667  64.3324 -0.45 
+ 1.15914  63.64 -0.45 
+ 1.1515  62.6367 -0.45 
+ 1.14756  61.82 -0.45 
+ 1.14305  60 -0.45 
+ 1.14298  58.18 -0.45 
+ 1.14681  56.36 -0.45 
+ 1.1515  55.272 -0.45 
+ 1.15459  54.55 -0.45 
+ 1.16657  52.73 -0.45 
+ 1.1667  52.7163 -0.45 
+ 1.1818  51.0874 -0.45 
+ 1.18337  50.91 -0.45 
+ 1.197  49.8239 -0.45 
+ 1.20549  49.09 -0.45 
+ 1.2121  48.6755 -0.45 
+ 1.2273  47.6784 -0.45 
+ 1.23315  47.27 -0.45 
+ 1.2424  46.7981 -0.45 
+ 1.2576  45.9791 -0.45 
+ 1.26669  45.45 -0.45 
+ 1.2727  45.1926 -0.45 
+ 1.2879  44.5228 -0.45 
+ 1.303  43.7805 -0.45 
+ 1.30579  43.64 -0.45 
+ 1.3182  43.1754 -0.45 
+ 1.3333  42.561 -0.45 
+ 1.3485  41.8768 -0.45 
+ 1.34972  41.82 -0.45 
+ 1.3636  41.3427 -0.45 
+ 1.3788  40.7749 -0.45 
+ 1.3939  40.1403 -0.45 
+ 1.39713  40 -0.45 
+ 1.4091  39.6123 -0.45 
+ 1.4242  39.0782 -0.45 
+ 1.4394  38.4798 -0.45 
+ 1.44647  38.18 -0.45 
+ 1.4545  37.9232 -0.45 
+ 1.4697  37.4104 -0.45 
+ 1.4848  36.8341 -0.45 
+ 1.4961  36.36 -0.45 
+ 1.5  36.2359 -0.45 
+ 1.5152  35.7345 -0.45 
+ 1.5303  35.1688 -0.45 
+ 1.54488  34.55 -0.45 
+ 1.5455  34.5296 -0.45 
+ 1.5606  34.0206 -0.45 
+ 1.5758  33.4434 -0.45 
+ 1.5909  32.7776 -0.45 
+ 1.59195  32.73 -0.45 
+ 1.6061  32.2338 -0.45 
+ 1.6212  31.6289 -0.45 
+ 1.6364  30.9254 -0.45 
+ 1.63672  30.91 -0.45 
+ 1.6515  30.352 -0.45 
+ 1.6667  29.6951 -0.45 
+ 1.67887  29.09 -0.45 
+ 1.6818  28.9718 -0.45 
+ 1.697  28.3366 -0.45 
+ 1.7121  27.5929 -0.45 
+ 1.71816  27.27 -0.45 
+ 1.7273  26.8687 -0.45 
+ 1.7424  26.1274 -0.45 
+ 1.75444  25.45 -0.45 
+ 1.7576  25.3 -0.45 
+ 1.7727  24.5393 -0.45 
+ 1.78778  23.64 -0.45 
+ 1.7879  23.6339 -0.45 
+ 1.803  22.8173 -0.45 
+ 1.8182  21.8407 -0.45 
+ 1.81851  21.82 -0.45 
+ 1.8333  20.9331 -0.45 
+ 1.84663  20 -0.45 
+ 1.8485  19.8786 -0.45 
+ 1.8636  18.8417 -0.45 
+ 1.87221  18.18 -0.45 
+ 1.8788  17.6935 -0.45 
+ 1.8939  16.4511 -0.45 
+ 1.89497  16.36 -0.45 
+ 1.9091  15.1616 -0.45 
+ 1.91566  14.55 -0.45 
+
+ 2.38737  0 -0.45 
+ 2.3861  1.82 -0.45 
+ 2.38229  3.64 -0.45 
+ 2.3788  4.63867 -0.45 
+ 2.3759  5.45 -0.45 
+ 2.36689  7.27 -0.45 
+ 2.3636  7.79065 -0.45 
+ 2.35532  9.09 -0.45 
+ 2.3485  9.97307 -0.45 
+ 2.34112  10.91 -0.45 
+ 2.3333  11.7569 -0.45 
+ 2.32427  12.73 -0.45 
+ 2.3182  13.3017 -0.45 
+ 2.30473  14.55 -0.45 
+ 2.303  14.6918 -0.45 
+ 2.2879  15.9245 -0.45 
+ 2.28248  16.36 -0.45 
+ 2.2727  17.0744 -0.45 
+ 2.2576  18.1781 -0.45 
+ 2.25757  18.18 -0.45 
+ 2.2424  19.1739 -0.45 
+ 2.22985  20 -0.45 
+ 2.2273  20.155 -0.45 
+ 2.2121  21.0619 -0.45 
+ 2.19949  21.82 -0.45 
+ 2.197  21.959 -0.45 
+ 2.1818  22.7935 -0.45 
+ 2.1667  23.6326 -0.45 
+ 2.16657  23.64 -0.45 
+ 2.1515  24.4042 -0.45 
+ 2.1364  25.1803 -0.45 
+ 2.1311  25.45 -0.45 
+ 2.1212  25.9264 -0.45 
+ 2.1061  26.6581 -0.45 
+ 2.09352  27.27 -0.45 
+ 2.0909  27.3905 -0.45 
+ 2.0758  28.0822 -0.45 
+ 2.0606  28.7844 -0.45 
+ 2.05406  29.09 -0.45 
+ 2.0455  29.4679 -0.45 
+ 2.0303  30.1369 -0.45 
+ 2.0152  30.821 -0.45 
+ 2.01322  30.91 -0.45 
+ 2  31.4715 -0.45 
+ 1.9848  32.1278 -0.45 
+ 1.97129  32.73 -0.45 
+ 1.9697  32.7974 -0.45 
+ 1.9545  33.4327 -0.45 
+ 1.9394  34.0846 -0.45 
+ 1.9288  34.55 -0.45 
+ 1.9242  34.7409 -0.45 
+ 1.9091  35.3721 -0.45 
+ 1.8939  36.0234 -0.45 
+ 1.88624  36.36 -0.45 
+ 1.8788  36.6724 -0.45 
+ 1.8636  37.3126 -0.45 
+ 1.8485  37.976 -0.45 
+ 1.84388  38.18 -0.45 
+ 1.8333  38.6239 -0.45 
+ 1.8182  39.2737 -0.45 
+ 1.803  39.9493 -0.45 
+ 1.80187  40 -0.45 
+ 1.7879  40.5955 -0.45 
+ 1.7727  41.2578 -0.45 
+ 1.76029  41.82 -0.45 
+ 1.7576  41.937 -0.45 
+ 1.7424  42.5914 -0.45 
+ 1.7273  43.2676 -0.45 
+ 1.71909  43.64 -0.45 
+ 1.7121  43.9432 -0.45 
+ 1.697  44.6067 -0.45 
+ 1.6818  45.2926 -0.45 
+ 1.67835  45.45 -0.45 
+ 1.6667  45.9653 -0.45 
+ 1.6515  46.645 -0.45 
+ 1.638  47.27 -0.45 
+ 1.6364  47.3424 -0.45 
+ 1.6212  48.0164 -0.45 
+ 1.6061  48.7074 -0.45 
+ 1.59778  49.09 -0.45 
+ 1.5909  49.4003 -0.45 
+ 1.5758  50.0848 -0.45 
+ 1.5606  50.786 -0.45 
+ 1.55791  50.91 -0.45 
+ 1.5455  51.4746 -0.45 
+ 1.5303  52.1688 -0.45 
+ 1.51826  52.73 -0.45 
+ 1.5152  52.8724 -0.45 
+ 1.5  53.564 -0.45 
+ 1.4848  54.2666 -0.45 
+ 1.47868  54.55 -0.45 
+ 1.4697  54.9657 -0.45 
+ 1.4545  55.6609 -0.45 
+ 1.43952  56.36 -0.45 
+ 1.4394  56.3656 -0.45 
+ 1.4242  57.0645 -0.45 
+ 1.4091  57.7672 -0.45 
+ 1.40008  58.18 -0.45 
+ 1.3939  58.4713 -0.45 
+
+
+# Contour 26, label:    -0.46
+ 1.36854  180 -0.46 
+ 1.36841  178.18 -0.46 
+ 1.36802  176.36 -0.46 
+ 1.36738  174.55 -0.46 
+ 1.36647  172.73 -0.46 
+ 1.36531  170.91 -0.46 
+ 1.36388  169.09 -0.46 
+ 1.3636  168.782 -0.46 
+ 1.36219  167.27 -0.46 
+ 1.36023  165.45 -0.46 
+ 1.35801  163.64 -0.46 
+ 1.35553  161.82 -0.46 
+ 1.35278  160 -0.46 
+ 1.34977  158.18 -0.46 
+ 1.3485  157.476 -0.46 
+ 1.34644  156.36 -0.46 
+ 1.34281  154.55 -0.46 
+ 1.33892  152.73 -0.46 
+ 1.33474  150.91 -0.46 
+ 1.3333  150.318 -0.46 
+ 1.33026  149.09 -0.46 
+ 1.32549  147.27 -0.46 
+ 1.32044  145.45 -0.46 
+ 1.3182  144.684 -0.46 
+ 1.31504  143.64 -0.46 
+ 1.30929  141.82 -0.46 
+ 1.30326  140 -0.46 
+ 1.303  139.924 -0.46 
+ 1.29684  138.18 -0.46 
+ 1.29014  136.36 -0.46 
+ 1.2879  135.776 -0.46 
+ 1.28299  134.55 -0.46 
+ 1.27547  132.73 -0.46 
+ 1.2727  132.08 -0.46 
+ 1.26753  130.91 -0.46 
+ 1.25923  129.09 -0.46 
+ 1.2576  128.742 -0.46 
+ 1.25029  127.27 -0.46 
+ 1.2424  125.722 -0.46 
+ 1.24094  125.45 -0.46 
+ 1.23093  123.64 -0.46 
+ 1.2273  122.993 -0.46 
+ 1.22017  121.82 -0.46 
+ 1.2121  120.518 -0.46 
+ 1.20862  120 -0.46 
+ 1.197  118.298 -0.46 
+ 1.1961  118.18 -0.46 
+ 1.182  116.36 -0.46 
+ 1.1818  116.335 -0.46 
+ 1.1667  114.641 -0.46 
+ 1.16575  114.55 -0.46 
+ 1.1515  113.206 -0.46 
+ 1.14529  112.73 -0.46 
+ 1.1364  112.054 -0.46 
+ 1.1212  111.198 -0.46 
+ 1.1133  110.91 -0.46 
+ 1.1061  110.649 -0.46 
+ 1.0909  110.417 -0.46 
+ 1.0758  110.515 -0.46 
+ 1.06202  110.91 -0.46 
+ 1.0606  110.95 -0.46 
+ 1.0455  111.725 -0.46 
+ 1.03202  112.73 -0.46 
+ 1.0303  112.856 -0.46 
+ 1.0152  114.354 -0.46 
+ 1.01364  114.55 -0.46 
+ 1  116.233 -0.46 
+
+ 1.3182  54.6348 -0.46 
+ 1.303  54.7339 -0.46 
+ 1.2879  54.6633 -0.46 
+ 1.28243  54.55 -0.46 
+ 1.2727  54.0743 -0.46 
+ 1.26316  52.73 -0.46 
+ 1.26886  50.91 -0.46 
+ 1.2727  50.523 -0.46 
+ 1.28488  49.09 -0.46 
+ 1.2879  48.8882 -0.46 
+ 1.303  47.7797 -0.46 
+ 1.30897  47.27 -0.46 
+ 1.3182  46.7917 -0.46 
+ 1.3333  45.8963 -0.46 
+ 1.33999  45.45 -0.46 
+ 1.3485  45.0876 -0.46 
+ 1.3636  44.377 -0.46 
+ 1.3769  43.64 -0.46 
+ 1.3788  43.569 -0.46 
+ 1.3939  42.9894 -0.46 
+ 1.4091  42.3134 -0.46 
+ 1.41879  41.82 -0.46 
+ 1.4242  41.633 -0.46 
+ 1.4394  41.085 -0.46 
+ 1.4545  40.4448 -0.46 
+ 1.46383  40 -0.46 
+ 1.4697  39.8079 -0.46 
+ 1.4848  39.2829 -0.46 
+ 1.5  38.6683 -0.46 
+ 1.51052  38.18 -0.46 
+ 1.5152  38.0289 -0.46 
+ 1.5303  37.515 -0.46 
+ 1.5455  36.9113 -0.46 
+ 1.5573  36.36 -0.46 
+ 1.5606  36.2515 -0.46 
+ 1.5758  35.7368 -0.46 
+ 1.5909  35.1284 -0.46 
+ 1.60313  34.55 -0.46 
+ 1.6061  34.4484 -0.46 
+ 1.6212  33.9091 -0.46 
+ 1.6364  33.2641 -0.46 
+ 1.64706  32.73 -0.46 
+ 1.6515  32.5679 -0.46 
+ 1.6667  31.9821 -0.46 
+ 1.6818  31.2689 -0.46 
+ 1.68856  30.91 -0.46 
+ 1.697  30.5793 -0.46 
+ 1.7121  29.9107 -0.46 
+ 1.72706  29.09 -0.46 
+ 1.7273  29.08 -0.46 
+ 1.7424  28.4233 -0.46 
+ 1.7576  27.6119 -0.46 
+ 1.76325  27.27 -0.46 
+ 1.7727  26.8239 -0.46 
+ 1.7879  25.9986 -0.46 
+ 1.79649  25.45 -0.46 
+ 1.803  25.1152 -0.46 
+ 1.8182  24.2443 -0.46 
+ 1.82713  23.64 -0.46 
+ 1.8333  23.2872 -0.46 
+ 1.8485  22.3191 -0.46 
+ 1.85531  21.82 -0.46 
+ 1.8636  21.291 -0.46 
+ 1.8788  20.1743 -0.46 
+ 1.88098  20 -0.46 
+ 1.8939  19.0692 -0.46 
+ 1.90459  18.18 -0.46 
+ 1.9091  17.8243 -0.46 
+ 1.9242  16.4994 -0.46 
+ 1.9257  16.36 -0.46 
+ 1.9394  15.1104 -0.46 
+ 1.94496  14.55 -0.46 
+ 1.9545  13.548 -0.46 
+ 1.96185  12.73 -0.46 
+ 1.9697  11.7756 -0.46 
+ 1.97653  10.91 -0.46 
+ 1.9848  9.69438 -0.46 
+ 1.98892  9.09 -0.46 
+ 1.99902  7.27 -0.46 
+ 2  7.04345 -0.46 
+ 2.00725  5.45 -0.46 
+ 2.01284  3.64 -0.46 
+ 2.0152  2.32046 -0.46 
+ 2.01619  1.82 -0.46 
+ 2.01741  0 -0.46 
+
+ 2.33817  0 -0.46 
+ 2.33684  1.82 -0.46 
+ 2.3333  3.43987 -0.46 
+ 2.33285  3.64 -0.46 
+ 2.3261  5.45 -0.46 
+ 2.3182  6.99598 -0.46 
+ 2.31675  7.27 -0.46 
+ 2.30454  9.09 -0.46 
+ 2.303  9.28024 -0.46 
+ 2.28963  10.91 -0.46 
+ 2.2879  11.0907 -0.46 
+ 2.2727  12.6417 -0.46 
+ 2.27183  12.73 -0.46 
+ 2.2576  13.9873 -0.46 
+ 2.25113  14.55 -0.46 
+ 2.2424  15.2222 -0.46 
+ 2.22766  16.36 -0.46 
+ 2.2273  16.385 -0.46 
+ 2.2121  17.4205 -0.46 
+ 2.20105  18.18 -0.46 
+ 2.197  18.4335 -0.46 
+ 2.1818  19.3653 -0.46 
+ 2.17155  20 -0.46 
+ 2.1667  20.2752 -0.46 
+ 2.1515  21.1213 -0.46 
+ 2.13917  21.82 -0.46 
+ 2.1364  21.9645 -0.46 
+ 2.1212  22.7386 -0.46 
+ 2.1061  23.5284 -0.46 
+ 2.10393  23.64 -0.46 
+ 2.0909  24.2515 -0.46 
+ 2.0758  24.9749 -0.46 
+ 2.06596  25.45 -0.46 
+ 2.0606  25.6896 -0.46 
+ 2.0455  26.3634 -0.46 
+ 2.0303  27.0589 -0.46 
+ 2.02572  27.27 -0.46 
+ 2.0152  27.7148 -0.46 
+ 2  28.3614 -0.46 
+ 1.9848  29.0368 -0.46 
+ 1.9836  29.09 -0.46 
+ 1.9697  29.6509 -0.46 
+ 1.9545  30.2804 -0.46 
+ 1.94015  30.91 -0.46 
+ 1.9394  30.9401 -0.46 
+ 1.9242  31.5331 -0.46 
+ 1.9091  32.1538 -0.46 
+ 1.89577  32.73 -0.46 
+ 1.8939  32.8033 -0.46 
+ 1.8788  33.3902 -0.46 
+ 1.8636  34.0098 -0.46 
+ 1.85122  34.55 -0.46 
+ 1.8485  34.6561 -0.46 
+ 1.8333  35.24 -0.46 
+ 1.8182  35.8615 -0.46 
+ 1.80675  36.36 -0.46 
+ 1.803  36.5062 -0.46 
+ 1.7879  37.0986 -0.46 
+ 1.7727  37.7328 -0.46 
+ 1.76267  38.18 -0.46 
+ 1.7576  38.3803 -0.46 
+ 1.7424  38.9807 -0.46 
+ 1.7273  39.6258 -0.46 
+ 1.71893  40 -0.46 
+ 1.7121  40.2696 -0.46 
+ 1.697  40.8782 -0.46 
+ 1.6818  41.5333 -0.46 
+ 1.67545  41.82 -0.46 
+ 1.6667  42.1679 -0.46 
+ 1.6515  42.7825 -0.46 
+ 1.6364  43.4435 -0.46 
+ 1.63199  43.64 -0.46 
+ 1.6212  44.0619 -0.46 
+ 1.6061  44.6743 -0.46 
+ 1.5909  45.3312 -0.46 
+ 1.58819  45.45 -0.46 
+ 1.5758  45.9341 -0.46 
+ 1.5606  46.544 -0.46 
+ 1.5455  47.1945 -0.46 
+ 1.54373  47.27 -0.46 
+ 1.5303  47.7795 -0.46 
+ 1.5152  48.3742 -0.46 
+ 1.5  49.0025 -0.46 
+ 1.49785  49.09 -0.46 
+ 1.4848  49.5685 -0.46 
+ 1.4697  50.1349 -0.46 
+ 1.4545  50.724 -0.46 
+ 1.44966  50.91 -0.46 
+ 1.4394  51.268 -0.46 
+ 1.4242  51.7858 -0.46 
+ 1.4091  52.3101 -0.46 
+ 1.3969  52.73 -0.46 
+ 1.3939  52.8248 -0.46 
+ 1.3788  53.2592 -0.46 
+ 1.3636  53.6716 -0.46 
+ 1.3485  54.0542 -0.46 
+ 1.3333  54.3928 -0.46 
+ 1.32393  54.55 -0.46 
+ 1.3182  54.6348 -0.46 
+
+
+# Contour 27, label:    -0.47
+ 1.31661  180 -0.47 
+ 1.31647  178.18 -0.47 
+ 1.31604  176.36 -0.47 
+ 1.31533  174.55 -0.47 
+ 1.31433  172.73 -0.47 
+ 1.31304  170.91 -0.47 
+ 1.31147  169.09 -0.47 
+ 1.3096  167.27 -0.47 
+ 1.30745  165.45 -0.47 
+ 1.30501  163.64 -0.47 
+ 1.303  162.298 -0.47 
+ 1.30227  161.82 -0.47 
+ 1.29919  160 -0.47 
+ 1.29581  158.18 -0.47 
+ 1.29213  156.36 -0.47 
+ 1.28815  154.55 -0.47 
+ 1.2879  154.444 -0.47 
+ 1.28372  152.73 -0.47 
+ 1.27896  150.91 -0.47 
+ 1.27389  149.09 -0.47 
+ 1.2727  148.686 -0.47 
+ 1.26839  147.27 -0.47 
+ 1.26252  145.45 -0.47 
+ 1.2576  144.01 -0.47 
+ 1.25627  143.64 -0.47 
+ 1.24943  141.82 -0.47 
+ 1.2424  140.036 -0.47 
+ 1.24225  140 -0.47 
+ 1.23441  138.18 -0.47 
+ 1.2273  136.603 -0.47 
+ 1.22612  136.36 -0.47 
+ 1.21699  134.55 -0.47 
+ 1.2121  133.613 -0.47 
+ 1.20716  132.73 -0.47 
+ 1.197  130.979 -0.47 
+ 1.19656  130.91 -0.47 
+ 1.18451  129.09 -0.47 
+ 1.1818  128.693 -0.47 
+ 1.17099  127.27 -0.47 
+ 1.1667  126.722 -0.47 
+ 1.15516  125.45 -0.47 
+ 1.1515  125.061 -0.47 
+ 1.1364  123.709 -0.47 
+ 1.13542  123.64 -0.47 
+ 1.1212  122.663 -0.47 
+ 1.1061  121.925 -0.47 
+ 1.10232  121.82 -0.47 
+ 1.0909  121.511 -0.47 
+ 1.0758  121.429 -0.47 
+ 1.0606  121.693 -0.47 
+ 1.05756  121.82 -0.47 
+ 1.0455  122.323 -0.47 
+ 1.0303  123.337 -0.47 
+ 1.0271  123.64 -0.47 
+ 1.0152  124.762 -0.47 
+ 1.0096  125.45 -0.47 
+ 1  126.647 -0.47 
+
+ 2.28181  0 -0.47 
+ 2.28035  1.82 -0.47 
+ 2.27604  3.64 -0.47 
+ 2.2727  4.48923 -0.47 
+ 2.26875  5.45 -0.47 
+ 2.25861  7.27 -0.47 
+ 2.2576  7.41338 -0.47 
+ 2.24524  9.09 -0.47 
+ 2.2424  9.41166 -0.47 
+ 2.22891  10.91 -0.47 
+ 2.2273  11.0635 -0.47 
+ 2.2121  12.4664 -0.47 
+ 2.2092  12.73 -0.47 
+ 2.197  13.6991 -0.47 
+ 2.18618  14.55 -0.47 
+ 2.1818  14.853 -0.47 
+ 2.1667  15.8836 -0.47 
+ 2.15963  16.36 -0.47 
+ 2.1515  16.8502 -0.47 
+ 2.1364  17.7607 -0.47 
+ 2.12936  18.18 -0.47 
+ 2.1212  18.6134 -0.47 
+ 2.1061  19.4138 -0.47 
+ 2.09516  20 -0.47 
+ 2.0909  20.2025 -0.47 
+ 2.0758  20.9012 -0.47 
+ 2.0606  21.6294 -0.47 
+ 2.05656  21.82 -0.47 
+ 2.0455  22.2738 -0.47 
+ 2.0303  22.8956 -0.47 
+ 2.0152  23.5553 -0.47 
+ 2.01316  23.64 -0.47 
+ 2  24.0966 -0.47 
+ 1.9848  24.629 -0.47 
+ 1.9697  25.1974 -0.47 
+ 1.96292  25.45 -0.47 
+ 1.9545  25.7014 -0.47 
+ 1.9394  26.1195 -0.47 
+ 1.9242  26.536 -0.47 
+ 1.9091  26.9723 -0.47 
+ 1.89863  27.27 -0.47 
+ 1.8939  27.3558 -0.47 
+ 1.8788  27.4532 -0.47 
+ 1.86897  27.27 -0.47 
+ 1.87725  25.45 -0.47 
+ 1.8788  25.3425 -0.47 
+ 1.8939  23.8905 -0.47 
+ 1.89558  23.64 -0.47 
+ 1.9091  22.5545 -0.47 
+ 1.91554  21.82 -0.47 
+ 1.9242  21.1147 -0.47 
+ 1.93492  20 -0.47 
+ 1.9394  19.6179 -0.47 
+ 1.95327  18.18 -0.47 
+ 1.9545  18.0659 -0.47 
+ 1.9697  16.4845 -0.47 
+ 1.97074  16.36 -0.47 
+ 1.9848  14.7987 -0.47 
+ 1.98682  14.55 -0.47 
+ 2  12.9017 -0.47 
+ 2.00128  12.73 -0.47 
+ 2.01408  10.91 -0.47 
+ 2.0152  10.7286 -0.47 
+ 2.02524  9.09 -0.47 
+ 2.0303  8.05141 -0.47 
+ 2.03427  7.27 -0.47 
+ 2.04144  5.45 -0.47 
+ 2.0455  3.93286 -0.47 
+ 2.04637  3.64 -0.47 
+ 2.04966  1.82 -0.47 
+ 2.05072  0 -0.47 
+
+
+# Contour 28, label:    -0.48
+ 1.26014  180 -0.48 
+ 1.25998  178.18 -0.48 
+ 1.2595  176.36 -0.48 
+ 1.2587  174.55 -0.48 
+ 1.2576  172.768 -0.48 
+ 1.25758  172.73 -0.48 
+ 1.25607  170.91 -0.48 
+ 1.25422  169.09 -0.48 
+ 1.25203  167.27 -0.48 
+ 1.2495  165.45 -0.48 
+ 1.24663  163.64 -0.48 
+ 1.24341  161.82 -0.48 
+ 1.2424  161.302 -0.48 
+ 1.23975  160 -0.48 
+ 1.23568  158.18 -0.48 
+ 1.23124  156.36 -0.48 
+ 1.2273  154.873 -0.48 
+ 1.22638  154.55 -0.48 
+ 1.22088  152.73 -0.48 
+ 1.21498  150.91 -0.48 
+ 1.2121  150.078 -0.48 
+ 1.20846  149.09 -0.48 
+ 1.20134  147.27 -0.48 
+ 1.197  146.223 -0.48 
+ 1.19349  145.45 -0.48 
+ 1.18478  143.64 -0.48 
+ 1.1818  143.049 -0.48 
+ 1.17498  141.82 -0.48 
+ 1.1667  140.401 -0.48 
+ 1.16403  140 -0.48 
+ 1.1515  138.207 -0.48 
+ 1.15128  138.18 -0.48 
+ 1.1364  136.432 -0.48 
+ 1.13563  136.36 -0.48 
+ 1.1212  135.058 -0.48 
+ 1.11371  134.55 -0.48 
+ 1.1061  134.052 -0.48 
+ 1.0909  133.422 -0.48 
+ 1.0758  133.174 -0.48 
+ 1.0606  133.327 -0.48 
+ 1.0455  133.904 -0.48 
+ 1.03592  134.55 -0.48 
+ 1.0303  134.936 -0.48 
+ 1.01625  136.36 -0.48 
+ 1.0152  136.47 -0.48 
+ 1.003  138.18 -0.48 
+ 1  138.612 -0.48 
+
+ 2.19757  0 -0.48 
+ 2.197  0.589209 -0.48 
+ 2.19542  1.82 -0.48 
+ 2.18887  3.64 -0.48 
+ 2.1818  4.94148 -0.48 
+ 2.17831  5.45 -0.48 
+ 2.1667  6.81384 -0.48 
+ 2.16172  7.27 -0.48 
+ 2.1515  8.07183 -0.48 
+ 2.1364  9.01895 -0.48 
+ 2.13308  9.09 -0.48 
+ 2.1212  9.31904 -0.48 
+ 2.1162  9.09 -0.48 
+ 2.10889  7.27 -0.48 
+ 2.10999  5.45 -0.48 
+ 2.1118  3.64 -0.48 
+ 2.11311  1.82 -0.48 
+ 2.11358  0 -0.48 
+
+
+# Contour 29, label:    -0.49
+ 1.19339  180 -0.49 
+ 1.19317  178.18 -0.49 
+ 1.19251  176.36 -0.49 
+ 1.19141  174.55 -0.49 
+ 1.18985  172.73 -0.49 
+ 1.18786  170.91 -0.49 
+ 1.18542  169.09 -0.49 
+ 1.18253  167.27 -0.49 
+ 1.1818  166.873 -0.49 
+ 1.17896  165.45 -0.49 
+ 1.17481  163.64 -0.49 
+ 1.17017  161.82 -0.49 
+ 1.1667  160.591 -0.49 
+ 1.16481  160 -0.49 
+ 1.15843  158.18 -0.49 
+ 1.1515  156.37 -0.49 
+ 1.15145  156.36 -0.49 
+ 1.14278  154.55 -0.49 
+ 1.1364  153.31 -0.49 
+ 1.13277  152.73 -0.49 
+ 1.1212  151.008 -0.49 
+ 1.12035  150.91 -0.49 
+ 1.1061  149.367 -0.49 
+ 1.10232  149.09 -0.49 
+ 1.0909  148.305 -0.49 
+ 1.0758  147.788 -0.49 
+ 1.0606  147.832 -0.49 
+ 1.0455  148.469 -0.49 
+ 1.03807  149.09 -0.49 
+ 1.0303  149.771 -0.49 
+ 1.02191  150.91 -0.49 
+ 1.0152  151.868 -0.49 
+ 1.0108  152.73 -0.49 
+ 1.00203  154.55 -0.49 
+ 1  154.997 -0.49 
+
Index: examples/Test/Cart/list
===================================================================
--- examples/Test/Cart/list	(revision 0)
+++ examples/Test/Cart/list	(revision 1)
@@ -0,0 +1,3 @@
+b 1 2
+b 2 3
+a 1 2 3
Index: examples/Test/Cart/Dep_tscan_m
===================================================================
--- examples/Test/Cart/Dep_tscan_m	(revision 0)
+++ examples/Test/Cart/Dep_tscan_m	(revision 1)
@@ -0,0 +1,102 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NomGplot=${Nom}_m.gplot
+yr="[-0.50:-0.42]"
+
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NomGplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ unset key
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ set multiplot
+ set origin 0.,0.
+ set size 0.5
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+ fi
+ cat <<EOF >>  $NomGplot
+ set origin .505,0.
+# set size 0.5
+ clear
+ set yrange $yr
+ set xrange [-10:190]
+EOF
+ echo "plot \"${Nom}_${i}.dat\" u 3:4 t \"E\" w lp" >> $NomGplot
+ echo "unset multiplot" >> $NomGplot
+ echo "pause -1" >> $NomGplot
+ done
+let i=ItMax
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ set multiplot
+ set origin 0.,0.
+# set size 0.5
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ cat <<EOF >>  $NomGplot
+ set origin .505,0.
+# set size  0.5
+ clear
+ set yrange $yr
+ set xrange [-10:190]
+EOF
+ echo "plot \"${Nom}_${i}.dat\" u 3:4 t \"E\" w lp" >> $NomGplot
+ echo "unset multiplot" >> $NomGplot
+ echo "pause -1" >> $NomGplot
+
+chmod u+x ./$NomGplot
+echo "./$NomGplot      to see the path"
\ No newline at end of file

Property changes on: examples/Test/Cart/Dep_tscan_m
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/HCN_cart.path
===================================================================
--- examples/Test/Cart/HCN_cart.path	(revision 0)
+++ examples/Test/Cart/HCN_cart.path	(revision 1)
@@ -0,0 +1,32 @@
+ &path
+ nat=3, ! Number of atoms
+ ngeomi=3,! Number of initial geometries
+ ngeomf=12, !Number of geometries along the path
+ Ereac=-0.499465, ! Reactant energy
+ EProd=-0.481645, ! Product energy
+ OptProd=T, ! we optimize the product
+ PathOnly=.F. ! Optimize the path
+ Prog='test' ! Use analytical HCN PES
+ MaxCyc=51, !Maximum number of iterations
+ ISpline=99, ! Iteration to start spline interpolation (here: no spline int!)
+ Coord='cart' ! We use cartesian coordinates
+ NMaxPtPath=2000, ! Number of points to interpolate the path
+ SMax=0.05, ! Maximum displacement when optimizing the path
+ IReparam=5,
+ Align=F
+ /
+  3
+ Energy :      0.04937364
+ H     0.0000     0.0000     0.0340
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+  3
+ Energy :      0.04937364
+ H     0.0000     1.1000     1.1030
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+3
+ CNH
+H 0.000000    0.000000    3.3
+C 0.000000    0.000000    1.1
+N 0.000000    0.000000    2.26
Index: examples/Test/Cart/HCN_irc.dat
===================================================================
--- examples/Test/Cart/HCN_irc.dat	(revision 0)
+++ examples/Test/Cart/HCN_irc.dat	(revision 1)
@@ -0,0 +1,69 @@
+ # Bonds
+# b H    1C    2
+# b C    2N    3
+ # Angles
+# a H    1C    2N    3
+      1.06590      1.15332    180.00000       -0.499465
+      1.06561      1.15325    176.88982       -0.499377
+      1.06570      1.15335    174.02210       -0.499138
+      1.06586      1.15353    170.95078       -0.498714
+      1.06607      1.15376    168.09455       -0.498165
+      1.06637      1.15408    164.91385       -0.497379
+      1.06670      1.15442    162.09619       -0.496530
+      1.06714      1.15486    158.94735       -0.495413
+      1.06763      1.15531    156.05955       -0.494234
+      1.06822      1.15583    153.01007       -0.492830
+      1.06885      1.15633    150.21956       -0.491404
+      1.06959      1.15689    147.27079       -0.489756
+      1.07049      1.15749    144.14787       -0.487855
+      1.07149      1.15809    141.07378       -0.485834
+      1.07256      1.15864    138.16412       -0.483790
+      1.07376      1.15916    135.19476       -0.481580
+      1.07510      1.15964    132.23023       -0.479258
+      1.07663      1.16005    129.15683       -0.476740
+      1.07837      1.16037    126.00973       -0.474060
+      1.08009      1.16053    123.16044       -0.471559
+      1.08221      1.16056    119.93872       -0.468667
+      1.08425      1.16040    117.07933       -0.466064
+      1.08659      1.16002    114.00521       -0.463255
+      1.08919      1.15936    110.84904       -0.460391
+      1.09171      1.15850    107.95560       -0.457817
+      1.09460      1.15726    104.83870       -0.455142
+      1.09764      1.15570    101.71142       -0.452608
+      1.10087      1.15379     98.58844       -0.450284
+      1.10436      1.15147     95.37560       -0.448173
+      1.10814      1.14875     92.10563       -0.446391
+      1.11191      1.14591     89.05102       -0.445128
+      1.11634      1.14255     85.74263       -0.444275
+      1.12089      1.13921     82.65131       -0.444025
+      1.12632      1.13547     79.32859       -0.444402
+      1.13282      1.13174     76.01436       -0.445481
+      1.14001      1.12794     72.65259       -0.447284
+      1.15042      1.12452     69.21033       -0.449817
+      1.16221      1.12113     65.62870       -0.453019
+      1.17874      1.11851     61.97104       -0.456622
+      1.20665      1.11732     58.03673       -0.460489
+      1.24855      1.11843     54.19020       -0.463775
+      1.30087      1.12180     51.01851       -0.465829
+      1.35220      1.12591     48.59419       -0.466846
+      1.40621      1.13051     46.34878       -0.467343
+      1.46207      1.13540     44.19528       -0.467501
+      1.51564      1.13990     42.15661       -0.467476
+      1.56560      1.14386     40.25979       -0.467399
+      1.61723      1.14759     38.27077       -0.467350
+      1.66953      1.15090     36.20206       -0.467413
+      1.71398      1.15329     34.38207       -0.467614
+      1.76142      1.15539     32.35915       -0.468037
+      1.80922      1.15705     30.21518       -0.468728
+      1.85273      1.15822     28.14818       -0.469623
+      1.89899      1.15917     25.80184       -0.470867
+      1.93870      1.15980     23.62924       -0.472173
+      1.97864      1.16037     21.25716       -0.473687
+      2.01539      1.16088     18.84780       -0.475227
+      2.04708      1.16138     16.52920       -0.476638
+      2.07748      1.16195     13.99286       -0.478032
+      2.10448      1.16259     11.32940       -0.479278
+      2.12706      1.16325      8.55209       -0.480304
+      2.14483      1.16392      5.56119       -0.481083
+      2.15481      1.16435      2.76003       -0.481508
+      2.15904      1.16463      0.00000       -0.481645

Property changes on: examples/Test/Cart/HCN_irc.dat
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/README
===================================================================
--- examples/Test/Cart/README	(revision 0)
+++ examples/Test/Cart/README	(revision 1)
@@ -0,0 +1,39 @@
+As HCN can almost be considered as a 2D case because the CN bond does not
+ change much during the HCN -> CNH path, one can visualize the path 
+by projecting it on a 2D PES.
+This is done by analyzing a path.
+So, first, you have to launch run_Paht.
+Then you can analyse it either using:
+**)  AnaPath (as usual)
+../../../utils/AnaPath HCN_cart.out 50 Path 12 
+**) Dep_tscan_p 
+./Dep_tscan_p HCN_cart.out 50 Path PES
+This will create a Path_p.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red.
+To go to the next iteration, you have to press a key.
+
+**) Dep_tscan_m
+./Dep_tscan_m HCN_cart.out 50 Path PES
+This will create a Path_m.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red, as with Dep_tscan_p.
+What is new is that you have 2 windows: the second one shows the energy
+ along the path.
+To go to the next iteration, you have to press a key.
+
+**) Dep_tscan_movie
+./Dep_tscan_movie HCN_cart.out 50 Path PES
+This will create a Path_movie.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red, as with Dep_tscan_p.
+Here the evolution is shown as a movie, there is no need to press a key to go
+to the next iteration.
+
+** Remarks:
+For all Dep_tscan_XX scripts, 
+The "PES" argument can be omitted if you do not want to plot the 2D PES contours in green.
+If you have asked (using Path.valid, see manual) to print the tangents, then you can add
+ "T" as a last  argument, this will print the path and its tangents.
+All three scripts use the files HCN_irc.dat to plot the actual IRC, as well as HCN_PES_2D.dat
+ to plot the 2D PES.
Index: examples/Test/Cart/Dep_tscan_movie
===================================================================
--- examples/Test/Cart/Dep_tscan_movie	(revision 0)
+++ examples/Test/Cart/Dep_tscan_movie	(revision 1)
@@ -0,0 +1,86 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NGplot=${Nom}_movie.gplot
+
+# For gif files (that may be joined into an mpeg)
+Term=gif
+Ext=gif
+# For postscript eps files
+#Term="postscript eps enhanced color solid"
+#Ext=eps
+# DefTerm is the default terminal (=screen)
+# wxt is better for Linux, but x11 is more general
+DefTerm=x11
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NGplot
+#!/usr/bin/gnuplot 
+ set xrange [1.:2.25]
+ set yrange [-10:190]
+ set pointsize 2
+ set style line 1 linetype 3 pointtype 3 linewidth 3
+ unset key
+ set term $DefTerm
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ echo "plot \"HCN_irc.dat\" u 1:3 w l lw 2" >> ${NGplot}
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> ${NGplot}
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p ls 1" >> ${NGplot}
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l ls 1" >> ${NGplot}
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p ls 1" >> ${NGplot}
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l ls 1" >> ${NGplot}
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp ls 1" >> ${NGplot}
+fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> ${NGplot}
+ fi
+ IMov=`echo $i | awk '{ It="000" $1; l=length(It); print substr(It,l-2,3)}' `
+ cat <<EOF >> ${NGplot}
+ pause 0.5
+ set term $Term
+ set output "${Nom}_${IMov}.$Ext"
+ replot
+ unset output
+ set term $DefTerm
+EOF
+ done
+let i=ItMax
+ awk -f Path2dat.awk  ${Nom}.${i} > ${Nom}_${i}.dat
+ echo "plot \"HCN_irc.dat\" u 1:3 w l lw 2" >> ${NGplot}
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> ${NGplot}
+ fi
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp ls 1" >> ${NGplot}
+ IMov=`echo $i | awk '{ It="000" $1; l=length(It); print substr(It,l-2,3)}' `
+ cat <<EOF >> ${NGplot}
+ set term $Term
+ set output "${Nom}_${IMov}.$Ext"
+ replot
+ unset output
+ set term $DefTerm
+EOF
+
+echo "./${NGplot}      to see the path"
+chmod u+x ./${NGplot}
\ No newline at end of file

Property changes on: examples/Test/Cart/Dep_tscan_movie
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/Dep_tscan_p
===================================================================
--- examples/Test/Cart/Dep_tscan_p	(revision 0)
+++ examples/Test/Cart/Dep_tscan_p	(revision 1)
@@ -0,0 +1,113 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NomGplot=${Nom}_p.gplot
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+
+if [ -s ${Nom}_cart.0 ]; then
+ Ext=_cart
+elif [ -s ${Nom}.0 ]; then
+ Ext=""
+else
+ echo "Cannot find ${Nom}.0 nor ${Nom}_cart.0 -- ERROR"
+ exit
+fi
+
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NomGplot
+#!/usr/bin/gnuplot -persist
+ set term x11
+ set pointsize 2
+ set origin 0.,0.
+ set size square 1
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}${Ext}.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+if [ "$Ext" = "" ]; then
+# We are analysing a calculation done in cartesian. 
+# We have to  analyse the spline file and maybe also the tangent file.
+ if [ -s ${Nom}_spline.${i} ]; then
+   xyz2scan ${Nom}_spline.${i}  > /dev/null
+   mv Scan.dat  ${Nom}_spline_${i}.dat
+ fi
+ if [  -s ${Nom}_dbgtgt.${i} ]; then
+   xyz2scan ${Nom}_dbgtgt.${i}  > /dev/null
+   mv Scan.dat  ${Nom}_dbgtgt_${i}.dat
+ fi
+fi
+  
+ cat <<EOF >>  $NomGplot
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ "$Ext" = "_cart" ]; then
+   if [ -s ${Nom}_spline.${i} ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+   elif [  -s ${Nom}_dbgtgt.${i} ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_dbgtgt.${i}\" u 2:(\$4*180./pi) w l" >> $NomGplot
+   else
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+   fi
+ else
+   if [ -s ${Nom}_spline_${i}.dat ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_spline_${i}.dat\" u 1:3 w lp" >> $NomGplot
+   elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+   else
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+   fi
+ fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+ fi
+ echo "pause -1" >> $NomGplot
+ done
+let i=ItMax
+ xyz2scan ${Nom}${Ext}.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ echo "pause -1" >> $NomGplot
+chmod u+x $NomGplot
+
+echo "./$NomGplot      to see the path"
\ No newline at end of file

Property changes on: examples/Test/Cart/Dep_tscan_p
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Cart/run_Path
===================================================================
--- examples/Test/Cart/run_Path	(revision 0)
+++ examples/Test/Cart/run_Path	(revision 1)
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=HCN_cart
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+
+# Some libraries... that might need to be adapted to your system
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out 
+
+
+

Property changes on: examples/Test/Cart/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/PES_HCN_ana.f90
===================================================================
--- examples/Test/PES_HCN_ana.f90	(revision 0)
+++ examples/Test/PES_HCN_ana.f90	(revision 1)
@@ -0,0 +1,160 @@
+   PROGRAM PES2D
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+	   REAL(KREAL) :: E
+
+!     Bohr --> Angstr
+      real(KREAL), parameter :: BOHR   = 0.52917726D+00
+!
+! Parameters to define the surface
+      INTEGER(KINT), DIMENSION(6), PARAMETER :: IECOEF = (/-1,9,-45,45,-9,1/)
+      INTEGER(KINT), DIMENSION(6), PARAMETER :: ISCOEF = (/-3,-2,-1,1,2,3/)
+      REAL(KREAL), PARAMETER :: hh=0.01d0
+      
+! Variables
+       INTEGER(KINT) :: i,j,iat,jat
+       REAL(KREAL), ALLOCATABLE :: Xyztmp(:,:),GradTmp(:,:)
+       REAL(KREAL) :: xp,yp
+
+       CHARACTER(132) :: Line
+       LOGICAL :: Debug
+  
+      real(KREAL), parameter :: zero = 0.0_KREAL,   one = 1.0_KREAL
+      REAL(KREAL), external :: Eint
+
+      REAL(KREAL) :: dCH,dCN,aHCN
+	  REAL(KREAL), PARAMETER :: dCHmin=1., dCHmax=2.5
+	  REAL(KREAL), PARAMETER :: aHCNmin=0., aHCNmax=180.
+	  REAL(KREAL) :: StepdCH, StepaHCN
+	  INTEGER(KINT) :: NbStpdCH,NbStpaHCN
+	  
+	  
+	  
+! For now dCN=1.16 is fixed. Next version should optimize it at each step !
+	dCN=1.16
+	NbStpdCH=100
+	NbStpaHCN=100
+	StepdCH=(dCHmax-dCHmin)/(NbStpdCH-1)
+	StepaHCN=(aHCNmax-aHCNmin)/(NbStpaHCN-1)
+	dCH=dCHmin
+	DO I=1,NbStpdCH
+	  aHCN=aHCNmin
+	  DO J=1,NbStpaHCN
+	    e=Eint(dCH,dCN,aHCN)
+	    WRITE(*,'(1X,F10.4,1X,F10.4,1X,F8.2,1X,F15.6)') dCH,dCN,aHCN,e
+	    aHCN=aHCN+StepaHCN
+	  END DO
+	  WRITE(*,*) 
+	 dCH=dCH+StepdCH
+	END DO
+	
+!====================================================================
+	end  
+
+
+     function Eint(dCH,dCN,aHCN)
+
+   IMPLICIT NONE
+     integer, parameter :: KINT = kind(1)
+     integer, parameter :: KREAL = kind(1.0d0)
+
+
+      REAL(KREAL) ,INTENT(IN) :: dCH,dCN,aHCN
+      REAL(KREAL) :: Eint
+
+      INTEGER(KINT) :: i
+      REAL(KREAL) :: dNH
+
+      real(KREAL) :: autoA,autoeV,Pi
+      parameter (autoA=0.52917715d0)
+      parameter (autoeV=27.21183d0)
+
+
+      real(KREAL) :: Q(3)
+      real(KREAL) :: TT,gR,pR
+
+      real(KREAL) :: mB,mC,mH
+      real(KREAL) :: T,RN,RC,r1,r2,r3
+
+      real(KREAL) :: Z1,Z12,V1
+      real(KREAL) :: Z2,Z22,V2
+      real(KREAL) :: Z3,Z32,V3
+
+      real(KREAL) :: S1,S2,S3,S12,S22,S32,POLY
+      real(KREAL) :: E1,E2,E3,HY1,HY2,HY3,SWITCH,V123
+
+      pi=dacos(-1.0d0)
+	  
+      dNH=sqrt(dCH**2+dCN**2-2*dCH*dCN*cos(aHCN*pi/180.))
+
+      R1=dCH
+      R2=dCN
+      R3=dNH
+
+
+
+!      R1=R1*autoA
+!      R2=R2*autoA
+!      R3=R3*autoA
+
+!.....CH
+      Z1=R1-1.0823
+      Z12=Z1*Z1
+      V1=-2.8521*(1.0+5.5297*Z1+8.7166*Z12+5.3082*Z1*Z12)*dexp(-5.5297*Z1)
+!.....CN
+      Z2=R2-1.1718
+      Z22=Z2*Z2 
+      V2=-7.9282*(1.0+5.2448*Z2+7.3416*Z22+4.9785*Z2*Z22)*dexp(-5.2448*Z2)
+!.....NH
+      Z3=R3-1.0370
+      Z32=Z3*Z3
+      V3=-3.9938*(1.0+3.0704*Z3)*dexp(-3.0704*Z3)
+
+!     write(6,*) v1,v2,v3
+
+!.....THREE BODY TERMS
+      Z1=R1-1.9607
+      Z2=R2-2.2794
+      Z3=R3-1.8687
+      S1=0.4436*Z1+0.6091*Z2+0.6575*Z3
+      S2=-.8941*Z1+0.2498*Z2+0.3718*Z3
+      S3=0.0622*Z1-0.7527*Z2+0.6554*Z3
+
+      S12=S1*S1
+      S22=S2*S2
+      S32=S3*S3
+      POLY=-3.0578*(1.0+1.9076*S1-0.5008*S2-0.0149*S3+0.6695*S12  &
+          -1.3535*S22-1.0501*S32+0.2698*S1*S2-1.1120*S1*S3        &
+          +1.9310*S2*S3-0.0877*S1*S12+0.0044*S2*S22+0.0700        &
+          *S3*S32+0.0898*S12*S2-1.0186*S1*S22-0.0911*S12          &
+          *S3+0.0017*S1*S32+0.4567*S22*S3-0.8840*S2*S32           &
+          +0.3333*S1*S2*S3-0.0367*S12*S12+0.4821*S22*S22          &
+          +0.2564*S32*S32-0.0017*S12*S1*S2-0.2278*S12*S22         &
+          -0.1287*S1*S2*S22+0.1759*S1*S12*S3-0.0399*S12*S32       &
+          -0.1447*S1*S3*S32-0.3147*S2*S22*S3+0.1233*S22*S32       &
+          +0.3161*S2*S3*S32+0.0919*S12*S2*S3-0.0954*S1*S22*S3     &
+          +0.1778*S1*S2*S32-0.1892*S22*S22*S2)
+
+
+      E1=dexp(3.9742*Z1/2.)
+      E2=dexp(4.3688*Z2/2.)
+      E3=dexp(1.5176*Z3/2.)
+      HY1=(E1-1.0/E1)/(E1+1.0/E1)
+      HY2=(E2-1.0/E2)/(E2+1.0/E2)
+      HY3=(E3-1.0/E3)/(E3+1.0/E3)
+      SWITCH=(1.0-HY1)*(1.0-HY2)*(1.0-HY3)
+      V123=SWITCH*POLY
+
+!     write(6,*) v123,V1+V2+V3+V123
+
+      Eint=(V1+V2+V3+V123)/autoeV
+
+
+
+      return
+      end function Eint
+
+

Property changes on: examples/Test/PES_HCN_ana.f90
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/PES_HCN_ana_3D.dat
===================================================================
--- examples/Test/PES_HCN_ana_3D.dat	(revision 0)
+++ examples/Test/PES_HCN_ana_3D.dat	(revision 1)
@@ -0,0 +1,10100 @@
+     1.0000     1.1600     0.00        3.245584
+     1.0000     1.1600     1.82        3.183804
+     1.0000     1.1600     3.64        3.011433
+     1.0000     1.1600     5.45        2.759837
+     1.0000     1.1600     7.27        2.464123
+     1.0000     1.1600     9.09        2.153168
+     1.0000     1.1600    10.91        1.846844
+     1.0000     1.1600    12.73        1.557206
+     1.0000     1.1600    14.55        1.290684
+     1.0000     1.1600    16.36        1.050022
+     1.0000     1.1600    18.18        0.835682
+     1.0000     1.1600    20.00        0.646774
+     1.0000     1.1600    21.82        0.481665
+     1.0000     1.1600    23.64        0.338354
+     1.0000     1.1600    25.45        0.214706
+     1.0000     1.1600    27.27        0.108594
+     1.0000     1.1600    29.09        0.017984
+     1.0000     1.1600    30.91       -0.059022
+     1.0000     1.1600    32.73       -0.124165
+     1.0000     1.1600    34.55       -0.179017
+     1.0000     1.1600    36.36       -0.224987
+     1.0000     1.1600    38.18       -0.263327
+     1.0000     1.1600    40.00       -0.295142
+     1.0000     1.1600    41.82       -0.321402
+     1.0000     1.1600    43.64       -0.342955
+     1.0000     1.1600    45.45       -0.360539
+     1.0000     1.1600    47.27       -0.374793
+     1.0000     1.1600    49.09       -0.386269
+     1.0000     1.1600    50.91       -0.395441
+     1.0000     1.1600    52.73       -0.402716
+     1.0000     1.1600    54.55       -0.408441
+     1.0000     1.1600    56.36       -0.412911
+     1.0000     1.1600    58.18       -0.416375
+     1.0000     1.1600    60.00       -0.419044
+     1.0000     1.1600    61.82       -0.421094
+     1.0000     1.1600    63.64       -0.422671
+     1.0000     1.1600    65.45       -0.423899
+     1.0000     1.1600    67.27       -0.424877
+     1.0000     1.1600    69.09       -0.425687
+     1.0000     1.1600    70.91       -0.426395
+     1.0000     1.1600    72.73       -0.427054
+     1.0000     1.1600    74.55       -0.427705
+     1.0000     1.1600    76.36       -0.428381
+     1.0000     1.1600    78.18       -0.429105
+     1.0000     1.1600    80.00       -0.429895
+     1.0000     1.1600    81.82       -0.430762
+     1.0000     1.1600    83.64       -0.431716
+     1.0000     1.1600    85.45       -0.432759
+     1.0000     1.1600    87.27       -0.433892
+     1.0000     1.1600    89.09       -0.435115
+     1.0000     1.1600    90.91       -0.436423
+     1.0000     1.1600    92.73       -0.437812
+     1.0000     1.1600    94.55       -0.439276
+     1.0000     1.1600    96.36       -0.440809
+     1.0000     1.1600    98.18       -0.442403
+     1.0000     1.1600   100.00       -0.444052
+     1.0000     1.1600   101.82       -0.445748
+     1.0000     1.1600   103.64       -0.447483
+     1.0000     1.1600   105.45       -0.449250
+     1.0000     1.1600   107.27       -0.451041
+     1.0000     1.1600   109.09       -0.452849
+     1.0000     1.1600   110.91       -0.454669
+     1.0000     1.1600   112.73       -0.456492
+     1.0000     1.1600   114.55       -0.458313
+     1.0000     1.1600   116.36       -0.460127
+     1.0000     1.1600   118.18       -0.461927
+     1.0000     1.1600   120.00       -0.463710
+     1.0000     1.1600   121.82       -0.465470
+     1.0000     1.1600   123.64       -0.467202
+     1.0000     1.1600   125.45       -0.468904
+     1.0000     1.1600   127.27       -0.470571
+     1.0000     1.1600   129.09       -0.472200
+     1.0000     1.1600   130.91       -0.473788
+     1.0000     1.1600   132.73       -0.475332
+     1.0000     1.1600   134.55       -0.476830
+     1.0000     1.1600   136.36       -0.478280
+     1.0000     1.1600   138.18       -0.479680
+     1.0000     1.1600   140.00       -0.481028
+     1.0000     1.1600   141.82       -0.482323
+     1.0000     1.1600   143.64       -0.483563
+     1.0000     1.1600   145.45       -0.484746
+     1.0000     1.1600   147.27       -0.485873
+     1.0000     1.1600   149.09       -0.486942
+     1.0000     1.1600   150.91       -0.487953
+     1.0000     1.1600   152.73       -0.488904
+     1.0000     1.1600   154.55       -0.489795
+     1.0000     1.1600   156.36       -0.490626
+     1.0000     1.1600   158.18       -0.491397
+     1.0000     1.1600   160.00       -0.492107
+     1.0000     1.1600   161.82       -0.492755
+     1.0000     1.1600   163.64       -0.493342
+     1.0000     1.1600   165.45       -0.493868
+     1.0000     1.1600   167.27       -0.494332
+     1.0000     1.1600   169.09       -0.494734
+     1.0000     1.1600   170.91       -0.495075
+     1.0000     1.1600   172.73       -0.495353
+     1.0000     1.1600   174.55       -0.495570
+     1.0000     1.1600   176.36       -0.495725
+     1.0000     1.1600   178.18       -0.495818
+     1.0000     1.1600   180.00       -0.495849
+
+     1.0152     1.1600     0.00        3.506270
+     1.0152     1.1600     1.82        3.432634
+     1.0152     1.1600     3.64        3.229714
+     1.0152     1.1600     5.45        2.939294
+     1.0152     1.1600     7.27        2.605100
+     1.0152     1.1600     9.09        2.260392
+     1.0152     1.1600    10.91        1.926301
+     1.0152     1.1600    12.73        1.614601
+     1.0152     1.1600    14.55        1.330897
+     1.0152     1.1600    16.36        1.077021
+     1.0152     1.1600    18.18        0.852613
+     1.0152     1.1600    20.00        0.656105
+     1.0152     1.1600    21.82        0.485315
+     1.0152     1.1600    23.64        0.337810
+     1.0152     1.1600    25.45        0.211115
+     1.0152     1.1600    27.27        0.102842
+     1.0152     1.1600    29.09        0.010747
+     1.0152     1.1600    30.91       -0.067227
+     1.0152     1.1600    32.73       -0.132946
+     1.0152     1.1600    34.55       -0.188080
+     1.0152     1.1600    36.36       -0.234115
+     1.0152     1.1600    38.18       -0.272361
+     1.0152     1.1600    40.00       -0.303969
+     1.0152     1.1600    41.82       -0.329946
+     1.0152     1.1600    43.64       -0.351165
+     1.0152     1.1600    45.45       -0.368385
+     1.0152     1.1600    47.27       -0.382261
+     1.0152     1.1600    49.09       -0.393356
+     1.0152     1.1600    50.91       -0.402152
+     1.0152     1.1600    52.73       -0.409064
+     1.0152     1.1600    54.55       -0.414440
+     1.0152     1.1600    56.36       -0.418579
+     1.0152     1.1600    58.18       -0.421732
+     1.0152     1.1600    60.00       -0.424110
+     1.0152     1.1600    61.82       -0.425889
+     1.0152     1.1600    63.64       -0.427216
+     1.0152     1.1600    65.45       -0.428211
+     1.0152     1.1600    67.27       -0.428975
+     1.0152     1.1600    69.09       -0.429588
+     1.0152     1.1600    70.91       -0.430115
+     1.0152     1.1600    72.73       -0.430608
+     1.0152     1.1600    74.55       -0.431106
+     1.0152     1.1600    76.36       -0.431641
+     1.0152     1.1600    78.18       -0.432237
+     1.0152     1.1600    80.00       -0.432908
+     1.0152     1.1600    81.82       -0.433667
+     1.0152     1.1600    83.64       -0.434520
+     1.0152     1.1600    85.45       -0.435471
+     1.0152     1.1600    87.27       -0.436519
+     1.0152     1.1600    89.09       -0.437663
+     1.0152     1.1600    90.91       -0.438898
+     1.0152     1.1600    92.73       -0.440219
+     1.0152     1.1600    94.55       -0.441621
+     1.0152     1.1600    96.36       -0.443095
+     1.0152     1.1600    98.18       -0.444636
+     1.0152     1.1600   100.00       -0.446234
+     1.0152     1.1600   101.82       -0.447883
+     1.0152     1.1600   103.64       -0.449574
+     1.0152     1.1600   105.45       -0.451299
+     1.0152     1.1600   107.27       -0.453052
+     1.0152     1.1600   109.09       -0.454824
+     1.0152     1.1600   110.91       -0.456610
+     1.0152     1.1600   112.73       -0.458401
+     1.0152     1.1600   114.55       -0.460193
+     1.0152     1.1600   116.36       -0.461978
+     1.0152     1.1600   118.18       -0.463753
+     1.0152     1.1600   120.00       -0.465510
+     1.0152     1.1600   121.82       -0.467247
+     1.0152     1.1600   123.64       -0.468957
+     1.0152     1.1600   125.45       -0.470639
+     1.0152     1.1600   127.27       -0.472286
+     1.0152     1.1600   129.09       -0.473897
+     1.0152     1.1600   130.91       -0.475468
+     1.0152     1.1600   132.73       -0.476996
+     1.0152     1.1600   134.55       -0.478480
+     1.0152     1.1600   136.36       -0.479916
+     1.0152     1.1600   138.18       -0.481302
+     1.0152     1.1600   140.00       -0.482638
+     1.0152     1.1600   141.82       -0.483921
+     1.0152     1.1600   143.64       -0.485150
+     1.0152     1.1600   145.45       -0.486323
+     1.0152     1.1600   147.27       -0.487441
+     1.0152     1.1600   149.09       -0.488501
+     1.0152     1.1600   150.91       -0.489503
+     1.0152     1.1600   152.73       -0.490447
+     1.0152     1.1600   154.55       -0.491331
+     1.0152     1.1600   156.36       -0.492156
+     1.0152     1.1600   158.18       -0.492921
+     1.0152     1.1600   160.00       -0.493625
+     1.0152     1.1600   161.82       -0.494269
+     1.0152     1.1600   163.64       -0.494852
+     1.0152     1.1600   165.45       -0.495374
+     1.0152     1.1600   167.27       -0.495834
+     1.0152     1.1600   169.09       -0.496234
+     1.0152     1.1600   170.91       -0.496572
+     1.0152     1.1600   172.73       -0.496849
+     1.0152     1.1600   174.55       -0.497064
+     1.0152     1.1600   176.36       -0.497218
+     1.0152     1.1600   178.18       -0.497310
+     1.0152     1.1600   180.00       -0.497341
+
+     1.0303     1.1600     0.00        3.785490
+     1.0303     1.1600     1.82        3.696897
+     1.0303     1.1600     3.64        3.456643
+     1.0303     1.1600     5.45        3.121030
+     1.0303     1.1600     7.27        2.744217
+     1.0303     1.1600     9.09        2.363693
+     1.0303     1.1600    10.91        2.001137
+     1.0303     1.1600    12.73        1.667434
+     1.0303     1.1600    14.55        1.366968
+     1.0303     1.1600    16.36        1.100440
+     1.0303     1.1600    18.18        0.866553
+     1.0303     1.1600    20.00        0.663000
+     1.0303     1.1600    21.82        0.487026
+     1.0303     1.1600    23.64        0.335759
+     1.0303     1.1600    25.45        0.206389
+     1.0303     1.1600    27.27        0.096266
+     1.0303     1.1600    29.09        0.002947
+     1.0303     1.1600    30.91       -0.075779
+     1.0303     1.1600    32.73       -0.141898
+     1.0303     1.1600    34.55       -0.197170
+     1.0303     1.1600    36.36       -0.243153
+     1.0303     1.1600    38.18       -0.281211
+     1.0303     1.1600    40.00       -0.312538
+     1.0303     1.1600    41.82       -0.338170
+     1.0303     1.1600    43.64       -0.359009
+     1.0303     1.1600    45.45       -0.375829
+     1.0303     1.1600    47.27       -0.389300
+     1.0303     1.1600    49.09       -0.399993
+     1.0303     1.1600    50.91       -0.408400
+     1.0303     1.1600    52.73       -0.414937
+     1.0303     1.1600    54.55       -0.419958
+     1.0303     1.1600    56.36       -0.423762
+     1.0303     1.1600    58.18       -0.426602
+     1.0303     1.1600    60.00       -0.428689
+     1.0303     1.1600    61.82       -0.430199
+     1.0303     1.1600    63.64       -0.431276
+     1.0303     1.1600    65.45       -0.432043
+     1.0303     1.1600    67.27       -0.432596
+     1.0303     1.1600    69.09       -0.433015
+     1.0303     1.1600    70.91       -0.433364
+     1.0303     1.1600    72.73       -0.433694
+     1.0303     1.1600    74.55       -0.434043
+     1.0303     1.1600    76.36       -0.434441
+     1.0303     1.1600    78.18       -0.434911
+     1.0303     1.1600    80.00       -0.435467
+     1.0303     1.1600    81.82       -0.436120
+     1.0303     1.1600    83.64       -0.436875
+     1.0303     1.1600    85.45       -0.437736
+     1.0303     1.1600    87.27       -0.438701
+     1.0303     1.1600    89.09       -0.439767
+     1.0303     1.1600    90.91       -0.440931
+     1.0303     1.1600    92.73       -0.442186
+     1.0303     1.1600    94.55       -0.443527
+     1.0303     1.1600    96.36       -0.444944
+     1.0303     1.1600    98.18       -0.446431
+     1.0303     1.1600   100.00       -0.447980
+     1.0303     1.1600   101.82       -0.449582
+     1.0303     1.1600   103.64       -0.451230
+     1.0303     1.1600   105.45       -0.452915
+     1.0303     1.1600   107.27       -0.454629
+     1.0303     1.1600   109.09       -0.456366
+     1.0303     1.1600   110.91       -0.458118
+     1.0303     1.1600   112.73       -0.459878
+     1.0303     1.1600   114.55       -0.461640
+     1.0303     1.1600   116.36       -0.463398
+     1.0303     1.1600   118.18       -0.465146
+     1.0303     1.1600   120.00       -0.466879
+     1.0303     1.1600   121.82       -0.468592
+     1.0303     1.1600   123.64       -0.470281
+     1.0303     1.1600   125.45       -0.471942
+     1.0303     1.1600   127.27       -0.473570
+     1.0303     1.1600   129.09       -0.475163
+     1.0303     1.1600   130.91       -0.476717
+     1.0303     1.1600   132.73       -0.478229
+     1.0303     1.1600   134.55       -0.479697
+     1.0303     1.1600   136.36       -0.481119
+     1.0303     1.1600   138.18       -0.482493
+     1.0303     1.1600   140.00       -0.483816
+     1.0303     1.1600   141.82       -0.485087
+     1.0303     1.1600   143.64       -0.486305
+     1.0303     1.1600   145.45       -0.487469
+     1.0303     1.1600   147.27       -0.488577
+     1.0303     1.1600   149.09       -0.489628
+     1.0303     1.1600   150.91       -0.490622
+     1.0303     1.1600   152.73       -0.491558
+     1.0303     1.1600   154.55       -0.492436
+     1.0303     1.1600   156.36       -0.493254
+     1.0303     1.1600   158.18       -0.494013
+     1.0303     1.1600   160.00       -0.494712
+     1.0303     1.1600   161.82       -0.495351
+     1.0303     1.1600   163.64       -0.495929
+     1.0303     1.1600   165.45       -0.496447
+     1.0303     1.1600   167.27       -0.496905
+     1.0303     1.1600   169.09       -0.497301
+     1.0303     1.1600   170.91       -0.497637
+     1.0303     1.1600   172.73       -0.497911
+     1.0303     1.1600   174.55       -0.498125
+     1.0303     1.1600   176.36       -0.498278
+     1.0303     1.1600   178.18       -0.498369
+     1.0303     1.1600   180.00       -0.498400
+
+     1.0455     1.1600     0.00        4.084333
+     1.0455     1.1600     1.82        3.976510
+     1.0455     1.1600     3.64        3.690256
+     1.0455     1.1600     5.45        3.302279
+     1.0455     1.1600     7.27        2.878895
+     1.0455     1.1600     9.09        2.461049
+     1.0455     1.1600    10.91        2.069892
+     1.0455     1.1600    12.73        1.714691
+     1.0455     1.1600    14.55        1.398211
+     1.0455     1.1600    16.36        1.119821
+     1.0455     1.1600    18.18        0.877198
+     1.0455     1.1600    20.00        0.667259
+     1.0455     1.1600    21.82        0.486670
+     1.0455     1.1600    23.64        0.332123
+     1.0455     1.1600    25.45        0.200477
+     1.0455     1.1600    27.27        0.088834
+     1.0455     1.1600    29.09       -0.005437
+     1.0455     1.1600    30.91       -0.084694
+     1.0455     1.1600    32.73       -0.151031
+     1.0455     1.1600    34.55       -0.206296
+     1.0455     1.1600    36.36       -0.252110
+     1.0455     1.1600    38.18       -0.289887
+     1.0455     1.1600    40.00       -0.320859
+     1.0455     1.1600    41.82       -0.346091
+     1.0455     1.1600    43.64       -0.366504
+     1.0455     1.1600    45.45       -0.382890
+     1.0455     1.1600    47.27       -0.395929
+     1.0455     1.1600    49.09       -0.406203
+     1.0455     1.1600    50.91       -0.414206
+     1.0455     1.1600    52.73       -0.420360
+     1.0455     1.1600    54.55       -0.425020
+     1.0455     1.1600    56.36       -0.428487
+     1.0455     1.1600    58.18       -0.431014
+     1.0455     1.1600    60.00       -0.432810
+     1.0455     1.1600    61.82       -0.434052
+     1.0455     1.1600    63.64       -0.434883
+     1.0455     1.1600    65.45       -0.435423
+     1.0455     1.1600    67.27       -0.435769
+     1.0455     1.1600    69.09       -0.435998
+     1.0455     1.1600    70.91       -0.436174
+     1.0455     1.1600    72.73       -0.436344
+     1.0455     1.1600    74.55       -0.436547
+     1.0455     1.1600    76.36       -0.436812
+     1.0455     1.1600    78.18       -0.437159
+     1.0455     1.1600    80.00       -0.437602
+     1.0455     1.1600    81.82       -0.438152
+     1.0455     1.1600    83.64       -0.438812
+     1.0455     1.1600    85.45       -0.439585
+     1.0455     1.1600    87.27       -0.440469
+     1.0455     1.1600    89.09       -0.441460
+     1.0455     1.1600    90.91       -0.442555
+     1.0455     1.1600    92.73       -0.443745
+     1.0455     1.1600    94.55       -0.445026
+     1.0455     1.1600    96.36       -0.446387
+     1.0455     1.1600    98.18       -0.447822
+     1.0455     1.1600   100.00       -0.449322
+     1.0455     1.1600   101.82       -0.450879
+     1.0455     1.1600   103.64       -0.452484
+     1.0455     1.1600   105.45       -0.454129
+     1.0455     1.1600   107.27       -0.455806
+     1.0455     1.1600   109.09       -0.457507
+     1.0455     1.1600   110.91       -0.459226
+     1.0455     1.1600   112.73       -0.460955
+     1.0455     1.1600   114.55       -0.462687
+     1.0455     1.1600   116.36       -0.464418
+     1.0455     1.1600   118.18       -0.466140
+     1.0455     1.1600   120.00       -0.467848
+     1.0455     1.1600   121.82       -0.469539
+     1.0455     1.1600   123.64       -0.471206
+     1.0455     1.1600   125.45       -0.472846
+     1.0455     1.1600   127.27       -0.474455
+     1.0455     1.1600   129.09       -0.476030
+     1.0455     1.1600   130.91       -0.477567
+     1.0455     1.1600   132.73       -0.479063
+     1.0455     1.1600   134.55       -0.480516
+     1.0455     1.1600   136.36       -0.481924
+     1.0455     1.1600   138.18       -0.483284
+     1.0455     1.1600   140.00       -0.484595
+     1.0455     1.1600   141.82       -0.485854
+     1.0455     1.1600   143.64       -0.487061
+     1.0455     1.1600   145.45       -0.488215
+     1.0455     1.1600   147.27       -0.489313
+     1.0455     1.1600   149.09       -0.490356
+     1.0455     1.1600   150.91       -0.491341
+     1.0455     1.1600   152.73       -0.492270
+     1.0455     1.1600   154.55       -0.493140
+     1.0455     1.1600   156.36       -0.493952
+     1.0455     1.1600   158.18       -0.494705
+     1.0455     1.1600   160.00       -0.495399
+     1.0455     1.1600   161.82       -0.496033
+     1.0455     1.1600   163.64       -0.496607
+     1.0455     1.1600   165.45       -0.497121
+     1.0455     1.1600   167.27       -0.497575
+     1.0455     1.1600   169.09       -0.497968
+     1.0455     1.1600   170.91       -0.498302
+     1.0455     1.1600   172.73       -0.498574
+     1.0455     1.1600   174.55       -0.498786
+     1.0455     1.1600   176.36       -0.498938
+     1.0455     1.1600   178.18       -0.499029
+     1.0455     1.1600   180.00       -0.499059
+
+     1.0606     1.1600     0.00        4.403956
+     1.0606     1.1600     1.82        4.270826
+     1.0606     1.1600     3.64        3.927461
+     1.0606     1.1600     5.45        3.479377
+     1.0606     1.1600     7.27        3.006084
+     1.0606     1.1600     9.09        2.550257
+     1.0606     1.1600    10.91        2.131070
+     1.0606     1.1600    12.73        1.755385
+     1.0606     1.1600    14.55        1.423985
+     1.0606     1.1600    16.36        1.134754
+     1.0606     1.1600    18.18        0.884288
+     1.0606     1.1600    20.00        0.668721
+     1.0606     1.1600    21.82        0.484148
+     1.0606     1.1600    23.64        0.326840
+     1.0606     1.1600    25.45        0.193344
+     1.0606     1.1600    27.27        0.080528
+     1.0606     1.1600    29.09       -0.014415
+     1.0606     1.1600    30.91       -0.093976
+     1.0606     1.1600    32.73       -0.160350
+     1.0606     1.1600    34.55       -0.215463
+     1.0606     1.1600    36.36       -0.260992
+     1.0606     1.1600    38.18       -0.298398
+     1.0606     1.1600    40.00       -0.328943
+     1.0606     1.1600    41.82       -0.353718
+     1.0606     1.1600    43.64       -0.373664
+     1.0606     1.1600    45.45       -0.389584
+     1.0606     1.1600    47.27       -0.402169
+     1.0606     1.1600    49.09       -0.412005
+     1.0606     1.1600    50.91       -0.419593
+     1.0606     1.1600    52.73       -0.425356
+     1.0606     1.1600    54.55       -0.429651
+     1.0606     1.1600    56.36       -0.432779
+     1.0606     1.1600    58.18       -0.434992
+     1.0606     1.1600    60.00       -0.436499
+     1.0606     1.1600    61.82       -0.437476
+     1.0606     1.1600    63.64       -0.438064
+     1.0606     1.1600    65.45       -0.438381
+     1.0606     1.1600    67.27       -0.438523
+     1.0606     1.1600    69.09       -0.438567
+     1.0606     1.1600    70.91       -0.438572
+     1.0606     1.1600    72.73       -0.438587
+     1.0606     1.1600    74.55       -0.438648
+     1.0606     1.1600    76.36       -0.438783
+     1.0606     1.1600    78.18       -0.439011
+     1.0606     1.1600    80.00       -0.439345
+     1.0606     1.1600    81.82       -0.439794
+     1.0606     1.1600    83.64       -0.440361
+     1.0606     1.1600    85.45       -0.441049
+     1.0606     1.1600    87.27       -0.441853
+     1.0606     1.1600    89.09       -0.442772
+     1.0606     1.1600    90.91       -0.443798
+     1.0606     1.1600    92.73       -0.444926
+     1.0606     1.1600    94.55       -0.446148
+     1.0606     1.1600    96.36       -0.447454
+     1.0606     1.1600    98.18       -0.448838
+     1.0606     1.1600   100.00       -0.450291
+     1.0606     1.1600   101.82       -0.451802
+     1.0606     1.1600   103.64       -0.453365
+     1.0606     1.1600   105.45       -0.454971
+     1.0606     1.1600   107.27       -0.456611
+     1.0606     1.1600   109.09       -0.458277
+     1.0606     1.1600   110.91       -0.459963
+     1.0606     1.1600   112.73       -0.461661
+     1.0606     1.1600   114.55       -0.463365
+     1.0606     1.1600   116.36       -0.465068
+     1.0606     1.1600   118.18       -0.466764
+     1.0606     1.1600   120.00       -0.468449
+     1.0606     1.1600   121.82       -0.470116
+     1.0606     1.1600   123.64       -0.471762
+     1.0606     1.1600   125.45       -0.473381
+     1.0606     1.1600   127.27       -0.474971
+     1.0606     1.1600   129.09       -0.476528
+     1.0606     1.1600   130.91       -0.478048
+     1.0606     1.1600   132.73       -0.479528
+     1.0606     1.1600   134.55       -0.480966
+     1.0606     1.1600   136.36       -0.482360
+     1.0606     1.1600   138.18       -0.483707
+     1.0606     1.1600   140.00       -0.485005
+     1.0606     1.1600   141.82       -0.486253
+     1.0606     1.1600   143.64       -0.487449
+     1.0606     1.1600   145.45       -0.488592
+     1.0606     1.1600   147.27       -0.489681
+     1.0606     1.1600   149.09       -0.490714
+     1.0606     1.1600   150.91       -0.491692
+     1.0606     1.1600   152.73       -0.492613
+     1.0606     1.1600   154.55       -0.493476
+     1.0606     1.1600   156.36       -0.494281
+     1.0606     1.1600   158.18       -0.495028
+     1.0606     1.1600   160.00       -0.495716
+     1.0606     1.1600   161.82       -0.496346
+     1.0606     1.1600   163.64       -0.496915
+     1.0606     1.1600   165.45       -0.497425
+     1.0606     1.1600   167.27       -0.497876
+     1.0606     1.1600   169.09       -0.498267
+     1.0606     1.1600   170.91       -0.498597
+     1.0606     1.1600   172.73       -0.498868
+     1.0606     1.1600   174.55       -0.499078
+     1.0606     1.1600   176.36       -0.499229
+     1.0606     1.1600   178.18       -0.499319
+     1.0606     1.1600   180.00       -0.499349
+
+     1.0758     1.1600     0.00        4.745585
+     1.0758     1.1600     1.82        4.578161
+     1.0758     1.1600     3.64        4.163522
+     1.0758     1.1600     5.45        3.647613
+     1.0758     1.1600     7.27        3.122303
+     1.0758     1.1600     9.09        2.629006
+     1.0758     1.1600    10.91        2.183199
+     1.0758     1.1600    12.73        1.788595
+     1.0758     1.1600    14.55        1.443718
+     1.0758     1.1600    16.36        1.144886
+     1.0758     1.1600    18.18        0.887610
+     1.0758     1.1600    20.00        0.667261
+     1.0758     1.1600    21.82        0.479390
+     1.0758     1.1600    23.64        0.319875
+     1.0758     1.1600    25.45        0.184975
+     1.0758     1.1600    27.27        0.071343
+     1.0758     1.1600    29.09       -0.023986
+     1.0758     1.1600    30.91       -0.103623
+     1.0758     1.1600    32.73       -0.169854
+     1.0758     1.1600    34.55       -0.224670
+     1.0758     1.1600    36.36       -0.269802
+     1.0758     1.1600    38.18       -0.306747
+     1.0758     1.1600    40.00       -0.336797
+     1.0758     1.1600    41.82       -0.361063
+     1.0758     1.1600    43.64       -0.380501
+     1.0758     1.1600    45.45       -0.395925
+     1.0758     1.1600    47.27       -0.408033
+     1.0758     1.1600    49.09       -0.417418
+     1.0758     1.1600    50.91       -0.424580
+     1.0758     1.1600    52.73       -0.429946
+     1.0758     1.1600    54.55       -0.433873
+     1.0758     1.1600    56.36       -0.436661
+     1.0758     1.1600    58.18       -0.438561
+     1.0758     1.1600    60.00       -0.439782
+     1.0758     1.1600    61.82       -0.440496
+     1.0758     1.1600    63.64       -0.440844
+     1.0758     1.1600    65.45       -0.440943
+     1.0758     1.1600    67.27       -0.440886
+     1.0758     1.1600    69.09       -0.440748
+     1.0758     1.1600    70.91       -0.440587
+     1.0758     1.1600    72.73       -0.440451
+     1.0758     1.1600    74.55       -0.440374
+     1.0758     1.1600    76.36       -0.440382
+     1.0758     1.1600    78.18       -0.440494
+     1.0758     1.1600    80.00       -0.440722
+     1.0758     1.1600    81.82       -0.441073
+     1.0758     1.1600    83.64       -0.441551
+     1.0758     1.1600    85.45       -0.442155
+     1.0758     1.1600    87.27       -0.442883
+     1.0758     1.1600    89.09       -0.443730
+     1.0758     1.1600    90.91       -0.444690
+     1.0758     1.1600    92.73       -0.445757
+     1.0758     1.1600    94.55       -0.446921
+     1.0758     1.1600    96.36       -0.448174
+     1.0758     1.1600    98.18       -0.449508
+     1.0758     1.1600   100.00       -0.450913
+     1.0758     1.1600   101.82       -0.452381
+     1.0758     1.1600   103.64       -0.453903
+     1.0758     1.1600   105.45       -0.455469
+     1.0758     1.1600   107.27       -0.457073
+     1.0758     1.1600   109.09       -0.458705
+     1.0758     1.1600   110.91       -0.460359
+     1.0758     1.1600   112.73       -0.462026
+     1.0758     1.1600   114.55       -0.463701
+     1.0758     1.1600   116.36       -0.465377
+     1.0758     1.1600   118.18       -0.467048
+     1.0758     1.1600   120.00       -0.468708
+     1.0758     1.1600   121.82       -0.470353
+     1.0758     1.1600   123.64       -0.471977
+     1.0758     1.1600   125.45       -0.473576
+     1.0758     1.1600   127.27       -0.475147
+     1.0758     1.1600   129.09       -0.476686
+     1.0758     1.1600   130.91       -0.478189
+     1.0758     1.1600   132.73       -0.479653
+     1.0758     1.1600   134.55       -0.481076
+     1.0758     1.1600   136.36       -0.482456
+     1.0758     1.1600   138.18       -0.483789
+     1.0758     1.1600   140.00       -0.485075
+     1.0758     1.1600   141.82       -0.486311
+     1.0758     1.1600   143.64       -0.487496
+     1.0758     1.1600   145.45       -0.488629
+     1.0758     1.1600   147.27       -0.489708
+     1.0758     1.1600   149.09       -0.490733
+     1.0758     1.1600   150.91       -0.491702
+     1.0758     1.1600   152.73       -0.492615
+     1.0758     1.1600   154.55       -0.493471
+     1.0758     1.1600   156.36       -0.494270
+     1.0758     1.1600   158.18       -0.495011
+     1.0758     1.1600   160.00       -0.495694
+     1.0758     1.1600   161.82       -0.496318
+     1.0758     1.1600   163.64       -0.496883
+     1.0758     1.1600   165.45       -0.497390
+     1.0758     1.1600   167.27       -0.497837
+     1.0758     1.1600   169.09       -0.498224
+     1.0758     1.1600   170.91       -0.498552
+     1.0758     1.1600   172.73       -0.498821
+     1.0758     1.1600   174.55       -0.499030
+     1.0758     1.1600   176.36       -0.499179
+     1.0758     1.1600   178.18       -0.499269
+     1.0758     1.1600   180.00       -0.499299
+
+     1.0909     1.1600     0.00        5.110518
+     1.0909     1.1600     1.82        4.894875
+     1.0909     1.1600     3.64        4.391369
+     1.0909     1.1600     5.45        3.801169
+     1.0909     1.1600     7.27        3.223754
+     1.0909     1.1600     9.09        2.694985
+     1.0909     1.1600    10.91        2.224899
+     1.0909     1.1600    12.73        1.813503
+     1.0909     1.1600    14.55        1.456929
+     1.0909     1.1600    16.36        1.149940
+     1.0909     1.1600    18.18        0.887008
+     1.0909     1.1600    20.00        0.662796
+     1.0909     1.1600    21.82        0.472357
+     1.0909     1.1600    23.64        0.311214
+     1.0909     1.1600    25.45        0.175368
+     1.0909     1.1600    27.27        0.061285
+     1.0909     1.1600    29.09       -0.034142
+     1.0909     1.1600    30.91       -0.113628
+     1.0909     1.1600    32.73       -0.179535
+     1.0909     1.1600    34.55       -0.233914
+     1.0909     1.1600    36.36       -0.278538
+     1.0909     1.1600    38.18       -0.314937
+     1.0909     1.1600    40.00       -0.344426
+     1.0909     1.1600    41.82       -0.368134
+     1.0909     1.1600    43.64       -0.387026
+     1.0909     1.1600    45.45       -0.401928
+     1.0909     1.1600    47.27       -0.413540
+     1.0909     1.1600    49.09       -0.422458
+     1.0909     1.1600    50.91       -0.429187
+     1.0909     1.1600    52.73       -0.434151
+     1.0909     1.1600    54.55       -0.437708
+     1.0909     1.1600    56.36       -0.440156
+     1.0909     1.1600    58.18       -0.441745
+     1.0909     1.1600    60.00       -0.442682
+     1.0909     1.1600    61.82       -0.443137
+     1.0909     1.1600    63.64       -0.443250
+     1.0909     1.1600    65.45       -0.443135
+     1.0909     1.1600    67.27       -0.442882
+     1.0909     1.1600    69.09       -0.442567
+     1.0909     1.1600    70.91       -0.442245
+     1.0909     1.1600    72.73       -0.441961
+     1.0909     1.1600    74.55       -0.441750
+     1.0909     1.1600    76.36       -0.441635
+     1.0909     1.1600    78.18       -0.441635
+     1.0909     1.1600    80.00       -0.441760
+     1.0909     1.1600    81.82       -0.442016
+     1.0909     1.1600    83.64       -0.442406
+     1.0909     1.1600    85.45       -0.442930
+     1.0909     1.1600    87.27       -0.443583
+     1.0909     1.1600    89.09       -0.444361
+     1.0909     1.1600    90.91       -0.445257
+     1.0909     1.1600    92.73       -0.446263
+     1.0909     1.1600    94.55       -0.447371
+     1.0909     1.1600    96.36       -0.448572
+     1.0909     1.1600    98.18       -0.449857
+     1.0909     1.1600   100.00       -0.451217
+     1.0909     1.1600   101.82       -0.452641
+     1.0909     1.1600   103.64       -0.454122
+     1.0909     1.1600   105.45       -0.455651
+     1.0909     1.1600   107.27       -0.457219
+     1.0909     1.1600   109.09       -0.458817
+     1.0909     1.1600   110.91       -0.460439
+     1.0909     1.1600   112.73       -0.462076
+     1.0909     1.1600   114.55       -0.463723
+     1.0909     1.1600   116.36       -0.465372
+     1.0909     1.1600   118.18       -0.467017
+     1.0909     1.1600   120.00       -0.468653
+     1.0909     1.1600   121.82       -0.470275
+     1.0909     1.1600   123.64       -0.471878
+     1.0909     1.1600   125.45       -0.473458
+     1.0909     1.1600   127.27       -0.475010
+     1.0909     1.1600   129.09       -0.476530
+     1.0909     1.1600   130.91       -0.478016
+     1.0909     1.1600   132.73       -0.479465
+     1.0909     1.1600   134.55       -0.480873
+     1.0909     1.1600   136.36       -0.482238
+     1.0909     1.1600   138.18       -0.483558
+     1.0909     1.1600   140.00       -0.484831
+     1.0909     1.1600   141.82       -0.486056
+     1.0909     1.1600   143.64       -0.487230
+     1.0909     1.1600   145.45       -0.488353
+     1.0909     1.1600   147.27       -0.489422
+     1.0909     1.1600   149.09       -0.490438
+     1.0909     1.1600   150.91       -0.491399
+     1.0909     1.1600   152.73       -0.492304
+     1.0909     1.1600   154.55       -0.493153
+     1.0909     1.1600   156.36       -0.493946
+     1.0909     1.1600   158.18       -0.494681
+     1.0909     1.1600   160.00       -0.495358
+     1.0909     1.1600   161.82       -0.495977
+     1.0909     1.1600   163.64       -0.496538
+     1.0909     1.1600   165.45       -0.497040
+     1.0909     1.1600   167.27       -0.497484
+     1.0909     1.1600   169.09       -0.497868
+     1.0909     1.1600   170.91       -0.498194
+     1.0909     1.1600   172.73       -0.498460
+     1.0909     1.1600   174.55       -0.498668
+     1.0909     1.1600   176.36       -0.498816
+     1.0909     1.1600   178.18       -0.498905
+     1.0909     1.1600   180.00       -0.498934
+
+     1.1061     1.1600     0.00        5.500133
+     1.1061     1.1600     1.82        5.213463
+     1.1061     1.1600     3.64        4.600817
+     1.1061     1.1600     5.45        3.933242
+     1.1061     1.1600     7.27        3.306545
+     1.1061     1.1600     9.09        2.746028
+     1.1061     1.1600    10.91        2.254963
+     1.1061     1.1600    12.73        1.829436
+     1.1061     1.1600    14.55        1.463248
+     1.1061     1.1600    16.36        1.149719
+     1.1061     1.1600    18.18        0.882387
+     1.1061     1.1600    20.00        0.655288
+     1.1061     1.1600    21.82        0.463042
+     1.1061     1.1600    23.64        0.300866
+     1.1061     1.1600    25.45        0.164541
+     1.1061     1.1600    27.27        0.050372
+     1.1061     1.1600    29.09       -0.044865
+     1.1061     1.1600    30.91       -0.123974
+     1.1061     1.1600    32.73       -0.189382
+     1.1061     1.1600    34.55       -0.243187
+     1.1061     1.1600    36.36       -0.287198
+     1.1061     1.1600    38.18       -0.322969
+     1.1061     1.1600    40.00       -0.351835
+     1.1061     1.1600    41.82       -0.374937
+     1.1061     1.1600    43.64       -0.393250
+     1.1061     1.1600    45.45       -0.407603
+     1.1061     1.1600    47.27       -0.418701
+     1.1061     1.1600    49.09       -0.427143
+     1.1061     1.1600    50.91       -0.433431
+     1.1061     1.1600    52.73       -0.437989
+     1.1061     1.1600    54.55       -0.441175
+     1.1061     1.1600    56.36       -0.443284
+     1.1061     1.1600    58.18       -0.444565
+     1.1061     1.1600    60.00       -0.445222
+     1.1061     1.1600    61.82       -0.445422
+     1.1061     1.1600    63.64       -0.445304
+     1.1061     1.1600    65.45       -0.444979
+     1.1061     1.1600    67.27       -0.444537
+     1.1061     1.1600    69.09       -0.444048
+     1.1061     1.1600    70.91       -0.443569
+     1.1061     1.1600    72.73       -0.443143
+     1.1061     1.1600    74.55       -0.442801
+     1.1061     1.1600    76.36       -0.442568
+     1.1061     1.1600    78.18       -0.442458
+     1.1061     1.1600    80.00       -0.442483
+     1.1061     1.1600    81.82       -0.442648
+     1.1061     1.1600    83.64       -0.442953
+     1.1061     1.1600    85.45       -0.443398
+     1.1061     1.1600    87.27       -0.443979
+     1.1061     1.1600    89.09       -0.444690
+     1.1061     1.1600    90.91       -0.445523
+     1.1061     1.1600    92.73       -0.446471
+     1.1061     1.1600    94.55       -0.447524
+     1.1061     1.1600    96.36       -0.448674
+     1.1061     1.1600    98.18       -0.449911
+     1.1061     1.1600   100.00       -0.451226
+     1.1061     1.1600   101.82       -0.452608
+     1.1061     1.1600   103.64       -0.454049
+     1.1061     1.1600   105.45       -0.455540
+     1.1061     1.1600   107.27       -0.457073
+     1.1061     1.1600   109.09       -0.458638
+     1.1061     1.1600   110.91       -0.460228
+     1.1061     1.1600   112.73       -0.461836
+     1.1061     1.1600   114.55       -0.463454
+     1.1061     1.1600   116.36       -0.465076
+     1.1061     1.1600   118.18       -0.466697
+     1.1061     1.1600   120.00       -0.468309
+     1.1061     1.1600   121.82       -0.469909
+     1.1061     1.1600   123.64       -0.471491
+     1.1061     1.1600   125.45       -0.473050
+     1.1061     1.1600   127.27       -0.474583
+     1.1061     1.1600   129.09       -0.476086
+     1.1061     1.1600   130.91       -0.477555
+     1.1061     1.1600   132.73       -0.478988
+     1.1061     1.1600   134.55       -0.480381
+     1.1061     1.1600   136.36       -0.481732
+     1.1061     1.1600   138.18       -0.483039
+     1.1061     1.1600   140.00       -0.484300
+     1.1061     1.1600   141.82       -0.485513
+     1.1061     1.1600   143.64       -0.486676
+     1.1061     1.1600   145.45       -0.487788
+     1.1061     1.1600   147.27       -0.488848
+     1.1061     1.1600   149.09       -0.489855
+     1.1061     1.1600   150.91       -0.490808
+     1.1061     1.1600   152.73       -0.491705
+     1.1061     1.1600   154.55       -0.492547
+     1.1061     1.1600   156.36       -0.493333
+     1.1061     1.1600   158.18       -0.494062
+     1.1061     1.1600   160.00       -0.494734
+     1.1061     1.1600   161.82       -0.495348
+     1.1061     1.1600   163.64       -0.495904
+     1.1061     1.1600   165.45       -0.496402
+     1.1061     1.1600   167.27       -0.496842
+     1.1061     1.1600   169.09       -0.497224
+     1.1061     1.1600   170.91       -0.497547
+     1.1061     1.1600   172.73       -0.497812
+     1.1061     1.1600   174.55       -0.498017
+     1.1061     1.1600   176.36       -0.498164
+     1.1061     1.1600   178.18       -0.498253
+     1.1061     1.1600   180.00       -0.498282
+
+     1.1212     1.1600     0.00        5.915886
+     1.1212     1.1600     1.82        5.518496
+     1.1212     1.1600     3.64        4.778078
+     1.1212     1.1600     5.45        4.036511
+     1.1212     1.1600     7.27        3.367015
+     1.1212     1.1600     9.09        2.780276
+     1.1212     1.1600    10.91        2.272435
+     1.1212     1.1600    12.73        1.835903
+     1.1212     1.1600    14.55        1.462433
+     1.1212     1.1600    16.36        1.144115
+     1.1212     1.1600    18.18        0.873711
+     1.1212     1.1600    20.00        0.644739
+     1.1212     1.1600    21.82        0.451467
+     1.1212     1.1600    23.64        0.288862
+     1.1212     1.1600    25.45        0.152527
+     1.1212     1.1600    27.27        0.038636
+     1.1212     1.1600    29.09       -0.056129
+     1.1212     1.1600    30.91       -0.134641
+     1.1212     1.1600    32.73       -0.199379
+     1.1212     1.1600    34.55       -0.252478
+     1.1212     1.1600    36.36       -0.295774
+     1.1212     1.1600    38.18       -0.330840
+     1.1212     1.1600    40.00       -0.359025
+     1.1212     1.1600    41.82       -0.381478
+     1.1212     1.1600    43.64       -0.399179
+     1.1212     1.1600    45.45       -0.412962
+     1.1212     1.1600    47.27       -0.423532
+     1.1212     1.1600    49.09       -0.431486
+     1.1212     1.1600    50.91       -0.437328
+     1.1212     1.1600    52.73       -0.441479
+     1.1212     1.1600    54.55       -0.444294
+     1.1212     1.1600    56.36       -0.446067
+     1.1212     1.1600    58.18       -0.447042
+     1.1212     1.1600    60.00       -0.447422
+     1.1212     1.1600    61.82       -0.447372
+     1.1212     1.1600    63.64       -0.447028
+     1.1212     1.1600    65.45       -0.446499
+     1.1212     1.1600    67.27       -0.445871
+     1.1212     1.1600    69.09       -0.445215
+     1.1212     1.1600    70.91       -0.444584
+     1.1212     1.1600    72.73       -0.444019
+     1.1212     1.1600    74.55       -0.443551
+     1.1212     1.1600    76.36       -0.443202
+     1.1212     1.1600    78.18       -0.442987
+     1.1212     1.1600    80.00       -0.442915
+     1.1212     1.1600    81.82       -0.442991
+     1.1212     1.1600    83.64       -0.443214
+     1.1212     1.1600    85.45       -0.443584
+     1.1212     1.1600    87.27       -0.444094
+     1.1212     1.1600    89.09       -0.444739
+     1.1212     1.1600    90.91       -0.445512
+     1.1212     1.1600    92.73       -0.446403
+     1.1212     1.1600    94.55       -0.447403
+     1.1212     1.1600    96.36       -0.448503
+     1.1212     1.1600    98.18       -0.449693
+     1.1212     1.1600   100.00       -0.450963
+     1.1212     1.1600   101.82       -0.452304
+     1.1212     1.1600   103.64       -0.453707
+     1.1212     1.1600   105.45       -0.455161
+     1.1212     1.1600   107.27       -0.456658
+     1.1212     1.1600   109.09       -0.458190
+     1.1212     1.1600   110.91       -0.459750
+     1.1212     1.1600   112.73       -0.461328
+     1.1212     1.1600   114.55       -0.462919
+     1.1212     1.1600   116.36       -0.464515
+     1.1212     1.1600   118.18       -0.466110
+     1.1212     1.1600   120.00       -0.467700
+     1.1212     1.1600   121.82       -0.469277
+     1.1212     1.1600   123.64       -0.470838
+     1.1212     1.1600   125.45       -0.472378
+     1.1212     1.1600   127.27       -0.473892
+     1.1212     1.1600   129.09       -0.475377
+     1.1212     1.1600   130.91       -0.476830
+     1.1212     1.1600   132.73       -0.478246
+     1.1212     1.1600   134.55       -0.479625
+     1.1212     1.1600   136.36       -0.480962
+     1.1212     1.1600   138.18       -0.482256
+     1.1212     1.1600   140.00       -0.483504
+     1.1212     1.1600   141.82       -0.484705
+     1.1212     1.1600   143.64       -0.485858
+     1.1212     1.1600   145.45       -0.486960
+     1.1212     1.1600   147.27       -0.488010
+     1.1212     1.1600   149.09       -0.489008
+     1.1212     1.1600   150.91       -0.489952
+     1.1212     1.1600   152.73       -0.490842
+     1.1212     1.1600   154.55       -0.491677
+     1.1212     1.1600   156.36       -0.492456
+     1.1212     1.1600   158.18       -0.493179
+     1.1212     1.1600   160.00       -0.493845
+     1.1212     1.1600   161.82       -0.494454
+     1.1212     1.1600   163.64       -0.495006
+     1.1212     1.1600   165.45       -0.495500
+     1.1212     1.1600   167.27       -0.495937
+     1.1212     1.1600   169.09       -0.496315
+     1.1212     1.1600   170.91       -0.496636
+     1.1212     1.1600   172.73       -0.496898
+     1.1212     1.1600   174.55       -0.497102
+     1.1212     1.1600   176.36       -0.497248
+     1.1212     1.1600   178.18       -0.497336
+     1.1212     1.1600   180.00       -0.497365
+
+     1.1364     1.1600     0.00        6.359319
+     1.1364     1.1600     1.82        5.778732
+     1.1364     1.1600     3.64        4.906498
+     1.1364     1.1600     5.45        4.104032
+     1.1364     1.1600     7.27        3.402133
+     1.1364     1.1600     9.09        2.796343
+     1.1364     1.1600    10.91        2.276671
+     1.1364     1.1600    12.73        1.832620
+     1.1364     1.1600    14.55        1.454377
+     1.1364     1.1600    16.36        1.133114
+     1.1364     1.1600    18.18        0.861009
+     1.1364     1.1600    20.00        0.631199
+     1.1364     1.1600    21.82        0.437686
+     1.1364     1.1600    23.64        0.275254
+     1.1364     1.1600    25.45        0.139371
+     1.1364     1.1600    27.27        0.026116
+     1.1364     1.1600    29.09       -0.067901
+     1.1364     1.1600    30.91       -0.145604
+     1.1364     1.1600    32.73       -0.209507
+     1.1364     1.1600    34.55       -0.261774
+     1.1364     1.1600    36.36       -0.304259
+     1.1364     1.1600    38.18       -0.338548
+     1.1364     1.1600    40.00       -0.365997
+     1.1364     1.1600    41.82       -0.387761
+     1.1364     1.1600    43.64       -0.404823
+     1.1364     1.1600    45.45       -0.418015
+     1.1364     1.1600    47.27       -0.428044
+     1.1364     1.1600    49.09       -0.435503
+     1.1364     1.1600    50.91       -0.440895
+     1.1364     1.1600    52.73       -0.444638
+     1.1364     1.1600    54.55       -0.447083
+     1.1364     1.1600    56.36       -0.448521
+     1.1364     1.1600    58.18       -0.449195
+     1.1364     1.1600    60.00       -0.449304
+     1.1364     1.1600    61.82       -0.449009
+     1.1364     1.1600    63.64       -0.448444
+     1.1364     1.1600    65.45       -0.447715
+     1.1364     1.1600    67.27       -0.446907
+     1.1364     1.1600    69.09       -0.446088
+     1.1364     1.1600    70.91       -0.445309
+     1.1364     1.1600    72.73       -0.444610
+     1.1364     1.1600    74.55       -0.444020
+     1.1364     1.1600    76.36       -0.443560
+     1.1364     1.1600    78.18       -0.443243
+     1.1364     1.1600    80.00       -0.443078
+     1.1364     1.1600    81.82       -0.443067
+     1.1364     1.1600    83.64       -0.443212
+     1.1364     1.1600    85.45       -0.443507
+     1.1364     1.1600    87.27       -0.443949
+     1.1364     1.1600    89.09       -0.444531
+     1.1364     1.1600    90.91       -0.445244
+     1.1364     1.1600    92.73       -0.446080
+     1.1364     1.1600    94.55       -0.447028
+     1.1364     1.1600    96.36       -0.448080
+     1.1364     1.1600    98.18       -0.449224
+     1.1364     1.1600   100.00       -0.450452
+     1.1364     1.1600   101.82       -0.451752
+     1.1364     1.1600   103.64       -0.453116
+     1.1364     1.1600   105.45       -0.454534
+     1.1364     1.1600   107.27       -0.455997
+     1.1364     1.1600   109.09       -0.457497
+     1.1364     1.1600   110.91       -0.459026
+     1.1364     1.1600   112.73       -0.460575
+     1.1364     1.1600   114.55       -0.462139
+     1.1364     1.1600   116.36       -0.463709
+     1.1364     1.1600   118.18       -0.465280
+     1.1364     1.1600   120.00       -0.466846
+     1.1364     1.1600   121.82       -0.468402
+     1.1364     1.1600   123.64       -0.469942
+     1.1364     1.1600   125.45       -0.471462
+     1.1364     1.1600   127.27       -0.472957
+     1.1364     1.1600   129.09       -0.474425
+     1.1364     1.1600   130.91       -0.475861
+     1.1364     1.1600   132.73       -0.477262
+     1.1364     1.1600   134.55       -0.478626
+     1.1364     1.1600   136.36       -0.479949
+     1.1364     1.1600   138.18       -0.481230
+     1.1364     1.1600   140.00       -0.482466
+     1.1364     1.1600   141.82       -0.483655
+     1.1364     1.1600   143.64       -0.484797
+     1.1364     1.1600   145.45       -0.485888
+     1.1364     1.1600   147.27       -0.486929
+     1.1364     1.1600   149.09       -0.487918
+     1.1364     1.1600   150.91       -0.488854
+     1.1364     1.1600   152.73       -0.489736
+     1.1364     1.1600   154.55       -0.490564
+     1.1364     1.1600   156.36       -0.491336
+     1.1364     1.1600   158.18       -0.492053
+     1.1364     1.1600   160.00       -0.492714
+     1.1364     1.1600   161.82       -0.493318
+     1.1364     1.1600   163.64       -0.493865
+     1.1364     1.1600   165.45       -0.494356
+     1.1364     1.1600   167.27       -0.494789
+     1.1364     1.1600   169.09       -0.495164
+     1.1364     1.1600   170.91       -0.495482
+     1.1364     1.1600   172.73       -0.495743
+     1.1364     1.1600   174.55       -0.495945
+     1.1364     1.1600   176.36       -0.496090
+     1.1364     1.1600   178.18       -0.496177
+     1.1364     1.1600   180.00       -0.496206
+
+     1.1515     1.1600     0.00        6.832066
+     1.1515     1.1600     1.82        5.938701
+     1.1515     1.1600     3.64        4.969848
+     1.1515     1.1600     5.45        4.130478
+     1.1515     1.1600     7.27        3.409907
+     1.1515     1.1600     9.09        2.793450
+     1.1515     1.1600    10.91        2.267394
+     1.1515     1.1600    12.73        1.819528
+     1.1515     1.1600    14.55        1.439120
+     1.1515     1.1600    16.36        1.116791
+     1.1515     1.1600    18.18        0.844370
+     1.1515     1.1600    20.00        0.614753
+     1.1515     1.1600    21.82        0.421780
+     1.1515     1.1600    23.64        0.260112
+     1.1515     1.1600    25.45        0.125134
+     1.1515     1.1600    27.27        0.012861
+     1.1515     1.1600    29.09       -0.080142
+     1.1515     1.1600    30.91       -0.156830
+     1.1515     1.1600    32.73       -0.219743
+     1.1515     1.1600    34.55       -0.271059
+     1.1515     1.1600    36.36       -0.312643
+     1.1515     1.1600    38.18       -0.346087
+     1.1515     1.1600    40.00       -0.372751
+     1.1515     1.1600    41.82       -0.393790
+     1.1515     1.1600    43.64       -0.410186
+     1.1515     1.1600    45.45       -0.422771
+     1.1515     1.1600    47.27       -0.432247
+     1.1515     1.1600    49.09       -0.439206
+     1.1515     1.1600    50.91       -0.444145
+     1.1515     1.1600    52.73       -0.447480
+     1.1515     1.1600    54.55       -0.449558
+     1.1515     1.1600    56.36       -0.450666
+     1.1515     1.1600    58.18       -0.451043
+     1.1515     1.1600    60.00       -0.450885
+     1.1515     1.1600    61.82       -0.450350
+     1.1515     1.1600    63.64       -0.449570
+     1.1515     1.1600    65.45       -0.448647
+     1.1515     1.1600    67.27       -0.447665
+     1.1515     1.1600    69.09       -0.446688
+     1.1515     1.1600    70.91       -0.445766
+     1.1515     1.1600    72.73       -0.444937
+     1.1515     1.1600    74.55       -0.444230
+     1.1515     1.1600    76.36       -0.443662
+     1.1515     1.1600    78.18       -0.443247
+     1.1515     1.1600    80.00       -0.442991
+     1.1515     1.1600    81.82       -0.442898
+     1.1515     1.1600    83.64       -0.442965
+     1.1515     1.1600    85.45       -0.443190
+     1.1515     1.1600    87.27       -0.443566
+     1.1515     1.1600    89.09       -0.444086
+     1.1515     1.1600    90.91       -0.444742
+     1.1515     1.1600    92.73       -0.445523
+     1.1515     1.1600    94.55       -0.446421
+     1.1515     1.1600    96.36       -0.447425
+     1.1515     1.1600    98.18       -0.448525
+     1.1515     1.1600   100.00       -0.449710
+     1.1515     1.1600   101.82       -0.450971
+     1.1515     1.1600   103.64       -0.452297
+     1.1515     1.1600   105.45       -0.453680
+     1.1515     1.1600   107.27       -0.455110
+     1.1515     1.1600   109.09       -0.456578
+     1.1515     1.1600   110.91       -0.458076
+     1.1515     1.1600   112.73       -0.459598
+     1.1515     1.1600   114.55       -0.461134
+     1.1515     1.1600   116.36       -0.462679
+     1.1515     1.1600   118.18       -0.464226
+     1.1515     1.1600   120.00       -0.465769
+     1.1515     1.1600   121.82       -0.467303
+     1.1515     1.1600   123.64       -0.468822
+     1.1515     1.1600   125.45       -0.470323
+     1.1515     1.1600   127.27       -0.471800
+     1.1515     1.1600   129.09       -0.473250
+     1.1515     1.1600   130.91       -0.474670
+     1.1515     1.1600   132.73       -0.476056
+     1.1515     1.1600   134.55       -0.477405
+     1.1515     1.1600   136.36       -0.478714
+     1.1515     1.1600   138.18       -0.479982
+     1.1515     1.1600   140.00       -0.481205
+     1.1515     1.1600   141.82       -0.482383
+     1.1515     1.1600   143.64       -0.483514
+     1.1515     1.1600   145.45       -0.484596
+     1.1515     1.1600   147.27       -0.485627
+     1.1515     1.1600   149.09       -0.486607
+     1.1515     1.1600   150.91       -0.487535
+     1.1515     1.1600   152.73       -0.488409
+     1.1515     1.1600   154.55       -0.489230
+     1.1515     1.1600   156.36       -0.489996
+     1.1515     1.1600   158.18       -0.490706
+     1.1515     1.1600   160.00       -0.491361
+     1.1515     1.1600   161.82       -0.491961
+     1.1515     1.1600   163.64       -0.492503
+     1.1515     1.1600   165.45       -0.492990
+     1.1515     1.1600   167.27       -0.493419
+     1.1515     1.1600   169.09       -0.493792
+     1.1515     1.1600   170.91       -0.494107
+     1.1515     1.1600   172.73       -0.494365
+     1.1515     1.1600   174.55       -0.494566
+     1.1515     1.1600   176.36       -0.494710
+     1.1515     1.1600   178.18       -0.494796
+     1.1515     1.1600   180.00       -0.494825
+
+     1.1667     1.1600     0.00        6.886956
+     1.1667     1.1600     1.82        5.938023
+     1.1667     1.1600     3.64        4.958135
+     1.1667     1.1600     5.45        4.113358
+     1.1667     1.1600     7.27        3.389676
+     1.1667     1.1600     9.09        2.771508
+     1.1667     1.1600    10.91        2.244709
+     1.1667     1.1600    12.73        1.796793
+     1.1667     1.1600    14.55        1.416836
+     1.1667     1.1600    16.36        1.095313
+     1.1667     1.1600    18.18        0.823940
+     1.1667     1.1600    20.00        0.595530
+     1.1667     1.1600    21.82        0.403855
+     1.1667     1.1600    23.64        0.243525
+     1.1667     1.1600    25.45        0.109887
+     1.1667     1.1600    27.27       -0.001071
+     1.1667     1.1600    29.09       -0.092806
+     1.1667     1.1600    30.91       -0.168286
+     1.1667     1.1600    32.73       -0.230062
+     1.1667     1.1600    34.55       -0.280316
+     1.1667     1.1600    36.36       -0.320915
+     1.1667     1.1600    38.18       -0.353453
+     1.1667     1.1600    40.00       -0.379286
+     1.1667     1.1600    41.82       -0.399568
+     1.1667     1.1600    43.64       -0.415277
+     1.1667     1.1600    45.45       -0.427240
+     1.1667     1.1600    47.27       -0.436155
+     1.1667     1.1600    49.09       -0.442609
+     1.1667     1.1600    50.91       -0.447094
+     1.1667     1.1600    52.73       -0.450022
+     1.1667     1.1600    54.55       -0.451735
+     1.1667     1.1600    56.36       -0.452518
+     1.1667     1.1600    58.18       -0.452603
+     1.1667     1.1600    60.00       -0.452184
+     1.1667     1.1600    61.82       -0.451415
+     1.1667     1.1600    63.64       -0.450425
+     1.1667     1.1600    65.45       -0.449314
+     1.1667     1.1600    67.27       -0.448162
+     1.1667     1.1600    69.09       -0.447033
+     1.1667     1.1600    70.91       -0.445973
+     1.1667     1.1600    72.73       -0.445020
+     1.1667     1.1600    74.55       -0.444198
+     1.1667     1.1600    76.36       -0.443527
+     1.1667     1.1600    78.18       -0.443017
+     1.1667     1.1600    80.00       -0.442674
+     1.1667     1.1600    81.82       -0.442501
+     1.1667     1.1600    83.64       -0.442494
+     1.1667     1.1600    85.45       -0.442650
+     1.1667     1.1600    87.27       -0.442962
+     1.1667     1.1600    89.09       -0.443422
+     1.1667     1.1600    90.91       -0.444022
+     1.1667     1.1600    92.73       -0.444752
+     1.1667     1.1600    94.55       -0.445600
+     1.1667     1.1600    96.36       -0.446558
+     1.1667     1.1600    98.18       -0.447614
+     1.1667     1.1600   100.00       -0.448759
+     1.1667     1.1600   101.82       -0.449980
+     1.1667     1.1600   103.64       -0.451270
+     1.1667     1.1600   105.45       -0.452618
+     1.1667     1.1600   107.27       -0.454015
+     1.1667     1.1600   109.09       -0.455452
+     1.1667     1.1600   110.91       -0.456921
+     1.1667     1.1600   112.73       -0.458414
+     1.1667     1.1600   114.55       -0.459924
+     1.1667     1.1600   116.36       -0.461444
+     1.1667     1.1600   118.18       -0.462967
+     1.1667     1.1600   120.00       -0.464487
+     1.1667     1.1600   121.82       -0.466000
+     1.1667     1.1600   123.64       -0.467499
+     1.1667     1.1600   125.45       -0.468980
+     1.1667     1.1600   127.27       -0.470440
+     1.1667     1.1600   129.09       -0.471873
+     1.1667     1.1600   130.91       -0.473276
+     1.1667     1.1600   132.73       -0.474646
+     1.1667     1.1600   134.55       -0.475981
+     1.1667     1.1600   136.36       -0.477276
+     1.1667     1.1600   138.18       -0.478531
+     1.1667     1.1600   140.00       -0.479743
+     1.1667     1.1600   141.82       -0.480909
+     1.1667     1.1600   143.64       -0.482029
+     1.1667     1.1600   145.45       -0.483101
+     1.1667     1.1600   147.27       -0.484122
+     1.1667     1.1600   149.09       -0.485094
+     1.1667     1.1600   150.91       -0.486013
+     1.1667     1.1600   152.73       -0.486880
+     1.1667     1.1600   154.55       -0.487693
+     1.1667     1.1600   156.36       -0.488452
+     1.1667     1.1600   158.18       -0.489157
+     1.1667     1.1600   160.00       -0.489807
+     1.1667     1.1600   161.82       -0.490401
+     1.1667     1.1600   163.64       -0.490939
+     1.1667     1.1600   165.45       -0.491422
+     1.1667     1.1600   167.27       -0.491848
+     1.1667     1.1600   169.09       -0.492217
+     1.1667     1.1600   170.91       -0.492530
+     1.1667     1.1600   172.73       -0.492786
+     1.1667     1.1600   174.55       -0.492985
+     1.1667     1.1600   176.36       -0.493128
+     1.1667     1.1600   178.18       -0.493213
+     1.1667     1.1600   180.00       -0.493242
+
+     1.1818     1.1600     0.00        6.401694
+     1.1818     1.1600     1.82        5.774952
+     1.1818     1.1600     3.64        4.872458
+     1.1818     1.1600     5.45        4.053664
+     1.1818     1.1600     7.27        3.342219
+     1.1818     1.1600     9.09        2.731126
+     1.1818     1.1600    10.91        2.209096
+     1.1818     1.1600    12.73        1.764799
+     1.1818     1.1600    14.55        1.387833
+     1.1818     1.1600    16.36        1.068925
+     1.1818     1.1600    18.18        0.799919
+     1.1818     1.1600    20.00        0.573689
+     1.1818     1.1600    21.82        0.384038
+     1.1818     1.1600    23.64        0.225595
+     1.1818     1.1600    25.45        0.093713
+     1.1818     1.1600    27.27       -0.015616
+     1.1818     1.1600    29.09       -0.105843
+     1.1818     1.1600    30.91       -0.179935
+     1.1818     1.1600    32.73       -0.240436
+     1.1818     1.1600    34.55       -0.289525
+     1.1818     1.1600    36.36       -0.329063
+     1.1818     1.1600    38.18       -0.360638
+     1.1818     1.1600    40.00       -0.385600
+     1.1818     1.1600    41.82       -0.405096
+     1.1818     1.1600    43.64       -0.420099
+     1.1818     1.1600    45.45       -0.431428
+     1.1818     1.1600    47.27       -0.439775
+     1.1818     1.1600    49.09       -0.445721
+     1.1818     1.1600    50.91       -0.449754
+     1.1818     1.1600    52.73       -0.452278
+     1.1818     1.1600    54.55       -0.453631
+     1.1818     1.1600    56.36       -0.454092
+     1.1818     1.1600    58.18       -0.453892
+     1.1818     1.1600    60.00       -0.453217
+     1.1818     1.1600    61.82       -0.452221
+     1.1818     1.1600    63.64       -0.451027
+     1.1818     1.1600    65.45       -0.449733
+     1.1818     1.1600    67.27       -0.448418
+     1.1818     1.1600    69.09       -0.447141
+     1.1818     1.1600    70.91       -0.445948
+     1.1818     1.1600    72.73       -0.444875
+     1.1818     1.1600    74.55       -0.443944
+     1.1818     1.1600    76.36       -0.443173
+     1.1818     1.1600    78.18       -0.442571
+     1.1818     1.1600    80.00       -0.442145
+     1.1818     1.1600    81.82       -0.441894
+     1.1818     1.1600    83.64       -0.441815
+     1.1818     1.1600    85.45       -0.441905
+     1.1818     1.1600    87.27       -0.442155
+     1.1818     1.1600    89.09       -0.442558
+     1.1818     1.1600    90.91       -0.443103
+     1.1818     1.1600    92.73       -0.443782
+     1.1818     1.1600    94.55       -0.444583
+     1.1818     1.1600    96.36       -0.445496
+     1.1818     1.1600    98.18       -0.446510
+     1.1818     1.1600   100.00       -0.447614
+     1.1818     1.1600   101.82       -0.448798
+     1.1818     1.1600   103.64       -0.450052
+     1.1818     1.1600   105.45       -0.451365
+     1.1818     1.1600   107.27       -0.452730
+     1.1818     1.1600   109.09       -0.454136
+     1.1818     1.1600   110.91       -0.455577
+     1.1818     1.1600   112.73       -0.457042
+     1.1818     1.1600   114.55       -0.458526
+     1.1818     1.1600   116.36       -0.460021
+     1.1818     1.1600   118.18       -0.461521
+     1.1818     1.1600   120.00       -0.463019
+     1.1818     1.1600   121.82       -0.464510
+     1.1818     1.1600   123.64       -0.465990
+     1.1818     1.1600   125.45       -0.467452
+     1.1818     1.1600   127.27       -0.468893
+     1.1818     1.1600   129.09       -0.470309
+     1.1818     1.1600   130.91       -0.471697
+     1.1818     1.1600   132.73       -0.473052
+     1.1818     1.1600   134.55       -0.474372
+     1.1818     1.1600   136.36       -0.475654
+     1.1818     1.1600   138.18       -0.476896
+     1.1818     1.1600   140.00       -0.478095
+     1.1818     1.1600   141.82       -0.479251
+     1.1818     1.1600   143.64       -0.480360
+     1.1818     1.1600   145.45       -0.481421
+     1.1818     1.1600   147.27       -0.482434
+     1.1818     1.1600   149.09       -0.483396
+     1.1818     1.1600   150.91       -0.484307
+     1.1818     1.1600   152.73       -0.485166
+     1.1818     1.1600   154.55       -0.485973
+     1.1818     1.1600   156.36       -0.486725
+     1.1818     1.1600   158.18       -0.487424
+     1.1818     1.1600   160.00       -0.488068
+     1.1818     1.1600   161.82       -0.488657
+     1.1818     1.1600   163.64       -0.489191
+     1.1818     1.1600   165.45       -0.489670
+     1.1818     1.1600   167.27       -0.490092
+     1.1818     1.1600   169.09       -0.490458
+     1.1818     1.1600   170.91       -0.490769
+     1.1818     1.1600   172.73       -0.491023
+     1.1818     1.1600   174.55       -0.491221
+     1.1818     1.1600   176.36       -0.491362
+     1.1818     1.1600   178.18       -0.491447
+     1.1818     1.1600   180.00       -0.491475
+
+     1.1970     1.1600     0.00        5.945859
+     1.1970     1.1600     1.82        5.508695
+     1.1970     1.1600     3.64        4.724413
+     1.1970     1.1600     5.45        3.955600
+     1.1970     1.1600     7.27        3.269624
+     1.1970     1.1600     9.09        2.673543
+     1.1970     1.1600    10.91        2.161372
+     1.1970     1.1600    12.73        1.724119
+     1.1970     1.1600    14.55        1.352531
+     1.1970     1.1600    16.36        1.037946
+     1.1970     1.1600    18.18        0.772550
+     1.1970     1.1600    20.00        0.549418
+     1.1970     1.1600    21.82        0.362479
+     1.1970     1.1600    23.64        0.206437
+     1.1970     1.1600    25.45        0.076699
+     1.1970     1.1600    27.27       -0.030706
+     1.1970     1.1600    29.09       -0.119203
+     1.1970     1.1600    30.91       -0.191737
+     1.1970     1.1600    32.73       -0.250837
+     1.1970     1.1600    34.55       -0.298666
+     1.1970     1.1600    36.36       -0.337074
+     1.1970     1.1600    38.18       -0.367635
+     1.1970     1.1600    40.00       -0.391691
+     1.1970     1.1600    41.82       -0.410377
+     1.1970     1.1600    43.64       -0.424657
+     1.1970     1.1600    45.45       -0.435343
+     1.1970     1.1600    47.27       -0.443118
+     1.1970     1.1600    49.09       -0.448556
+     1.1970     1.1600    50.91       -0.452137
+     1.1970     1.1600    52.73       -0.454261
+     1.1970     1.1600    54.55       -0.455258
+     1.1970     1.1600    56.36       -0.455404
+     1.1970     1.1600    58.18       -0.454924
+     1.1970     1.1600    60.00       -0.454000
+     1.1970     1.1600    61.82       -0.452783
+     1.1970     1.1600    63.64       -0.451391
+     1.1970     1.1600    65.45       -0.449921
+     1.1970     1.1600    67.27       -0.448448
+     1.1970     1.1600    69.09       -0.447029
+     1.1970     1.1600    70.91       -0.445708
+     1.1970     1.1600    72.73       -0.444518
+     1.1970     1.1600    74.55       -0.443482
+     1.1970     1.1600    76.36       -0.442615
+     1.1970     1.1600    78.18       -0.441926
+     1.1970     1.1600    80.00       -0.441419
+     1.1970     1.1600    81.82       -0.441093
+     1.1970     1.1600    83.64       -0.440946
+     1.1970     1.1600    85.45       -0.440971
+     1.1970     1.1600    87.27       -0.441162
+     1.1970     1.1600    89.09       -0.441509
+     1.1970     1.1600    90.91       -0.442002
+     1.1970     1.1600    92.73       -0.442631
+     1.1970     1.1600    94.55       -0.443386
+     1.1970     1.1600    96.36       -0.444255
+     1.1970     1.1600    98.18       -0.445228
+     1.1970     1.1600   100.00       -0.446293
+     1.1970     1.1600   101.82       -0.447439
+     1.1970     1.1600   103.64       -0.448658
+     1.1970     1.1600   105.45       -0.449939
+     1.1970     1.1600   107.27       -0.451272
+     1.1970     1.1600   109.09       -0.452648
+     1.1970     1.1600   110.91       -0.454060
+     1.1970     1.1600   112.73       -0.455499
+     1.1970     1.1600   114.55       -0.456957
+     1.1970     1.1600   116.36       -0.458427
+     1.1970     1.1600   118.18       -0.459904
+     1.1970     1.1600   120.00       -0.461381
+     1.1970     1.1600   121.82       -0.462851
+     1.1970     1.1600   123.64       -0.464311
+     1.1970     1.1600   125.45       -0.465755
+     1.1970     1.1600   127.27       -0.467178
+     1.1970     1.1600   129.09       -0.468578
+     1.1970     1.1600   130.91       -0.469949
+     1.1970     1.1600   132.73       -0.471289
+     1.1970     1.1600   134.55       -0.472595
+     1.1970     1.1600   136.36       -0.473864
+     1.1970     1.1600   138.18       -0.475093
+     1.1970     1.1600   140.00       -0.476280
+     1.1970     1.1600   141.82       -0.477424
+     1.1970     1.1600   143.64       -0.478523
+     1.1970     1.1600   145.45       -0.479574
+     1.1970     1.1600   147.27       -0.480577
+     1.1970     1.1600   149.09       -0.481531
+     1.1970     1.1600   150.91       -0.482434
+     1.1970     1.1600   152.73       -0.483286
+     1.1970     1.1600   154.55       -0.484085
+     1.1970     1.1600   156.36       -0.484831
+     1.1970     1.1600   158.18       -0.485524
+     1.1970     1.1600   160.00       -0.486162
+     1.1970     1.1600   161.82       -0.486747
+     1.1970     1.1600   163.64       -0.487276
+     1.1970     1.1600   165.45       -0.487750
+     1.1970     1.1600   167.27       -0.488169
+     1.1970     1.1600   169.09       -0.488533
+     1.1970     1.1600   170.91       -0.488841
+     1.1970     1.1600   172.73       -0.489092
+     1.1970     1.1600   174.55       -0.489289
+     1.1970     1.1600   176.36       -0.489429
+     1.1970     1.1600   178.18       -0.489513
+     1.1970     1.1600   180.00       -0.489541
+
+     1.2121     1.1600     0.00        5.517772
+     1.2121     1.1600     1.82        5.195666
+     1.2121     1.1600     3.64        4.530659
+     1.2121     1.1600     5.45        3.825542
+     1.2121     1.1600     7.27        3.174974
+     1.2121     1.1600     9.09        2.600499
+     1.2121     1.1600    10.91        2.102626
+     1.2121     1.1600    12.73        1.675485
+     1.2121     1.1600    14.55        1.311447
+     1.2121     1.1600    16.36        1.002752
+     1.2121     1.1600    18.18        0.742114
+     1.2121     1.1600    20.00        0.522932
+     1.2121     1.1600    21.82        0.339339
+     1.2121     1.1600    23.64        0.186176
+     1.2121     1.1600    25.45        0.058943
+     1.2121     1.1600    27.27       -0.046266
+     1.2121     1.1600    29.09       -0.132827
+     1.2121     1.1600    30.91       -0.203651
+     1.2121     1.1600    32.73       -0.261235
+     1.2121     1.1600    34.55       -0.307719
+     1.2121     1.1600    36.36       -0.344934
+     1.2121     1.1600    38.18       -0.374438
+     1.2121     1.1600    40.00       -0.397556
+     1.2121     1.1600    41.82       -0.415412
+     1.2121     1.1600    43.64       -0.428956
+     1.2121     1.1600    45.45       -0.438992
+     1.2121     1.1600    47.27       -0.446192
+     1.2121     1.1600    49.09       -0.451123
+     1.2121     1.1600    50.91       -0.454256
+     1.2121     1.1600    52.73       -0.455983
+     1.2121     1.1600    54.55       -0.456631
+     1.2121     1.1600    56.36       -0.456468
+     1.2121     1.1600    58.18       -0.455714
+     1.2121     1.1600    60.00       -0.454549
+     1.2121     1.1600    61.82       -0.453116
+     1.2121     1.1600    63.64       -0.451534
+     1.2121     1.1600    65.45       -0.449893
+     1.2121     1.1600    67.27       -0.448267
+     1.2121     1.1600    69.09       -0.446712
+     1.2121     1.1600    70.91       -0.445268
+     1.2121     1.1600    72.73       -0.443967
+     1.2121     1.1600    74.55       -0.442830
+     1.2121     1.1600    76.36       -0.441870
+     1.2121     1.1600    78.18       -0.441097
+     1.2121     1.1600    80.00       -0.440512
+     1.2121     1.1600    81.82       -0.440114
+     1.2121     1.1600    83.64       -0.439901
+     1.2121     1.1600    85.45       -0.439864
+     1.2121     1.1600    87.27       -0.439997
+     1.2121     1.1600    89.09       -0.440290
+     1.2121     1.1600    90.91       -0.440733
+     1.2121     1.1600    92.73       -0.441314
+     1.2121     1.1600    94.55       -0.442024
+     1.2121     1.1600    96.36       -0.442851
+     1.2121     1.1600    98.18       -0.443783
+     1.2121     1.1600   100.00       -0.444810
+     1.2121     1.1600   101.82       -0.445921
+     1.2121     1.1600   103.64       -0.447105
+     1.2121     1.1600   105.45       -0.448353
+     1.2121     1.1600   107.27       -0.449655
+     1.2121     1.1600   109.09       -0.451002
+     1.2121     1.1600   110.91       -0.452386
+     1.2121     1.1600   112.73       -0.453799
+     1.2121     1.1600   114.55       -0.455232
+     1.2121     1.1600   116.36       -0.456678
+     1.2121     1.1600   118.18       -0.458132
+     1.2121     1.1600   120.00       -0.459587
+     1.2121     1.1600   121.82       -0.461038
+     1.2121     1.1600   123.64       -0.462478
+     1.2121     1.1600   125.45       -0.463903
+     1.2121     1.1600   127.27       -0.465309
+     1.2121     1.1600   129.09       -0.466692
+     1.2121     1.1600   130.91       -0.468048
+     1.2121     1.1600   132.73       -0.469373
+     1.2121     1.1600   134.55       -0.470665
+     1.2121     1.1600   136.36       -0.471921
+     1.2121     1.1600   138.18       -0.473137
+     1.2121     1.1600   140.00       -0.474313
+     1.2121     1.1600   141.82       -0.475446
+     1.2121     1.1600   143.64       -0.476534
+     1.2121     1.1600   145.45       -0.477575
+     1.2121     1.1600   147.27       -0.478569
+     1.2121     1.1600   149.09       -0.479514
+     1.2121     1.1600   150.91       -0.480409
+     1.2121     1.1600   152.73       -0.481253
+     1.2121     1.1600   154.55       -0.482045
+     1.2121     1.1600   156.36       -0.482785
+     1.2121     1.1600   158.18       -0.483472
+     1.2121     1.1600   160.00       -0.484105
+     1.2121     1.1600   161.82       -0.484684
+     1.2121     1.1600   163.64       -0.485209
+     1.2121     1.1600   165.45       -0.485680
+     1.2121     1.1600   167.27       -0.486095
+     1.2121     1.1600   169.09       -0.486456
+     1.2121     1.1600   170.91       -0.486761
+     1.2121     1.1600   172.73       -0.487011
+     1.2121     1.1600   174.55       -0.487205
+     1.2121     1.1600   176.36       -0.487344
+     1.2121     1.1600   178.18       -0.487427
+     1.2121     1.1600   180.00       -0.487455
+
+     1.2273     1.1600     0.00        5.115845
+     1.2273     1.1600     1.82        4.867982
+     1.2273     1.1600     3.64        4.307428
+     1.2273     1.1600     5.45        3.670747
+     1.2273     1.1600     7.27        3.061938
+     1.2273     1.1600     9.09        2.514076
+     1.2273     1.1600    10.91        2.034148
+     1.2273     1.1600    12.73        1.619750
+     1.2273     1.1600    14.55        1.265172
+     1.2273     1.1600    16.36        0.963766
+     1.2273     1.1600    18.18        0.708921
+     1.2273     1.1600    20.00        0.494461
+     1.2273     1.1600    21.82        0.314793
+     1.2273     1.1600    23.64        0.164945
+     1.2273     1.1600    25.45        0.040545
+     1.2273     1.1600    27.27       -0.062220
+     1.2273     1.1600    29.09       -0.146661
+     1.2273     1.1600    30.91       -0.215634
+     1.2273     1.1600    32.73       -0.271598
+     1.2273     1.1600    34.55       -0.316663
+     1.2273     1.1600    36.36       -0.352630
+     1.2273     1.1600    38.18       -0.381038
+     1.2273     1.1600    40.00       -0.403192
+     1.2273     1.1600    41.82       -0.420201
+     1.2273     1.1600    43.64       -0.433001
+     1.2273     1.1600    45.45       -0.442382
+     1.2273     1.1600    47.27       -0.449007
+     1.2273     1.1600    49.09       -0.453432
+     1.2273     1.1600    50.91       -0.456120
+     1.2273     1.1600    52.73       -0.457458
+     1.2273     1.1600    54.55       -0.457763
+     1.2273     1.1600    56.36       -0.457297
+     1.2273     1.1600    58.18       -0.456277
+     1.2273     1.1600    60.00       -0.454876
+     1.2273     1.1600    61.82       -0.453235
+     1.2273     1.1600    63.64       -0.451468
+     1.2273     1.1600    65.45       -0.449664
+     1.2273     1.1600    67.27       -0.447891
+     1.2273     1.1600    69.09       -0.446204
+     1.2273     1.1600    70.91       -0.444642
+     1.2273     1.1600    72.73       -0.443234
+     1.2273     1.1600    74.55       -0.442000
+     1.2273     1.1600    76.36       -0.440952
+     1.2273     1.1600    78.18       -0.440098
+     1.2273     1.1600    80.00       -0.439438
+     1.2273     1.1600    81.82       -0.438972
+     1.2273     1.1600    83.64       -0.438694
+     1.2273     1.1600    85.45       -0.438598
+     1.2273     1.1600    87.27       -0.438675
+     1.2273     1.1600    89.09       -0.438916
+     1.2273     1.1600    90.91       -0.439310
+     1.2273     1.1600    92.73       -0.439845
+     1.2273     1.1600    94.55       -0.440511
+     1.2273     1.1600    96.36       -0.441296
+     1.2273     1.1600    98.18       -0.442190
+     1.2273     1.1600   100.00       -0.443179
+     1.2273     1.1600   101.82       -0.444255
+     1.2273     1.1600   103.64       -0.445406
+     1.2273     1.1600   105.45       -0.446622
+     1.2273     1.1600   107.27       -0.447894
+     1.2273     1.1600   109.09       -0.449213
+     1.2273     1.1600   110.91       -0.450570
+     1.2273     1.1600   112.73       -0.451956
+     1.2273     1.1600   114.55       -0.453365
+     1.2273     1.1600   116.36       -0.454788
+     1.2273     1.1600   118.18       -0.456220
+     1.2273     1.1600   120.00       -0.457654
+     1.2273     1.1600   121.82       -0.459084
+     1.2273     1.1600   123.64       -0.460505
+     1.2273     1.1600   125.45       -0.461912
+     1.2273     1.1600   127.27       -0.463301
+     1.2273     1.1600   129.09       -0.464668
+     1.2273     1.1600   130.91       -0.466008
+     1.2273     1.1600   132.73       -0.467319
+     1.2273     1.1600   134.55       -0.468597
+     1.2273     1.1600   136.36       -0.469839
+     1.2273     1.1600   138.18       -0.471044
+     1.2273     1.1600   140.00       -0.472208
+     1.2273     1.1600   141.82       -0.473330
+     1.2273     1.1600   143.64       -0.474407
+     1.2273     1.1600   145.45       -0.475439
+     1.2273     1.1600   147.27       -0.476424
+     1.2273     1.1600   149.09       -0.477360
+     1.2273     1.1600   150.91       -0.478247
+     1.2273     1.1600   152.73       -0.479083
+     1.2273     1.1600   154.55       -0.479869
+     1.2273     1.1600   156.36       -0.480602
+     1.2273     1.1600   158.18       -0.481283
+     1.2273     1.1600   160.00       -0.481911
+     1.2273     1.1600   161.82       -0.482485
+     1.2273     1.1600   163.64       -0.483006
+     1.2273     1.1600   165.45       -0.483472
+     1.2273     1.1600   167.27       -0.483884
+     1.2273     1.1600   169.09       -0.484241
+     1.2273     1.1600   170.91       -0.484544
+     1.2273     1.1600   172.73       -0.484792
+     1.2273     1.1600   174.55       -0.484985
+     1.2273     1.1600   176.36       -0.485123
+     1.2273     1.1600   178.18       -0.485205
+     1.2273     1.1600   180.00       -0.485233
+
+     1.2424     1.1600     0.00        4.738579
+     1.2424     1.1600     1.82        4.541522
+     1.2424     1.1600     3.64        4.067798
+     1.2424     1.1600     5.45        3.498281
+     1.2424     1.1600     7.27        2.934373
+     1.2424     1.1600     9.09        2.416530
+     1.2424     1.1600    10.91        1.957348
+     1.2424     1.1600    12.73        1.557843
+     1.2424     1.1600    14.55        1.214344
+     1.2424     1.1600    16.36        0.921442
+     1.2424     1.1600    18.18        0.673302
+     1.2424     1.1600    20.00        0.464249
+     1.2424     1.1600    21.82        0.289023
+     1.2424     1.1600    23.64        0.142881
+     1.2424     1.1600    25.45        0.021609
+     1.2424     1.1600    27.27       -0.078491
+     1.2424     1.1600    29.09       -0.160644
+     1.2424     1.1600    30.91       -0.227644
+     1.2424     1.1600    32.73       -0.281898
+     1.2424     1.1600    34.55       -0.325476
+     1.2424     1.1600    36.36       -0.360149
+     1.2424     1.1600    38.18       -0.387428
+     1.2424     1.1600    40.00       -0.408597
+     1.2424     1.1600    41.82       -0.424745
+     1.2424     1.1600    43.64       -0.436794
+     1.2424     1.1600    45.45       -0.445518
+     1.2424     1.1600    47.27       -0.451569
+     1.2424     1.1600    49.09       -0.455493
+     1.2424     1.1600    50.91       -0.457742
+     1.2424     1.1600    52.73       -0.458696
+     1.2424     1.1600    54.55       -0.458664
+     1.2424     1.1600    56.36       -0.457904
+     1.2424     1.1600    58.18       -0.456624
+     1.2424     1.1600    60.00       -0.454995
+     1.2424     1.1600    61.82       -0.453153
+     1.2424     1.1600    63.64       -0.451208
+     1.2424     1.1600    65.45       -0.449245
+     1.2424     1.1600    67.27       -0.447332
+     1.2424     1.1600    69.09       -0.445519
+     1.2424     1.1600    70.91       -0.443843
+     1.2424     1.1600    72.73       -0.442333
+     1.2424     1.1600    74.55       -0.441006
+     1.2424     1.1600    76.36       -0.439874
+     1.2424     1.1600    78.18       -0.438941
+     1.2424     1.1600    80.00       -0.438210
+     1.2424     1.1600    81.82       -0.437678
+     1.2424     1.1600    83.64       -0.437339
+     1.2424     1.1600    85.45       -0.437185
+     1.2424     1.1600    87.27       -0.437209
+     1.2424     1.1600    89.09       -0.437399
+     1.2424     1.1600    90.91       -0.437746
+     1.2424     1.1600    92.73       -0.438236
+     1.2424     1.1600    94.55       -0.438860
+     1.2424     1.1600    96.36       -0.439606
+     1.2424     1.1600    98.18       -0.440461
+     1.2424     1.1600   100.00       -0.441414
+     1.2424     1.1600   101.82       -0.442456
+     1.2424     1.1600   103.64       -0.443574
+     1.2424     1.1600   105.45       -0.444760
+     1.2424     1.1600   107.27       -0.446003
+     1.2424     1.1600   109.09       -0.447293
+     1.2424     1.1600   110.91       -0.448623
+     1.2424     1.1600   112.73       -0.449984
+     1.2424     1.1600   114.55       -0.451369
+     1.2424     1.1600   116.36       -0.452769
+     1.2424     1.1600   118.18       -0.454179
+     1.2424     1.1600   120.00       -0.455593
+     1.2424     1.1600   121.82       -0.457003
+     1.2424     1.1600   123.64       -0.458406
+     1.2424     1.1600   125.45       -0.459795
+     1.2424     1.1600   127.27       -0.461167
+     1.2424     1.1600   129.09       -0.462518
+     1.2424     1.1600   130.91       -0.463843
+     1.2424     1.1600   132.73       -0.465140
+     1.2424     1.1600   134.55       -0.466404
+     1.2424     1.1600   136.36       -0.467633
+     1.2424     1.1600   138.18       -0.468826
+     1.2424     1.1600   140.00       -0.469978
+     1.2424     1.1600   141.82       -0.471089
+     1.2424     1.1600   143.64       -0.472156
+     1.2424     1.1600   145.45       -0.473178
+     1.2424     1.1600   147.27       -0.474154
+     1.2424     1.1600   149.09       -0.475082
+     1.2424     1.1600   150.91       -0.475961
+     1.2424     1.1600   152.73       -0.476790
+     1.2424     1.1600   154.55       -0.477568
+     1.2424     1.1600   156.36       -0.478295
+     1.2424     1.1600   158.18       -0.478970
+     1.2424     1.1600   160.00       -0.479593
+     1.2424     1.1600   161.82       -0.480162
+     1.2424     1.1600   163.64       -0.480678
+     1.2424     1.1600   165.45       -0.481141
+     1.2424     1.1600   167.27       -0.481549
+     1.2424     1.1600   169.09       -0.481904
+     1.2424     1.1600   170.91       -0.482204
+     1.2424     1.1600   172.73       -0.482450
+     1.2424     1.1600   174.55       -0.482641
+     1.2424     1.1600   176.36       -0.482778
+     1.2424     1.1600   178.18       -0.482860
+     1.2424     1.1600   180.00       -0.482887
+
+     1.2576     1.1600     0.00        4.384555
+     1.2576     1.1600     1.82        4.223994
+     1.2576     1.1600     3.64        3.821275
+     1.2576     1.1600     5.45        3.314379
+     1.2576     1.1600     7.27        2.796015
+     1.2576     1.1600     9.09        2.310147
+     1.2576     1.1600    10.91        1.873685
+     1.2576     1.1600    12.73        1.490736
+     1.2576     1.1600    14.55        1.159632
+     1.2576     1.1600    16.36        0.876253
+     1.2576     1.1600    18.18        0.635599
+     1.2576     1.1600    20.00        0.432548
+     1.2576     1.1600    21.82        0.262217
+     1.2576     1.1600    23.64        0.120124
+     1.2576     1.1600    25.45        0.002239
+     1.2576     1.1600    27.27       -0.095001
+     1.2576     1.1600    29.09       -0.174721
+     1.2576     1.1600    30.91       -0.239638
+     1.2576     1.1600    32.73       -0.292103
+     1.2576     1.1600    34.55       -0.334138
+     1.2576     1.1600    36.36       -0.367477
+     1.2576     1.1600    38.18       -0.393600
+     1.2576     1.1600    40.00       -0.413767
+     1.2576     1.1600    41.82       -0.429046
+     1.2576     1.1600    43.64       -0.440339
+     1.2576     1.1600    45.45       -0.448407
+     1.2576     1.1600    47.27       -0.453887
+     1.2576     1.1600    49.09       -0.457314
+     1.2576     1.1600    50.91       -0.459131
+     1.2576     1.1600    52.73       -0.459707
+     1.2576     1.1600    54.55       -0.459347
+     1.2576     1.1600    56.36       -0.458299
+     1.2576     1.1600    58.18       -0.456768
+     1.2576     1.1600    60.00       -0.454918
+     1.2576     1.1600    61.82       -0.452882
+     1.2576     1.1600    63.64       -0.450766
+     1.2576     1.1600    65.45       -0.448651
+     1.2576     1.1600    67.27       -0.446602
+     1.2576     1.1600    69.09       -0.444668
+     1.2576     1.1600    70.91       -0.442884
+     1.2576     1.1600    72.73       -0.441276
+     1.2576     1.1600    74.55       -0.439860
+     1.2576     1.1600    76.36       -0.438647
+     1.2576     1.1600    78.18       -0.437640
+     1.2576     1.1600    80.00       -0.436841
+     1.2576     1.1600    81.82       -0.436245
+     1.2576     1.1600    83.64       -0.435847
+     1.2576     1.1600    85.45       -0.435639
+     1.2576     1.1600    87.27       -0.435611
+     1.2576     1.1600    89.09       -0.435752
+     1.2576     1.1600    90.91       -0.436053
+     1.2576     1.1600    92.73       -0.436500
+     1.2576     1.1600    94.55       -0.437083
+     1.2576     1.1600    96.36       -0.437790
+     1.2576     1.1600    98.18       -0.438608
+     1.2576     1.1600   100.00       -0.439527
+     1.2576     1.1600   101.82       -0.440535
+     1.2576     1.1600   103.64       -0.441622
+     1.2576     1.1600   105.45       -0.442777
+     1.2576     1.1600   107.27       -0.443991
+     1.2576     1.1600   109.09       -0.445255
+     1.2576     1.1600   110.91       -0.446559
+     1.2576     1.1600   112.73       -0.447895
+     1.2576     1.1600   114.55       -0.449256
+     1.2576     1.1600   116.36       -0.450634
+     1.2576     1.1600   118.18       -0.452023
+     1.2576     1.1600   120.00       -0.453416
+     1.2576     1.1600   121.82       -0.454807
+     1.2576     1.1600   123.64       -0.456192
+     1.2576     1.1600   125.45       -0.457564
+     1.2576     1.1600   127.27       -0.458920
+     1.2576     1.1600   129.09       -0.460255
+     1.2576     1.1600   130.91       -0.461565
+     1.2576     1.1600   132.73       -0.462847
+     1.2576     1.1600   134.55       -0.464098
+     1.2576     1.1600   136.36       -0.465315
+     1.2576     1.1600   138.18       -0.466495
+     1.2576     1.1600   140.00       -0.467636
+     1.2576     1.1600   141.82       -0.468736
+     1.2576     1.1600   143.64       -0.469793
+     1.2576     1.1600   145.45       -0.470806
+     1.2576     1.1600   147.27       -0.471773
+     1.2576     1.1600   149.09       -0.472692
+     1.2576     1.1600   150.91       -0.473563
+     1.2576     1.1600   152.73       -0.474385
+     1.2576     1.1600   154.55       -0.475157
+     1.2576     1.1600   156.36       -0.475877
+     1.2576     1.1600   158.18       -0.476546
+     1.2576     1.1600   160.00       -0.477164
+     1.2576     1.1600   161.82       -0.477728
+     1.2576     1.1600   163.64       -0.478240
+     1.2576     1.1600   165.45       -0.478698
+     1.2576     1.1600   167.27       -0.479104
+     1.2576     1.1600   169.09       -0.479455
+     1.2576     1.1600   170.91       -0.479753
+     1.2576     1.1600   172.73       -0.479996
+     1.2576     1.1600   174.55       -0.480186
+     1.2576     1.1600   176.36       -0.480322
+     1.2576     1.1600   178.18       -0.480403
+     1.2576     1.1600   180.00       -0.480430
+
+     1.2727     1.1600     0.00        4.052433
+     1.2727     1.1600     1.82        3.919121
+     1.2727     1.1600     3.64        3.574397
+     1.2727     1.1600     5.45        3.124190
+     1.2727     1.1600     7.27        2.650265
+     1.2727     1.1600     9.09        2.197121
+     1.2727     1.1600    10.91        1.784601
+     1.2727     1.1600    12.73        1.419400
+     1.2727     1.1600    14.55        1.101710
+     1.2727     1.1600    16.36        0.828677
+     1.2727     1.1600    18.18        0.596157
+     1.2727     1.1600    20.00        0.399611
+     1.2727     1.1600    21.82        0.234563
+     1.2727     1.1600    23.64        0.096813
+     1.2727     1.1600    25.45       -0.017460
+     1.2727     1.1600    27.27       -0.111671
+     1.2727     1.1600    29.09       -0.188832
+     1.2727     1.1600    30.91       -0.251575
+     1.2727     1.1600    32.73       -0.302183
+     1.2727     1.1600    34.55       -0.342628
+     1.2727     1.1600    36.36       -0.374601
+     1.2727     1.1600    38.18       -0.399548
+     1.2727     1.1600    40.00       -0.418701
+     1.2727     1.1600    41.82       -0.433104
+     1.2727     1.1600    43.64       -0.443641
+     1.2727     1.1600    45.45       -0.451054
+     1.2727     1.1600    47.27       -0.455968
+     1.2727     1.1600    49.09       -0.458904
+     1.2727     1.1600    50.91       -0.460296
+     1.2727     1.1600    52.73       -0.460503
+     1.2727     1.1600    54.55       -0.459822
+     1.2727     1.1600    56.36       -0.458495
+     1.2727     1.1600    58.18       -0.456720
+     1.2727     1.1600    60.00       -0.454657
+     1.2727     1.1600    61.82       -0.452434
+     1.2727     1.1600    63.64       -0.450153
+     1.2727     1.1600    65.45       -0.447892
+     1.2727     1.1600    67.27       -0.445714
+     1.2727     1.1600    69.09       -0.443665
+     1.2727     1.1600    70.91       -0.441777
+     1.2727     1.1600    72.73       -0.440075
+     1.2727     1.1600    74.55       -0.438574
+     1.2727     1.1600    76.36       -0.437284
+     1.2727     1.1600    78.18       -0.436206
+     1.2727     1.1600    80.00       -0.435341
+     1.2727     1.1600    81.82       -0.434684
+     1.2727     1.1600    83.64       -0.434229
+     1.2727     1.1600    85.45       -0.433968
+     1.2727     1.1600    87.27       -0.433890
+     1.2727     1.1600    89.09       -0.433986
+     1.2727     1.1600    90.91       -0.434242
+     1.2727     1.1600    92.73       -0.434648
+     1.2727     1.1600    94.55       -0.435191
+     1.2727     1.1600    96.36       -0.435860
+     1.2727     1.1600    98.18       -0.436643
+     1.2727     1.1600   100.00       -0.437528
+     1.2727     1.1600   101.82       -0.438504
+     1.2727     1.1600   103.64       -0.439560
+     1.2727     1.1600   105.45       -0.440686
+     1.2727     1.1600   107.27       -0.441872
+     1.2727     1.1600   109.09       -0.443109
+     1.2727     1.1600   110.91       -0.444388
+     1.2727     1.1600   112.73       -0.445700
+     1.2727     1.1600   114.55       -0.447038
+     1.2727     1.1600   116.36       -0.448394
+     1.2727     1.1600   118.18       -0.449762
+     1.2727     1.1600   120.00       -0.451136
+     1.2727     1.1600   121.82       -0.452508
+     1.2727     1.1600   123.64       -0.453875
+     1.2727     1.1600   125.45       -0.455230
+     1.2727     1.1600   127.27       -0.456569
+     1.2727     1.1600   129.09       -0.457889
+     1.2727     1.1600   130.91       -0.459185
+     1.2727     1.1600   132.73       -0.460453
+     1.2727     1.1600   134.55       -0.461691
+     1.2727     1.1600   136.36       -0.462895
+     1.2727     1.1600   138.18       -0.464063
+     1.2727     1.1600   140.00       -0.465193
+     1.2727     1.1600   141.82       -0.466283
+     1.2727     1.1600   143.64       -0.467330
+     1.2727     1.1600   145.45       -0.468333
+     1.2727     1.1600   147.27       -0.469291
+     1.2727     1.1600   149.09       -0.470202
+     1.2727     1.1600   150.91       -0.471066
+     1.2727     1.1600   152.73       -0.471880
+     1.2727     1.1600   154.55       -0.472645
+     1.2727     1.1600   156.36       -0.473359
+     1.2727     1.1600   158.18       -0.474023
+     1.2727     1.1600   160.00       -0.474635
+     1.2727     1.1600   161.82       -0.475194
+     1.2727     1.1600   163.64       -0.475702
+     1.2727     1.1600   165.45       -0.476157
+     1.2727     1.1600   167.27       -0.476558
+     1.2727     1.1600   169.09       -0.476907
+     1.2727     1.1600   170.91       -0.477202
+     1.2727     1.1600   172.73       -0.477444
+     1.2727     1.1600   174.55       -0.477632
+     1.2727     1.1600   176.36       -0.477766
+     1.2727     1.1600   178.18       -0.477847
+     1.2727     1.1600   180.00       -0.477874
+
+     1.2879     1.1600     0.00        3.740945
+     1.2879     1.1600     1.82        3.628614
+     1.2879     1.1600     3.64        3.331507
+     1.2879     1.1600     5.45        2.931772
+     1.2879     1.1600     7.27        2.500085
+     1.2879     1.1600     9.09        2.079476
+     1.2879     1.1600    10.91        1.691470
+     1.2879     1.1600    12.73        1.344783
+     1.2879     1.1600    14.55        1.041243
+     1.2879     1.1600    16.36        0.779189
+     1.2879     1.1600    18.18        0.555320
+     1.2879     1.1600    20.00        0.365691
+     1.2879     1.1600    21.82        0.206246
+     1.2879     1.1600    23.64        0.073087
+     1.2879     1.1600    25.45       -0.037386
+     1.2879     1.1600    27.27       -0.128426
+     1.2879     1.1600    29.09       -0.202923
+     1.2879     1.1600    30.91       -0.263414
+     1.2879     1.1600    32.73       -0.312111
+     1.2879     1.1600    34.55       -0.350927
+     1.2879     1.1600    36.36       -0.381509
+     1.2879     1.1600    38.18       -0.405264
+     1.2879     1.1600    40.00       -0.423395
+     1.2879     1.1600    41.82       -0.436920
+     1.2879     1.1600    43.64       -0.446701
+     1.2879     1.1600    45.45       -0.453465
+     1.2879     1.1600    47.27       -0.457819
+     1.2879     1.1600    49.09       -0.460272
+     1.2879     1.1600    50.91       -0.461247
+     1.2879     1.1600    52.73       -0.461093
+     1.2879     1.1600    54.55       -0.460100
+     1.2879     1.1600    56.36       -0.458502
+     1.2879     1.1600    58.18       -0.456491
+     1.2879     1.1600    60.00       -0.454223
+     1.2879     1.1600    61.82       -0.451820
+     1.2879     1.1600    63.64       -0.449380
+     1.2879     1.1600    65.45       -0.446980
+     1.2879     1.1600    67.27       -0.444678
+     1.2879     1.1600    69.09       -0.442518
+     1.2879     1.1600    70.91       -0.440531
+     1.2879     1.1600    72.73       -0.438740
+     1.2879     1.1600    74.55       -0.437159
+     1.2879     1.1600    76.36       -0.435794
+     1.2879     1.1600    78.18       -0.434648
+     1.2879     1.1600    80.00       -0.433720
+     1.2879     1.1600    81.82       -0.433006
+     1.2879     1.1600    83.64       -0.432497
+     1.2879     1.1600    85.45       -0.432185
+     1.2879     1.1600    87.27       -0.432059
+     1.2879     1.1600    89.09       -0.432109
+     1.2879     1.1600    90.91       -0.432323
+     1.2879     1.1600    92.73       -0.432689
+     1.2879     1.1600    94.55       -0.433194
+     1.2879     1.1600    96.36       -0.433827
+     1.2879     1.1600    98.18       -0.434575
+     1.2879     1.1600   100.00       -0.435427
+     1.2879     1.1600   101.82       -0.436371
+     1.2879     1.1600   103.64       -0.437398
+     1.2879     1.1600   105.45       -0.438495
+     1.2879     1.1600   107.27       -0.439655
+     1.2879     1.1600   109.09       -0.440866
+     1.2879     1.1600   110.91       -0.442120
+     1.2879     1.1600   112.73       -0.443409
+     1.2879     1.1600   114.55       -0.444724
+     1.2879     1.1600   116.36       -0.446060
+     1.2879     1.1600   118.18       -0.447407
+     1.2879     1.1600   120.00       -0.448761
+     1.2879     1.1600   121.82       -0.450115
+     1.2879     1.1600   123.64       -0.451464
+     1.2879     1.1600   125.45       -0.452803
+     1.2879     1.1600   127.27       -0.454127
+     1.2879     1.1600   129.09       -0.455431
+     1.2879     1.1600   130.91       -0.456713
+     1.2879     1.1600   132.73       -0.457967
+     1.2879     1.1600   134.55       -0.459192
+     1.2879     1.1600   136.36       -0.460385
+     1.2879     1.1600   138.18       -0.461541
+     1.2879     1.1600   140.00       -0.462660
+     1.2879     1.1600   141.82       -0.463739
+     1.2879     1.1600   143.64       -0.464777
+     1.2879     1.1600   145.45       -0.465771
+     1.2879     1.1600   147.27       -0.466720
+     1.2879     1.1600   149.09       -0.467623
+     1.2879     1.1600   150.91       -0.468478
+     1.2879     1.1600   152.73       -0.469286
+     1.2879     1.1600   154.55       -0.470044
+     1.2879     1.1600   156.36       -0.470752
+     1.2879     1.1600   158.18       -0.471410
+     1.2879     1.1600   160.00       -0.472016
+     1.2879     1.1600   161.82       -0.472571
+     1.2879     1.1600   163.64       -0.473075
+     1.2879     1.1600   165.45       -0.473525
+     1.2879     1.1600   167.27       -0.473924
+     1.2879     1.1600   169.09       -0.474269
+     1.2879     1.1600   170.91       -0.474562
+     1.2879     1.1600   172.73       -0.474802
+     1.2879     1.1600   174.55       -0.474988
+     1.2879     1.1600   176.36       -0.475122
+     1.2879     1.1600   178.18       -0.475201
+     1.2879     1.1600   180.00       -0.475228
+
+     1.3030     1.1600     0.00        3.448894
+     1.3030     1.1600     1.82        3.353120
+     1.3030     1.1600     3.64        3.095418
+     1.3030     1.1600     5.45        2.740222
+     1.3030     1.1600     7.27        2.347964
+     1.3030     1.1600     9.09        1.959020
+     1.3030     1.1600    10.91        1.595567
+     1.3030     1.1600    12.73        1.267783
+     1.3030     1.1600    14.55        0.978869
+     1.3030     1.1600    16.36        0.728248
+     1.3030     1.1600    18.18        0.513422
+     1.3030     1.1600    20.00        0.331032
+     1.3030     1.1600    21.82        0.177447
+     1.3030     1.1600    23.64        0.049080
+     1.3030     1.1600    25.45       -0.057439
+     1.3030     1.1600    27.27       -0.145192
+     1.3030     1.1600    29.09       -0.216938
+     1.3030     1.1600    30.91       -0.275116
+     1.3030     1.1600    32.73       -0.321858
+     1.3030     1.1600    34.55       -0.359017
+     1.3030     1.1600    36.36       -0.388189
+     1.3030     1.1600    38.18       -0.410743
+     1.3030     1.1600    40.00       -0.427847
+     1.3030     1.1600    41.82       -0.440495
+     1.3030     1.1600    43.64       -0.449525
+     1.3030     1.1600    45.45       -0.455645
+     1.3030     1.1600    47.27       -0.459446
+     1.3030     1.1600    49.09       -0.461424
+     1.3030     1.1600    50.91       -0.461991
+     1.3030     1.1600    52.73       -0.461486
+     1.3030     1.1600    54.55       -0.460189
+     1.3030     1.1600    56.36       -0.458329
+     1.3030     1.1600    58.18       -0.456090
+     1.3030     1.1600    60.00       -0.453624
+     1.3030     1.1600    61.82       -0.451048
+     1.3030     1.1600    63.64       -0.448457
+     1.3030     1.1600    65.45       -0.445924
+     1.3030     1.1600    67.27       -0.443503
+     1.3030     1.1600    69.09       -0.441238
+     1.3030     1.1600    70.91       -0.439157
+     1.3030     1.1600    72.73       -0.437281
+     1.3030     1.1600    74.55       -0.435622
+     1.3030     1.1600    76.36       -0.434187
+     1.3030     1.1600    78.18       -0.432976
+     1.3030     1.1600    80.00       -0.431989
+     1.3030     1.1600    81.82       -0.431218
+     1.3030     1.1600    83.64       -0.430657
+     1.3030     1.1600    85.45       -0.430297
+     1.3030     1.1600    87.27       -0.430126
+     1.3030     1.1600    89.09       -0.430133
+     1.3030     1.1600    90.91       -0.430306
+     1.3030     1.1600    92.73       -0.430632
+     1.3030     1.1600    94.55       -0.431101
+     1.3030     1.1600    96.36       -0.431698
+     1.3030     1.1600    98.18       -0.432413
+     1.3030     1.1600   100.00       -0.433233
+     1.3030     1.1600   101.82       -0.434148
+     1.3030     1.1600   103.64       -0.435145
+     1.3030     1.1600   105.45       -0.436216
+     1.3030     1.1600   107.27       -0.437348
+     1.3030     1.1600   109.09       -0.438534
+     1.3030     1.1600   110.91       -0.439765
+     1.3030     1.1600   112.73       -0.441031
+     1.3030     1.1600   114.55       -0.442325
+     1.3030     1.1600   116.36       -0.443639
+     1.3030     1.1600   118.18       -0.444967
+     1.3030     1.1600   120.00       -0.446303
+     1.3030     1.1600   121.82       -0.447639
+     1.3030     1.1600   123.64       -0.448971
+     1.3030     1.1600   125.45       -0.450293
+     1.3030     1.1600   127.27       -0.451602
+     1.3030     1.1600   129.09       -0.452891
+     1.3030     1.1600   130.91       -0.454159
+     1.3030     1.1600   132.73       -0.455400
+     1.3030     1.1600   134.55       -0.456613
+     1.3030     1.1600   136.36       -0.457793
+     1.3030     1.1600   138.18       -0.458938
+     1.3030     1.1600   140.00       -0.460046
+     1.3030     1.1600   141.82       -0.461115
+     1.3030     1.1600   143.64       -0.462143
+     1.3030     1.1600   145.45       -0.463128
+     1.3030     1.1600   147.27       -0.464068
+     1.3030     1.1600   149.09       -0.464963
+     1.3030     1.1600   150.91       -0.465811
+     1.3030     1.1600   152.73       -0.466612
+     1.3030     1.1600   154.55       -0.467363
+     1.3030     1.1600   156.36       -0.468065
+     1.3030     1.1600   158.18       -0.468717
+     1.3030     1.1600   160.00       -0.469319
+     1.3030     1.1600   161.82       -0.469869
+     1.3030     1.1600   163.64       -0.470368
+     1.3030     1.1600   165.45       -0.470815
+     1.3030     1.1600   167.27       -0.471210
+     1.3030     1.1600   169.09       -0.471553
+     1.3030     1.1600   170.91       -0.471843
+     1.3030     1.1600   172.73       -0.472080
+     1.3030     1.1600   174.55       -0.472265
+     1.3030     1.1600   176.36       -0.472398
+     1.3030     1.1600   178.18       -0.472477
+     1.3030     1.1600   180.00       -0.472503
+
+     1.3182     1.1600     0.00        3.175148
+     1.3182     1.1600     1.82        3.092707
+     1.3182     1.1600     3.64        2.867894
+     1.3182     1.1600     5.45        2.551832
+     1.3182     1.1600     7.27        2.195937
+     1.3182     1.1600     9.09        1.837323
+     1.3182     1.1600    10.91        1.498045
+     1.3182     1.1600    12.73        1.189232
+     1.3182     1.1600    14.55        0.915190
+     1.3182     1.1600    16.36        0.676291
+     1.3182     1.1600    18.18        0.470783
+     1.3182     1.1600    20.00        0.295870
+     1.3182     1.1600    21.82        0.148341
+     1.3182     1.1600    23.64        0.024922
+     1.3182     1.1600    25.45       -0.077523
+     1.3182     1.1600    27.27       -0.161899
+     1.3182     1.1600    29.09       -0.230828
+     1.3182     1.1600    30.91       -0.286644
+     1.3182     1.1600    32.73       -0.331399
+     1.3182     1.1600    34.55       -0.366880
+     1.3182     1.1600    36.36       -0.394630
+     1.3182     1.1600    38.18       -0.415978
+     1.3182     1.1600    40.00       -0.432056
+     1.3182     1.1600    41.82       -0.443830
+     1.3182     1.1600    43.64       -0.452115
+     1.3182     1.1600    45.45       -0.457599
+     1.3182     1.1600    47.27       -0.460856
+     1.3182     1.1600    49.09       -0.462369
+     1.3182     1.1600    50.91       -0.462537
+     1.3182     1.1600    52.73       -0.461690
+     1.3182     1.1600    54.55       -0.460099
+     1.3182     1.1600    56.36       -0.457985
+     1.3182     1.1600    58.18       -0.455527
+     1.3182     1.1600    60.00       -0.452871
+     1.3182     1.1600    61.82       -0.450129
+     1.3182     1.1600    63.64       -0.447393
+     1.3182     1.1600    65.45       -0.444732
+     1.3182     1.1600    67.27       -0.442200
+     1.3182     1.1600    69.09       -0.439834
+     1.3182     1.1600    70.91       -0.437663
+     1.3182     1.1600    72.73       -0.435706
+     1.3182     1.1600    74.55       -0.433974
+     1.3182     1.1600    76.36       -0.432471
+     1.3182     1.1600    78.18       -0.431199
+     1.3182     1.1600    80.00       -0.430155
+     1.3182     1.1600    81.82       -0.429331
+     1.3182     1.1600    83.64       -0.428721
+     1.3182     1.1600    85.45       -0.428313
+     1.3182     1.1600    87.27       -0.428098
+     1.3182     1.1600    89.09       -0.428064
+     1.3182     1.1600    90.91       -0.428198
+     1.3182     1.1600    92.73       -0.428487
+     1.3182     1.1600    94.55       -0.428920
+     1.3182     1.1600    96.36       -0.429484
+     1.3182     1.1600    98.18       -0.430167
+     1.3182     1.1600   100.00       -0.430956
+     1.3182     1.1600   101.82       -0.431841
+     1.3182     1.1600   103.64       -0.432811
+     1.3182     1.1600   105.45       -0.433854
+     1.3182     1.1600   107.27       -0.434962
+     1.3182     1.1600   109.09       -0.436124
+     1.3182     1.1600   110.91       -0.437331
+     1.3182     1.1600   112.73       -0.438575
+     1.3182     1.1600   114.55       -0.439848
+     1.3182     1.1600   116.36       -0.441142
+     1.3182     1.1600   118.18       -0.442451
+     1.3182     1.1600   120.00       -0.443768
+     1.3182     1.1600   121.82       -0.445087
+     1.3182     1.1600   123.64       -0.446402
+     1.3182     1.1600   125.45       -0.447709
+     1.3182     1.1600   127.27       -0.449002
+     1.3182     1.1600   129.09       -0.450278
+     1.3182     1.1600   130.91       -0.451532
+     1.3182     1.1600   132.73       -0.452760
+     1.3182     1.1600   134.55       -0.453960
+     1.3182     1.1600   136.36       -0.455128
+     1.3182     1.1600   138.18       -0.456263
+     1.3182     1.1600   140.00       -0.457360
+     1.3182     1.1600   141.82       -0.458419
+     1.3182     1.1600   143.64       -0.459437
+     1.3182     1.1600   145.45       -0.460413
+     1.3182     1.1600   147.27       -0.461345
+     1.3182     1.1600   149.09       -0.462232
+     1.3182     1.1600   150.91       -0.463073
+     1.3182     1.1600   152.73       -0.463866
+     1.3182     1.1600   154.55       -0.464611
+     1.3182     1.1600   156.36       -0.465307
+     1.3182     1.1600   158.18       -0.465954
+     1.3182     1.1600   160.00       -0.466550
+     1.3182     1.1600   161.82       -0.467096
+     1.3182     1.1600   163.64       -0.467590
+     1.3182     1.1600   165.45       -0.468034
+     1.3182     1.1600   167.27       -0.468425
+     1.3182     1.1600   169.09       -0.468765
+     1.3182     1.1600   170.91       -0.469053
+     1.3182     1.1600   172.73       -0.469289
+     1.3182     1.1600   174.55       -0.469472
+     1.3182     1.1600   176.36       -0.469603
+     1.3182     1.1600   178.18       -0.469682
+     1.3182     1.1600   180.00       -0.469708
+
+     1.3333     1.1600     0.00        2.918639
+     1.3333     1.1600     1.82        2.847113
+     1.3333     1.1600     3.64        2.649982
+     1.3333     1.1600     5.45        2.368263
+     1.3333     1.1600     7.27        2.045624
+     1.3333     1.1600     9.09        1.715715
+     1.3333     1.1600    10.91        1.399920
+     1.3333     1.1600    12.73        1.109887
+     1.3333     1.1600    14.55        0.850762
+     1.3333     1.1600    16.36        0.623728
+     1.3333     1.1600    18.18        0.427705
+     1.3333     1.1600    20.00        0.260429
+     1.3333     1.1600    21.82        0.119094
+     1.3333     1.1600    23.64        0.000736
+     1.3333     1.1600    25.45       -0.097548
+     1.3333     1.1600    27.27       -0.178479
+     1.3333     1.1600    29.09       -0.244543
+     1.3333     1.1600    30.91       -0.297964
+     1.3333     1.1600    32.73       -0.340710
+     1.3333     1.1600    34.55       -0.374500
+     1.3333     1.1600    36.36       -0.400823
+     1.3333     1.1600    38.18       -0.420964
+     1.3333     1.1600    40.00       -0.436021
+     1.3333     1.1600    41.82       -0.446927
+     1.3333     1.1600    43.64       -0.454475
+     1.3333     1.1600    45.45       -0.459332
+     1.3333     1.1600    47.27       -0.462056
+     1.3333     1.1600    49.09       -0.463114
+     1.3333     1.1600    50.91       -0.462893
+     1.3333     1.1600    52.73       -0.461714
+     1.3333     1.1600    54.55       -0.459838
+     1.3333     1.1600    56.36       -0.457479
+     1.3333     1.1600    58.18       -0.454811
+     1.3333     1.1600    60.00       -0.451971
+     1.3333     1.1600    61.82       -0.449072
+     1.3333     1.1600    63.64       -0.446197
+     1.3333     1.1600    65.45       -0.443415
+     1.3333     1.1600    67.27       -0.440775
+     1.3333     1.1600    69.09       -0.438314
+     1.3333     1.1600    70.91       -0.436058
+     1.3333     1.1600    72.73       -0.434024
+     1.3333     1.1600    74.55       -0.432222
+     1.3333     1.1600    76.36       -0.430656
+     1.3333     1.1600    78.18       -0.429325
+     1.3333     1.1600    80.00       -0.428226
+     1.3333     1.1600    81.82       -0.427352
+     1.3333     1.1600    83.64       -0.426694
+     1.3333     1.1600    85.45       -0.426242
+     1.3333     1.1600    87.27       -0.425985
+     1.3333     1.1600    89.09       -0.425911
+     1.3333     1.1600    90.91       -0.426007
+     1.3333     1.1600    92.73       -0.426261
+     1.3333     1.1600    94.55       -0.426660
+     1.3333     1.1600    96.36       -0.427191
+     1.3333     1.1600    98.18       -0.427843
+     1.3333     1.1600   100.00       -0.428603
+     1.3333     1.1600   101.82       -0.429460
+     1.3333     1.1600   103.64       -0.430402
+     1.3333     1.1600   105.45       -0.431420
+     1.3333     1.1600   107.27       -0.432503
+     1.3333     1.1600   109.09       -0.433641
+     1.3333     1.1600   110.91       -0.434826
+     1.3333     1.1600   112.73       -0.436049
+     1.3333     1.1600   114.55       -0.437301
+     1.3333     1.1600   116.36       -0.438576
+     1.3333     1.1600   118.18       -0.439867
+     1.3333     1.1600   120.00       -0.441166
+     1.3333     1.1600   121.82       -0.442468
+     1.3333     1.1600   123.64       -0.443767
+     1.3333     1.1600   125.45       -0.445058
+     1.3333     1.1600   127.27       -0.446337
+     1.3333     1.1600   129.09       -0.447599
+     1.3333     1.1600   130.91       -0.448839
+     1.3333     1.1600   132.73       -0.450055
+     1.3333     1.1600   134.55       -0.451243
+     1.3333     1.1600   136.36       -0.452400
+     1.3333     1.1600   138.18       -0.453523
+     1.3333     1.1600   140.00       -0.454610
+     1.3333     1.1600   141.82       -0.455659
+     1.3333     1.1600   143.64       -0.456668
+     1.3333     1.1600   145.45       -0.457635
+     1.3333     1.1600   147.27       -0.458559
+     1.3333     1.1600   149.09       -0.459438
+     1.3333     1.1600   150.91       -0.460271
+     1.3333     1.1600   152.73       -0.461058
+     1.3333     1.1600   154.55       -0.461796
+     1.3333     1.1600   156.36       -0.462487
+     1.3333     1.1600   158.18       -0.463127
+     1.3333     1.1600   160.00       -0.463719
+     1.3333     1.1600   161.82       -0.464260
+     1.3333     1.1600   163.64       -0.464750
+     1.3333     1.1600   165.45       -0.465190
+     1.3333     1.1600   167.27       -0.465578
+     1.3333     1.1600   169.09       -0.465915
+     1.3333     1.1600   170.91       -0.466201
+     1.3333     1.1600   172.73       -0.466434
+     1.3333     1.1600   174.55       -0.466616
+     1.3333     1.1600   176.36       -0.466746
+     1.3333     1.1600   178.18       -0.466824
+     1.3333     1.1600   180.00       -0.466850
+
+     1.3485     1.1600     0.00        2.678356
+     1.3485     1.1600     1.82        2.615890
+     1.3485     1.1600     3.64        2.442247
+     1.3485     1.1600     5.45        2.190675
+     1.3485     1.1600     7.27        1.898285
+     1.3485     1.1600     9.09        1.595300
+     1.3485     1.1600    10.91        1.302073
+     1.3485     1.1600    12.73        1.030421
+     1.3485     1.1600    14.55        0.786092
+     1.3485     1.1600    16.36        0.570935
+     1.3485     1.1600    18.18        0.384470
+     1.3485     1.1600    20.00        0.224918
+     1.3485     1.1600    21.82        0.089861
+     1.3485     1.1600    23.64       -0.023364
+     1.3485     1.1600    25.45       -0.117427
+     1.3485     1.1600    27.27       -0.194870
+     1.3485     1.1600    29.09       -0.258037
+     1.3485     1.1600    30.91       -0.309043
+     1.3485     1.1600    32.73       -0.349768
+     1.3485     1.1600    34.55       -0.381862
+     1.3485     1.1600    36.36       -0.406759
+     1.3485     1.1600    38.18       -0.425698
+     1.3485     1.1600    40.00       -0.439739
+     1.3485     1.1600    41.82       -0.449787
+     1.3485     1.1600    43.64       -0.456609
+     1.3485     1.1600    45.45       -0.460849
+     1.3485     1.1600    47.27       -0.463051
+     1.3485     1.1600    49.09       -0.463665
+     1.3485     1.1600    50.91       -0.463066
+     1.3485     1.1600    52.73       -0.461565
+     1.3485     1.1600    54.55       -0.459414
+     1.3485     1.1600    56.36       -0.456819
+     1.3485     1.1600    58.18       -0.453948
+     1.3485     1.1600    60.00       -0.450934
+     1.3485     1.1600    61.82       -0.447883
+     1.3485     1.1600    63.64       -0.444877
+     1.3485     1.1600    65.45       -0.441979
+     1.3485     1.1600    67.27       -0.439237
+     1.3485     1.1600    69.09       -0.436686
+     1.3485     1.1600    70.91       -0.434349
+     1.3485     1.1600    72.73       -0.432242
+     1.3485     1.1600    74.55       -0.430373
+     1.3485     1.1600    76.36       -0.428747
+     1.3485     1.1600    78.18       -0.427360
+     1.3485     1.1600    80.00       -0.426209
+     1.3485     1.1600    81.82       -0.425287
+     1.3485     1.1600    83.64       -0.424584
+     1.3485     1.1600    85.45       -0.424090
+     1.3485     1.1600    87.27       -0.423793
+     1.3485     1.1600    89.09       -0.423681
+     1.3485     1.1600    90.91       -0.423741
+     1.3485     1.1600    92.73       -0.423960
+     1.3485     1.1600    94.55       -0.424326
+     1.3485     1.1600    96.36       -0.424826
+     1.3485     1.1600    98.18       -0.425448
+     1.3485     1.1600   100.00       -0.426180
+     1.3485     1.1600   101.82       -0.427010
+     1.3485     1.1600   103.64       -0.427926
+     1.3485     1.1600   105.45       -0.428919
+     1.3485     1.1600   107.27       -0.429979
+     1.3485     1.1600   109.09       -0.431094
+     1.3485     1.1600   110.91       -0.432258
+     1.3485     1.1600   112.73       -0.433460
+     1.3485     1.1600   114.55       -0.434692
+     1.3485     1.1600   116.36       -0.435949
+     1.3485     1.1600   118.18       -0.437221
+     1.3485     1.1600   120.00       -0.438503
+     1.3485     1.1600   121.82       -0.439789
+     1.3485     1.1600   123.64       -0.441072
+     1.3485     1.1600   125.45       -0.442349
+     1.3485     1.1600   127.27       -0.443613
+     1.3485     1.1600   129.09       -0.444861
+     1.3485     1.1600   130.91       -0.446088
+     1.3485     1.1600   132.73       -0.447292
+     1.3485     1.1600   134.55       -0.448468
+     1.3485     1.1600   136.36       -0.449614
+     1.3485     1.1600   138.18       -0.450726
+     1.3485     1.1600   140.00       -0.451803
+     1.3485     1.1600   141.82       -0.452843
+     1.3485     1.1600   143.64       -0.453843
+     1.3485     1.1600   145.45       -0.454801
+     1.3485     1.1600   147.27       -0.455717
+     1.3485     1.1600   149.09       -0.456588
+     1.3485     1.1600   150.91       -0.457414
+     1.3485     1.1600   152.73       -0.458194
+     1.3485     1.1600   154.55       -0.458926
+     1.3485     1.1600   156.36       -0.459610
+     1.3485     1.1600   158.18       -0.460246
+     1.3485     1.1600   160.00       -0.460832
+     1.3485     1.1600   161.82       -0.461368
+     1.3485     1.1600   163.64       -0.461855
+     1.3485     1.1600   165.45       -0.462291
+     1.3485     1.1600   167.27       -0.462676
+     1.3485     1.1600   169.09       -0.463010
+     1.3485     1.1600   170.91       -0.463293
+     1.3485     1.1600   172.73       -0.463525
+     1.3485     1.1600   174.55       -0.463705
+     1.3485     1.1600   176.36       -0.463834
+     1.3485     1.1600   178.18       -0.463911
+     1.3485     1.1600   180.00       -0.463937
+
+     1.3636     1.1600     0.00        2.453346
+     1.3636     1.1600     1.82        2.398489
+     1.3636     1.1600     3.64        2.244920
+     1.3636     1.1600     5.45        2.019852
+     1.3636     1.1600     7.27        1.754877
+     1.3636     1.1600     9.09        1.476977
+     1.3636     1.1600    10.91        1.205254
+     1.3636     1.1600    12.73        0.951425
+     1.3636     1.1600    14.55        0.721632
+     1.3636     1.1600    16.36        0.518257
+     1.3636     1.1600    18.18        0.341334
+     1.3636     1.1600    20.00        0.189530
+     1.3636     1.1600    21.82        0.060787
+     1.3636     1.1600    23.64       -0.047270
+     1.3636     1.1600    25.45       -0.137082
+     1.3636     1.1600    27.27       -0.211014
+     1.3636     1.1600    29.09       -0.271269
+     1.3636     1.1600    30.91       -0.319852
+     1.3636     1.1600    32.73       -0.358554
+     1.3636     1.1600    34.55       -0.388954
+     1.3636     1.1600    36.36       -0.412430
+     1.3636     1.1600    38.18       -0.430175
+     1.3636     1.1600    40.00       -0.443211
+     1.3636     1.1600    41.82       -0.452413
+     1.3636     1.1600    43.64       -0.458519
+     1.3636     1.1600    45.45       -0.462156
+     1.3636     1.1600    47.27       -0.463847
+     1.3636     1.1600    49.09       -0.464029
+     1.3636     1.1600    50.91       -0.463063
+     1.3636     1.1600    52.73       -0.461250
+     1.3636     1.1600    54.55       -0.458834
+     1.3636     1.1600    56.36       -0.456013
+     1.3636     1.1600    58.18       -0.452948
+     1.3636     1.1600    60.00       -0.449767
+     1.3636     1.1600    61.82       -0.446571
+     1.3636     1.1600    63.64       -0.443439
+     1.3636     1.1600    65.45       -0.440432
+     1.3636     1.1600    67.27       -0.437593
+     1.3636     1.1600    69.09       -0.434956
+     1.3636     1.1600    70.91       -0.432542
+     1.3636     1.1600    72.73       -0.430366
+     1.3636     1.1600    74.55       -0.428435
+     1.3636     1.1600    76.36       -0.426751
+     1.3636     1.1600    78.18       -0.425312
+     1.3636     1.1600    80.00       -0.424112
+     1.3636     1.1600    81.82       -0.423144
+     1.3636     1.1600    83.64       -0.422398
+     1.3636     1.1600    85.45       -0.421863
+     1.3636     1.1600    87.27       -0.421528
+     1.3636     1.1600    89.09       -0.421379
+     1.3636     1.1600    90.91       -0.421405
+     1.3636     1.1600    92.73       -0.421591
+     1.3636     1.1600    94.55       -0.421926
+     1.3636     1.1600    96.36       -0.422397
+     1.3636     1.1600    98.18       -0.422990
+     1.3636     1.1600   100.00       -0.423694
+     1.3636     1.1600   101.82       -0.424498
+     1.3636     1.1600   103.64       -0.425390
+     1.3636     1.1600   105.45       -0.426359
+     1.3636     1.1600   107.27       -0.427395
+     1.3636     1.1600   109.09       -0.428489
+     1.3636     1.1600   110.91       -0.429632
+     1.3636     1.1600   112.73       -0.430814
+     1.3636     1.1600   114.55       -0.432028
+     1.3636     1.1600   116.36       -0.433266
+     1.3636     1.1600   118.18       -0.434521
+     1.3636     1.1600   120.00       -0.435786
+     1.3636     1.1600   121.82       -0.437056
+     1.3636     1.1600   123.64       -0.438324
+     1.3636     1.1600   125.45       -0.439586
+     1.3636     1.1600   127.27       -0.440837
+     1.3636     1.1600   129.09       -0.442071
+     1.3636     1.1600   130.91       -0.443286
+     1.3636     1.1600   132.73       -0.444478
+     1.3636     1.1600   134.55       -0.445642
+     1.3636     1.1600   136.36       -0.446777
+     1.3636     1.1600   138.18       -0.447879
+     1.3636     1.1600   140.00       -0.448947
+     1.3636     1.1600   141.82       -0.449977
+     1.3636     1.1600   143.64       -0.450967
+     1.3636     1.1600   145.45       -0.451917
+     1.3636     1.1600   147.27       -0.452825
+     1.3636     1.1600   149.09       -0.453689
+     1.3636     1.1600   150.91       -0.454508
+     1.3636     1.1600   152.73       -0.455281
+     1.3636     1.1600   154.55       -0.456007
+     1.3636     1.1600   156.36       -0.456685
+     1.3636     1.1600   158.18       -0.457315
+     1.3636     1.1600   160.00       -0.457897
+     1.3636     1.1600   161.82       -0.458429
+     1.3636     1.1600   163.64       -0.458911
+     1.3636     1.1600   165.45       -0.459343
+     1.3636     1.1600   167.27       -0.459725
+     1.3636     1.1600   169.09       -0.460056
+     1.3636     1.1600   170.91       -0.460337
+     1.3636     1.1600   172.73       -0.460567
+     1.3636     1.1600   174.55       -0.460746
+     1.3636     1.1600   176.36       -0.460873
+     1.3636     1.1600   178.18       -0.460950
+     1.3636     1.1600   180.00       -0.460976
+
+     1.3788     1.1600     0.00        2.242708
+     1.3788     1.1600     1.82        2.194305
+     1.3788     1.1600     3.64        2.058010
+     1.3788     1.1600     5.45        1.856288
+     1.3788     1.1600     7.27        1.616108
+     1.3788     1.1600     9.09        1.361458
+     1.3788     1.1600    10.91        1.110086
+     1.3788     1.1600    12.73        0.873409
+     1.3788     1.1600    14.55        0.657783
+     1.3788     1.1600    16.36        0.466000
+     1.3788     1.1600    18.18        0.298532
+     1.3788     1.1600    20.00        0.154441
+     1.3788     1.1600    21.82        0.032003
+     1.3788     1.1600    23.64       -0.070883
+     1.3788     1.1600    25.45       -0.156439
+     1.3788     1.1600    27.27       -0.226857
+     1.3788     1.1600    29.09       -0.284200
+     1.3788     1.1600    30.91       -0.330362
+     1.3788     1.1600    32.73       -0.367047
+     1.3788     1.1600    34.55       -0.395763
+     1.3788     1.1600    36.36       -0.417830
+     1.3788     1.1600    38.18       -0.434393
+     1.3788     1.1600    40.00       -0.446437
+     1.3788     1.1600    41.82       -0.454805
+     1.3788     1.1600    43.64       -0.460211
+     1.3788     1.1600    45.45       -0.463257
+     1.3788     1.1600    47.27       -0.464450
+     1.3788     1.1600    49.09       -0.464212
+     1.3788     1.1600    50.91       -0.462891
+     1.3788     1.1600    52.73       -0.460777
+     1.3788     1.1600    54.55       -0.458105
+     1.3788     1.1600    56.36       -0.455067
+     1.3788     1.1600    58.18       -0.451816
+     1.3788     1.1600    60.00       -0.448476
+     1.3788     1.1600    61.82       -0.445142
+     1.3788     1.1600    63.64       -0.441891
+     1.3788     1.1600    65.45       -0.438780
+     1.3788     1.1600    67.27       -0.435850
+     1.3788     1.1600    69.09       -0.433131
+     1.3788     1.1600    70.91       -0.430645
+     1.3788     1.1600    72.73       -0.428404
+     1.3788     1.1600    74.55       -0.426413
+     1.3788     1.1600    76.36       -0.424675
+     1.3788     1.1600    78.18       -0.423185
+     1.3788     1.1600    80.00       -0.421939
+     1.3788     1.1600    81.82       -0.420928
+     1.3788     1.1600    83.64       -0.420141
+     1.3788     1.1600    85.45       -0.419568
+     1.3788     1.1600    87.27       -0.419196
+     1.3788     1.1600    89.09       -0.419013
+     1.3788     1.1600    90.91       -0.419006
+     1.3788     1.1600    92.73       -0.419161
+     1.3788     1.1600    94.55       -0.419466
+     1.3788     1.1600    96.36       -0.419907
+     1.3788     1.1600    98.18       -0.420473
+     1.3788     1.1600   100.00       -0.421152
+     1.3788     1.1600   101.82       -0.421930
+     1.3788     1.1600   103.64       -0.422798
+     1.3788     1.1600   105.45       -0.423744
+     1.3788     1.1600   107.27       -0.424759
+     1.3788     1.1600   109.09       -0.425832
+     1.3788     1.1600   110.91       -0.426954
+     1.3788     1.1600   112.73       -0.428117
+     1.3788     1.1600   114.55       -0.429313
+     1.3788     1.1600   116.36       -0.430533
+     1.3788     1.1600   118.18       -0.431772
+     1.3788     1.1600   120.00       -0.433021
+     1.3788     1.1600   121.82       -0.434275
+     1.3788     1.1600   123.64       -0.435529
+     1.3788     1.1600   125.45       -0.436777
+     1.3788     1.1600   127.27       -0.438014
+     1.3788     1.1600   129.09       -0.439236
+     1.3788     1.1600   130.91       -0.440439
+     1.3788     1.1600   132.73       -0.441619
+     1.3788     1.1600   134.55       -0.442772
+     1.3788     1.1600   136.36       -0.443896
+     1.3788     1.1600   138.18       -0.444988
+     1.3788     1.1600   140.00       -0.446046
+     1.3788     1.1600   141.82       -0.447067
+     1.3788     1.1600   143.64       -0.448049
+     1.3788     1.1600   145.45       -0.448990
+     1.3788     1.1600   147.27       -0.449890
+     1.3788     1.1600   149.09       -0.450746
+     1.3788     1.1600   150.91       -0.451558
+     1.3788     1.1600   152.73       -0.452325
+     1.3788     1.1600   154.55       -0.453044
+     1.3788     1.1600   156.36       -0.453717
+     1.3788     1.1600   158.18       -0.454342
+     1.3788     1.1600   160.00       -0.454918
+     1.3788     1.1600   161.82       -0.455446
+     1.3788     1.1600   163.64       -0.455924
+     1.3788     1.1600   165.45       -0.456353
+     1.3788     1.1600   167.27       -0.456732
+     1.3788     1.1600   169.09       -0.457060
+     1.3788     1.1600   170.91       -0.457339
+     1.3788     1.1600   172.73       -0.457566
+     1.3788     1.1600   174.55       -0.457744
+     1.3788     1.1600   176.36       -0.457871
+     1.3788     1.1600   178.18       -0.457947
+     1.3788     1.1600   180.00       -0.457972
+
+     1.3939     1.1600     0.00        2.045592
+     1.3939     1.1600     1.82        2.002711
+     1.3939     1.1600     3.64        1.881368
+     1.3939     1.1600     5.45        1.700261
+     1.3939     1.1600     7.27        1.482478
+     1.3939     1.1600     9.09        1.249298
+     1.3939     1.1600    10.91        1.017082
+     1.3939     1.1600    12.73        0.796802
+     1.3939     1.1600    14.55        0.594890
+     1.3939     1.1600    16.36        0.414436
+     1.3939     1.1600    18.18        0.256272
+     1.3939     1.1600    20.00        0.119809
+     1.3939     1.1600    21.82        0.003630
+     1.3939     1.1600    23.64       -0.094113
+     1.3939     1.1600    25.45       -0.175433
+     1.3939     1.1600    27.27       -0.242350
+     1.3939     1.1600    29.09       -0.296795
+     1.3939     1.1600    30.91       -0.340551
+     1.3939     1.1600    32.73       -0.375233
+     1.3939     1.1600    34.55       -0.402280
+     1.3939     1.1600    36.36       -0.422952
+     1.3939     1.1600    38.18       -0.438349
+     1.3939     1.1600    40.00       -0.449418
+     1.3939     1.1600    41.82       -0.456968
+     1.3939     1.1600    43.64       -0.461687
+     1.3939     1.1600    45.45       -0.464157
+     1.3939     1.1600    47.27       -0.464866
+     1.3939     1.1600    49.09       -0.464220
+     1.3939     1.1600    50.91       -0.462556
+     1.3939     1.1600    52.73       -0.460152
+     1.3939     1.1600    54.55       -0.457234
+     1.3939     1.1600    56.36       -0.453988
+     1.3939     1.1600    58.18       -0.450559
+     1.3939     1.1600    60.00       -0.447067
+     1.3939     1.1600    61.82       -0.443603
+     1.3939     1.1600    63.64       -0.440239
+     1.3939     1.1600    65.45       -0.437029
+     1.3939     1.1600    67.27       -0.434012
+     1.3939     1.1600    69.09       -0.431217
+     1.3939     1.1600    70.91       -0.428663
+     1.3939     1.1600    72.73       -0.426360
+     1.3939     1.1600    74.55       -0.424313
+     1.3939     1.1600    76.36       -0.422524
+     1.3939     1.1600    78.18       -0.420987
+     1.3939     1.1600    80.00       -0.419697
+     1.3939     1.1600    81.82       -0.418644
+     1.3939     1.1600    83.64       -0.417819
+     1.3939     1.1600    85.45       -0.417209
+     1.3939     1.1600    87.27       -0.416803
+     1.3939     1.1600    89.09       -0.416587
+     1.3939     1.1600    90.91       -0.416548
+     1.3939     1.1600    92.73       -0.416673
+     1.3939     1.1600    94.55       -0.416950
+     1.3939     1.1600    96.36       -0.417364
+     1.3939     1.1600    98.18       -0.417904
+     1.3939     1.1600   100.00       -0.418557
+     1.3939     1.1600   101.82       -0.419312
+     1.3939     1.1600   103.64       -0.420157
+     1.3939     1.1600   105.45       -0.421081
+     1.3939     1.1600   107.27       -0.422075
+     1.3939     1.1600   109.09       -0.423128
+     1.3939     1.1600   110.91       -0.424231
+     1.3939     1.1600   112.73       -0.425376
+     1.3939     1.1600   114.55       -0.426554
+     1.3939     1.1600   116.36       -0.427757
+     1.3939     1.1600   118.18       -0.428979
+     1.3939     1.1600   120.00       -0.430213
+     1.3939     1.1600   121.82       -0.431453
+     1.3939     1.1600   123.64       -0.432693
+     1.3939     1.1600   125.45       -0.433927
+     1.3939     1.1600   127.27       -0.435151
+     1.3939     1.1600   129.09       -0.436361
+     1.3939     1.1600   130.91       -0.437551
+     1.3939     1.1600   132.73       -0.438720
+     1.3939     1.1600   134.55       -0.439862
+     1.3939     1.1600   136.36       -0.440976
+     1.3939     1.1600   138.18       -0.442058
+     1.3939     1.1600   140.00       -0.443106
+     1.3939     1.1600   141.82       -0.444118
+     1.3939     1.1600   143.64       -0.445092
+     1.3939     1.1600   145.45       -0.446025
+     1.3939     1.1600   147.27       -0.446917
+     1.3939     1.1600   149.09       -0.447766
+     1.3939     1.1600   150.91       -0.448571
+     1.3939     1.1600   152.73       -0.449331
+     1.3939     1.1600   154.55       -0.450045
+     1.3939     1.1600   156.36       -0.450712
+     1.3939     1.1600   158.18       -0.451332
+     1.3939     1.1600   160.00       -0.451903
+     1.3939     1.1600   161.82       -0.452426
+     1.3939     1.1600   163.64       -0.452901
+     1.3939     1.1600   165.45       -0.453326
+     1.3939     1.1600   167.27       -0.453701
+     1.3939     1.1600   169.09       -0.454027
+     1.3939     1.1600   170.91       -0.454303
+     1.3939     1.1600   172.73       -0.454529
+     1.3939     1.1600   174.55       -0.454705
+     1.3939     1.1600   176.36       -0.454831
+     1.3939     1.1600   178.18       -0.454906
+     1.3939     1.1600   180.00       -0.454931
+
+     1.4091     1.1600     0.00        1.861195
+     1.4091     1.1600     1.82        1.823073
+     1.4091     1.1600     3.64        1.714744
+     1.4091     1.1600     5.45        1.551884
+     1.4091     1.1600     7.27        1.354325
+     1.4091     1.1600     9.09        1.140915
+     1.4091     1.1600    10.91        0.926650
+     1.4091     1.1600    12.73        0.721965
+     1.4091     1.1600    14.55        0.533251
+     1.4091     1.1600    16.36        0.363801
+     1.4091     1.1600    18.18        0.214739
+     1.4091     1.1600    20.00        0.085777
+     1.4091     1.1600    21.82       -0.024226
+     1.4091     1.1600    23.64       -0.116881
+     1.4091     1.1600    25.45       -0.194003
+     1.4091     1.1600    27.27       -0.257451
+     1.4091     1.1600    29.09       -0.309023
+     1.4091     1.1600    30.91       -0.350396
+     1.4091     1.1600    32.73       -0.383097
+     1.4091     1.1600    34.55       -0.408494
+     1.4091     1.1600    36.36       -0.427793
+     1.4091     1.1600    38.18       -0.442043
+     1.4091     1.1600    40.00       -0.452154
+     1.4091     1.1600    41.82       -0.458902
+     1.4091     1.1600    43.64       -0.462952
+     1.4091     1.1600    45.45       -0.464861
+     1.4091     1.1600    47.27       -0.465100
+     1.4091     1.1600    49.09       -0.464059
+     1.4091     1.1600    50.91       -0.462064
+     1.4091     1.1600    52.73       -0.459381
+     1.4091     1.1600    54.55       -0.456228
+     1.4091     1.1600    56.36       -0.452782
+     1.4091     1.1600    58.18       -0.449184
+     1.4091     1.1600    60.00       -0.445547
+     1.4091     1.1600    61.82       -0.441960
+     1.4091     1.1600    63.64       -0.438489
+     1.4091     1.1600    65.45       -0.435185
+     1.4091     1.1600    67.27       -0.432087
+     1.4091     1.1600    69.09       -0.429220
+     1.4091     1.1600    70.91       -0.426601
+     1.4091     1.1600    72.73       -0.424240
+     1.4091     1.1600    74.55       -0.422141
+     1.4091     1.1600    76.36       -0.420302
+     1.4091     1.1600    78.18       -0.418721
+     1.4091     1.1600    80.00       -0.417389
+     1.4091     1.1600    81.82       -0.416298
+     1.4091     1.1600    83.64       -0.415436
+     1.4091     1.1600    85.45       -0.414791
+     1.4091     1.1600    87.27       -0.414352
+     1.4091     1.1600    89.09       -0.414105
+     1.4091     1.1600    90.91       -0.414037
+     1.4091     1.1600    92.73       -0.414134
+     1.4091     1.1600    94.55       -0.414383
+     1.4091     1.1600    96.36       -0.414771
+     1.4091     1.1600    98.18       -0.415287
+     1.4091     1.1600   100.00       -0.415916
+     1.4091     1.1600   101.82       -0.416648
+     1.4091     1.1600   103.64       -0.417471
+     1.4091     1.1600   105.45       -0.418374
+     1.4091     1.1600   107.27       -0.419348
+     1.4091     1.1600   109.09       -0.420382
+     1.4091     1.1600   110.91       -0.421467
+     1.4091     1.1600   112.73       -0.422594
+     1.4091     1.1600   114.55       -0.423755
+     1.4091     1.1600   116.36       -0.424942
+     1.4091     1.1600   118.18       -0.426149
+     1.4091     1.1600   120.00       -0.427368
+     1.4091     1.1600   121.82       -0.428593
+     1.4091     1.1600   123.64       -0.429819
+     1.4091     1.1600   125.45       -0.431041
+     1.4091     1.1600   127.27       -0.432252
+     1.4091     1.1600   129.09       -0.433450
+     1.4091     1.1600   130.91       -0.434629
+     1.4091     1.1600   132.73       -0.435786
+     1.4091     1.1600   134.55       -0.436918
+     1.4091     1.1600   136.36       -0.438022
+     1.4091     1.1600   138.18       -0.439094
+     1.4091     1.1600   140.00       -0.440133
+     1.4091     1.1600   141.82       -0.441136
+     1.4091     1.1600   143.64       -0.442101
+     1.4091     1.1600   145.45       -0.443027
+     1.4091     1.1600   147.27       -0.443911
+     1.4091     1.1600   149.09       -0.444753
+     1.4091     1.1600   150.91       -0.445551
+     1.4091     1.1600   152.73       -0.446305
+     1.4091     1.1600   154.55       -0.447013
+     1.4091     1.1600   156.36       -0.447674
+     1.4091     1.1600   158.18       -0.448289
+     1.4091     1.1600   160.00       -0.448856
+     1.4091     1.1600   161.82       -0.449374
+     1.4091     1.1600   163.64       -0.449845
+     1.4091     1.1600   165.45       -0.450266
+     1.4091     1.1600   167.27       -0.450639
+     1.4091     1.1600   169.09       -0.450962
+     1.4091     1.1600   170.91       -0.451236
+     1.4091     1.1600   172.73       -0.451460
+     1.4091     1.1600   174.55       -0.451634
+     1.4091     1.1600   176.36       -0.451759
+     1.4091     1.1600   178.18       -0.451834
+     1.4091     1.1600   180.00       -0.451859
+
+     1.4242     1.1600     0.00        1.688760
+     1.4242     1.1600     1.82        1.654766
+     1.4242     1.1600     3.64        1.557820
+     1.4242     1.1600     5.45        1.411153
+     1.4242     1.1600     7.27        1.231853
+     1.4242     1.1600     9.09        1.036610
+     1.4242     1.1600    10.91        0.839109
+     1.4242     1.1600    12.73        0.649189
+     1.4242     1.1600    14.55        0.473114
+     1.4242     1.1600    16.36        0.314297
+     1.4242     1.1600    18.18        0.174092
+     1.4242     1.1600    20.00        0.052469
+     1.4242     1.1600    21.82       -0.051469
+     1.4242     1.1600    23.64       -0.139114
+     1.4242     1.1600    25.45       -0.212097
+     1.4242     1.1600    27.27       -0.272121
+     1.4242     1.1600    29.09       -0.320857
+     1.4242     1.1600    30.91       -0.359878
+     1.4242     1.1600    32.73       -0.390627
+     1.4242     1.1600    34.55       -0.414401
+     1.4242     1.1600    36.36       -0.432348
+     1.4242     1.1600    38.18       -0.445473
+     1.4242     1.1600    40.00       -0.454646
+     1.4242     1.1600    41.82       -0.460613
+     1.4242     1.1600    43.64       -0.464009
+     1.4242     1.1600    45.45       -0.465374
+     1.4242     1.1600    47.27       -0.465156
+     1.4242     1.1600    49.09       -0.463735
+     1.4242     1.1600    50.91       -0.461420
+     1.4242     1.1600    52.73       -0.458469
+     1.4242     1.1600    54.55       -0.455091
+     1.4242     1.1600    56.36       -0.451455
+     1.4242     1.1600    58.18       -0.447696
+     1.4242     1.1600    60.00       -0.443922
+     1.4242     1.1600    61.82       -0.440217
+     1.4242     1.1600    63.64       -0.436645
+     1.4242     1.1600    65.45       -0.433254
+     1.4242     1.1600    67.27       -0.430078
+     1.4242     1.1600    69.09       -0.427143
+     1.4242     1.1600    70.91       -0.424464
+     1.4242     1.1600    72.73       -0.422048
+     1.4242     1.1600    74.55       -0.419899
+     1.4242     1.1600    76.36       -0.418016
+     1.4242     1.1600    78.18       -0.416392
+     1.4242     1.1600    80.00       -0.415021
+     1.4242     1.1600    81.82       -0.413893
+     1.4242     1.1600    83.64       -0.412997
+     1.4242     1.1600    85.45       -0.412320
+     1.4242     1.1600    87.27       -0.411850
+     1.4242     1.1600    89.09       -0.411573
+     1.4242     1.1600    90.91       -0.411476
+     1.4242     1.1600    92.73       -0.411547
+     1.4242     1.1600    94.55       -0.411770
+     1.4242     1.1600    96.36       -0.412134
+     1.4242     1.1600    98.18       -0.412625
+     1.4242     1.1600   100.00       -0.413232
+     1.4242     1.1600   101.82       -0.413942
+     1.4242     1.1600   103.64       -0.414745
+     1.4242     1.1600   105.45       -0.415628
+     1.4242     1.1600   107.27       -0.416583
+     1.4242     1.1600   109.09       -0.417598
+     1.4242     1.1600   110.91       -0.418665
+     1.4242     1.1600   112.73       -0.419776
+     1.4242     1.1600   114.55       -0.420921
+     1.4242     1.1600   116.36       -0.422093
+     1.4242     1.1600   118.18       -0.423284
+     1.4242     1.1600   120.00       -0.424489
+     1.4242     1.1600   121.82       -0.425701
+     1.4242     1.1600   123.64       -0.426914
+     1.4242     1.1600   125.45       -0.428123
+     1.4242     1.1600   127.27       -0.429322
+     1.4242     1.1600   129.09       -0.430508
+     1.4242     1.1600   130.91       -0.431676
+     1.4242     1.1600   132.73       -0.432823
+     1.4242     1.1600   134.55       -0.433945
+     1.4242     1.1600   136.36       -0.435038
+     1.4242     1.1600   138.18       -0.436101
+     1.4242     1.1600   140.00       -0.437131
+     1.4242     1.1600   141.82       -0.438126
+     1.4242     1.1600   143.64       -0.439082
+     1.4242     1.1600   145.45       -0.440000
+     1.4242     1.1600   147.27       -0.440877
+     1.4242     1.1600   149.09       -0.441712
+     1.4242     1.1600   150.91       -0.442504
+     1.4242     1.1600   152.73       -0.443251
+     1.4242     1.1600   154.55       -0.443953
+     1.4242     1.1600   156.36       -0.444609
+     1.4242     1.1600   158.18       -0.445218
+     1.4242     1.1600   160.00       -0.445780
+     1.4242     1.1600   161.82       -0.446295
+     1.4242     1.1600   163.64       -0.446761
+     1.4242     1.1600   165.45       -0.447179
+     1.4242     1.1600   167.27       -0.447549
+     1.4242     1.1600   169.09       -0.447869
+     1.4242     1.1600   170.91       -0.448141
+     1.4242     1.1600   172.73       -0.448363
+     1.4242     1.1600   174.55       -0.448536
+     1.4242     1.1600   176.36       -0.448660
+     1.4242     1.1600   178.18       -0.448734
+     1.4242     1.1600   180.00       -0.448758
+
+     1.4394     1.1600     0.00        1.527571
+     1.4394     1.1600     1.82        1.497179
+     1.4394     1.1600     3.64        1.410234
+     1.4394     1.1600     5.45        1.277970
+     1.4394     1.1600     7.27        1.115164
+     1.4394     1.1600     9.09        0.936590
+     1.4394     1.1600    10.91        0.754699
+     1.4394     1.1600    12.73        0.578707
+     1.4394     1.1600    14.55        0.414683
+     1.4394     1.1600    16.36        0.266094
+     1.4394     1.1600    18.18        0.134468
+     1.4394     1.1600    20.00        0.019991
+     1.4394     1.1600    21.82       -0.078018
+     1.4394     1.1600    23.64       -0.160752
+     1.4394     1.1600    25.45       -0.229669
+     1.4394     1.1600    27.27       -0.286327
+     1.4394     1.1600    29.09       -0.332274
+     1.4394     1.1600    30.91       -0.368982
+     1.4394     1.1600    32.73       -0.397812
+     1.4394     1.1600    34.55       -0.419993
+     1.4394     1.1600    36.36       -0.436616
+     1.4394     1.1600    38.18       -0.448640
+     1.4394     1.1600    40.00       -0.456897
+     1.4394     1.1600    41.82       -0.462102
+     1.4394     1.1600    43.64       -0.464864
+     1.4394     1.1600    45.45       -0.465700
+     1.4394     1.1600    47.27       -0.465042
+     1.4394     1.1600    49.09       -0.463253
+     1.4394     1.1600    50.91       -0.460631
+     1.4394     1.1600    52.73       -0.457423
+     1.4394     1.1600    54.55       -0.453830
+     1.4394     1.1600    56.36       -0.450012
+     1.4394     1.1600    58.18       -0.446100
+     1.4394     1.1600    60.00       -0.442196
+     1.4394     1.1600    61.82       -0.438380
+     1.4394     1.1600    63.64       -0.434713
+     1.4394     1.1600    65.45       -0.431239
+     1.4394     1.1600    67.27       -0.427991
+     1.4394     1.1600    69.09       -0.424992
+     1.4394     1.1600    70.91       -0.422256
+     1.4394     1.1600    72.73       -0.419789
+     1.4394     1.1600    74.55       -0.417594
+     1.4394     1.1600    76.36       -0.415667
+     1.4394     1.1600    78.18       -0.414005
+     1.4394     1.1600    80.00       -0.412597
+     1.4394     1.1600    81.82       -0.411434
+     1.4394     1.1600    83.64       -0.410505
+     1.4394     1.1600    85.45       -0.409798
+     1.4394     1.1600    87.27       -0.409299
+     1.4394     1.1600    89.09       -0.408994
+     1.4394     1.1600    90.91       -0.408871
+     1.4394     1.1600    92.73       -0.408916
+     1.4394     1.1600    94.55       -0.409115
+     1.4394     1.1600    96.36       -0.409455
+     1.4394     1.1600    98.18       -0.409924
+     1.4394     1.1600   100.00       -0.410510
+     1.4394     1.1600   101.82       -0.411200
+     1.4394     1.1600   103.64       -0.411982
+     1.4394     1.1600   105.45       -0.412847
+     1.4394     1.1600   107.27       -0.413783
+     1.4394     1.1600   109.09       -0.414781
+     1.4394     1.1600   110.91       -0.415832
+     1.4394     1.1600   112.73       -0.416926
+     1.4394     1.1600   114.55       -0.418056
+     1.4394     1.1600   116.36       -0.419213
+     1.4394     1.1600   118.18       -0.420390
+     1.4394     1.1600   120.00       -0.421582
+     1.4394     1.1600   121.82       -0.422780
+     1.4394     1.1600   123.64       -0.423981
+     1.4394     1.1600   125.45       -0.425177
+     1.4394     1.1600   127.27       -0.426365
+     1.4394     1.1600   129.09       -0.427540
+     1.4394     1.1600   130.91       -0.428697
+     1.4394     1.1600   132.73       -0.429833
+     1.4394     1.1600   134.55       -0.430945
+     1.4394     1.1600   136.36       -0.432029
+     1.4394     1.1600   138.18       -0.433083
+     1.4394     1.1600   140.00       -0.434104
+     1.4394     1.1600   141.82       -0.435090
+     1.4394     1.1600   143.64       -0.436039
+     1.4394     1.1600   145.45       -0.436949
+     1.4394     1.1600   147.27       -0.437819
+     1.4394     1.1600   149.09       -0.438647
+     1.4394     1.1600   150.91       -0.439432
+     1.4394     1.1600   152.73       -0.440173
+     1.4394     1.1600   154.55       -0.440869
+     1.4394     1.1600   156.36       -0.441520
+     1.4394     1.1600   158.18       -0.442124
+     1.4394     1.1600   160.00       -0.442682
+     1.4394     1.1600   161.82       -0.443192
+     1.4394     1.1600   163.64       -0.443654
+     1.4394     1.1600   165.45       -0.444069
+     1.4394     1.1600   167.27       -0.444435
+     1.4394     1.1600   169.09       -0.444753
+     1.4394     1.1600   170.91       -0.445022
+     1.4394     1.1600   172.73       -0.445243
+     1.4394     1.1600   174.55       -0.445414
+     1.4394     1.1600   176.36       -0.445537
+     1.4394     1.1600   178.18       -0.445610
+     1.4394     1.1600   180.00       -0.445635
+
+     1.4545     1.1600     0.00        1.376954
+     1.4545     1.1600     1.82        1.349719
+     1.4545     1.1600     3.64        1.271597
+     1.4545     1.1600     5.45        1.152177
+     1.4545     1.1600     7.27        1.004275
+     1.4545     1.1600     9.09        0.840982
+     1.4545     1.1600    10.91        0.673594
+     1.4545     1.1600    12.73        0.510699
+     1.4545     1.1600    14.55        0.358123
+     1.4545     1.1600    16.36        0.219334
+     1.4545     1.1600    18.18        0.095983
+     1.4545     1.1600    20.00       -0.011565
+     1.4545     1.1600    21.82       -0.103801
+     1.4545     1.1600    23.64       -0.181740
+     1.4545     1.1600    25.45       -0.246679
+     1.4545     1.1600    27.27       -0.300039
+     1.4545     1.1600    29.09       -0.343252
+     1.4545     1.1600    30.91       -0.377694
+     1.4545     1.1600    32.73       -0.404645
+     1.4545     1.1600    34.55       -0.425266
+     1.4545     1.1600    36.36       -0.440595
+     1.4545     1.1600    38.18       -0.451545
+     1.4545     1.1600    40.00       -0.458909
+     1.4545     1.1600    41.82       -0.463373
+     1.4545     1.1600    43.64       -0.465520
+     1.4545     1.1600    45.45       -0.465844
+     1.4545     1.1600    47.27       -0.464761
+     1.4545     1.1600    49.09       -0.462618
+     1.4545     1.1600    50.91       -0.459702
+     1.4545     1.1600    52.73       -0.456248
+     1.4545     1.1600    54.55       -0.452449
+     1.4545     1.1600    56.36       -0.448459
+     1.4545     1.1600    58.18       -0.444402
+     1.4545     1.1600    60.00       -0.440375
+     1.4545     1.1600    61.82       -0.436454
+     1.4545     1.1600    63.64       -0.432697
+     1.4545     1.1600    65.45       -0.429145
+     1.4545     1.1600    67.27       -0.425830
+     1.4545     1.1600    69.09       -0.422771
+     1.4545     1.1600    70.91       -0.419981
+     1.4545     1.1600    72.73       -0.417467
+     1.4545     1.1600    74.55       -0.415228
+     1.4545     1.1600    76.36       -0.413262
+     1.4545     1.1600    78.18       -0.411562
+     1.4545     1.1600    80.00       -0.410120
+     1.4545     1.1600    81.82       -0.408925
+     1.4545     1.1600    83.64       -0.407966
+     1.4545     1.1600    85.45       -0.407229
+     1.4545     1.1600    87.27       -0.406703
+     1.4545     1.1600    89.09       -0.406372
+     1.4545     1.1600    90.91       -0.406224
+     1.4545     1.1600    92.73       -0.406245
+     1.4545     1.1600    94.55       -0.406421
+     1.4545     1.1600    96.36       -0.406740
+     1.4545     1.1600    98.18       -0.407188
+     1.4545     1.1600   100.00       -0.407753
+     1.4545     1.1600   101.82       -0.408423
+     1.4545     1.1600   103.64       -0.409187
+     1.4545     1.1600   105.45       -0.410034
+     1.4545     1.1600   107.27       -0.410953
+     1.4545     1.1600   109.09       -0.411935
+     1.4545     1.1600   110.91       -0.412969
+     1.4545     1.1600   112.73       -0.414048
+     1.4545     1.1600   114.55       -0.415163
+     1.4545     1.1600   116.36       -0.416306
+     1.4545     1.1600   118.18       -0.417470
+     1.4545     1.1600   120.00       -0.418649
+     1.4545     1.1600   121.82       -0.419835
+     1.4545     1.1600   123.64       -0.421023
+     1.4545     1.1600   125.45       -0.422208
+     1.4545     1.1600   127.27       -0.423384
+     1.4545     1.1600   129.09       -0.424548
+     1.4545     1.1600   130.91       -0.425695
+     1.4545     1.1600   132.73       -0.426821
+     1.4545     1.1600   134.55       -0.427923
+     1.4545     1.1600   136.36       -0.428998
+     1.4545     1.1600   138.18       -0.430043
+     1.4545     1.1600   140.00       -0.431056
+     1.4545     1.1600   141.82       -0.432034
+     1.4545     1.1600   143.64       -0.432975
+     1.4545     1.1600   145.45       -0.433877
+     1.4545     1.1600   147.27       -0.434740
+     1.4545     1.1600   149.09       -0.435561
+     1.4545     1.1600   150.91       -0.436339
+     1.4545     1.1600   152.73       -0.437074
+     1.4545     1.1600   154.55       -0.437765
+     1.4545     1.1600   156.36       -0.438410
+     1.4545     1.1600   158.18       -0.439010
+     1.4545     1.1600   160.00       -0.439563
+     1.4545     1.1600   161.82       -0.440069
+     1.4545     1.1600   163.64       -0.440527
+     1.4545     1.1600   165.45       -0.440939
+     1.4545     1.1600   167.27       -0.441302
+     1.4545     1.1600   169.09       -0.441617
+     1.4545     1.1600   170.91       -0.441884
+     1.4545     1.1600   172.73       -0.442103
+     1.4545     1.1600   174.55       -0.442273
+     1.4545     1.1600   176.36       -0.442394
+     1.4545     1.1600   178.18       -0.442467
+     1.4545     1.1600   180.00       -0.442491
+
+     1.4697     1.1600     0.00        1.236273
+     1.4697     1.1600     1.82        1.211819
+     1.4697     1.1600     3.64        1.141507
+     1.4697     1.1600     5.45        1.033564
+     1.4697     1.1600     7.27        0.899144
+     1.4697     1.1600     9.09        0.749848
+     1.4697     1.1600    10.91        0.595909
+     1.4697     1.1600    12.73        0.445297
+     1.4697     1.1600    14.55        0.303563
+     1.4697     1.1600    16.36        0.174129
+     1.4697     1.1600    18.18        0.058731
+     1.4697     1.1600    20.00       -0.042123
+     1.4697     1.1600    21.82       -0.128760
+     1.4697     1.1600    23.64       -0.202032
+     1.4697     1.1600    25.45       -0.263093
+     1.4697     1.1600    27.27       -0.313234
+     1.4697     1.1600    29.09       -0.353777
+     1.4697     1.1600    30.91       -0.386004
+     1.4697     1.1600    32.73       -0.411119
+     1.4697     1.1600    34.55       -0.430217
+     1.4697     1.1600    36.36       -0.444284
+     1.4697     1.1600    38.18       -0.454188
+     1.4697     1.1600    40.00       -0.460686
+     1.4697     1.1600    41.82       -0.464430
+     1.4697     1.1600    43.64       -0.465981
+     1.4697     1.1600    45.45       -0.465812
+     1.4697     1.1600    47.27       -0.464319
+     1.4697     1.1600    49.09       -0.461836
+     1.4697     1.1600    50.91       -0.458638
+     1.4697     1.1600    52.73       -0.454949
+     1.4697     1.1600    54.55       -0.450954
+     1.4697     1.1600    56.36       -0.446800
+     1.4697     1.1600    58.18       -0.442605
+     1.4697     1.1600    60.00       -0.438462
+     1.4697     1.1600    61.82       -0.434443
+     1.4697     1.1600    63.64       -0.430601
+     1.4697     1.1600    65.45       -0.426977
+     1.4697     1.1600    67.27       -0.423598
+     1.4697     1.1600    69.09       -0.420483
+     1.4697     1.1600    70.91       -0.417644
+     1.4697     1.1600    72.73       -0.415085
+     1.4697     1.1600    74.55       -0.412805
+     1.4697     1.1600    76.36       -0.410802
+     1.4697     1.1600    78.18       -0.409068
+     1.4697     1.1600    80.00       -0.407594
+     1.4697     1.1600    81.82       -0.406369
+     1.4697     1.1600    83.64       -0.405381
+     1.4697     1.1600    85.45       -0.404618
+     1.4697     1.1600    87.27       -0.404066
+     1.4697     1.1600    89.09       -0.403710
+     1.4697     1.1600    90.91       -0.403539
+     1.4697     1.1600    92.73       -0.403537
+     1.4697     1.1600    94.55       -0.403692
+     1.4697     1.1600    96.36       -0.403990
+     1.4697     1.1600    98.18       -0.404418
+     1.4697     1.1600   100.00       -0.404964
+     1.4697     1.1600   101.82       -0.405617
+     1.4697     1.1600   103.64       -0.406363
+     1.4697     1.1600   105.45       -0.407193
+     1.4697     1.1600   107.27       -0.408096
+     1.4697     1.1600   109.09       -0.409062
+     1.4697     1.1600   110.91       -0.410082
+     1.4697     1.1600   112.73       -0.411146
+     1.4697     1.1600   114.55       -0.412247
+     1.4697     1.1600   116.36       -0.413377
+     1.4697     1.1600   118.18       -0.414528
+     1.4697     1.1600   120.00       -0.415694
+     1.4697     1.1600   121.82       -0.416868
+     1.4697     1.1600   123.64       -0.418044
+     1.4697     1.1600   125.45       -0.419218
+     1.4697     1.1600   127.27       -0.420384
+     1.4697     1.1600   129.09       -0.421537
+     1.4697     1.1600   130.91       -0.422674
+     1.4697     1.1600   132.73       -0.423791
+     1.4697     1.1600   134.55       -0.424883
+     1.4697     1.1600   136.36       -0.425949
+     1.4697     1.1600   138.18       -0.426986
+     1.4697     1.1600   140.00       -0.427990
+     1.4697     1.1600   141.82       -0.428959
+     1.4697     1.1600   143.64       -0.429893
+     1.4697     1.1600   145.45       -0.430788
+     1.4697     1.1600   147.27       -0.431643
+     1.4697     1.1600   149.09       -0.432458
+     1.4697     1.1600   150.91       -0.433230
+     1.4697     1.1600   152.73       -0.433959
+     1.4697     1.1600   154.55       -0.434644
+     1.4697     1.1600   156.36       -0.435284
+     1.4697     1.1600   158.18       -0.435878
+     1.4697     1.1600   160.00       -0.436427
+     1.4697     1.1600   161.82       -0.436929
+     1.4697     1.1600   163.64       -0.437384
+     1.4697     1.1600   165.45       -0.437791
+     1.4697     1.1600   167.27       -0.438152
+     1.4697     1.1600   169.09       -0.438464
+     1.4697     1.1600   170.91       -0.438729
+     1.4697     1.1600   172.73       -0.438946
+     1.4697     1.1600   174.55       -0.439114
+     1.4697     1.1600   176.36       -0.439235
+     1.4697     1.1600   178.18       -0.439307
+     1.4697     1.1600   180.00       -0.439331
+
+     1.4848     1.1600     0.00        1.104926
+     1.4848     1.1600     1.82        1.082931
+     1.4848     1.1600     3.64        1.019556
+     1.4848     1.1600     5.45        0.921894
+     1.4848     1.1600     7.27        0.799675
+     1.4848     1.1600     9.09        0.663195
+     1.4848     1.1600    10.91        0.521712
+     1.4848     1.1600    12.73        0.382593
+     1.4848     1.1600    14.55        0.251098
+     1.4848     1.1600    16.36        0.130568
+     1.4848     1.1600    18.18        0.022787
+     1.4848     1.1600    20.00       -0.071621
+     1.4848     1.1600    21.82       -0.152844
+     1.4848     1.1600    23.64       -0.221593
+     1.4848     1.1600    25.45       -0.278885
+     1.4848     1.1600    27.27       -0.325892
+     1.4848     1.1600    29.09       -0.363833
+     1.4848     1.1600    30.91       -0.393903
+     1.4848     1.1600    32.73       -0.417229
+     1.4848     1.1600    34.55       -0.434846
+     1.4848     1.1600    36.36       -0.447685
+     1.4848     1.1600    38.18       -0.456572
+     1.4848     1.1600    40.00       -0.462229
+     1.4848     1.1600    41.82       -0.465278
+     1.4848     1.1600    43.64       -0.466253
+     1.4848     1.1600    45.45       -0.465607
+     1.4848     1.1600    47.27       -0.463721
+     1.4848     1.1600    49.09       -0.460912
+     1.4848     1.1600    50.91       -0.457443
+     1.4848     1.1600    52.73       -0.453530
+     1.4848     1.1600    54.55       -0.449349
+     1.4848     1.1600    56.36       -0.445040
+     1.4848     1.1600    58.18       -0.440715
+     1.4848     1.1600    60.00       -0.436463
+     1.4848     1.1600    61.82       -0.432351
+     1.4848     1.1600    63.64       -0.428430
+     1.4848     1.1600    65.45       -0.424737
+     1.4848     1.1600    67.27       -0.421299
+     1.4848     1.1600    69.09       -0.418133
+     1.4848     1.1600    70.91       -0.415247
+     1.4848     1.1600    72.73       -0.412647
+     1.4848     1.1600    74.55       -0.410330
+     1.4848     1.1600    76.36       -0.408292
+     1.4848     1.1600    78.18       -0.406526
+     1.4848     1.1600    80.00       -0.405022
+     1.4848     1.1600    81.82       -0.403769
+     1.4848     1.1600    83.64       -0.402755
+     1.4848     1.1600    85.45       -0.401966
+     1.4848     1.1600    87.27       -0.401390
+     1.4848     1.1600    89.09       -0.401012
+     1.4848     1.1600    90.91       -0.400819
+     1.4848     1.1600    92.73       -0.400796
+     1.4848     1.1600    94.55       -0.400931
+     1.4848     1.1600    96.36       -0.401210
+     1.4848     1.1600    98.18       -0.401620
+     1.4848     1.1600   100.00       -0.402148
+     1.4848     1.1600   101.82       -0.402783
+     1.4848     1.1600   103.64       -0.403513
+     1.4848     1.1600   105.45       -0.404327
+     1.4848     1.1600   107.27       -0.405215
+     1.4848     1.1600   109.09       -0.406166
+     1.4848     1.1600   110.91       -0.407172
+     1.4848     1.1600   112.73       -0.408223
+     1.4848     1.1600   114.55       -0.409310
+     1.4848     1.1600   116.36       -0.410427
+     1.4848     1.1600   118.18       -0.411566
+     1.4848     1.1600   120.00       -0.412720
+     1.4848     1.1600   121.82       -0.413883
+     1.4848     1.1600   123.64       -0.415048
+     1.4848     1.1600   125.45       -0.416211
+     1.4848     1.1600   127.27       -0.417367
+     1.4848     1.1600   129.09       -0.418510
+     1.4848     1.1600   130.91       -0.419637
+     1.4848     1.1600   132.73       -0.420744
+     1.4848     1.1600   134.55       -0.421828
+     1.4848     1.1600   136.36       -0.422885
+     1.4848     1.1600   138.18       -0.423913
+     1.4848     1.1600   140.00       -0.424909
+     1.4848     1.1600   141.82       -0.425870
+     1.4848     1.1600   143.64       -0.426796
+     1.4848     1.1600   145.45       -0.427684
+     1.4848     1.1600   147.27       -0.428533
+     1.4848     1.1600   149.09       -0.429341
+     1.4848     1.1600   150.91       -0.430107
+     1.4848     1.1600   152.73       -0.430830
+     1.4848     1.1600   154.55       -0.431509
+     1.4848     1.1600   156.36       -0.432144
+     1.4848     1.1600   158.18       -0.432734
+     1.4848     1.1600   160.00       -0.433277
+     1.4848     1.1600   161.82       -0.433775
+     1.4848     1.1600   163.64       -0.434226
+     1.4848     1.1600   165.45       -0.434631
+     1.4848     1.1600   167.27       -0.434988
+     1.4848     1.1600   169.09       -0.435298
+     1.4848     1.1600   170.91       -0.435561
+     1.4848     1.1600   172.73       -0.435776
+     1.4848     1.1600   174.55       -0.435943
+     1.4848     1.1600   176.36       -0.436062
+     1.4848     1.1600   178.18       -0.436134
+     1.4848     1.1600   180.00       -0.436158
+
+     1.5000     1.1600     0.00        0.982349
+     1.5000     1.1600     1.82        0.962535
+     1.5000     1.1600     3.64        0.905341
+     1.5000     1.1600     5.45        0.816903
+     1.5000     1.1600     7.27        0.705738
+     1.5000     1.1600     9.09        0.580990
+     1.5000     1.1600    10.91        0.451029
+     1.5000     1.1600    12.73        0.322645
+     1.5000     1.1600    14.55        0.200796
+     1.5000     1.1600    16.36        0.088717
+     1.5000     1.1600    18.18       -0.011789
+     1.5000     1.1600    20.00       -0.100010
+     1.5000     1.1600    21.82       -0.176016
+     1.5000     1.1600    23.64       -0.240391
+     1.5000     1.1600    25.45       -0.294031
+     1.5000     1.1600    27.27       -0.337998
+     1.5000     1.1600    29.09       -0.373412
+     1.5000     1.1600    30.91       -0.401385
+     1.5000     1.1600    32.73       -0.422973
+     1.5000     1.1600    34.55       -0.439150
+     1.5000     1.1600    36.36       -0.450799
+     1.5000     1.1600    38.18       -0.458701
+     1.5000     1.1600    40.00       -0.463543
+     1.5000     1.1600    41.82       -0.465920
+     1.5000     1.1600    43.64       -0.466340
+     1.5000     1.1600    45.45       -0.465236
+     1.5000     1.1600    47.27       -0.462971
+     1.5000     1.1600    49.09       -0.459850
+     1.5000     1.1600    50.91       -0.456123
+     1.5000     1.1600    52.73       -0.451997
+     1.5000     1.1600    54.55       -0.447639
+     1.5000     1.1600    56.36       -0.443183
+     1.5000     1.1600    58.18       -0.438736
+     1.5000     1.1600    60.00       -0.434381
+     1.5000     1.1600    61.82       -0.430182
+     1.5000     1.1600    63.64       -0.426187
+     1.5000     1.1600    65.45       -0.422431
+     1.5000     1.1600    67.27       -0.418938
+     1.5000     1.1600    69.09       -0.415723
+     1.5000     1.1600    70.91       -0.412795
+     1.5000     1.1600    72.73       -0.410156
+     1.5000     1.1600    74.55       -0.407804
+     1.5000     1.1600    76.36       -0.405734
+     1.5000     1.1600    78.18       -0.403939
+     1.5000     1.1600    80.00       -0.402407
+     1.5000     1.1600    81.82       -0.401128
+     1.5000     1.1600    83.64       -0.400090
+     1.5000     1.1600    85.45       -0.399278
+     1.5000     1.1600    87.27       -0.398680
+     1.5000     1.1600    89.09       -0.398281
+     1.5000     1.1600    90.91       -0.398067
+     1.5000     1.1600    92.73       -0.398025
+     1.5000     1.1600    94.55       -0.398141
+     1.5000     1.1600    96.36       -0.398402
+     1.5000     1.1600    98.18       -0.398795
+     1.5000     1.1600   100.00       -0.399306
+     1.5000     1.1600   101.82       -0.399925
+     1.5000     1.1600   103.64       -0.400640
+     1.5000     1.1600   105.45       -0.401439
+     1.5000     1.1600   107.27       -0.402313
+     1.5000     1.1600   109.09       -0.403250
+     1.5000     1.1600   110.91       -0.404243
+     1.5000     1.1600   112.73       -0.405281
+     1.5000     1.1600   114.55       -0.406356
+     1.5000     1.1600   116.36       -0.407461
+     1.5000     1.1600   118.18       -0.408588
+     1.5000     1.1600   120.00       -0.409731
+     1.5000     1.1600   121.82       -0.410883
+     1.5000     1.1600   123.64       -0.412037
+     1.5000     1.1600   125.45       -0.413190
+     1.5000     1.1600   127.27       -0.414335
+     1.5000     1.1600   129.09       -0.415469
+     1.5000     1.1600   130.91       -0.416587
+     1.5000     1.1600   132.73       -0.417685
+     1.5000     1.1600   134.55       -0.418760
+     1.5000     1.1600   136.36       -0.419808
+     1.5000     1.1600   138.18       -0.420828
+     1.5000     1.1600   140.00       -0.421816
+     1.5000     1.1600   141.82       -0.422770
+     1.5000     1.1600   143.64       -0.423688
+     1.5000     1.1600   145.45       -0.424569
+     1.5000     1.1600   147.27       -0.425411
+     1.5000     1.1600   149.09       -0.426212
+     1.5000     1.1600   150.91       -0.426972
+     1.5000     1.1600   152.73       -0.427689
+     1.5000     1.1600   154.55       -0.428363
+     1.5000     1.1600   156.36       -0.428993
+     1.5000     1.1600   158.18       -0.429578
+     1.5000     1.1600   160.00       -0.430117
+     1.5000     1.1600   161.82       -0.430611
+     1.5000     1.1600   163.64       -0.431058
+     1.5000     1.1600   165.45       -0.431459
+     1.5000     1.1600   167.27       -0.431813
+     1.5000     1.1600   169.09       -0.432121
+     1.5000     1.1600   170.91       -0.432381
+     1.5000     1.1600   172.73       -0.432594
+     1.5000     1.1600   174.55       -0.432760
+     1.5000     1.1600   176.36       -0.432879
+     1.5000     1.1600   178.18       -0.432950
+     1.5000     1.1600   180.00       -0.432974
+
+     1.5152     1.1600     0.00        0.868007
+     1.5152     1.1600     1.82        0.850135
+     1.5152     1.1600     3.64        0.798461
+     1.5152     1.1600     5.45        0.718317
+     1.5152     1.1600     7.27        0.617176
+     1.5152     1.1600     9.09        0.503167
+     1.5152     1.1600    10.91        0.383853
+     1.5152     1.1600    12.73        0.265480
+     1.5152     1.1600    14.55        0.152699
+     1.5152     1.1600    16.36        0.048621
+     1.5152     1.1600    18.18       -0.044954
+     1.5152     1.1600    20.00       -0.127254
+     1.5152     1.1600    21.82       -0.198246
+     1.5152     1.1600    23.64       -0.258404
+     1.5152     1.1600    25.45       -0.308516
+     1.5152     1.1600    27.27       -0.349540
+     1.5152     1.1600    29.09       -0.382506
+     1.5152     1.1600    30.91       -0.408447
+     1.5152     1.1600    32.73       -0.428350
+     1.5152     1.1600    34.55       -0.443132
+     1.5152     1.1600    36.36       -0.453627
+     1.5152     1.1600    38.18       -0.460577
+     1.5152     1.1600    40.00       -0.464633
+     1.5152     1.1600    41.82       -0.466361
+     1.5152     1.1600    43.64       -0.466246
+     1.5152     1.1600    45.45       -0.464702
+     1.5152     1.1600    47.27       -0.462075
+     1.5152     1.1600    49.09       -0.458655
+     1.5152     1.1600    50.91       -0.454683
+     1.5152     1.1600    52.73       -0.450354
+     1.5152     1.1600    54.55       -0.445829
+     1.5152     1.1600    56.36       -0.441234
+     1.5152     1.1600    58.18       -0.436671
+     1.5152     1.1600    60.00       -0.432219
+     1.5152     1.1600    61.82       -0.427939
+     1.5152     1.1600    63.64       -0.423875
+     1.5152     1.1600    65.45       -0.420060
+     1.5152     1.1600    67.27       -0.416516
+     1.5152     1.1600    69.09       -0.413257
+     1.5152     1.1600    70.91       -0.410289
+     1.5152     1.1600    72.73       -0.407615
+     1.5152     1.1600    74.55       -0.405231
+     1.5152     1.1600    76.36       -0.403132
+     1.5152     1.1600    78.18       -0.401309
+     1.5152     1.1600    80.00       -0.399752
+     1.5152     1.1600    81.82       -0.398450
+     1.5152     1.1600    83.64       -0.397389
+     1.5152     1.1600    85.45       -0.396556
+     1.5152     1.1600    87.27       -0.395937
+     1.5152     1.1600    89.09       -0.395518
+     1.5152     1.1600    90.91       -0.395286
+     1.5152     1.1600    92.73       -0.395226
+     1.5152     1.1600    94.55       -0.395325
+     1.5152     1.1600    96.36       -0.395569
+     1.5152     1.1600    98.18       -0.395946
+     1.5152     1.1600   100.00       -0.396443
+     1.5152     1.1600   101.82       -0.397047
+     1.5152     1.1600   103.64       -0.397747
+     1.5152     1.1600   105.45       -0.398533
+     1.5152     1.1600   107.27       -0.399393
+     1.5152     1.1600   109.09       -0.400318
+     1.5152     1.1600   110.91       -0.401297
+     1.5152     1.1600   112.73       -0.402323
+     1.5152     1.1600   114.55       -0.403387
+     1.5152     1.1600   116.36       -0.404481
+     1.5152     1.1600   118.18       -0.405597
+     1.5152     1.1600   120.00       -0.406729
+     1.5152     1.1600   121.82       -0.407870
+     1.5152     1.1600   123.64       -0.409015
+     1.5152     1.1600   125.45       -0.410157
+     1.5152     1.1600   127.27       -0.411293
+     1.5152     1.1600   129.09       -0.412417
+     1.5152     1.1600   130.91       -0.413526
+     1.5152     1.1600   132.73       -0.414615
+     1.5152     1.1600   134.55       -0.415681
+     1.5152     1.1600   136.36       -0.416722
+     1.5152     1.1600   138.18       -0.417733
+     1.5152     1.1600   140.00       -0.418713
+     1.5152     1.1600   141.82       -0.419660
+     1.5152     1.1600   143.64       -0.420571
+     1.5152     1.1600   145.45       -0.421445
+     1.5152     1.1600   147.27       -0.422280
+     1.5152     1.1600   149.09       -0.423075
+     1.5152     1.1600   150.91       -0.423829
+     1.5152     1.1600   152.73       -0.424540
+     1.5152     1.1600   154.55       -0.425209
+     1.5152     1.1600   156.36       -0.425833
+     1.5152     1.1600   158.18       -0.426413
+     1.5152     1.1600   160.00       -0.426948
+     1.5152     1.1600   161.82       -0.427438
+     1.5152     1.1600   163.64       -0.427882
+     1.5152     1.1600   165.45       -0.428279
+     1.5152     1.1600   167.27       -0.428631
+     1.5152     1.1600   169.09       -0.428935
+     1.5152     1.1600   170.91       -0.429193
+     1.5152     1.1600   172.73       -0.429405
+     1.5152     1.1600   174.55       -0.429569
+     1.5152     1.1600   176.36       -0.429687
+     1.5152     1.1600   178.18       -0.429757
+     1.5152     1.1600   180.00       -0.429781
+
+     1.5303     1.1600     0.00        0.761397
+     1.5303     1.1600     1.82        0.745259
+     1.5303     1.1600     3.64        0.698529
+     1.5303     1.1600     5.45        0.625855
+     1.5303     1.1600     7.27        0.533810
+     1.5303     1.1600     9.09        0.429632
+     1.5303     1.1600    10.91        0.320151
+     1.5303     1.1600    12.73        0.211100
+     1.5303     1.1600    14.55        0.106829
+     1.5303     1.1600    16.36        0.010311
+     1.5303     1.1600    18.18       -0.076680
+     1.5303     1.1600    20.00       -0.153325
+     1.5303     1.1600    21.82       -0.219511
+     1.5303     1.1600    23.64       -0.275616
+     1.5303     1.1600    25.45       -0.322327
+     1.5303     1.1600    27.27       -0.360510
+     1.5303     1.1600    29.09       -0.391110
+     1.5303     1.1600    30.91       -0.415086
+     1.5303     1.1600    32.73       -0.433359
+     1.5303     1.1600    34.55       -0.446793
+     1.5303     1.1600    36.36       -0.456174
+     1.5303     1.1600    38.18       -0.462203
+     1.5303     1.1600    40.00       -0.465501
+     1.5303     1.1600    41.82       -0.466605
+     1.5303     1.1600    43.64       -0.465977
+     1.5303     1.1600    45.45       -0.464011
+     1.5303     1.1600    47.27       -0.461037
+     1.5303     1.1600    49.09       -0.457333
+     1.5303     1.1600    50.91       -0.453127
+     1.5303     1.1600    52.73       -0.448606
+     1.5303     1.1600    54.55       -0.443922
+     1.5303     1.1600    56.36       -0.439196
+     1.5303     1.1600    58.18       -0.434525
+     1.5303     1.1600    60.00       -0.429983
+     1.5303     1.1600    61.82       -0.425627
+     1.5303     1.1600    63.64       -0.421499
+     1.5303     1.1600    65.45       -0.417629
+     1.5303     1.1600    67.27       -0.414038
+     1.5303     1.1600    69.09       -0.410738
+     1.5303     1.1600    70.91       -0.407734
+     1.5303     1.1600    72.73       -0.405027
+     1.5303     1.1600    74.55       -0.402614
+     1.5303     1.1600    76.36       -0.400488
+     1.5303     1.1600    78.18       -0.398640
+     1.5303     1.1600    80.00       -0.397060
+     1.5303     1.1600    81.82       -0.395736
+     1.5303     1.1600    83.64       -0.394654
+     1.5303     1.1600    85.45       -0.393802
+     1.5303     1.1600    87.27       -0.393164
+     1.5303     1.1600    89.09       -0.392728
+     1.5303     1.1600    90.91       -0.392479
+     1.5303     1.1600    92.73       -0.392403
+     1.5303     1.1600    94.55       -0.392486
+     1.5303     1.1600    96.36       -0.392715
+     1.5303     1.1600    98.18       -0.393077
+     1.5303     1.1600   100.00       -0.393559
+     1.5303     1.1600   101.82       -0.394150
+     1.5303     1.1600   103.64       -0.394837
+     1.5303     1.1600   105.45       -0.395610
+     1.5303     1.1600   107.27       -0.396458
+     1.5303     1.1600   109.09       -0.397370
+     1.5303     1.1600   110.91       -0.398338
+     1.5303     1.1600   112.73       -0.399353
+     1.5303     1.1600   114.55       -0.400406
+     1.5303     1.1600   116.36       -0.401489
+     1.5303     1.1600   118.18       -0.402594
+     1.5303     1.1600   120.00       -0.403716
+     1.5303     1.1600   121.82       -0.404847
+     1.5303     1.1600   123.64       -0.405982
+     1.5303     1.1600   125.45       -0.407116
+     1.5303     1.1600   127.27       -0.408242
+     1.5303     1.1600   129.09       -0.409358
+     1.5303     1.1600   130.91       -0.410457
+     1.5303     1.1600   132.73       -0.411538
+     1.5303     1.1600   134.55       -0.412596
+     1.5303     1.1600   136.36       -0.413628
+     1.5303     1.1600   138.18       -0.414631
+     1.5303     1.1600   140.00       -0.415604
+     1.5303     1.1600   141.82       -0.416543
+     1.5303     1.1600   143.64       -0.417447
+     1.5303     1.1600   145.45       -0.418314
+     1.5303     1.1600   147.27       -0.419143
+     1.5303     1.1600   149.09       -0.419931
+     1.5303     1.1600   150.91       -0.420679
+     1.5303     1.1600   152.73       -0.421385
+     1.5303     1.1600   154.55       -0.422048
+     1.5303     1.1600   156.36       -0.422667
+     1.5303     1.1600   158.18       -0.423242
+     1.5303     1.1600   160.00       -0.423773
+     1.5303     1.1600   161.82       -0.424259
+     1.5303     1.1600   163.64       -0.424699
+     1.5303     1.1600   165.45       -0.425093
+     1.5303     1.1600   167.27       -0.425441
+     1.5303     1.1600   169.09       -0.425744
+     1.5303     1.1600   170.91       -0.426000
+     1.5303     1.1600   172.73       -0.426209
+     1.5303     1.1600   174.55       -0.426372
+     1.5303     1.1600   176.36       -0.426489
+     1.5303     1.1600   178.18       -0.426559
+     1.5303     1.1600   180.00       -0.426582
+
+     1.5455     1.1600     0.00        0.662046
+     1.5455     1.1600     1.82        0.647459
+     1.5455     1.1600     3.64        0.605166
+     1.5455     1.1600     5.45        0.539231
+     1.5455     1.1600     7.27        0.455449
+     1.5455     1.1600     9.09        0.360271
+     1.5455     1.1600    10.91        0.259864
+     1.5455     1.1600    12.73        0.159485
+     1.5455     1.1600    14.55        0.063187
+     1.5455     1.1600    16.36       -0.026202
+     1.5455     1.1600    18.18       -0.106950
+     1.5455     1.1600    20.00       -0.178208
+     1.5455     1.1600    21.82       -0.239799
+     1.5455     1.1600    23.64       -0.292015
+     1.5455     1.1600    25.45       -0.335456
+     1.5455     1.1600    27.27       -0.370903
+     1.5455     1.1600    29.09       -0.399223
+     1.5455     1.1600    30.91       -0.421302
+     1.5455     1.1600    32.73       -0.438003
+     1.5455     1.1600    34.55       -0.450136
+     1.5455     1.1600    36.36       -0.458442
+     1.5455     1.1600    38.18       -0.463585
+     1.5455     1.1600    40.00       -0.466154
+     1.5455     1.1600    41.82       -0.466658
+     1.5455     1.1600    43.64       -0.465537
+     1.5455     1.1600    45.45       -0.463167
+     1.5455     1.1600    47.27       -0.459863
+     1.5455     1.1600    49.09       -0.455887
+     1.5455     1.1600    50.91       -0.451459
+     1.5455     1.1600    52.73       -0.446756
+     1.5455     1.1600    54.55       -0.441922
+     1.5455     1.1600    56.36       -0.437073
+     1.5455     1.1600    58.18       -0.432301
+     1.5455     1.1600    60.00       -0.427674
+     1.5455     1.1600    61.82       -0.423248
+     1.5455     1.1600    63.64       -0.419061
+     1.5455     1.1600    65.45       -0.415141
+     1.5455     1.1600    67.27       -0.411507
+     1.5455     1.1600    69.09       -0.408169
+     1.5455     1.1600    70.91       -0.405131
+     1.5455     1.1600    72.73       -0.402395
+     1.5455     1.1600    74.55       -0.399955
+     1.5455     1.1600    76.36       -0.397805
+     1.5455     1.1600    78.18       -0.395935
+     1.5455     1.1600    80.00       -0.394334
+     1.5455     1.1600    81.82       -0.392990
+     1.5455     1.1600    83.64       -0.391890
+     1.5455     1.1600    85.45       -0.391019
+     1.5455     1.1600    87.27       -0.390365
+     1.5455     1.1600    89.09       -0.389913
+     1.5455     1.1600    90.91       -0.389648
+     1.5455     1.1600    92.73       -0.389557
+     1.5455     1.1600    94.55       -0.389626
+     1.5455     1.1600    96.36       -0.389841
+     1.5455     1.1600    98.18       -0.390190
+     1.5455     1.1600   100.00       -0.390659
+     1.5455     1.1600   101.82       -0.391237
+     1.5455     1.1600   103.64       -0.391912
+     1.5455     1.1600   105.45       -0.392673
+     1.5455     1.1600   107.27       -0.393510
+     1.5455     1.1600   109.09       -0.394411
+     1.5455     1.1600   110.91       -0.395369
+     1.5455     1.1600   112.73       -0.396373
+     1.5455     1.1600   114.55       -0.397415
+     1.5455     1.1600   116.36       -0.398488
+     1.5455     1.1600   118.18       -0.399584
+     1.5455     1.1600   120.00       -0.400696
+     1.5455     1.1600   121.82       -0.401818
+     1.5455     1.1600   123.64       -0.402943
+     1.5455     1.1600   125.45       -0.404068
+     1.5455     1.1600   127.27       -0.405185
+     1.5455     1.1600   129.09       -0.406292
+     1.5455     1.1600   130.91       -0.407383
+     1.5455     1.1600   132.73       -0.408455
+     1.5455     1.1600   134.55       -0.409505
+     1.5455     1.1600   136.36       -0.410529
+     1.5455     1.1600   138.18       -0.411525
+     1.5455     1.1600   140.00       -0.412490
+     1.5455     1.1600   141.82       -0.413422
+     1.5455     1.1600   143.64       -0.414319
+     1.5455     1.1600   145.45       -0.415179
+     1.5455     1.1600   147.27       -0.416001
+     1.5455     1.1600   149.09       -0.416783
+     1.5455     1.1600   150.91       -0.417525
+     1.5455     1.1600   152.73       -0.418225
+     1.5455     1.1600   154.55       -0.418883
+     1.5455     1.1600   156.36       -0.419497
+     1.5455     1.1600   158.18       -0.420068
+     1.5455     1.1600   160.00       -0.420594
+     1.5455     1.1600   161.82       -0.421076
+     1.5455     1.1600   163.64       -0.421512
+     1.5455     1.1600   165.45       -0.421903
+     1.5455     1.1600   167.27       -0.422248
+     1.5455     1.1600   169.09       -0.422548
+     1.5455     1.1600   170.91       -0.422802
+     1.5455     1.1600   172.73       -0.423010
+     1.5455     1.1600   174.55       -0.423171
+     1.5455     1.1600   176.36       -0.423287
+     1.5455     1.1600   178.18       -0.423356
+     1.5455     1.1600   180.00       -0.423379
+
+     1.5606     1.1600     0.00        0.569507
+     1.5606     1.1600     1.82        0.556312
+     1.5606     1.1600     3.64        0.518008
+     1.5606     1.1600     5.45        0.458162
+     1.5606     1.1600     7.27        0.381892
+     1.5606     1.1600     9.09        0.294955
+     1.5606     1.1600    10.91        0.202920
+     1.5606     1.1600    12.73        0.110599
+     1.5606     1.1600    14.55        0.021761
+     1.5606     1.1600    16.36       -0.060919
+     1.5606     1.1600    18.18       -0.135758
+     1.5606     1.1600    20.00       -0.201895
+     1.5606     1.1600    21.82       -0.259101
+     1.5606     1.1600    23.64       -0.307596
+     1.5606     1.1600    25.45       -0.347901
+     1.5606     1.1600    27.27       -0.380719
+     1.5606     1.1600    29.09       -0.406844
+     1.5606     1.1600    30.91       -0.427098
+     1.5606     1.1600    32.73       -0.442284
+     1.5606     1.1600    34.55       -0.453165
+     1.5606     1.1600    36.36       -0.460436
+     1.5606     1.1600    38.18       -0.464728
+     1.5606     1.1600    40.00       -0.466595
+     1.5606     1.1600    41.82       -0.466524
+     1.5606     1.1600    43.64       -0.464932
+     1.5606     1.1600    45.45       -0.462176
+     1.5606     1.1600    47.27       -0.458556
+     1.5606     1.1600    49.09       -0.454323
+     1.5606     1.1600    50.91       -0.449684
+     1.5606     1.1600    52.73       -0.444809
+     1.5606     1.1600    54.55       -0.439834
+     1.5606     1.1600    56.36       -0.434870
+     1.5606     1.1600    58.18       -0.430003
+     1.5606     1.1600    60.00       -0.425298
+     1.5606     1.1600    61.82       -0.420806
+     1.5606     1.1600    63.64       -0.416565
+     1.5606     1.1600    65.45       -0.412598
+     1.5606     1.1600    67.27       -0.408924
+     1.5606     1.1600    69.09       -0.405552
+     1.5606     1.1600    70.91       -0.402485
+     1.5606     1.1600    72.73       -0.399722
+     1.5606     1.1600    74.55       -0.397258
+     1.5606     1.1600    76.36       -0.395086
+     1.5606     1.1600    78.18       -0.393195
+     1.5606     1.1600    80.00       -0.391576
+     1.5606     1.1600    81.82       -0.390214
+     1.5606     1.1600    83.64       -0.389097
+     1.5606     1.1600    85.45       -0.388211
+     1.5606     1.1600    87.27       -0.387542
+     1.5606     1.1600    89.09       -0.387075
+     1.5606     1.1600    90.91       -0.386796
+     1.5606     1.1600    92.73       -0.386692
+     1.5606     1.1600    94.55       -0.386747
+     1.5606     1.1600    96.36       -0.386950
+     1.5606     1.1600    98.18       -0.387287
+     1.5606     1.1600   100.00       -0.387745
+     1.5606     1.1600   101.82       -0.388311
+     1.5606     1.1600   103.64       -0.388975
+     1.5606     1.1600   105.45       -0.389726
+     1.5606     1.1600   107.27       -0.390551
+     1.5606     1.1600   109.09       -0.391443
+     1.5606     1.1600   110.91       -0.392390
+     1.5606     1.1600   112.73       -0.393384
+     1.5606     1.1600   114.55       -0.394417
+     1.5606     1.1600   116.36       -0.395480
+     1.5606     1.1600   118.18       -0.396567
+     1.5606     1.1600   120.00       -0.397670
+     1.5606     1.1600   121.82       -0.398783
+     1.5606     1.1600   123.64       -0.399900
+     1.5606     1.1600   125.45       -0.401015
+     1.5606     1.1600   127.27       -0.402124
+     1.5606     1.1600   129.09       -0.403222
+     1.5606     1.1600   130.91       -0.404305
+     1.5606     1.1600   132.73       -0.405370
+     1.5606     1.1600   134.55       -0.406411
+     1.5606     1.1600   136.36       -0.407428
+     1.5606     1.1600   138.18       -0.408416
+     1.5606     1.1600   140.00       -0.409374
+     1.5606     1.1600   141.82       -0.410298
+     1.5606     1.1600   143.64       -0.411188
+     1.5606     1.1600   145.45       -0.412042
+     1.5606     1.1600   147.27       -0.412857
+     1.5606     1.1600   149.09       -0.413634
+     1.5606     1.1600   150.91       -0.414369
+     1.5606     1.1600   152.73       -0.415064
+     1.5606     1.1600   154.55       -0.415716
+     1.5606     1.1600   156.36       -0.416325
+     1.5606     1.1600   158.18       -0.416891
+     1.5606     1.1600   160.00       -0.417413
+     1.5606     1.1600   161.82       -0.417890
+     1.5606     1.1600   163.64       -0.418323
+     1.5606     1.1600   165.45       -0.418711
+     1.5606     1.1600   167.27       -0.419053
+     1.5606     1.1600   169.09       -0.419350
+     1.5606     1.1600   170.91       -0.419602
+     1.5606     1.1600   172.73       -0.419808
+     1.5606     1.1600   174.55       -0.419968
+     1.5606     1.1600   176.36       -0.420083
+     1.5606     1.1600   178.18       -0.420151
+     1.5606     1.1600   180.00       -0.420174
+
+     1.5758     1.1600     0.00        0.483360
+     1.5758     1.1600     1.82        0.471416
+     1.5758     1.1600     3.64        0.436707
+     1.5758     1.1600     5.45        0.382369
+     1.5758     1.1600     7.27        0.312934
+     1.5758     1.1600     9.09        0.233544
+     1.5758     1.1600    10.91        0.149230
+     1.5758     1.1600    12.73        0.064391
+     1.5758     1.1600    14.55       -0.017476
+     1.5758     1.1600    16.36       -0.093850
+     1.5758     1.1600    18.18       -0.163107
+     1.5758     1.1600    20.00       -0.224387
+     1.5758     1.1600    21.82       -0.277418
+     1.5758     1.1600    23.64       -0.322359
+     1.5758     1.1600    25.45       -0.359662
+     1.5758     1.1600    27.27       -0.389958
+     1.5758     1.1600    29.09       -0.413976
+     1.5758     1.1600    30.91       -0.432476
+     1.5758     1.1600    32.73       -0.446207
+     1.5758     1.1600    34.55       -0.455883
+     1.5758     1.1600    36.36       -0.462162
+     1.5758     1.1600    38.18       -0.465635
+     1.5758     1.1600    40.00       -0.466831
+     1.5758     1.1600    41.82       -0.466209
+     1.5758     1.1600    43.64       -0.464167
+     1.5758     1.1600    45.45       -0.461043
+     1.5758     1.1600    47.27       -0.457122
+     1.5758     1.1600    49.09       -0.452645
+     1.5758     1.1600    50.91       -0.447806
+     1.5758     1.1600    52.73       -0.442769
+     1.5758     1.1600    54.55       -0.437662
+     1.5758     1.1600    56.36       -0.432590
+     1.5758     1.1600    58.18       -0.427634
+     1.5758     1.1600    60.00       -0.422857
+     1.5758     1.1600    61.82       -0.418305
+     1.5758     1.1600    63.64       -0.414013
+     1.5758     1.1600    65.45       -0.410004
+     1.5758     1.1600    67.27       -0.406295
+     1.5758     1.1600    69.09       -0.402891
+     1.5758     1.1600    70.91       -0.399797
+     1.5758     1.1600    72.73       -0.397010
+     1.5758     1.1600    74.55       -0.394525
+     1.5758     1.1600    76.36       -0.392333
+     1.5758     1.1600    78.18       -0.390425
+     1.5758     1.1600    80.00       -0.388788
+     1.5758     1.1600    81.82       -0.387411
+     1.5758     1.1600    83.64       -0.386279
+     1.5758     1.1600    85.45       -0.385379
+     1.5758     1.1600    87.27       -0.384697
+     1.5758     1.1600    89.09       -0.384217
+     1.5758     1.1600    90.91       -0.383926
+     1.5758     1.1600    92.73       -0.383810
+     1.5758     1.1600    94.55       -0.383854
+     1.5758     1.1600    96.36       -0.384045
+     1.5758     1.1600    98.18       -0.384371
+     1.5758     1.1600   100.00       -0.384818
+     1.5758     1.1600   101.82       -0.385375
+     1.5758     1.1600   103.64       -0.386029
+     1.5758     1.1600   105.45       -0.386770
+     1.5758     1.1600   107.27       -0.387586
+     1.5758     1.1600   109.09       -0.388468
+     1.5758     1.1600   110.91       -0.389406
+     1.5758     1.1600   112.73       -0.390391
+     1.5758     1.1600   114.55       -0.391415
+     1.5758     1.1600   116.36       -0.392469
+     1.5758     1.1600   118.18       -0.393547
+     1.5758     1.1600   120.00       -0.394641
+     1.5758     1.1600   121.82       -0.395745
+     1.5758     1.1600   123.64       -0.396854
+     1.5758     1.1600   125.45       -0.397961
+     1.5758     1.1600   127.27       -0.399062
+     1.5758     1.1600   129.09       -0.400152
+     1.5758     1.1600   130.91       -0.401227
+     1.5758     1.1600   132.73       -0.402283
+     1.5758     1.1600   134.55       -0.403317
+     1.5758     1.1600   136.36       -0.404326
+     1.5758     1.1600   138.18       -0.405307
+     1.5758     1.1600   140.00       -0.406257
+     1.5758     1.1600   141.82       -0.407175
+     1.5758     1.1600   143.64       -0.408058
+     1.5758     1.1600   145.45       -0.408904
+     1.5758     1.1600   147.27       -0.409714
+     1.5758     1.1600   149.09       -0.410484
+     1.5758     1.1600   150.91       -0.411213
+     1.5758     1.1600   152.73       -0.411902
+     1.5758     1.1600   154.55       -0.412549
+     1.5758     1.1600   156.36       -0.413153
+     1.5758     1.1600   158.18       -0.413715
+     1.5758     1.1600   160.00       -0.414232
+     1.5758     1.1600   161.82       -0.414705
+     1.5758     1.1600   163.64       -0.415134
+     1.5758     1.1600   165.45       -0.415519
+     1.5758     1.1600   167.27       -0.415858
+     1.5758     1.1600   169.09       -0.416153
+     1.5758     1.1600   170.91       -0.416402
+     1.5758     1.1600   172.73       -0.416606
+     1.5758     1.1600   174.55       -0.416765
+     1.5758     1.1600   176.36       -0.416879
+     1.5758     1.1600   178.18       -0.416947
+     1.5758     1.1600   180.00       -0.416969
+
+     1.5909     1.1600     0.00        0.403209
+     1.5909     1.1600     1.82        0.392391
+     1.5909     1.1600     3.64        0.360926
+     1.5909     1.1600     5.45        0.311578
+     1.5909     1.1600     7.27        0.248368
+     1.5909     1.1600     9.09        0.175892
+     1.5909     1.1600    10.91        0.098696
+     1.5909     1.1600    12.73        0.020799
+     1.5909     1.1600    14.55       -0.054563
+     1.5909     1.1600    16.36       -0.125017
+     1.5909     1.1600    18.18       -0.189011
+     1.5909     1.1600    20.00       -0.245690
+     1.5909     1.1600    21.82       -0.294753
+     1.5909     1.1600    23.64       -0.336306
+     1.5909     1.1600    25.45       -0.370741
+     1.5909     1.1600    27.27       -0.398625
+     1.5909     1.1600    29.09       -0.420624
+     1.5909     1.1600    30.91       -0.437441
+     1.5909     1.1600    32.73       -0.449777
+     1.5909     1.1600    34.55       -0.458298
+     1.5909     1.1600    36.36       -0.463624
+     1.5909     1.1600    38.18       -0.466314
+     1.5909     1.1600    40.00       -0.466867
+     1.5909     1.1600    41.82       -0.465719
+     1.5909     1.1600    43.64       -0.463246
+     1.5909     1.1600    45.45       -0.459772
+     1.5909     1.1600    47.27       -0.455566
+     1.5909     1.1600    49.09       -0.450857
+     1.5909     1.1600    50.91       -0.445830
+     1.5909     1.1600    52.73       -0.440640
+     1.5909     1.1600    54.55       -0.435410
+     1.5909     1.1600    56.36       -0.430237
+     1.5909     1.1600    58.18       -0.425199
+     1.5909     1.1600    60.00       -0.420354
+     1.5909     1.1600    61.82       -0.415747
+     1.5909     1.1600    63.64       -0.411409
+     1.5909     1.1600    65.45       -0.407362
+     1.5909     1.1600    67.27       -0.403620
+     1.5909     1.1600    69.09       -0.400189
+     1.5909     1.1600    70.91       -0.397071
+     1.5909     1.1600    72.73       -0.394262
+     1.5909     1.1600    74.55       -0.391758
+     1.5909     1.1600    76.36       -0.389549
+     1.5909     1.1600    78.18       -0.387625
+     1.5909     1.1600    80.00       -0.385975
+     1.5909     1.1600    81.82       -0.384584
+     1.5909     1.1600    83.64       -0.383439
+     1.5909     1.1600    85.45       -0.382527
+     1.5909     1.1600    87.27       -0.381833
+     1.5909     1.1600    89.09       -0.381342
+     1.5909     1.1600    90.91       -0.381040
+     1.5909     1.1600    92.73       -0.380913
+     1.5909     1.1600    94.55       -0.380948
+     1.5909     1.1600    96.36       -0.381129
+     1.5909     1.1600    98.18       -0.381446
+     1.5909     1.1600   100.00       -0.381883
+     1.5909     1.1600   101.82       -0.382431
+     1.5909     1.1600   103.64       -0.383076
+     1.5909     1.1600   105.45       -0.383807
+     1.5909     1.1600   107.27       -0.384615
+     1.5909     1.1600   109.09       -0.385488
+     1.5909     1.1600   110.91       -0.386418
+     1.5909     1.1600   112.73       -0.387394
+     1.5909     1.1600   114.55       -0.388410
+     1.5909     1.1600   116.36       -0.389456
+     1.5909     1.1600   118.18       -0.390526
+     1.5909     1.1600   120.00       -0.391612
+     1.5909     1.1600   121.82       -0.392708
+     1.5909     1.1600   123.64       -0.393808
+     1.5909     1.1600   125.45       -0.394907
+     1.5909     1.1600   127.27       -0.396000
+     1.5909     1.1600   129.09       -0.397082
+     1.5909     1.1600   130.91       -0.398149
+     1.5909     1.1600   132.73       -0.399198
+     1.5909     1.1600   134.55       -0.400224
+     1.5909     1.1600   136.36       -0.401225
+     1.5909     1.1600   138.18       -0.402199
+     1.5909     1.1600   140.00       -0.403142
+     1.5909     1.1600   141.82       -0.404053
+     1.5909     1.1600   143.64       -0.404929
+     1.5909     1.1600   145.45       -0.405769
+     1.5909     1.1600   147.27       -0.406572
+     1.5909     1.1600   149.09       -0.407336
+     1.5909     1.1600   150.91       -0.408059
+     1.5909     1.1600   152.73       -0.408743
+     1.5909     1.1600   154.55       -0.409384
+     1.5909     1.1600   156.36       -0.409983
+     1.5909     1.1600   158.18       -0.410540
+     1.5909     1.1600   160.00       -0.411053
+     1.5909     1.1600   161.82       -0.411522
+     1.5909     1.1600   163.64       -0.411947
+     1.5909     1.1600   165.45       -0.412328
+     1.5909     1.1600   167.27       -0.412665
+     1.5909     1.1600   169.09       -0.412957
+     1.5909     1.1600   170.91       -0.413204
+     1.5909     1.1600   172.73       -0.413406
+     1.5909     1.1600   174.55       -0.413564
+     1.5909     1.1600   176.36       -0.413676
+     1.5909     1.1600   178.18       -0.413744
+     1.5909     1.1600   180.00       -0.413766
+
+     1.6061     1.1600     0.00        0.328680
+     1.6061     1.1600     1.82        0.318879
+     1.6061     1.1600     3.64        0.290346
+     1.6061     1.1600     5.45        0.245525
+     1.6061     1.1600     7.27        0.187986
+     1.6061     1.1600     9.09        0.121846
+     1.6061     1.1600    10.91        0.051211
+     1.6061     1.1600    12.73       -0.020250
+     1.6061     1.1600    14.55       -0.089544
+     1.6061     1.1600    16.36       -0.154451
+     1.6061     1.1600    18.18       -0.213489
+     1.6061     1.1600    20.00       -0.265818
+     1.6061     1.1600    21.82       -0.311115
+     1.6061     1.1600    23.64       -0.349446
+     1.6061     1.1600    25.45       -0.381145
+     1.6061     1.1600    27.27       -0.406725
+     1.6061     1.1600    29.09       -0.426793
+     1.6061     1.1600    30.91       -0.442000
+     1.6061     1.1600    32.73       -0.452999
+     1.6061     1.1600    34.55       -0.460414
+     1.6061     1.1600    36.36       -0.464828
+     1.6061     1.1600    38.18       -0.466769
+     1.6061     1.1600    40.00       -0.466708
+     1.6061     1.1600    41.82       -0.465058
+     1.6061     1.1600    43.64       -0.462176
+     1.6061     1.1600    45.45       -0.458368
+     1.6061     1.1600    47.27       -0.453892
+     1.6061     1.1600    49.09       -0.448964
+     1.6061     1.1600    50.91       -0.443760
+     1.6061     1.1600    52.73       -0.438427
+     1.6061     1.1600    54.55       -0.433081
+     1.6061     1.1600    56.36       -0.427814
+     1.6061     1.1600    58.18       -0.422700
+     1.6061     1.1600    60.00       -0.417793
+     1.6061     1.1600    61.82       -0.413136
+     1.6061     1.1600    63.64       -0.408757
+     1.6061     1.1600    65.45       -0.404675
+     1.6061     1.1600    67.27       -0.400904
+     1.6061     1.1600    69.09       -0.397449
+     1.6061     1.1600    70.91       -0.394309
+     1.6061     1.1600    72.73       -0.391482
+     1.6061     1.1600    74.55       -0.388962
+     1.6061     1.1600    76.36       -0.386738
+     1.6061     1.1600    78.18       -0.384801
+     1.6061     1.1600    80.00       -0.383137
+     1.6061     1.1600    81.82       -0.381735
+     1.6061     1.1600    83.64       -0.380580
+     1.6061     1.1600    85.45       -0.379657
+     1.6061     1.1600    87.27       -0.378953
+     1.6061     1.1600    89.09       -0.378452
+     1.6061     1.1600    90.91       -0.378141
+     1.6061     1.1600    92.73       -0.378006
+     1.6061     1.1600    94.55       -0.378031
+     1.6061     1.1600    96.36       -0.378204
+     1.6061     1.1600    98.18       -0.378512
+     1.6061     1.1600   100.00       -0.378942
+     1.6061     1.1600   101.82       -0.379481
+     1.6061     1.1600   103.64       -0.380118
+     1.6061     1.1600   105.45       -0.380842
+     1.6061     1.1600   107.27       -0.381642
+     1.6061     1.1600   109.09       -0.382507
+     1.6061     1.1600   110.91       -0.383429
+     1.6061     1.1600   112.73       -0.384398
+     1.6061     1.1600   114.55       -0.385405
+     1.6061     1.1600   116.36       -0.386444
+     1.6061     1.1600   118.18       -0.387505
+     1.6061     1.1600   120.00       -0.388584
+     1.6061     1.1600   121.82       -0.389672
+     1.6061     1.1600   123.64       -0.390765
+     1.6061     1.1600   125.45       -0.391856
+     1.6061     1.1600   127.27       -0.392941
+     1.6061     1.1600   129.09       -0.394015
+     1.6061     1.1600   130.91       -0.395075
+     1.6061     1.1600   132.73       -0.396116
+     1.6061     1.1600   134.55       -0.397135
+     1.6061     1.1600   136.36       -0.398129
+     1.6061     1.1600   138.18       -0.399095
+     1.6061     1.1600   140.00       -0.400031
+     1.6061     1.1600   141.82       -0.400934
+     1.6061     1.1600   143.64       -0.401804
+     1.6061     1.1600   145.45       -0.402637
+     1.6061     1.1600   147.27       -0.403434
+     1.6061     1.1600   149.09       -0.404191
+     1.6061     1.1600   150.91       -0.404909
+     1.6061     1.1600   152.73       -0.405587
+     1.6061     1.1600   154.55       -0.406223
+     1.6061     1.1600   156.36       -0.406817
+     1.6061     1.1600   158.18       -0.407369
+     1.6061     1.1600   160.00       -0.407877
+     1.6061     1.1600   161.82       -0.408343
+     1.6061     1.1600   163.64       -0.408764
+     1.6061     1.1600   165.45       -0.409142
+     1.6061     1.1600   167.27       -0.409475
+     1.6061     1.1600   169.09       -0.409765
+     1.6061     1.1600   170.91       -0.410010
+     1.6061     1.1600   172.73       -0.410210
+     1.6061     1.1600   174.55       -0.410366
+     1.6061     1.1600   176.36       -0.410478
+     1.6061     1.1600   178.18       -0.410544
+     1.6061     1.1600   180.00       -0.410567
+
+     1.6212     1.1600     0.00        0.259423
+     1.6212     1.1600     1.82        0.250541
+     1.6212     1.1600     3.64        0.224662
+     1.6212     1.1600     5.45        0.183951
+     1.6212     1.1600     7.27        0.131584
+     1.6212     1.1600     9.09        0.071252
+     1.6212     1.1600    10.91        0.006662
+     1.6212     1.1600    12.73       -0.058833
+     1.6212     1.1600    14.55       -0.122475
+     1.6212     1.1600    16.36       -0.182188
+     1.6212     1.1600    18.18       -0.236564
+     1.6212     1.1600    20.00       -0.284787
+     1.6212     1.1600    21.82       -0.326518
+     1.6212     1.1600    23.64       -0.361788
+     1.6212     1.1600    25.45       -0.390884
+     1.6212     1.1600    27.27       -0.414266
+     1.6212     1.1600    29.09       -0.432490
+     1.6212     1.1600    30.91       -0.446160
+     1.6212     1.1600    32.73       -0.455881
+     1.6212     1.1600    34.55       -0.462239
+     1.6212     1.1600    36.36       -0.465782
+     1.6212     1.1600    38.18       -0.467007
+     1.6212     1.1600    40.00       -0.466360
+     1.6212     1.1600    41.82       -0.464232
+     1.6212     1.1600    43.64       -0.460961
+     1.6212     1.1600    45.45       -0.456838
+     1.6212     1.1600    47.27       -0.452106
+     1.6212     1.1600    49.09       -0.446971
+     1.6212     1.1600    50.91       -0.441601
+     1.6212     1.1600    52.73       -0.436133
+     1.6212     1.1600    54.55       -0.430679
+     1.6212     1.1600    56.36       -0.425325
+     1.6212     1.1600    58.18       -0.420141
+     1.6212     1.1600    60.00       -0.415178
+     1.6212     1.1600    61.82       -0.410475
+     1.6212     1.1600    63.64       -0.406058
+     1.6212     1.1600    65.45       -0.401946
+     1.6212     1.1600    67.27       -0.398150
+     1.6212     1.1600    69.09       -0.394673
+     1.6212     1.1600    70.91       -0.391515
+     1.6212     1.1600    72.73       -0.388672
+     1.6212     1.1600    74.55       -0.386138
+     1.6212     1.1600    76.36       -0.383902
+     1.6212     1.1600    78.18       -0.381953
+     1.6212     1.1600    80.00       -0.380280
+     1.6212     1.1600    81.82       -0.378868
+     1.6212     1.1600    83.64       -0.377703
+     1.6212     1.1600    85.45       -0.376772
+     1.6212     1.1600    87.27       -0.376059
+     1.6212     1.1600    89.09       -0.375551
+     1.6212     1.1600    90.91       -0.375232
+     1.6212     1.1600    92.73       -0.375089
+     1.6212     1.1600    94.55       -0.375107
+     1.6212     1.1600    96.36       -0.375274
+     1.6212     1.1600    98.18       -0.375574
+     1.6212     1.1600   100.00       -0.375997
+     1.6212     1.1600   101.82       -0.376529
+     1.6212     1.1600   103.64       -0.377159
+     1.6212     1.1600   105.45       -0.377876
+     1.6212     1.1600   107.27       -0.378668
+     1.6212     1.1600   109.09       -0.379527
+     1.6212     1.1600   110.91       -0.380441
+     1.6212     1.1600   112.73       -0.381403
+     1.6212     1.1600   114.55       -0.382403
+     1.6212     1.1600   116.36       -0.383435
+     1.6212     1.1600   118.18       -0.384489
+     1.6212     1.1600   120.00       -0.385560
+     1.6212     1.1600   121.82       -0.386641
+     1.6212     1.1600   123.64       -0.387726
+     1.6212     1.1600   125.45       -0.388810
+     1.6212     1.1600   127.27       -0.389887
+     1.6212     1.1600   129.09       -0.390954
+     1.6212     1.1600   130.91       -0.392006
+     1.6212     1.1600   132.73       -0.393039
+     1.6212     1.1600   134.55       -0.394051
+     1.6212     1.1600   136.36       -0.395037
+     1.6212     1.1600   138.18       -0.395996
+     1.6212     1.1600   140.00       -0.396925
+     1.6212     1.1600   141.82       -0.397822
+     1.6212     1.1600   143.64       -0.398685
+     1.6212     1.1600   145.45       -0.399511
+     1.6212     1.1600   147.27       -0.400301
+     1.6212     1.1600   149.09       -0.401053
+     1.6212     1.1600   150.91       -0.401765
+     1.6212     1.1600   152.73       -0.402437
+     1.6212     1.1600   154.55       -0.403068
+     1.6212     1.1600   156.36       -0.403657
+     1.6212     1.1600   158.18       -0.404203
+     1.6212     1.1600   160.00       -0.404708
+     1.6212     1.1600   161.82       -0.405169
+     1.6212     1.1600   163.64       -0.405586
+     1.6212     1.1600   165.45       -0.405961
+     1.6212     1.1600   167.27       -0.406291
+     1.6212     1.1600   169.09       -0.406578
+     1.6212     1.1600   170.91       -0.406821
+     1.6212     1.1600   172.73       -0.407019
+     1.6212     1.1600   174.55       -0.407174
+     1.6212     1.1600   176.36       -0.407284
+     1.6212     1.1600   178.18       -0.407350
+     1.6212     1.1600   180.00       -0.407373
+
+     1.6364     1.1600     0.00        0.195108
+     1.6364     1.1600     1.82        0.187057
+     1.6364     1.1600     3.64        0.163584
+     1.6364     1.1600     5.45        0.126608
+     1.6364     1.1600     7.27        0.078962
+     1.6364     1.1600     9.09        0.023954
+     1.6364     1.1600    10.91       -0.035064
+     1.6364     1.1600    12.73       -0.095035
+     1.6364     1.1600    14.55       -0.153415
+     1.6364     1.1600    16.36       -0.208271
+     1.6364     1.1600    18.18       -0.258269
+     1.6364     1.1600    20.00       -0.302620
+     1.6364     1.1600    21.82       -0.340979
+     1.6364     1.1600    23.64       -0.373345
+     1.6364     1.1600    25.45       -0.399968
+     1.6364     1.1600    27.27       -0.421258
+     1.6364     1.1600    29.09       -0.437725
+     1.6364     1.1600    30.91       -0.449928
+     1.6364     1.1600    32.73       -0.458430
+     1.6364     1.1600    34.55       -0.463780
+     1.6364     1.1600    36.36       -0.466492
+     1.6364     1.1600    38.18       -0.467035
+     1.6364     1.1600    40.00       -0.465830
+     1.6364     1.1600    41.82       -0.463247
+     1.6364     1.1600    43.64       -0.459607
+     1.6364     1.1600    45.45       -0.455185
+     1.6364     1.1600    47.27       -0.450212
+     1.6364     1.1600    49.09       -0.444882
+     1.6364     1.1600    50.91       -0.439356
+     1.6364     1.1600    52.73       -0.433763
+     1.6364     1.1600    54.55       -0.428208
+     1.6364     1.1600    56.36       -0.422775
+     1.6364     1.1600    58.18       -0.417527
+     1.6364     1.1600    60.00       -0.412512
+     1.6364     1.1600    61.82       -0.407768
+     1.6364     1.1600    63.64       -0.403318
+     1.6364     1.1600    65.45       -0.399179
+     1.6364     1.1600    67.27       -0.395360
+     1.6364     1.1600    69.09       -0.391865
+     1.6364     1.1600    70.91       -0.388691
+     1.6364     1.1600    72.73       -0.385836
+     1.6364     1.1600    74.55       -0.383290
+     1.6364     1.1600    76.36       -0.381044
+     1.6364     1.1600    78.18       -0.379086
+     1.6364     1.1600    80.00       -0.377404
+     1.6364     1.1600    81.82       -0.375985
+     1.6364     1.1600    83.64       -0.374813
+     1.6364     1.1600    85.45       -0.373875
+     1.6364     1.1600    87.27       -0.373156
+     1.6364     1.1600    89.09       -0.372641
+     1.6364     1.1600    90.91       -0.372317
+     1.6364     1.1600    92.73       -0.372167
+     1.6364     1.1600    94.55       -0.372180
+     1.6364     1.1600    96.36       -0.372340
+     1.6364     1.1600    98.18       -0.372634
+     1.6364     1.1600   100.00       -0.373051
+     1.6364     1.1600   101.82       -0.373577
+     1.6364     1.1600   103.64       -0.374201
+     1.6364     1.1600   105.45       -0.374912
+     1.6364     1.1600   107.27       -0.375698
+     1.6364     1.1600   109.09       -0.376550
+     1.6364     1.1600   110.91       -0.377458
+     1.6364     1.1600   112.73       -0.378413
+     1.6364     1.1600   114.55       -0.379407
+     1.6364     1.1600   116.36       -0.380431
+     1.6364     1.1600   118.18       -0.381479
+     1.6364     1.1600   120.00       -0.382542
+     1.6364     1.1600   121.82       -0.383616
+     1.6364     1.1600   123.64       -0.384694
+     1.6364     1.1600   125.45       -0.385770
+     1.6364     1.1600   127.27       -0.386841
+     1.6364     1.1600   129.09       -0.387900
+     1.6364     1.1600   130.91       -0.388945
+     1.6364     1.1600   132.73       -0.389971
+     1.6364     1.1600   134.55       -0.390975
+     1.6364     1.1600   136.36       -0.391954
+     1.6364     1.1600   138.18       -0.392906
+     1.6364     1.1600   140.00       -0.393828
+     1.6364     1.1600   141.82       -0.394717
+     1.6364     1.1600   143.64       -0.395573
+     1.6364     1.1600   145.45       -0.396393
+     1.6364     1.1600   147.27       -0.397177
+     1.6364     1.1600   149.09       -0.397922
+     1.6364     1.1600   150.91       -0.398628
+     1.6364     1.1600   152.73       -0.399294
+     1.6364     1.1600   154.55       -0.399920
+     1.6364     1.1600   156.36       -0.400503
+     1.6364     1.1600   158.18       -0.401045
+     1.6364     1.1600   160.00       -0.401545
+     1.6364     1.1600   161.82       -0.402002
+     1.6364     1.1600   163.64       -0.402416
+     1.6364     1.1600   165.45       -0.402787
+     1.6364     1.1600   167.27       -0.403114
+     1.6364     1.1600   169.09       -0.403398
+     1.6364     1.1600   170.91       -0.403639
+     1.6364     1.1600   172.73       -0.403835
+     1.6364     1.1600   174.55       -0.403989
+     1.6364     1.1600   176.36       -0.404098
+     1.6364     1.1600   178.18       -0.404164
+     1.6364     1.1600   180.00       -0.404185
+
+     1.6515     1.1600     0.00        0.135425
+     1.6515     1.1600     1.82        0.128127
+     1.6515     1.1600     3.64        0.106836
+     1.6515     1.1600     5.45        0.073259
+     1.6515     1.1600     7.27        0.029923
+     1.6515     1.1600     9.09       -0.020203
+     1.6515     1.1600    10.91       -0.074087
+     1.6515     1.1600    12.73       -0.128942
+     1.6515     1.1600    14.55       -0.182428
+     1.6515     1.1600    16.36       -0.232745
+     1.6515     1.1600    18.18       -0.278636
+     1.6515     1.1600    20.00       -0.319342
+     1.6515     1.1600    21.82       -0.354516
+     1.6515     1.1600    23.64       -0.384135
+     1.6515     1.1600    25.45       -0.408410
+     1.6515     1.1600    27.27       -0.427712
+     1.6515     1.1600    29.09       -0.442508
+     1.6515     1.1600    30.91       -0.453313
+     1.6515     1.1600    32.73       -0.460654
+     1.6515     1.1600    34.55       -0.465044
+     1.6515     1.1600    36.36       -0.466964
+     1.6515     1.1600    38.18       -0.466859
+     1.6515     1.1600    40.00       -0.465124
+     1.6515     1.1600    41.82       -0.462110
+     1.6515     1.1600    43.64       -0.458120
+     1.6515     1.1600    45.45       -0.453415
+     1.6515     1.1600    47.27       -0.448214
+     1.6515     1.1600    49.09       -0.442702
+     1.6515     1.1600    50.91       -0.437030
+     1.6515     1.1600    52.73       -0.431320
+     1.6515     1.1600    54.55       -0.425673
+     1.6515     1.1600    56.36       -0.420166
+     1.6515     1.1600    58.18       -0.414860
+     1.6515     1.1600    60.00       -0.409799
+     1.6515     1.1600    61.82       -0.405018
+     1.6515     1.1600    63.64       -0.400538
+     1.6515     1.1600    65.45       -0.396376
+     1.6515     1.1600    67.27       -0.392538
+     1.6515     1.1600    69.09       -0.389028
+     1.6515     1.1600    70.91       -0.385842
+     1.6515     1.1600    72.73       -0.382976
+     1.6515     1.1600    74.55       -0.380421
+     1.6515     1.1600    76.36       -0.378167
+     1.6515     1.1600    78.18       -0.376202
+     1.6515     1.1600    80.00       -0.374514
+     1.6515     1.1600    81.82       -0.373089
+     1.6515     1.1600    83.64       -0.371912
+     1.6515     1.1600    85.45       -0.370969
+     1.6515     1.1600    87.27       -0.370245
+     1.6515     1.1600    89.09       -0.369726
+     1.6515     1.1600    90.91       -0.369397
+     1.6515     1.1600    92.73       -0.369243
+     1.6515     1.1600    94.55       -0.369250
+     1.6515     1.1600    96.36       -0.369406
+     1.6515     1.1600    98.18       -0.369696
+     1.6515     1.1600   100.00       -0.370107
+     1.6515     1.1600   101.82       -0.370628
+     1.6515     1.1600   103.64       -0.371247
+     1.6515     1.1600   105.45       -0.371952
+     1.6515     1.1600   107.27       -0.372733
+     1.6515     1.1600   109.09       -0.373579
+     1.6515     1.1600   110.91       -0.374482
+     1.6515     1.1600   112.73       -0.375431
+     1.6515     1.1600   114.55       -0.376418
+     1.6515     1.1600   116.36       -0.377436
+     1.6515     1.1600   118.18       -0.378477
+     1.6515     1.1600   120.00       -0.379534
+     1.6515     1.1600   121.82       -0.380601
+     1.6515     1.1600   123.64       -0.381671
+     1.6515     1.1600   125.45       -0.382741
+     1.6515     1.1600   127.27       -0.383804
+     1.6515     1.1600   129.09       -0.384856
+     1.6515     1.1600   130.91       -0.385893
+     1.6515     1.1600   132.73       -0.386912
+     1.6515     1.1600   134.55       -0.387909
+     1.6515     1.1600   136.36       -0.388881
+     1.6515     1.1600   138.18       -0.389825
+     1.6515     1.1600   140.00       -0.390740
+     1.6515     1.1600   141.82       -0.391623
+     1.6515     1.1600   143.64       -0.392472
+     1.6515     1.1600   145.45       -0.393285
+     1.6515     1.1600   147.27       -0.394062
+     1.6515     1.1600   149.09       -0.394801
+     1.6515     1.1600   150.91       -0.395501
+     1.6515     1.1600   152.73       -0.396161
+     1.6515     1.1600   154.55       -0.396781
+     1.6515     1.1600   156.36       -0.397360
+     1.6515     1.1600   158.18       -0.397897
+     1.6515     1.1600   160.00       -0.398392
+     1.6515     1.1600   161.82       -0.398845
+     1.6515     1.1600   163.64       -0.399255
+     1.6515     1.1600   165.45       -0.399622
+     1.6515     1.1600   167.27       -0.399946
+     1.6515     1.1600   169.09       -0.400228
+     1.6515     1.1600   170.91       -0.400466
+     1.6515     1.1600   172.73       -0.400661
+     1.6515     1.1600   174.55       -0.400812
+     1.6515     1.1600   176.36       -0.400921
+     1.6515     1.1600   178.18       -0.400986
+     1.6515     1.1600   180.00       -0.401007
+
+     1.6667     1.1600     0.00        0.080082
+     1.6667     1.1600     1.82        0.073467
+     1.6667     1.1600     3.64        0.054159
+     1.6667     1.1600     5.45        0.023676
+     1.6667     1.1600     7.27       -0.015722
+     1.6667     1.1600     9.09       -0.061370
+     1.6667     1.1600    10.91       -0.110524
+     1.6667     1.1600    12.73       -0.160645
+     1.6667     1.1600    14.55       -0.209582
+     1.6667     1.1600    16.36       -0.255661
+     1.6667     1.1600    18.18       -0.297704
+     1.6667     1.1600    20.00       -0.334983
+     1.6667     1.1600    21.82       -0.367153
+     1.6667     1.1600    23.64       -0.394174
+     1.6667     1.1600    25.45       -0.416225
+     1.6667     1.1600    27.27       -0.433641
+     1.6667     1.1600    29.09       -0.446849
+     1.6667     1.1600    30.91       -0.456326
+     1.6667     1.1600    32.73       -0.462563
+     1.6667     1.1600    34.55       -0.466039
+     1.6667     1.1600    36.36       -0.467208
+     1.6667     1.1600    38.18       -0.466486
+     1.6667     1.1600    40.00       -0.464248
+     1.6667     1.1600    41.82       -0.460826
+     1.6667     1.1600    43.64       -0.456505
+     1.6667     1.1600    45.45       -0.451533
+     1.6667     1.1600    47.27       -0.446119
+     1.6667     1.1600    49.09       -0.440436
+     1.6667     1.1600    50.91       -0.434627
+     1.6667     1.1600    52.73       -0.428810
+     1.6667     1.1600    54.55       -0.423078
+     1.6667     1.1600    56.36       -0.417503
+     1.6667     1.1600    58.18       -0.412144
+     1.6667     1.1600    60.00       -0.407042
+     1.6667     1.1600    61.82       -0.402228
+     1.6667     1.1600    63.64       -0.397724
+     1.6667     1.1600    65.45       -0.393541
+     1.6667     1.1600    67.27       -0.389688
+     1.6667     1.1600    69.09       -0.386165
+     1.6667     1.1600    70.91       -0.382969
+     1.6667     1.1600    72.73       -0.380095
+     1.6667     1.1600    74.55       -0.377534
+     1.6667     1.1600    76.36       -0.375275
+     1.6667     1.1600    78.18       -0.373305
+     1.6667     1.1600    80.00       -0.371613
+     1.6667     1.1600    81.82       -0.370184
+     1.6667     1.1600    83.64       -0.369004
+     1.6667     1.1600    85.45       -0.368058
+     1.6667     1.1600    87.27       -0.367331
+     1.6667     1.1600    89.09       -0.366808
+     1.6667     1.1600    90.91       -0.366476
+     1.6667     1.1600    92.73       -0.366318
+     1.6667     1.1600    94.55       -0.366323
+     1.6667     1.1600    96.36       -0.366474
+     1.6667     1.1600    98.18       -0.366761
+     1.6667     1.1600   100.00       -0.367169
+     1.6667     1.1600   101.82       -0.367686
+     1.6667     1.1600   103.64       -0.368300
+     1.6667     1.1600   105.45       -0.369001
+     1.6667     1.1600   107.27       -0.369777
+     1.6667     1.1600   109.09       -0.370618
+     1.6667     1.1600   110.91       -0.371515
+     1.6667     1.1600   112.73       -0.372458
+     1.6667     1.1600   114.55       -0.373440
+     1.6667     1.1600   116.36       -0.374451
+     1.6667     1.1600   118.18       -0.375486
+     1.6667     1.1600   120.00       -0.376536
+     1.6667     1.1600   121.82       -0.377597
+     1.6667     1.1600   123.64       -0.378661
+     1.6667     1.1600   125.45       -0.379723
+     1.6667     1.1600   127.27       -0.380779
+     1.6667     1.1600   129.09       -0.381824
+     1.6667     1.1600   130.91       -0.382854
+     1.6667     1.1600   132.73       -0.383865
+     1.6667     1.1600   134.55       -0.384855
+     1.6667     1.1600   136.36       -0.385819
+     1.6667     1.1600   138.18       -0.386757
+     1.6667     1.1600   140.00       -0.387664
+     1.6667     1.1600   141.82       -0.388540
+     1.6667     1.1600   143.64       -0.389382
+     1.6667     1.1600   145.45       -0.390189
+     1.6667     1.1600   147.27       -0.390959
+     1.6667     1.1600   149.09       -0.391692
+     1.6667     1.1600   150.91       -0.392386
+     1.6667     1.1600   152.73       -0.393040
+     1.6667     1.1600   154.55       -0.393654
+     1.6667     1.1600   156.36       -0.394228
+     1.6667     1.1600   158.18       -0.394760
+     1.6667     1.1600   160.00       -0.395250
+     1.6667     1.1600   161.82       -0.395699
+     1.6667     1.1600   163.64       -0.396105
+     1.6667     1.1600   165.45       -0.396469
+     1.6667     1.1600   167.27       -0.396790
+     1.6667     1.1600   169.09       -0.397068
+     1.6667     1.1600   170.91       -0.397304
+     1.6667     1.1600   172.73       -0.397497
+     1.6667     1.1600   174.55       -0.397647
+     1.6667     1.1600   176.36       -0.397754
+     1.6667     1.1600   178.18       -0.397819
+     1.6667     1.1600   180.00       -0.397840
+
+     1.6818     1.1600     0.00        0.028803
+     1.6818     1.1600     1.82        0.022809
+     1.6818     1.1600     3.64        0.005303
+     1.6818     1.1600     5.45       -0.022359
+     1.6818     1.1600     7.27       -0.058158
+     1.6818     1.1600     9.09       -0.099697
+     1.6818     1.1600    10.91       -0.144493
+     1.6818     1.1600    12.73       -0.190235
+     1.6818     1.1600    14.55       -0.234944
+     1.6818     1.1600    16.36       -0.277072
+     1.6818     1.1600    18.18       -0.315512
+     1.6818     1.1600    20.00       -0.349573
+     1.6818     1.1600    21.82       -0.378914
+     1.6818     1.1600    23.64       -0.403482
+     1.6818     1.1600    25.45       -0.423429
+     1.6818     1.1600    27.27       -0.439058
+     1.6818     1.1600    29.09       -0.450760
+     1.6818     1.1600    30.91       -0.458977
+     1.6818     1.1600    32.73       -0.464165
+     1.6818     1.1600    34.55       -0.466774
+     1.6818     1.1600    36.36       -0.467229
+     1.6818     1.1600    38.18       -0.465923
+     1.6818     1.1600    40.00       -0.463209
+     1.6818     1.1600    41.82       -0.459400
+     1.6818     1.1600    43.64       -0.454768
+     1.6818     1.1600    45.45       -0.449546
+     1.6818     1.1600    47.27       -0.443931
+     1.6818     1.1600    49.09       -0.438088
+     1.6818     1.1600    50.91       -0.432153
+     1.6818     1.1600    52.73       -0.426236
+     1.6818     1.1600    54.55       -0.420426
+     1.6818     1.1600    56.36       -0.414790
+     1.6818     1.1600    58.18       -0.409384
+     1.6818     1.1600    60.00       -0.404245
+     1.6818     1.1600    61.82       -0.399403
+     1.6818     1.1600    63.64       -0.394877
+     1.6818     1.1600    65.45       -0.390679
+     1.6818     1.1600    67.27       -0.386813
+     1.6818     1.1600    69.09       -0.383281
+     1.6818     1.1600    70.91       -0.380078
+     1.6818     1.1600    72.73       -0.377198
+     1.6818     1.1600    74.55       -0.374633
+     1.6818     1.1600    76.36       -0.372370
+     1.6818     1.1600    78.18       -0.370399
+     1.6818     1.1600    80.00       -0.368705
+     1.6818     1.1600    81.82       -0.367274
+     1.6818     1.1600    83.64       -0.366092
+     1.6818     1.1600    85.45       -0.365144
+     1.6818     1.1600    87.27       -0.364416
+     1.6818     1.1600    89.09       -0.363891
+     1.6818     1.1600    90.91       -0.363557
+     1.6818     1.1600    92.73       -0.363398
+     1.6818     1.1600    94.55       -0.363400
+     1.6818     1.1600    96.36       -0.363550
+     1.6818     1.1600    98.18       -0.363833
+     1.6818     1.1600   100.00       -0.364238
+     1.6818     1.1600   101.82       -0.364752
+     1.6818     1.1600   103.64       -0.365363
+     1.6818     1.1600   105.45       -0.366060
+     1.6818     1.1600   107.27       -0.366831
+     1.6818     1.1600   109.09       -0.367668
+     1.6818     1.1600   110.91       -0.368560
+     1.6818     1.1600   112.73       -0.369498
+     1.6818     1.1600   114.55       -0.370475
+     1.6818     1.1600   116.36       -0.371481
+     1.6818     1.1600   118.18       -0.372509
+     1.6818     1.1600   120.00       -0.373553
+     1.6818     1.1600   121.82       -0.374607
+     1.6818     1.1600   123.64       -0.375664
+     1.6818     1.1600   125.45       -0.376720
+     1.6818     1.1600   127.27       -0.377768
+     1.6818     1.1600   129.09       -0.378806
+     1.6818     1.1600   130.91       -0.379829
+     1.6818     1.1600   132.73       -0.380833
+     1.6818     1.1600   134.55       -0.381815
+     1.6818     1.1600   136.36       -0.382773
+     1.6818     1.1600   138.18       -0.383703
+     1.6818     1.1600   140.00       -0.384603
+     1.6818     1.1600   141.82       -0.385471
+     1.6818     1.1600   143.64       -0.386306
+     1.6818     1.1600   145.45       -0.387106
+     1.6818     1.1600   147.27       -0.387870
+     1.6818     1.1600   149.09       -0.388596
+     1.6818     1.1600   150.91       -0.389284
+     1.6818     1.1600   152.73       -0.389932
+     1.6818     1.1600   154.55       -0.390541
+     1.6818     1.1600   156.36       -0.391109
+     1.6818     1.1600   158.18       -0.391636
+     1.6818     1.1600   160.00       -0.392122
+     1.6818     1.1600   161.82       -0.392566
+     1.6818     1.1600   163.64       -0.392968
+     1.6818     1.1600   165.45       -0.393328
+     1.6818     1.1600   167.27       -0.393646
+     1.6818     1.1600   169.09       -0.393922
+     1.6818     1.1600   170.91       -0.394155
+     1.6818     1.1600   172.73       -0.394346
+     1.6818     1.1600   174.55       -0.394495
+     1.6818     1.1600   176.36       -0.394601
+     1.6818     1.1600   178.18       -0.394665
+     1.6818     1.1600   180.00       -0.394686
+
+     1.6970     1.1600     0.00       -0.018668
+     1.6970     1.1600     1.82       -0.024098
+     1.6970     1.1600     3.64       -0.039963
+     1.6970     1.1600     5.45       -0.065054
+     1.6970     1.1600     7.27       -0.097562
+     1.6970     1.1600     9.09       -0.135329
+     1.6970     1.1600    10.91       -0.176112
+     1.6970     1.1600    12.73       -0.217803
+     1.6970     1.1600    14.55       -0.258588
+     1.6970     1.1600    16.36       -0.297033
+     1.6970     1.1600    18.18       -0.332104
+     1.6970     1.1600    20.00       -0.363144
+     1.6970     1.1600    21.82       -0.389825
+     1.6970     1.1600    23.64       -0.412080
+     1.6970     1.1600    25.45       -0.430040
+     1.6970     1.1600    27.27       -0.443978
+     1.6970     1.1600    29.09       -0.454254
+     1.6970     1.1600    30.91       -0.461276
+     1.6970     1.1600    32.73       -0.465470
+     1.6970     1.1600    34.55       -0.467257
+     1.6970     1.1600    36.36       -0.467036
+     1.6970     1.1600    38.18       -0.465178
+     1.6970     1.1600    40.00       -0.462014
+     1.6970     1.1600    41.82       -0.457840
+     1.6970     1.1600    43.64       -0.452915
+     1.6970     1.1600    45.45       -0.447457
+     1.6970     1.1600    47.27       -0.441655
+     1.6970     1.1600    49.09       -0.435664
+     1.6970     1.1600    50.91       -0.429612
+     1.6970     1.1600    52.73       -0.423603
+     1.6970     1.1600    54.55       -0.417722
+     1.6970     1.1600    56.36       -0.412031
+     1.6970     1.1600    58.18       -0.406583
+     1.6970     1.1600    60.00       -0.401412
+     1.6970     1.1600    61.82       -0.396547
+     1.6970     1.1600    63.64       -0.392003
+     1.6970     1.1600    65.45       -0.387792
+     1.6970     1.1600    67.27       -0.383917
+     1.6970     1.1600    69.09       -0.380378
+     1.6970     1.1600    70.91       -0.377171
+     1.6970     1.1600    72.73       -0.374288
+     1.6970     1.1600    74.55       -0.371721
+     1.6970     1.1600    76.36       -0.369458
+     1.6970     1.1600    78.18       -0.367486
+     1.6970     1.1600    80.00       -0.365792
+     1.6970     1.1600    81.82       -0.364361
+     1.6970     1.1600    83.64       -0.363179
+     1.6970     1.1600    85.45       -0.362232
+     1.6970     1.1600    87.27       -0.361503
+     1.6970     1.1600    89.09       -0.360979
+     1.6970     1.1600    90.91       -0.360644
+     1.6970     1.1600    92.73       -0.360485
+     1.6970     1.1600    94.55       -0.360486
+     1.6970     1.1600    96.36       -0.360634
+     1.6970     1.1600    98.18       -0.360916
+     1.6970     1.1600   100.00       -0.361319
+     1.6970     1.1600   101.82       -0.361831
+     1.6970     1.1600   103.64       -0.362439
+     1.6970     1.1600   105.45       -0.363132
+     1.6970     1.1600   107.27       -0.363901
+     1.6970     1.1600   109.09       -0.364733
+     1.6970     1.1600   110.91       -0.365621
+     1.6970     1.1600   112.73       -0.366554
+     1.6970     1.1600   114.55       -0.367525
+     1.6970     1.1600   116.36       -0.368526
+     1.6970     1.1600   118.18       -0.369549
+     1.6970     1.1600   120.00       -0.370587
+     1.6970     1.1600   121.82       -0.371634
+     1.6970     1.1600   123.64       -0.372684
+     1.6970     1.1600   125.45       -0.373733
+     1.6970     1.1600   127.27       -0.374775
+     1.6970     1.1600   129.09       -0.375806
+     1.6970     1.1600   130.91       -0.376821
+     1.6970     1.1600   132.73       -0.377818
+     1.6970     1.1600   134.55       -0.378793
+     1.6970     1.1600   136.36       -0.379742
+     1.6970     1.1600   138.18       -0.380665
+     1.6970     1.1600   140.00       -0.381558
+     1.6970     1.1600   141.82       -0.382419
+     1.6970     1.1600   143.64       -0.383247
+     1.6970     1.1600   145.45       -0.384040
+     1.6970     1.1600   147.27       -0.384797
+     1.6970     1.1600   149.09       -0.385516
+     1.6970     1.1600   150.91       -0.386198
+     1.6970     1.1600   152.73       -0.386840
+     1.6970     1.1600   154.55       -0.387443
+     1.6970     1.1600   156.36       -0.388006
+     1.6970     1.1600   158.18       -0.388527
+     1.6970     1.1600   160.00       -0.389008
+     1.6970     1.1600   161.82       -0.389448
+     1.6970     1.1600   163.64       -0.389846
+     1.6970     1.1600   165.45       -0.390203
+     1.6970     1.1600   167.27       -0.390517
+     1.6970     1.1600   169.09       -0.390790
+     1.6970     1.1600   170.91       -0.391021
+     1.6970     1.1600   172.73       -0.391210
+     1.6970     1.1600   174.55       -0.391357
+     1.6970     1.1600   176.36       -0.391462
+     1.6970     1.1600   178.18       -0.391525
+     1.6970     1.1600   180.00       -0.391546
+
+     1.7121     1.1600     0.00       -0.062574
+     1.7121     1.1600     1.82       -0.067491
+     1.7121     1.1600     3.64       -0.081862
+     1.7121     1.1600     5.45       -0.104606
+     1.7121     1.1600     7.27       -0.134102
+     1.7121     1.1600     9.09       -0.168408
+     1.7121     1.1600    10.91       -0.205494
+     1.7121     1.1600    12.73       -0.243440
+     1.7121     1.1600    14.55       -0.280583
+     1.7121     1.1600    16.36       -0.315598
+     1.7121     1.1600    18.18       -0.347521
+     1.7121     1.1600    20.00       -0.375732
+     1.7121     1.1600    21.82       -0.399913
+     1.7121     1.1600    23.64       -0.419989
+     1.7121     1.1600    25.45       -0.436075
+     1.7121     1.1600    27.27       -0.448416
+     1.7121     1.1600    29.09       -0.457343
+     1.7121     1.1600    30.91       -0.463235
+     1.7121     1.1600    32.73       -0.466489
+     1.7121     1.1600    34.55       -0.467498
+     1.7121     1.1600    36.36       -0.466638
+     1.7121     1.1600    38.18       -0.464257
+     1.7121     1.1600    40.00       -0.460669
+     1.7121     1.1600    41.82       -0.456152
+     1.7121     1.1600    43.64       -0.450951
+     1.7121     1.1600    45.45       -0.445273
+     1.7121     1.1600    47.27       -0.439296
+     1.7121     1.1600    49.09       -0.433168
+     1.7121     1.1600    50.91       -0.427008
+     1.7121     1.1600    52.73       -0.420916
+     1.7121     1.1600    54.55       -0.414970
+     1.7121     1.1600    56.36       -0.409231
+     1.7121     1.1600    58.18       -0.403745
+     1.7121     1.1600    60.00       -0.398548
+     1.7121     1.1600    61.82       -0.393662
+     1.7121     1.1600    63.64       -0.389105
+     1.7121     1.1600    65.45       -0.384884
+     1.7121     1.1600    67.27       -0.381003
+     1.7121     1.1600    69.09       -0.377461
+     1.7121     1.1600    70.91       -0.374252
+     1.7121     1.1600    72.73       -0.371369
+     1.7121     1.1600    74.55       -0.368803
+     1.7121     1.1600    76.36       -0.366541
+     1.7121     1.1600    78.18       -0.364571
+     1.7121     1.1600    80.00       -0.362878
+     1.7121     1.1600    81.82       -0.361450
+     1.7121     1.1600    83.64       -0.360270
+     1.7121     1.1600    85.45       -0.359325
+     1.7121     1.1600    87.27       -0.358598
+     1.7121     1.1600    89.09       -0.358075
+     1.7121     1.1600    90.91       -0.357741
+     1.7121     1.1600    92.73       -0.357582
+     1.7121     1.1600    94.55       -0.357584
+     1.7121     1.1600    96.36       -0.357732
+     1.7121     1.1600    98.18       -0.358013
+     1.7121     1.1600   100.00       -0.358415
+     1.7121     1.1600   101.82       -0.358925
+     1.7121     1.1600   103.64       -0.359531
+     1.7121     1.1600   105.45       -0.360222
+     1.7121     1.1600   107.27       -0.360987
+     1.7121     1.1600   109.09       -0.361816
+     1.7121     1.1600   110.91       -0.362700
+     1.7121     1.1600   112.73       -0.363629
+     1.7121     1.1600   114.55       -0.364595
+     1.7121     1.1600   116.36       -0.365590
+     1.7121     1.1600   118.18       -0.366608
+     1.7121     1.1600   120.00       -0.367640
+     1.7121     1.1600   121.82       -0.368681
+     1.7121     1.1600   123.64       -0.369724
+     1.7121     1.1600   125.45       -0.370766
+     1.7121     1.1600   127.27       -0.371801
+     1.7121     1.1600   129.09       -0.372824
+     1.7121     1.1600   130.91       -0.373833
+     1.7121     1.1600   132.73       -0.374822
+     1.7121     1.1600   134.55       -0.375789
+     1.7121     1.1600   136.36       -0.376731
+     1.7121     1.1600   138.18       -0.377646
+     1.7121     1.1600   140.00       -0.378532
+     1.7121     1.1600   141.82       -0.379386
+     1.7121     1.1600   143.64       -0.380206
+     1.7121     1.1600   145.45       -0.380992
+     1.7121     1.1600   147.27       -0.381742
+     1.7121     1.1600   149.09       -0.382455
+     1.7121     1.1600   150.91       -0.383130
+     1.7121     1.1600   152.73       -0.383766
+     1.7121     1.1600   154.55       -0.384363
+     1.7121     1.1600   156.36       -0.384920
+     1.7121     1.1600   158.18       -0.385437
+     1.7121     1.1600   160.00       -0.385913
+     1.7121     1.1600   161.82       -0.386348
+     1.7121     1.1600   163.64       -0.386742
+     1.7121     1.1600   165.45       -0.387094
+     1.7121     1.1600   167.27       -0.387406
+     1.7121     1.1600   169.09       -0.387676
+     1.7121     1.1600   170.91       -0.387904
+     1.7121     1.1600   172.73       -0.388091
+     1.7121     1.1600   174.55       -0.388237
+     1.7121     1.1600   176.36       -0.388340
+     1.7121     1.1600   178.18       -0.388403
+     1.7121     1.1600   180.00       -0.388424
+
+     1.7273     1.1600     0.00       -0.103142
+     1.7273     1.1600     1.82       -0.107592
+     1.7273     1.1600     3.64       -0.120601
+     1.7273     1.1600     5.45       -0.141203
+     1.7273     1.1600     7.27       -0.167943
+     1.7273     1.1600     9.09       -0.199072
+     1.7273     1.1600    10.91       -0.232752
+     1.7273     1.1600    12.73       -0.267236
+     1.7273     1.1600    14.55       -0.301001
+     1.7273     1.1600    16.36       -0.332825
+     1.7273     1.1600    18.18       -0.361809
+     1.7273     1.1600    20.00       -0.387371
+     1.7273     1.1600    21.82       -0.409205
+     1.7273     1.1600    23.64       -0.427234
+     1.7273     1.1600    25.45       -0.441554
+     1.7273     1.1600    27.27       -0.452389
+     1.7273     1.1600    29.09       -0.460042
+     1.7273     1.1600    30.91       -0.464866
+     1.7273     1.1600    32.73       -0.467231
+     1.7273     1.1600    34.55       -0.467506
+     1.7273     1.1600    36.36       -0.466042
+     1.7273     1.1600    38.18       -0.463168
+     1.7273     1.1600    40.00       -0.459180
+     1.7273     1.1600    41.82       -0.454342
+     1.7273     1.1600    43.64       -0.448883
+     1.7273     1.1600    45.45       -0.443000
+     1.7273     1.1600    47.27       -0.436861
+     1.7273     1.1600    49.09       -0.430605
+     1.7273     1.1600    50.91       -0.424346
+     1.7273     1.1600    52.73       -0.418178
+     1.7273     1.1600    54.55       -0.412175
+     1.7273     1.1600    56.36       -0.406393
+     1.7273     1.1600    58.18       -0.400875
+     1.7273     1.1600    60.00       -0.395655
+     1.7273     1.1600    61.82       -0.390755
+     1.7273     1.1600    63.64       -0.386187
+     1.7273     1.1600    65.45       -0.381960
+     1.7273     1.1600    67.27       -0.378076
+     1.7273     1.1600    69.09       -0.374533
+     1.7273     1.1600    70.91       -0.371325
+     1.7273     1.1600    72.73       -0.368445
+     1.7273     1.1600    74.55       -0.365882
+     1.7273     1.1600    76.36       -0.363623
+     1.7273     1.1600    78.18       -0.361657
+     1.7273     1.1600    80.00       -0.359969
+     1.7273     1.1600    81.82       -0.358544
+     1.7273     1.1600    83.64       -0.357368
+     1.7273     1.1600    85.45       -0.356426
+     1.7273     1.1600    87.27       -0.355703
+     1.7273     1.1600    89.09       -0.355183
+     1.7273     1.1600    90.91       -0.354851
+     1.7273     1.1600    92.73       -0.354694
+     1.7273     1.1600    94.55       -0.354697
+     1.7273     1.1600    96.36       -0.354846
+     1.7273     1.1600    98.18       -0.355128
+     1.7273     1.1600   100.00       -0.355529
+     1.7273     1.1600   101.82       -0.356038
+     1.7273     1.1600   103.64       -0.356643
+     1.7273     1.1600   105.45       -0.357332
+     1.7273     1.1600   107.27       -0.358095
+     1.7273     1.1600   109.09       -0.358921
+     1.7273     1.1600   110.91       -0.359801
+     1.7273     1.1600   112.73       -0.360726
+     1.7273     1.1600   114.55       -0.361687
+     1.7273     1.1600   116.36       -0.362677
+     1.7273     1.1600   118.18       -0.363689
+     1.7273     1.1600   120.00       -0.364715
+     1.7273     1.1600   121.82       -0.365749
+     1.7273     1.1600   123.64       -0.366787
+     1.7273     1.1600   125.45       -0.367822
+     1.7273     1.1600   127.27       -0.368849
+     1.7273     1.1600   129.09       -0.369865
+     1.7273     1.1600   130.91       -0.370866
+     1.7273     1.1600   132.73       -0.371848
+     1.7273     1.1600   134.55       -0.372807
+     1.7273     1.1600   136.36       -0.373742
+     1.7273     1.1600   138.18       -0.374649
+     1.7273     1.1600   140.00       -0.375527
+     1.7273     1.1600   141.82       -0.376374
+     1.7273     1.1600   143.64       -0.377187
+     1.7273     1.1600   145.45       -0.377965
+     1.7273     1.1600   147.27       -0.378708
+     1.7273     1.1600   149.09       -0.379414
+     1.7273     1.1600   150.91       -0.380083
+     1.7273     1.1600   152.73       -0.380712
+     1.7273     1.1600   154.55       -0.381303
+     1.7273     1.1600   156.36       -0.381854
+     1.7273     1.1600   158.18       -0.382366
+     1.7273     1.1600   160.00       -0.382837
+     1.7273     1.1600   161.82       -0.383267
+     1.7273     1.1600   163.64       -0.383657
+     1.7273     1.1600   165.45       -0.384006
+     1.7273     1.1600   167.27       -0.384314
+     1.7273     1.1600   169.09       -0.384581
+     1.7273     1.1600   170.91       -0.384807
+     1.7273     1.1600   172.73       -0.384991
+     1.7273     1.1600   174.55       -0.385135
+     1.7273     1.1600   176.36       -0.385238
+     1.7273     1.1600   178.18       -0.385300
+     1.7273     1.1600   180.00       -0.385320
+
+     1.7424     1.1600     0.00       -0.140587
+     1.7424     1.1600     1.82       -0.144610
+     1.7424     1.1600     3.64       -0.156377
+     1.7424     1.1600     5.45       -0.175022
+     1.7424     1.1600     7.27       -0.199239
+     1.7424     1.1600     9.09       -0.227450
+     1.7424     1.1600    10.91       -0.257994
+     1.7424     1.1600    12.73       -0.289280
+     1.7424     1.1600    14.55       -0.319914
+     1.7424     1.1600    16.36       -0.348769
+     1.7424     1.1600    18.18       -0.375012
+     1.7424     1.1600    20.00       -0.398097
+     1.7424     1.1600    21.82       -0.417732
+     1.7424     1.1600    23.64       -0.433837
+     1.7424     1.1600    25.45       -0.446496
+     1.7424     1.1600    27.27       -0.455911
+     1.7424     1.1600    29.09       -0.462364
+     1.7424     1.1600    30.91       -0.466181
+     1.7424     1.1600    32.73       -0.467707
+     1.7424     1.1600    34.55       -0.467289
+     1.7424     1.1600    36.36       -0.465257
+     1.7424     1.1600    38.18       -0.461920
+     1.7424     1.1600    40.00       -0.457556
+     1.7424     1.1600    41.82       -0.452416
+     1.7424     1.1600    43.64       -0.446716
+     1.7424     1.1600    45.45       -0.440642
+     1.7424     1.1600    47.27       -0.434353
+     1.7424     1.1600    49.09       -0.427980
+     1.7424     1.1600    50.91       -0.421632
+     1.7424     1.1600    52.73       -0.415396
+     1.7424     1.1600    54.55       -0.409341
+     1.7424     1.1600    56.36       -0.403522
+     1.7424     1.1600    58.18       -0.397978
+     1.7424     1.1600    60.00       -0.392740
+     1.7424     1.1600    61.82       -0.387828
+     1.7424     1.1600    63.64       -0.383253
+     1.7424     1.1600    65.45       -0.379024
+     1.7424     1.1600    67.27       -0.375140
+     1.7424     1.1600    69.09       -0.371599
+     1.7424     1.1600    70.91       -0.368396
+     1.7424     1.1600    72.73       -0.365520
+     1.7424     1.1600    74.55       -0.362962
+     1.7424     1.1600    76.36       -0.360710
+     1.7424     1.1600    78.18       -0.358749
+     1.7424     1.1600    80.00       -0.357067
+     1.7424     1.1600    81.82       -0.355648
+     1.7424     1.1600    83.64       -0.354478
+     1.7424     1.1600    85.45       -0.353541
+     1.7424     1.1600    87.27       -0.352822
+     1.7424     1.1600    89.09       -0.352306
+     1.7424     1.1600    90.91       -0.351978
+     1.7424     1.1600    92.73       -0.351824
+     1.7424     1.1600    94.55       -0.351830
+     1.7424     1.1600    96.36       -0.351980
+     1.7424     1.1600    98.18       -0.352263
+     1.7424     1.1600   100.00       -0.352665
+     1.7424     1.1600   101.82       -0.353174
+     1.7424     1.1600   103.64       -0.353778
+     1.7424     1.1600   105.45       -0.354466
+     1.7424     1.1600   107.27       -0.355226
+     1.7424     1.1600   109.09       -0.356049
+     1.7424     1.1600   110.91       -0.356926
+     1.7424     1.1600   112.73       -0.357847
+     1.7424     1.1600   114.55       -0.358804
+     1.7424     1.1600   116.36       -0.359789
+     1.7424     1.1600   118.18       -0.360795
+     1.7424     1.1600   120.00       -0.361815
+     1.7424     1.1600   121.82       -0.362844
+     1.7424     1.1600   123.64       -0.363874
+     1.7424     1.1600   125.45       -0.364902
+     1.7424     1.1600   127.27       -0.365923
+     1.7424     1.1600   129.09       -0.366931
+     1.7424     1.1600   130.91       -0.367924
+     1.7424     1.1600   132.73       -0.368898
+     1.7424     1.1600   134.55       -0.369850
+     1.7424     1.1600   136.36       -0.370777
+     1.7424     1.1600   138.18       -0.371676
+     1.7424     1.1600   140.00       -0.372546
+     1.7424     1.1600   141.82       -0.373385
+     1.7424     1.1600   143.64       -0.374191
+     1.7424     1.1600   145.45       -0.374962
+     1.7424     1.1600   147.27       -0.375697
+     1.7424     1.1600   149.09       -0.376396
+     1.7424     1.1600   150.91       -0.377058
+     1.7424     1.1600   152.73       -0.377681
+     1.7424     1.1600   154.55       -0.378266
+     1.7424     1.1600   156.36       -0.378811
+     1.7424     1.1600   158.18       -0.379317
+     1.7424     1.1600   160.00       -0.379783
+     1.7424     1.1600   161.82       -0.380208
+     1.7424     1.1600   163.64       -0.380594
+     1.7424     1.1600   165.45       -0.380939
+     1.7424     1.1600   167.27       -0.381243
+     1.7424     1.1600   169.09       -0.381507
+     1.7424     1.1600   170.91       -0.381731
+     1.7424     1.1600   172.73       -0.381913
+     1.7424     1.1600   174.55       -0.382055
+     1.7424     1.1600   176.36       -0.382157
+     1.7424     1.1600   178.18       -0.382218
+     1.7424     1.1600   180.00       -0.382238
+
+     1.7576     1.1600     0.00       -0.175108
+     1.7576     1.1600     1.82       -0.178743
+     1.7576     1.1600     3.64       -0.189377
+     1.7576     1.1600     5.45       -0.206233
+     1.7576     1.1600     7.27       -0.228138
+     1.7576     1.1600     9.09       -0.253672
+     1.7576     1.1600    10.91       -0.281327
+     1.7576     1.1600    12.73       -0.309658
+     1.7576     1.1600    14.55       -0.337391
+     1.7576     1.1600    16.36       -0.363488
+     1.7576     1.1600    18.18       -0.387177
+     1.7576     1.1600    20.00       -0.407947
+     1.7576     1.1600    21.82       -0.425522
+     1.7576     1.1600    23.64       -0.439822
+     1.7576     1.1600    25.45       -0.450920
+     1.7576     1.1600    27.27       -0.459000
+     1.7576     1.1600    29.09       -0.464323
+     1.7576     1.1600    30.91       -0.467191
+     1.7576     1.1600    32.73       -0.467928
+     1.7576     1.1600    34.55       -0.466858
+     1.7576     1.1600    36.36       -0.464291
+     1.7576     1.1600    38.18       -0.460519
+     1.7576     1.1600    40.00       -0.455804
+     1.7576     1.1600    41.82       -0.450381
+     1.7576     1.1600    43.64       -0.444456
+     1.7576     1.1600    45.45       -0.438206
+     1.7576     1.1600    47.27       -0.431778
+     1.7576     1.1600    49.09       -0.425299
+     1.7576     1.1600    50.91       -0.418870
+     1.7576     1.1600    52.73       -0.412573
+     1.7576     1.1600    54.55       -0.406473
+     1.7576     1.1600    56.36       -0.400622
+     1.7576     1.1600    58.18       -0.395058
+     1.7576     1.1600    60.00       -0.389806
+     1.7576     1.1600    61.82       -0.384886
+     1.7576     1.1600    63.64       -0.380309
+     1.7576     1.1600    65.45       -0.376080
+     1.7576     1.1600    67.27       -0.372200
+     1.7576     1.1600    69.09       -0.368664
+     1.7576     1.1600    70.91       -0.365467
+     1.7576     1.1600    72.73       -0.362598
+     1.7576     1.1600    74.55       -0.360048
+     1.7576     1.1600    76.36       -0.357804
+     1.7576     1.1600    78.18       -0.355852
+     1.7576     1.1600    80.00       -0.354177
+     1.7576     1.1600    81.82       -0.352766
+     1.7576     1.1600    83.64       -0.351603
+     1.7576     1.1600    85.45       -0.350672
+     1.7576     1.1600    87.27       -0.349960
+     1.7576     1.1600    89.09       -0.349449
+     1.7576     1.1600    90.91       -0.349127
+     1.7576     1.1600    92.73       -0.348977
+     1.7576     1.1600    94.55       -0.348985
+     1.7576     1.1600    96.36       -0.349139
+     1.7576     1.1600    98.18       -0.349424
+     1.7576     1.1600   100.00       -0.349827
+     1.7576     1.1600   101.82       -0.350336
+     1.7576     1.1600   103.64       -0.350940
+     1.7576     1.1600   105.45       -0.351626
+     1.7576     1.1600   107.27       -0.352385
+     1.7576     1.1600   109.09       -0.353206
+     1.7576     1.1600   110.91       -0.354079
+     1.7576     1.1600   112.73       -0.354997
+     1.7576     1.1600   114.55       -0.355949
+     1.7576     1.1600   116.36       -0.356929
+     1.7576     1.1600   118.18       -0.357930
+     1.7576     1.1600   120.00       -0.358944
+     1.7576     1.1600   121.82       -0.359966
+     1.7576     1.1600   123.64       -0.360990
+     1.7576     1.1600   125.45       -0.362011
+     1.7576     1.1600   127.27       -0.363024
+     1.7576     1.1600   129.09       -0.364025
+     1.7576     1.1600   130.91       -0.365010
+     1.7576     1.1600   132.73       -0.365976
+     1.7576     1.1600   134.55       -0.366920
+     1.7576     1.1600   136.36       -0.367839
+     1.7576     1.1600   138.18       -0.368730
+     1.7576     1.1600   140.00       -0.369592
+     1.7576     1.1600   141.82       -0.370423
+     1.7576     1.1600   143.64       -0.371221
+     1.7576     1.1600   145.45       -0.371984
+     1.7576     1.1600   147.27       -0.372712
+     1.7576     1.1600   149.09       -0.373404
+     1.7576     1.1600   150.91       -0.374059
+     1.7576     1.1600   152.73       -0.374675
+     1.7576     1.1600   154.55       -0.375253
+     1.7576     1.1600   156.36       -0.375793
+     1.7576     1.1600   158.18       -0.376293
+     1.7576     1.1600   160.00       -0.376753
+     1.7576     1.1600   161.82       -0.377174
+     1.7576     1.1600   163.64       -0.377555
+     1.7576     1.1600   165.45       -0.377896
+     1.7576     1.1600   167.27       -0.378197
+     1.7576     1.1600   169.09       -0.378458
+     1.7576     1.1600   170.91       -0.378678
+     1.7576     1.1600   172.73       -0.378859
+     1.7576     1.1600   174.55       -0.378999
+     1.7576     1.1600   176.36       -0.379100
+     1.7576     1.1600   178.18       -0.379160
+     1.7576     1.1600   180.00       -0.379180
+
+     1.7727     1.1600     0.00       -0.206895
+     1.7727     1.1600     1.82       -0.210175
+     1.7727     1.1600     3.64       -0.219774
+     1.7727     1.1600     5.45       -0.234995
+     1.7727     1.1600     7.27       -0.254783
+     1.7727     1.1600     9.09       -0.277856
+     1.7727     1.1600    10.91       -0.302852
+     1.7727     1.1600    12.73       -0.328456
+     1.7727     1.1600    14.55       -0.353501
+     1.7727     1.1600    16.36       -0.377036
+     1.7727     1.1600    18.18       -0.398347
+     1.7727     1.1600    20.00       -0.416956
+     1.7727     1.1600    21.82       -0.432605
+     1.7727     1.1600    23.64       -0.445214
+     1.7727     1.1600    25.45       -0.454847
+     1.7727     1.1600    27.27       -0.461673
+     1.7727     1.1600    29.09       -0.465933
+     1.7727     1.1600    30.91       -0.467910
+     1.7727     1.1600    32.73       -0.467905
+     1.7727     1.1600    34.55       -0.466221
+     1.7727     1.1600    36.36       -0.463153
+     1.7727     1.1600    38.18       -0.458973
+     1.7727     1.1600    40.00       -0.453929
+     1.7727     1.1600    41.82       -0.448244
+     1.7727     1.1600    43.64       -0.442111
+     1.7727     1.1600    45.45       -0.435697
+     1.7727     1.1600    47.27       -0.429143
+     1.7727     1.1600    49.09       -0.422567
+     1.7727     1.1600    50.91       -0.416065
+     1.7727     1.1600    52.73       -0.409714
+     1.7727     1.1600    54.55       -0.403577
+     1.7727     1.1600    56.36       -0.397700
+     1.7727     1.1600    58.18       -0.392119
+     1.7727     1.1600    60.00       -0.386858
+     1.7727     1.1600    61.82       -0.381934
+     1.7727     1.1600    63.64       -0.377358
+     1.7727     1.1600    65.45       -0.373133
+     1.7727     1.1600    67.27       -0.369259
+     1.7727     1.1600    69.09       -0.365732
+     1.7727     1.1600    70.91       -0.362543
+     1.7727     1.1600    72.73       -0.359685
+     1.7727     1.1600    74.55       -0.357145
+     1.7727     1.1600    76.36       -0.354911
+     1.7727     1.1600    78.18       -0.352968
+     1.7727     1.1600    80.00       -0.351304
+     1.7727     1.1600    81.82       -0.349902
+     1.7727     1.1600    83.64       -0.348748
+     1.7727     1.1600    85.45       -0.347825
+     1.7727     1.1600    87.27       -0.347120
+     1.7727     1.1600    89.09       -0.346617
+     1.7727     1.1600    90.91       -0.346300
+     1.7727     1.1600    92.73       -0.346155
+     1.7727     1.1600    94.55       -0.346168
+     1.7727     1.1600    96.36       -0.346325
+     1.7727     1.1600    98.18       -0.346613
+     1.7727     1.1600   100.00       -0.347018
+     1.7727     1.1600   101.82       -0.347528
+     1.7727     1.1600   103.64       -0.348132
+     1.7727     1.1600   105.45       -0.348818
+     1.7727     1.1600   107.27       -0.349575
+     1.7727     1.1600   109.09       -0.350394
+     1.7727     1.1600   110.91       -0.351264
+     1.7727     1.1600   112.73       -0.352178
+     1.7727     1.1600   114.55       -0.353126
+     1.7727     1.1600   116.36       -0.354101
+     1.7727     1.1600   118.18       -0.355096
+     1.7727     1.1600   120.00       -0.356104
+     1.7727     1.1600   121.82       -0.357120
+     1.7727     1.1600   123.64       -0.358137
+     1.7727     1.1600   125.45       -0.359150
+     1.7727     1.1600   127.27       -0.360156
+     1.7727     1.1600   129.09       -0.361149
+     1.7727     1.1600   130.91       -0.362126
+     1.7727     1.1600   132.73       -0.363084
+     1.7727     1.1600   134.55       -0.364020
+     1.7727     1.1600   136.36       -0.364930
+     1.7727     1.1600   138.18       -0.365813
+     1.7727     1.1600   140.00       -0.366667
+     1.7727     1.1600   141.82       -0.367489
+     1.7727     1.1600   143.64       -0.368279
+     1.7727     1.1600   145.45       -0.369035
+     1.7727     1.1600   147.27       -0.369755
+     1.7727     1.1600   149.09       -0.370440
+     1.7727     1.1600   150.91       -0.371087
+     1.7727     1.1600   152.73       -0.371697
+     1.7727     1.1600   154.55       -0.372269
+     1.7727     1.1600   156.36       -0.372802
+     1.7727     1.1600   158.18       -0.373296
+     1.7727     1.1600   160.00       -0.373751
+     1.7727     1.1600   161.82       -0.374167
+     1.7727     1.1600   163.64       -0.374543
+     1.7727     1.1600   165.45       -0.374880
+     1.7727     1.1600   167.27       -0.375177
+     1.7727     1.1600   169.09       -0.375435
+     1.7727     1.1600   170.91       -0.375653
+     1.7727     1.1600   172.73       -0.375831
+     1.7727     1.1600   174.55       -0.375970
+     1.7727     1.1600   176.36       -0.376069
+     1.7727     1.1600   178.18       -0.376128
+     1.7727     1.1600   180.00       -0.376148
+
+     1.7879     1.1600     0.00       -0.236123
+     1.7879     1.1600     1.82       -0.239080
+     1.7879     1.1600     3.64       -0.247734
+     1.7879     1.1600     5.45       -0.261459
+     1.7879     1.1600     7.27       -0.279307
+     1.7879     1.1600     9.09       -0.300121
+     1.7879     1.1600    10.91       -0.322669
+     1.7879     1.1600    12.73       -0.345754
+     1.7879     1.1600    14.55       -0.368312
+     1.7879     1.1600    16.36       -0.389469
+     1.7879     1.1600    18.18       -0.408567
+     1.7879     1.1600    20.00       -0.425162
+     1.7879     1.1600    21.82       -0.439011
+     1.7879     1.1600    23.64       -0.450037
+     1.7879     1.1600    25.45       -0.458297
+     1.7879     1.1600    27.27       -0.463947
+     1.7879     1.1600    29.09       -0.467210
+     1.7879     1.1600    30.91       -0.468349
+     1.7879     1.1600    32.73       -0.467647
+     1.7879     1.1600    34.55       -0.465390
+     1.7879     1.1600    36.36       -0.461851
+     1.7879     1.1600    38.18       -0.457290
+     1.7879     1.1600    40.00       -0.451940
+     1.7879     1.1600    41.82       -0.446011
+     1.7879     1.1600    43.64       -0.439685
+     1.7879     1.1600    45.45       -0.433121
+     1.7879     1.1600    47.27       -0.426452
+     1.7879     1.1600    49.09       -0.419789
+     1.7879     1.1600    50.91       -0.413222
+     1.7879     1.1600    52.73       -0.406826
+     1.7879     1.1600    54.55       -0.400656
+     1.7879     1.1600    56.36       -0.394759
+     1.7879     1.1600    58.18       -0.389166
+     1.7879     1.1600    60.00       -0.383900
+     1.7879     1.1600    61.82       -0.378977
+     1.7879     1.1600    63.64       -0.374406
+     1.7879     1.1600    65.45       -0.370188
+     1.7879     1.1600    67.27       -0.366323
+     1.7879     1.1600    69.09       -0.362807
+     1.7879     1.1600    70.91       -0.359630
+     1.7879     1.1600    72.73       -0.356784
+     1.7879     1.1600    74.55       -0.354256
+     1.7879     1.1600    76.36       -0.352034
+     1.7879     1.1600    78.18       -0.350104
+     1.7879     1.1600    80.00       -0.348451
+     1.7879     1.1600    81.82       -0.347060
+     1.7879     1.1600    83.64       -0.345916
+     1.7879     1.1600    85.45       -0.345004
+     1.7879     1.1600    87.27       -0.344308
+     1.7879     1.1600    89.09       -0.343812
+     1.7879     1.1600    90.91       -0.343503
+     1.7879     1.1600    92.73       -0.343364
+     1.7879     1.1600    94.55       -0.343383
+     1.7879     1.1600    96.36       -0.343544
+     1.7879     1.1600    98.18       -0.343835
+     1.7879     1.1600   100.00       -0.344242
+     1.7879     1.1600   101.82       -0.344754
+     1.7879     1.1600   103.64       -0.345358
+     1.7879     1.1600   105.45       -0.346044
+     1.7879     1.1600   107.27       -0.346800
+     1.7879     1.1600   109.09       -0.347616
+     1.7879     1.1600   110.91       -0.348484
+     1.7879     1.1600   112.73       -0.349393
+     1.7879     1.1600   114.55       -0.350337
+     1.7879     1.1600   116.36       -0.351307
+     1.7879     1.1600   118.18       -0.352297
+     1.7879     1.1600   120.00       -0.353299
+     1.7879     1.1600   121.82       -0.354308
+     1.7879     1.1600   123.64       -0.355318
+     1.7879     1.1600   125.45       -0.356324
+     1.7879     1.1600   127.27       -0.357321
+     1.7879     1.1600   129.09       -0.358307
+     1.7879     1.1600   130.91       -0.359276
+     1.7879     1.1600   132.73       -0.360225
+     1.7879     1.1600   134.55       -0.361152
+     1.7879     1.1600   136.36       -0.362054
+     1.7879     1.1600   138.18       -0.362928
+     1.7879     1.1600   140.00       -0.363774
+     1.7879     1.1600   141.82       -0.364588
+     1.7879     1.1600   143.64       -0.365369
+     1.7879     1.1600   145.45       -0.366117
+     1.7879     1.1600   147.27       -0.366829
+     1.7879     1.1600   149.09       -0.367506
+     1.7879     1.1600   150.91       -0.368146
+     1.7879     1.1600   152.73       -0.368749
+     1.7879     1.1600   154.55       -0.369314
+     1.7879     1.1600   156.36       -0.369841
+     1.7879     1.1600   158.18       -0.370329
+     1.7879     1.1600   160.00       -0.370778
+     1.7879     1.1600   161.82       -0.371189
+     1.7879     1.1600   163.64       -0.371561
+     1.7879     1.1600   165.45       -0.371893
+     1.7879     1.1600   167.27       -0.372187
+     1.7879     1.1600   169.09       -0.372441
+     1.7879     1.1600   170.91       -0.372656
+     1.7879     1.1600   172.73       -0.372832
+     1.7879     1.1600   174.55       -0.372969
+     1.7879     1.1600   176.36       -0.373067
+     1.7879     1.1600   178.18       -0.373125
+     1.7879     1.1600   180.00       -0.373145
+
+     1.8030     1.1600     0.00       -0.262958
+     1.8030     1.1600     1.82       -0.265620
+     1.8030     1.1600     3.64       -0.273410
+     1.8030     1.1600     5.45       -0.285767
+     1.8030     1.1600     7.27       -0.301837
+     1.8030     1.1600     9.09       -0.320578
+     1.8030     1.1600    10.91       -0.340871
+     1.8030     1.1600    12.73       -0.361632
+     1.8030     1.1600    14.55       -0.381889
+     1.8030     1.1600    16.36       -0.400841
+     1.8030     1.1600    18.18       -0.417881
+     1.8030     1.1600    20.00       -0.432600
+     1.8030     1.1600    21.82       -0.444769
+     1.8030     1.1600    23.64       -0.454315
+     1.8030     1.1600    25.45       -0.461290
+     1.8030     1.1600    27.27       -0.465838
+     1.8030     1.1600    29.09       -0.468166
+     1.8030     1.1600    30.91       -0.468521
+     1.8030     1.1600    32.73       -0.467167
+     1.8030     1.1600    34.55       -0.464372
+     1.8030     1.1600    36.36       -0.460395
+     1.8030     1.1600    38.18       -0.455478
+     1.8030     1.1600    40.00       -0.449843
+     1.8030     1.1600    41.82       -0.443688
+     1.8030     1.1600    43.64       -0.437186
+     1.8030     1.1600    45.45       -0.430485
+     1.8030     1.1600    47.27       -0.423711
+     1.8030     1.1600    49.09       -0.416970
+     1.8030     1.1600    50.91       -0.410348
+     1.8030     1.1600    52.73       -0.403912
+     1.8030     1.1600    54.55       -0.397717
+     1.8030     1.1600    56.36       -0.391804
+     1.8030     1.1600    58.18       -0.386204
+     1.8030     1.1600    60.00       -0.380938
+     1.8030     1.1600    61.82       -0.376020
+     1.8030     1.1600    63.64       -0.371456
+     1.8030     1.1600    65.45       -0.367249
+     1.8030     1.1600    67.27       -0.363397
+     1.8030     1.1600    69.09       -0.359894
+     1.8030     1.1600    70.91       -0.356732
+     1.8030     1.1600    72.73       -0.353900
+     1.8030     1.1600    74.55       -0.351387
+     1.8030     1.1600    76.36       -0.349180
+     1.8030     1.1600    78.18       -0.347263
+     1.8030     1.1600    80.00       -0.345624
+     1.8030     1.1600    81.82       -0.344246
+     1.8030     1.1600    83.64       -0.343114
+     1.8030     1.1600    85.45       -0.342213
+     1.8030     1.1600    87.27       -0.341527
+     1.8030     1.1600    89.09       -0.341040
+     1.8030     1.1600    90.91       -0.340739
+     1.8030     1.1600    92.73       -0.340608
+     1.8030     1.1600    94.55       -0.340632
+     1.8030     1.1600    96.36       -0.340798
+     1.8030     1.1600    98.18       -0.341093
+     1.8030     1.1600   100.00       -0.341504
+     1.8030     1.1600   101.82       -0.342017
+     1.8030     1.1600   103.64       -0.342622
+     1.8030     1.1600   105.45       -0.343307
+     1.8030     1.1600   107.27       -0.344062
+     1.8030     1.1600   109.09       -0.344877
+     1.8030     1.1600   110.91       -0.345741
+     1.8030     1.1600   112.73       -0.346648
+     1.8030     1.1600   114.55       -0.347587
+     1.8030     1.1600   116.36       -0.348552
+     1.8030     1.1600   118.18       -0.349536
+     1.8030     1.1600   120.00       -0.350531
+     1.8030     1.1600   121.82       -0.351533
+     1.8030     1.1600   123.64       -0.352536
+     1.8030     1.1600   125.45       -0.353534
+     1.8030     1.1600   127.27       -0.354524
+     1.8030     1.1600   129.09       -0.355501
+     1.8030     1.1600   130.91       -0.356461
+     1.8030     1.1600   132.73       -0.357402
+     1.8030     1.1600   134.55       -0.358320
+     1.8030     1.1600   136.36       -0.359213
+     1.8030     1.1600   138.18       -0.360079
+     1.8030     1.1600   140.00       -0.360915
+     1.8030     1.1600   141.82       -0.361721
+     1.8030     1.1600   143.64       -0.362494
+     1.8030     1.1600   145.45       -0.363233
+     1.8030     1.1600   147.27       -0.363937
+     1.8030     1.1600   149.09       -0.364606
+     1.8030     1.1600   150.91       -0.365238
+     1.8030     1.1600   152.73       -0.365834
+     1.8030     1.1600   154.55       -0.366392
+     1.8030     1.1600   156.36       -0.366912
+     1.8030     1.1600   158.18       -0.367394
+     1.8030     1.1600   160.00       -0.367838
+     1.8030     1.1600   161.82       -0.368243
+     1.8030     1.1600   163.64       -0.368610
+     1.8030     1.1600   165.45       -0.368939
+     1.8030     1.1600   167.27       -0.369228
+     1.8030     1.1600   169.09       -0.369479
+     1.8030     1.1600   170.91       -0.369691
+     1.8030     1.1600   172.73       -0.369865
+     1.8030     1.1600   174.55       -0.370000
+     1.8030     1.1600   176.36       -0.370096
+     1.8030     1.1600   178.18       -0.370154
+     1.8030     1.1600   180.00       -0.370173
+
+     1.8182     1.1600     0.00       -0.287556
+     1.8182     1.1600     1.82       -0.289948
+     1.8182     1.1600     3.64       -0.296949
+     1.8182     1.1600     5.45       -0.308054
+     1.8182     1.1600     7.27       -0.322495
+     1.8182     1.1600     9.09       -0.339331
+     1.8182     1.1600    10.91       -0.357550
+     1.8182     1.1600    12.73       -0.376167
+     1.8182     1.1600    14.55       -0.394296
+     1.8182     1.1600    16.36       -0.411204
+     1.8182     1.1600    18.18       -0.426333
+     1.8182     1.1600    20.00       -0.439305
+     1.8182     1.1600    21.82       -0.449907
+     1.8182     1.1600    23.64       -0.458072
+     1.8182     1.1600    25.45       -0.463847
+     1.8182     1.1600    27.27       -0.467364
+     1.8182     1.1600    29.09       -0.468818
+     1.8182     1.1600    30.91       -0.468439
+     1.8182     1.1600    32.73       -0.466475
+     1.8182     1.1600    34.55       -0.463178
+     1.8182     1.1600    36.36       -0.458792
+     1.8182     1.1600    38.18       -0.453545
+     1.8182     1.1600    40.00       -0.447646
+     1.8182     1.1600    41.82       -0.441283
+     1.8182     1.1600    43.64       -0.434619
+     1.8182     1.1600    45.45       -0.427793
+     1.8182     1.1600    47.27       -0.420927
+     1.8182     1.1600    49.09       -0.414117
+     1.8182     1.1600    50.91       -0.407446
+     1.8182     1.1600    52.73       -0.400978
+     1.8182     1.1600    54.55       -0.394764
+     1.8182     1.1600    56.36       -0.388841
+     1.8182     1.1600    58.18       -0.383239
+     1.8182     1.1600    60.00       -0.377977
+     1.8182     1.1600    61.82       -0.373067
+     1.8182     1.1600    63.64       -0.368515
+     1.8182     1.1600    65.45       -0.364322
+     1.8182     1.1600    67.27       -0.360485
+     1.8182     1.1600    69.09       -0.356998
+     1.8182     1.1600    70.91       -0.353853
+     1.8182     1.1600    72.73       -0.351038
+     1.8182     1.1600    74.55       -0.348542
+     1.8182     1.1600    76.36       -0.346351
+     1.8182     1.1600    78.18       -0.344451
+     1.8182     1.1600    80.00       -0.342827
+     1.8182     1.1600    81.82       -0.341463
+     1.8182     1.1600    83.64       -0.340345
+     1.8182     1.1600    85.45       -0.339456
+     1.8182     1.1600    87.27       -0.338781
+     1.8182     1.1600    89.09       -0.338305
+     1.8182     1.1600    90.91       -0.338013
+     1.8182     1.1600    92.73       -0.337890
+     1.8182     1.1600    94.55       -0.337921
+     1.8182     1.1600    96.36       -0.338093
+     1.8182     1.1600    98.18       -0.338392
+     1.8182     1.1600   100.00       -0.338806
+     1.8182     1.1600   101.82       -0.339322
+     1.8182     1.1600   103.64       -0.339928
+     1.8182     1.1600   105.45       -0.340613
+     1.8182     1.1600   107.27       -0.341367
+     1.8182     1.1600   109.09       -0.342179
+     1.8182     1.1600   110.91       -0.343041
+     1.8182     1.1600   112.73       -0.343943
+     1.8182     1.1600   114.55       -0.344878
+     1.8182     1.1600   116.36       -0.345838
+     1.8182     1.1600   118.18       -0.346816
+     1.8182     1.1600   120.00       -0.347805
+     1.8182     1.1600   121.82       -0.348799
+     1.8182     1.1600   123.64       -0.349794
+     1.8182     1.1600   125.45       -0.350785
+     1.8182     1.1600   127.27       -0.351766
+     1.8182     1.1600   129.09       -0.352734
+     1.8182     1.1600   130.91       -0.353686
+     1.8182     1.1600   132.73       -0.354617
+     1.8182     1.1600   134.55       -0.355526
+     1.8182     1.1600   136.36       -0.356410
+     1.8182     1.1600   138.18       -0.357267
+     1.8182     1.1600   140.00       -0.358094
+     1.8182     1.1600   141.82       -0.358891
+     1.8182     1.1600   143.64       -0.359655
+     1.8182     1.1600   145.45       -0.360385
+     1.8182     1.1600   147.27       -0.361081
+     1.8182     1.1600   149.09       -0.361742
+     1.8182     1.1600   150.91       -0.362367
+     1.8182     1.1600   152.73       -0.362955
+     1.8182     1.1600   154.55       -0.363506
+     1.8182     1.1600   156.36       -0.364019
+     1.8182     1.1600   158.18       -0.364495
+     1.8182     1.1600   160.00       -0.364933
+     1.8182     1.1600   161.82       -0.365333
+     1.8182     1.1600   163.64       -0.365695
+     1.8182     1.1600   165.45       -0.366018
+     1.8182     1.1600   167.27       -0.366304
+     1.8182     1.1600   169.09       -0.366551
+     1.8182     1.1600   170.91       -0.366761
+     1.8182     1.1600   172.73       -0.366932
+     1.8182     1.1600   174.55       -0.367065
+     1.8182     1.1600   176.36       -0.367160
+     1.8182     1.1600   178.18       -0.367217
+     1.8182     1.1600   180.00       -0.367236
+
+     1.8333     1.1600     0.00       -0.310063
+     1.8333     1.1600     1.82       -0.312209
+     1.8333     1.1600     3.64       -0.318488
+     1.8333     1.1600     5.45       -0.328447
+     1.8333     1.1600     7.27       -0.341395
+     1.8333     1.1600     9.09       -0.356481
+     1.8333     1.1600    10.91       -0.372792
+     1.8333     1.1600    12.73       -0.389432
+     1.8333     1.1600    14.55       -0.405595
+     1.8333     1.1600    16.36       -0.420610
+     1.8333     1.1600    18.18       -0.433965
+     1.8333     1.1600    20.00       -0.445312
+     1.8333     1.1600    21.82       -0.454456
+     1.8333     1.1600    23.64       -0.461333
+     1.8333     1.1600    25.45       -0.465987
+     1.8333     1.1600    27.27       -0.468542
+     1.8333     1.1600    29.09       -0.469179
+     1.8333     1.1600    30.91       -0.468115
+     1.8333     1.1600    32.73       -0.465582
+     1.8333     1.1600    34.55       -0.461817
+     1.8333     1.1600    36.36       -0.457051
+     1.8333     1.1600    38.18       -0.451498
+     1.8333     1.1600    40.00       -0.445356
+     1.8333     1.1600    41.82       -0.438802
+     1.8333     1.1600    43.64       -0.431990
+     1.8333     1.1600    45.45       -0.425053
+     1.8333     1.1600    47.27       -0.418103
+     1.8333     1.1600    49.09       -0.411235
+     1.8333     1.1600    50.91       -0.404523
+     1.8333     1.1600    52.73       -0.398030
+     1.8333     1.1600    54.55       -0.391802
+     1.8333     1.1600    56.36       -0.385875
+     1.8333     1.1600    58.18       -0.380276
+     1.8333     1.1600    60.00       -0.375022
+     1.8333     1.1600    61.82       -0.370124
+     1.8333     1.1600    63.64       -0.365587
+     1.8333     1.1600    65.45       -0.361411
+     1.8333     1.1600    67.27       -0.357592
+     1.8333     1.1600    69.09       -0.354125
+     1.8333     1.1600    70.91       -0.350999
+     1.8333     1.1600    72.73       -0.348204
+     1.8333     1.1600    74.55       -0.345727
+     1.8333     1.1600    76.36       -0.343554
+     1.8333     1.1600    78.18       -0.341672
+     1.8333     1.1600    80.00       -0.340065
+     1.8333     1.1600    81.82       -0.338717
+     1.8333     1.1600    83.64       -0.337613
+     1.8333     1.1600    85.45       -0.336738
+     1.8333     1.1600    87.27       -0.336076
+     1.8333     1.1600    89.09       -0.335611
+     1.8333     1.1600    90.91       -0.335329
+     1.8333     1.1600    92.73       -0.335215
+     1.8333     1.1600    94.55       -0.335253
+     1.8333     1.1600    96.36       -0.335432
+     1.8333     1.1600    98.18       -0.335736
+     1.8333     1.1600   100.00       -0.336153
+     1.8333     1.1600   101.82       -0.336671
+     1.8333     1.1600   103.64       -0.337278
+     1.8333     1.1600   105.45       -0.337964
+     1.8333     1.1600   107.27       -0.338717
+     1.8333     1.1600   109.09       -0.339527
+     1.8333     1.1600   110.91       -0.340386
+     1.8333     1.1600   112.73       -0.341284
+     1.8333     1.1600   114.55       -0.342214
+     1.8333     1.1600   116.36       -0.343168
+     1.8333     1.1600   118.18       -0.344140
+     1.8333     1.1600   120.00       -0.345122
+     1.8333     1.1600   121.82       -0.346109
+     1.8333     1.1600   123.64       -0.347096
+     1.8333     1.1600   125.45       -0.348078
+     1.8333     1.1600   127.27       -0.349051
+     1.8333     1.1600   129.09       -0.350010
+     1.8333     1.1600   130.91       -0.350952
+     1.8333     1.1600   132.73       -0.351875
+     1.8333     1.1600   134.55       -0.352774
+     1.8333     1.1600   136.36       -0.353649
+     1.8333     1.1600   138.18       -0.354496
+     1.8333     1.1600   140.00       -0.355314
+     1.8333     1.1600   141.82       -0.356101
+     1.8333     1.1600   143.64       -0.356856
+     1.8333     1.1600   145.45       -0.357577
+     1.8333     1.1600   147.27       -0.358265
+     1.8333     1.1600   149.09       -0.358917
+     1.8333     1.1600   150.91       -0.359534
+     1.8333     1.1600   152.73       -0.360114
+     1.8333     1.1600   154.55       -0.360658
+     1.8333     1.1600   156.36       -0.361164
+     1.8333     1.1600   158.18       -0.361633
+     1.8333     1.1600   160.00       -0.362065
+     1.8333     1.1600   161.82       -0.362460
+     1.8333     1.1600   163.64       -0.362816
+     1.8333     1.1600   165.45       -0.363136
+     1.8333     1.1600   167.27       -0.363417
+     1.8333     1.1600   169.09       -0.363661
+     1.8333     1.1600   170.91       -0.363867
+     1.8333     1.1600   172.73       -0.364036
+     1.8333     1.1600   174.55       -0.364167
+     1.8333     1.1600   176.36       -0.364261
+     1.8333     1.1600   178.18       -0.364317
+     1.8333     1.1600   180.00       -0.364336
+
+     1.8485     1.1600     0.00       -0.330615
+     1.8485     1.1600     1.82       -0.332535
+     1.8485     1.1600     3.64       -0.338155
+     1.8485     1.1600     5.45       -0.347066
+     1.8485     1.1600     7.27       -0.358644
+     1.8485     1.1600     9.09       -0.372125
+     1.8485     1.1600    10.91       -0.386680
+     1.8485     1.1600    12.73       -0.401498
+     1.8485     1.1600    14.55       -0.415844
+     1.8485     1.1600    16.36       -0.429107
+     1.8485     1.1600    18.18       -0.440818
+     1.8485     1.1600    20.00       -0.450656
+     1.8485     1.1600    21.82       -0.458443
+     1.8485     1.1600    23.64       -0.464121
+     1.8485     1.1600    25.45       -0.467730
+     1.8485     1.1600    27.27       -0.469387
+     1.8485     1.1600    29.09       -0.469263
+     1.8485     1.1600    30.91       -0.467561
+     1.8485     1.1600    32.73       -0.464498
+     1.8485     1.1600    34.55       -0.460300
+     1.8485     1.1600    36.36       -0.455181
+     1.8485     1.1600    38.18       -0.449346
+     1.8485     1.1600    40.00       -0.442981
+     1.8485     1.1600    41.82       -0.436252
+     1.8485     1.1600    43.64       -0.429307
+     1.8485     1.1600    45.45       -0.422270
+     1.8485     1.1600    47.27       -0.415248
+     1.8485     1.1600    49.09       -0.408329
+     1.8485     1.1600    50.91       -0.401584
+     1.8485     1.1600    52.73       -0.395072
+     1.8485     1.1600    54.55       -0.388836
+     1.8485     1.1600    56.36       -0.382910
+     1.8485     1.1600    58.18       -0.377319
+     1.8485     1.1600    60.00       -0.372077
+     1.8485     1.1600    61.82       -0.367195
+     1.8485     1.1600    63.64       -0.362677
+     1.8485     1.1600    65.45       -0.358521
+     1.8485     1.1600    67.27       -0.354724
+     1.8485     1.1600    69.09       -0.351278
+     1.8485     1.1600    70.91       -0.348174
+     1.8485     1.1600    72.73       -0.345401
+     1.8485     1.1600    74.55       -0.342945
+     1.8485     1.1600    76.36       -0.340793
+     1.8485     1.1600    78.18       -0.338930
+     1.8485     1.1600    80.00       -0.337342
+     1.8485     1.1600    81.82       -0.336012
+     1.8485     1.1600    83.64       -0.334924
+     1.8485     1.1600    85.45       -0.334064
+     1.8485     1.1600    87.27       -0.333416
+     1.8485     1.1600    89.09       -0.332963
+     1.8485     1.1600    90.91       -0.332692
+     1.8485     1.1600    92.73       -0.332587
+     1.8485     1.1600    94.55       -0.332633
+     1.8485     1.1600    96.36       -0.332818
+     1.8485     1.1600    98.18       -0.333128
+     1.8485     1.1600   100.00       -0.333549
+     1.8485     1.1600   101.82       -0.334070
+     1.8485     1.1600   103.64       -0.334678
+     1.8485     1.1600   105.45       -0.335364
+     1.8485     1.1600   107.27       -0.336115
+     1.8485     1.1600   109.09       -0.336924
+     1.8485     1.1600   110.91       -0.337779
+     1.8485     1.1600   112.73       -0.338674
+     1.8485     1.1600   114.55       -0.339599
+     1.8485     1.1600   116.36       -0.340547
+     1.8485     1.1600   118.18       -0.341512
+     1.8485     1.1600   120.00       -0.342487
+     1.8485     1.1600   121.82       -0.343466
+     1.8485     1.1600   123.64       -0.344445
+     1.8485     1.1600   125.45       -0.345418
+     1.8485     1.1600   127.27       -0.346382
+     1.8485     1.1600   129.09       -0.347331
+     1.8485     1.1600   130.91       -0.348264
+     1.8485     1.1600   132.73       -0.349177
+     1.8485     1.1600   134.55       -0.350067
+     1.8485     1.1600   136.36       -0.350931
+     1.8485     1.1600   138.18       -0.351768
+     1.8485     1.1600   140.00       -0.352577
+     1.8485     1.1600   141.82       -0.353354
+     1.8485     1.1600   143.64       -0.354100
+     1.8485     1.1600   145.45       -0.354812
+     1.8485     1.1600   147.27       -0.355490
+     1.8485     1.1600   149.09       -0.356134
+     1.8485     1.1600   150.91       -0.356742
+     1.8485     1.1600   152.73       -0.357315
+     1.8485     1.1600   154.55       -0.357851
+     1.8485     1.1600   156.36       -0.358350
+     1.8485     1.1600   158.18       -0.358813
+     1.8485     1.1600   160.00       -0.359238
+     1.8485     1.1600   161.82       -0.359627
+     1.8485     1.1600   163.64       -0.359978
+     1.8485     1.1600   165.45       -0.360293
+     1.8485     1.1600   167.27       -0.360570
+     1.8485     1.1600   169.09       -0.360810
+     1.8485     1.1600   170.91       -0.361014
+     1.8485     1.1600   172.73       -0.361180
+     1.8485     1.1600   174.55       -0.361309
+     1.8485     1.1600   176.36       -0.361401
+     1.8485     1.1600   178.18       -0.361456
+     1.8485     1.1600   180.00       -0.361475
+
+     1.8636     1.1600     0.00       -0.349341
+     1.8636     1.1600     1.82       -0.351055
+     1.8636     1.1600     3.64       -0.356071
+     1.8636     1.1600     5.45       -0.364022
+     1.8636     1.1600     7.27       -0.374346
+     1.8636     1.1600     9.09       -0.386353
+     1.8636     1.1600    10.91       -0.399294
+     1.8636     1.1600    12.73       -0.412433
+     1.8636     1.1600    14.55       -0.425103
+     1.8636     1.1600    16.36       -0.436745
+     1.8636     1.1600    18.18       -0.446932
+     1.8636     1.1600    20.00       -0.455370
+     1.8636     1.1600    21.82       -0.461897
+     1.8636     1.1600    23.64       -0.466459
+     1.8636     1.1600    25.45       -0.469096
+     1.8636     1.1600    27.27       -0.469918
+     1.8636     1.1600    29.09       -0.469086
+     1.8636     1.1600    30.91       -0.466789
+     1.8636     1.1600    32.73       -0.463236
+     1.8636     1.1600    34.55       -0.458634
+     1.8636     1.1600    36.36       -0.453190
+     1.8636     1.1600    38.18       -0.447095
+     1.8636     1.1600    40.00       -0.440526
+     1.8636     1.1600    41.82       -0.433640
+     1.8636     1.1600    43.64       -0.426575
+     1.8636     1.1600    45.45       -0.419450
+     1.8636     1.1600    47.27       -0.412365
+     1.8636     1.1600    49.09       -0.405404
+     1.8636     1.1600    50.91       -0.398635
+     1.8636     1.1600    52.73       -0.392110
+     1.8636     1.1600    54.55       -0.385873
+     1.8636     1.1600    56.36       -0.379953
+     1.8636     1.1600    58.18       -0.374374
+     1.8636     1.1600    60.00       -0.369149
+     1.8636     1.1600    61.82       -0.364286
+     1.8636     1.1600    63.64       -0.359790
+     1.8636     1.1600    65.45       -0.355657
+     1.8636     1.1600    67.27       -0.351884
+     1.8636     1.1600    69.09       -0.348463
+     1.8636     1.1600    70.91       -0.345384
+     1.8636     1.1600    72.73       -0.342635
+     1.8636     1.1600    74.55       -0.340202
+     1.8636     1.1600    76.36       -0.338073
+     1.8636     1.1600    78.18       -0.336231
+     1.8636     1.1600    80.00       -0.334663
+     1.8636     1.1600    81.82       -0.333352
+     1.8636     1.1600    83.64       -0.332282
+     1.8636     1.1600    85.45       -0.331438
+     1.8636     1.1600    87.27       -0.330804
+     1.8636     1.1600    89.09       -0.330365
+     1.8636     1.1600    90.91       -0.330105
+     1.8636     1.1600    92.73       -0.330010
+     1.8636     1.1600    94.55       -0.330065
+     1.8636     1.1600    96.36       -0.330257
+     1.8636     1.1600    98.18       -0.330572
+     1.8636     1.1600   100.00       -0.330997
+     1.8636     1.1600   101.82       -0.331520
+     1.8636     1.1600   103.64       -0.332130
+     1.8636     1.1600   105.45       -0.332816
+     1.8636     1.1600   107.27       -0.333566
+     1.8636     1.1600   109.09       -0.334372
+     1.8636     1.1600   110.91       -0.335225
+     1.8636     1.1600   112.73       -0.336115
+     1.8636     1.1600   114.55       -0.337034
+     1.8636     1.1600   116.36       -0.337976
+     1.8636     1.1600   118.18       -0.338934
+     1.8636     1.1600   120.00       -0.339902
+     1.8636     1.1600   121.82       -0.340873
+     1.8636     1.1600   123.64       -0.341843
+     1.8636     1.1600   125.45       -0.342807
+     1.8636     1.1600   127.27       -0.343761
+     1.8636     1.1600   129.09       -0.344701
+     1.8636     1.1600   130.91       -0.345624
+     1.8636     1.1600   132.73       -0.346526
+     1.8636     1.1600   134.55       -0.347406
+     1.8636     1.1600   136.36       -0.348260
+     1.8636     1.1600   138.18       -0.349087
+     1.8636     1.1600   140.00       -0.349885
+     1.8636     1.1600   141.82       -0.350653
+     1.8636     1.1600   143.64       -0.351389
+     1.8636     1.1600   145.45       -0.352092
+     1.8636     1.1600   147.27       -0.352761
+     1.8636     1.1600   149.09       -0.353396
+     1.8636     1.1600   150.91       -0.353995
+     1.8636     1.1600   152.73       -0.354560
+     1.8636     1.1600   154.55       -0.355088
+     1.8636     1.1600   156.36       -0.355580
+     1.8636     1.1600   158.18       -0.356036
+     1.8636     1.1600   160.00       -0.356455
+     1.8636     1.1600   161.82       -0.356838
+     1.8636     1.1600   163.64       -0.357184
+     1.8636     1.1600   165.45       -0.357493
+     1.8636     1.1600   167.27       -0.357766
+     1.8636     1.1600   169.09       -0.358003
+     1.8636     1.1600   170.91       -0.358203
+     1.8636     1.1600   172.73       -0.358366
+     1.8636     1.1600   174.55       -0.358493
+     1.8636     1.1600   176.36       -0.358584
+     1.8636     1.1600   178.18       -0.358638
+     1.8636     1.1600   180.00       -0.358657
+
+     1.8788     1.1600     0.00       -0.366360
+     1.8788     1.1600     1.82       -0.367887
+     1.8788     1.1600     3.64       -0.372351
+     1.8788     1.1600     5.45       -0.379423
+     1.8788     1.1600     7.27       -0.388598
+     1.8788     1.1600     9.09       -0.399252
+     1.8788     1.1600    10.91       -0.410709
+     1.8788     1.1600    12.73       -0.422302
+     1.8788     1.1600    14.55       -0.433425
+     1.8788     1.1600    16.36       -0.443569
+     1.8788     1.1600    18.18       -0.452346
+     1.8788     1.1600    20.00       -0.459487
+     1.8788     1.1600    21.82       -0.464844
+     1.8788     1.1600    23.64       -0.468369
+     1.8788     1.1600    25.45       -0.470103
+     1.8788     1.1600    27.27       -0.470150
+     1.8788     1.1600    29.09       -0.468660
+     1.8788     1.1600    30.91       -0.465813
+     1.8788     1.1600    32.73       -0.461804
+     1.8788     1.1600    34.55       -0.456831
+     1.8788     1.1600    36.36       -0.451087
+     1.8788     1.1600    38.18       -0.444755
+     1.8788     1.1600    40.00       -0.438000
+     1.8788     1.1600    41.82       -0.430971
+     1.8788     1.1600    43.64       -0.423800
+     1.8788     1.1600    45.45       -0.416599
+     1.8788     1.1600    47.27       -0.409462
+     1.8788     1.1600    49.09       -0.402468
+     1.8788     1.1600    50.91       -0.395680
+     1.8788     1.1600    52.73       -0.389150
+     1.8788     1.1600    54.55       -0.382917
+     1.8788     1.1600    56.36       -0.377008
+     1.8788     1.1600    58.18       -0.371445
+     1.8788     1.1600    60.00       -0.366241
+     1.8788     1.1600    61.82       -0.361402
+     1.8788     1.1600    63.64       -0.356931
+     1.8788     1.1600    65.45       -0.352825
+     1.8788     1.1600    67.27       -0.349080
+     1.8788     1.1600    69.09       -0.345686
+     1.8788     1.1600    70.91       -0.342633
+     1.8788     1.1600    72.73       -0.339910
+     1.8788     1.1600    74.55       -0.337503
+     1.8788     1.1600    76.36       -0.335398
+     1.8788     1.1600    78.18       -0.333580
+     1.8788     1.1600    80.00       -0.332033
+     1.8788     1.1600    81.82       -0.330742
+     1.8788     1.1600    83.64       -0.329691
+     1.8788     1.1600    85.45       -0.328864
+     1.8788     1.1600    87.27       -0.328245
+     1.8788     1.1600    89.09       -0.327820
+     1.8788     1.1600    90.91       -0.327572
+     1.8788     1.1600    92.73       -0.327488
+     1.8788     1.1600    94.55       -0.327552
+     1.8788     1.1600    96.36       -0.327751
+     1.8788     1.1600    98.18       -0.328072
+     1.8788     1.1600   100.00       -0.328501
+     1.8788     1.1600   101.82       -0.329027
+     1.8788     1.1600   103.64       -0.329639
+     1.8788     1.1600   105.45       -0.330324
+     1.8788     1.1600   107.27       -0.331073
+     1.8788     1.1600   109.09       -0.331877
+     1.8788     1.1600   110.91       -0.332725
+     1.8788     1.1600   112.73       -0.333611
+     1.8788     1.1600   114.55       -0.334525
+     1.8788     1.1600   116.36       -0.335460
+     1.8788     1.1600   118.18       -0.336411
+     1.8788     1.1600   120.00       -0.337370
+     1.8788     1.1600   121.82       -0.338333
+     1.8788     1.1600   123.64       -0.339294
+     1.8788     1.1600   125.45       -0.340248
+     1.8788     1.1600   127.27       -0.341193
+     1.8788     1.1600   129.09       -0.342122
+     1.8788     1.1600   130.91       -0.343035
+     1.8788     1.1600   132.73       -0.343927
+     1.8788     1.1600   134.55       -0.344796
+     1.8788     1.1600   136.36       -0.345639
+     1.8788     1.1600   138.18       -0.346456
+     1.8788     1.1600   140.00       -0.347243
+     1.8788     1.1600   141.82       -0.348001
+     1.8788     1.1600   143.64       -0.348726
+     1.8788     1.1600   145.45       -0.349420
+     1.8788     1.1600   147.27       -0.350079
+     1.8788     1.1600   149.09       -0.350705
+     1.8788     1.1600   150.91       -0.351296
+     1.8788     1.1600   152.73       -0.351851
+     1.8788     1.1600   154.55       -0.352372
+     1.8788     1.1600   156.36       -0.352856
+     1.8788     1.1600   158.18       -0.353305
+     1.8788     1.1600   160.00       -0.353717
+     1.8788     1.1600   161.82       -0.354094
+     1.8788     1.1600   163.64       -0.354435
+     1.8788     1.1600   165.45       -0.354739
+     1.8788     1.1600   167.27       -0.355008
+     1.8788     1.1600   169.09       -0.355240
+     1.8788     1.1600   170.91       -0.355437
+     1.8788     1.1600   172.73       -0.355598
+     1.8788     1.1600   174.55       -0.355723
+     1.8788     1.1600   176.36       -0.355812
+     1.8788     1.1600   178.18       -0.355866
+     1.8788     1.1600   180.00       -0.355884
+
+     1.8939     1.1600     0.00       -0.381786
+     1.8939     1.1600     1.82       -0.383141
+     1.8939     1.1600     3.64       -0.387100
+     1.8939     1.1600     5.45       -0.393368
+     1.8939     1.1600     7.27       -0.401490
+     1.8939     1.1600     9.09       -0.410903
+     1.8939     1.1600    10.91       -0.420997
+     1.8939     1.1600    12.73       -0.431167
+     1.8939     1.1600    14.55       -0.440864
+     1.8939     1.1600    16.36       -0.449626
+     1.8939     1.1600    18.18       -0.457098
+     1.8939     1.1600    20.00       -0.463038
+     1.8939     1.1600    21.82       -0.467311
+     1.8939     1.1600    23.64       -0.469876
+     1.8939     1.1600    25.45       -0.470772
+     1.8939     1.1600    27.27       -0.470099
+     1.8939     1.1600    29.09       -0.467999
+     1.8939     1.1600    30.91       -0.464643
+     1.8939     1.1600    32.73       -0.460214
+     1.8939     1.1600    34.55       -0.454899
+     1.8939     1.1600    36.36       -0.448881
+     1.8939     1.1600    38.18       -0.442332
+     1.8939     1.1600    40.00       -0.435409
+     1.8939     1.1600    41.82       -0.428254
+     1.8939     1.1600    43.64       -0.420990
+     1.8939     1.1600    45.45       -0.413723
+     1.8939     1.1600    47.27       -0.406543
+     1.8939     1.1600    49.09       -0.399524
+     1.8939     1.1600    50.91       -0.392726
+     1.8939     1.1600    52.73       -0.386197
+     1.8939     1.1600    54.55       -0.379973
+     1.8939     1.1600    56.36       -0.374081
+     1.8939     1.1600    58.18       -0.368539
+     1.8939     1.1600    60.00       -0.363360
+     1.8939     1.1600    61.82       -0.358548
+     1.8939     1.1600    63.64       -0.354106
+     1.8939     1.1600    65.45       -0.350030
+     1.8939     1.1600    67.27       -0.346314
+     1.8939     1.1600    69.09       -0.342950
+     1.8939     1.1600    70.91       -0.339926
+     1.8939     1.1600    72.73       -0.337232
+     1.8939     1.1600    74.55       -0.334852
+     1.8939     1.1600    76.36       -0.332773
+     1.8939     1.1600    78.18       -0.330979
+     1.8939     1.1600    80.00       -0.329456
+     1.8939     1.1600    81.82       -0.328186
+     1.8939     1.1600    83.64       -0.327155
+     1.8939     1.1600    85.45       -0.326346
+     1.8939     1.1600    87.27       -0.325744
+     1.8939     1.1600    89.09       -0.325333
+     1.8939     1.1600    90.91       -0.325098
+     1.8939     1.1600    92.73       -0.325025
+     1.8939     1.1600    94.55       -0.325098
+     1.8939     1.1600    96.36       -0.325305
+     1.8939     1.1600    98.18       -0.325631
+     1.8939     1.1600   100.00       -0.326065
+     1.8939     1.1600   101.82       -0.326594
+     1.8939     1.1600   103.64       -0.327206
+     1.8939     1.1600   105.45       -0.327892
+     1.8939     1.1600   107.27       -0.328639
+     1.8939     1.1600   109.09       -0.329440
+     1.8939     1.1600   110.91       -0.330285
+     1.8939     1.1600   112.73       -0.331165
+     1.8939     1.1600   114.55       -0.332073
+     1.8939     1.1600   116.36       -0.333001
+     1.8939     1.1600   118.18       -0.333944
+     1.8939     1.1600   120.00       -0.334895
+     1.8939     1.1600   121.82       -0.335849
+     1.8939     1.1600   123.64       -0.336800
+     1.8939     1.1600   125.45       -0.337745
+     1.8939     1.1600   127.27       -0.338678
+     1.8939     1.1600   129.09       -0.339598
+     1.8939     1.1600   130.91       -0.340499
+     1.8939     1.1600   132.73       -0.341380
+     1.8939     1.1600   134.55       -0.342238
+     1.8939     1.1600   136.36       -0.343071
+     1.8939     1.1600   138.18       -0.343876
+     1.8939     1.1600   140.00       -0.344653
+     1.8939     1.1600   141.82       -0.345400
+     1.8939     1.1600   143.64       -0.346115
+     1.8939     1.1600   145.45       -0.346798
+     1.8939     1.1600   147.27       -0.347448
+     1.8939     1.1600   149.09       -0.348064
+     1.8939     1.1600   150.91       -0.348646
+     1.8939     1.1600   152.73       -0.349193
+     1.8939     1.1600   154.55       -0.349705
+     1.8939     1.1600   156.36       -0.350182
+     1.8939     1.1600   158.18       -0.350623
+     1.8939     1.1600   160.00       -0.351029
+     1.8939     1.1600   161.82       -0.351399
+     1.8939     1.1600   163.64       -0.351734
+     1.8939     1.1600   165.45       -0.352034
+     1.8939     1.1600   167.27       -0.352298
+     1.8939     1.1600   169.09       -0.352526
+     1.8939     1.1600   170.91       -0.352720
+     1.8939     1.1600   172.73       -0.352878
+     1.8939     1.1600   174.55       -0.353001
+     1.8939     1.1600   176.36       -0.353088
+     1.8939     1.1600   178.18       -0.353141
+     1.8939     1.1600   180.00       -0.353159
+
+     1.9091     1.1600     0.00       -0.395725
+     1.9091     1.1600     1.82       -0.396922
+     1.9091     1.1600     3.64       -0.400420
+     1.9091     1.1600     5.45       -0.405952
+     1.9091     1.1600     7.27       -0.413110
+     1.9091     1.1600     9.09       -0.421385
+     1.9091     1.1600    10.91       -0.430226
+     1.9091     1.1600    12.73       -0.439087
+     1.9091     1.1600    14.55       -0.447470
+     1.9091     1.1600    16.36       -0.454957
+     1.9091     1.1600    18.18       -0.461225
+     1.9091     1.1600    20.00       -0.466054
+     1.9091     1.1600    21.82       -0.469324
+     1.9091     1.1600    23.64       -0.470999
+     1.9091     1.1600    25.45       -0.471120
+     1.9091     1.1600    27.27       -0.469781
+     1.9091     1.1600    29.09       -0.467118
+     1.9091     1.1600    30.91       -0.463292
+     1.9091     1.1600    32.73       -0.458475
+     1.9091     1.1600    34.55       -0.452847
+     1.9091     1.1600    36.36       -0.446579
+     1.9091     1.1600    38.18       -0.439834
+     1.9091     1.1600    40.00       -0.432761
+     1.9091     1.1600    41.82       -0.425494
+     1.9091     1.1600    43.64       -0.418150
+     1.9091     1.1600    45.45       -0.410828
+     1.9091     1.1600    47.27       -0.403615
+     1.9091     1.1600    49.09       -0.396579
+     1.9091     1.1600    50.91       -0.389778
+     1.9091     1.1600    52.73       -0.383256
+     1.9091     1.1600    54.55       -0.377047
+     1.9091     1.1600    56.36       -0.371176
+     1.9091     1.1600    58.18       -0.365660
+     1.9091     1.1600    60.00       -0.360509
+     1.9091     1.1600    61.82       -0.355729
+     1.9091     1.1600    63.64       -0.351319
+     1.9091     1.1600    65.45       -0.347275
+     1.9091     1.1600    67.27       -0.343592
+     1.9091     1.1600    69.09       -0.340260
+     1.9091     1.1600    70.91       -0.337269
+     1.9091     1.1600    72.73       -0.334604
+     1.9091     1.1600    74.55       -0.332254
+     1.9091     1.1600    76.36       -0.330203
+     1.9091     1.1600    78.18       -0.328435
+     1.9091     1.1600    80.00       -0.326936
+     1.9091     1.1600    81.82       -0.325689
+     1.9091     1.1600    83.64       -0.324679
+     1.9091     1.1600    85.45       -0.323889
+     1.9091     1.1600    87.27       -0.323304
+     1.9091     1.1600    89.09       -0.322908
+     1.9091     1.1600    90.91       -0.322687
+     1.9091     1.1600    92.73       -0.322625
+     1.9091     1.1600    94.55       -0.322708
+     1.9091     1.1600    96.36       -0.322922
+     1.9091     1.1600    98.18       -0.323254
+     1.9091     1.1600   100.00       -0.323692
+     1.9091     1.1600   101.82       -0.324224
+     1.9091     1.1600   103.64       -0.324837
+     1.9091     1.1600   105.45       -0.325522
+     1.9091     1.1600   107.27       -0.326268
+     1.9091     1.1600   109.09       -0.327065
+     1.9091     1.1600   110.91       -0.327905
+     1.9091     1.1600   112.73       -0.328780
+     1.9091     1.1600   114.55       -0.329681
+     1.9091     1.1600   116.36       -0.330603
+     1.9091     1.1600   118.18       -0.331537
+     1.9091     1.1600   120.00       -0.332479
+     1.9091     1.1600   121.82       -0.333424
+     1.9091     1.1600   123.64       -0.334365
+     1.9091     1.1600   125.45       -0.335299
+     1.9091     1.1600   127.27       -0.336222
+     1.9091     1.1600   129.09       -0.337130
+     1.9091     1.1600   130.91       -0.338020
+     1.9091     1.1600   132.73       -0.338890
+     1.9091     1.1600   134.55       -0.339736
+     1.9091     1.1600   136.36       -0.340557
+     1.9091     1.1600   138.18       -0.341352
+     1.9091     1.1600   140.00       -0.342117
+     1.9091     1.1600   141.82       -0.342853
+     1.9091     1.1600   143.64       -0.343557
+     1.9091     1.1600   145.45       -0.344230
+     1.9091     1.1600   147.27       -0.344870
+     1.9091     1.1600   149.09       -0.345476
+     1.9091     1.1600   150.91       -0.346048
+     1.9091     1.1600   152.73       -0.346587
+     1.9091     1.1600   154.55       -0.347090
+     1.9091     1.1600   156.36       -0.347559
+     1.9091     1.1600   158.18       -0.347993
+     1.9091     1.1600   160.00       -0.348392
+     1.9091     1.1600   161.82       -0.348756
+     1.9091     1.1600   163.64       -0.349085
+     1.9091     1.1600   165.45       -0.349379
+     1.9091     1.1600   167.27       -0.349639
+     1.9091     1.1600   169.09       -0.349863
+     1.9091     1.1600   170.91       -0.350053
+     1.9091     1.1600   172.73       -0.350208
+     1.9091     1.1600   174.55       -0.350329
+     1.9091     1.1600   176.36       -0.350415
+     1.9091     1.1600   178.18       -0.350467
+     1.9091     1.1600   180.00       -0.350484
+
+     1.9242     1.1600     0.00       -0.408275
+     1.9242     1.1600     1.82       -0.409328
+     1.9242     1.1600     3.64       -0.412404
+     1.9242     1.1600     5.45       -0.417264
+     1.9242     1.1600     7.27       -0.423538
+     1.9242     1.1600     9.09       -0.430770
+     1.9242     1.1600    10.91       -0.438461
+     1.9242     1.1600    12.73       -0.446120
+     1.9242     1.1600    14.55       -0.453294
+     1.9242     1.1600    16.36       -0.459605
+     1.9242     1.1600    18.18       -0.464762
+     1.9242     1.1600    20.00       -0.468565
+     1.9242     1.1600    21.82       -0.470908
+     1.9242     1.1600    23.64       -0.471761
+     1.9242     1.1600    25.45       -0.471166
+     1.9242     1.1600    27.27       -0.469212
+     1.9242     1.1600    29.09       -0.466030
+     1.9242     1.1600    30.91       -0.461770
+     1.9242     1.1600    32.73       -0.456600
+     1.9242     1.1600    34.55       -0.450685
+     1.9242     1.1600    36.36       -0.444190
+     1.9242     1.1600    38.18       -0.437269
+     1.9242     1.1600    40.00       -0.430063
+     1.9242     1.1600    41.82       -0.422698
+     1.9242     1.1600    43.64       -0.415285
+     1.9242     1.1600    45.45       -0.407920
+     1.9242     1.1600    47.27       -0.400683
+     1.9242     1.1600    49.09       -0.393639
+     1.9242     1.1600    50.91       -0.386841
+     1.9242     1.1600    52.73       -0.380333
+     1.9242     1.1600    54.55       -0.374144
+     1.9242     1.1600    56.36       -0.368299
+     1.9242     1.1600    58.18       -0.362813
+     1.9242     1.1600    60.00       -0.357695
+     1.9242     1.1600    61.82       -0.352949
+     1.9242     1.1600    63.64       -0.348574
+     1.9242     1.1600    65.45       -0.344567
+     1.9242     1.1600    67.27       -0.340919
+     1.9242     1.1600    69.09       -0.337622
+     1.9242     1.1600    70.91       -0.334664
+     1.9242     1.1600    72.73       -0.332033
+     1.9242     1.1600    74.55       -0.329713
+     1.9242     1.1600    76.36       -0.327691
+     1.9242     1.1600    78.18       -0.325952
+     1.9242     1.1600    80.00       -0.324478
+     1.9242     1.1600    81.82       -0.323255
+     1.9242     1.1600    83.64       -0.322267
+     1.9242     1.1600    85.45       -0.321497
+     1.9242     1.1600    87.27       -0.320929
+     1.9242     1.1600    89.09       -0.320549
+     1.9242     1.1600    90.91       -0.320341
+     1.9242     1.1600    92.73       -0.320291
+     1.9242     1.1600    94.55       -0.320383
+     1.9242     1.1600    96.36       -0.320605
+     1.9242     1.1600    98.18       -0.320943
+     1.9242     1.1600   100.00       -0.321385
+     1.9242     1.1600   101.82       -0.321919
+     1.9242     1.1600   103.64       -0.322533
+     1.9242     1.1600   105.45       -0.323217
+     1.9242     1.1600   107.27       -0.323961
+     1.9242     1.1600   109.09       -0.324755
+     1.9242     1.1600   110.91       -0.325590
+     1.9242     1.1600   112.73       -0.326459
+     1.9242     1.1600   114.55       -0.327353
+     1.9242     1.1600   116.36       -0.328267
+     1.9242     1.1600   118.18       -0.329193
+     1.9242     1.1600   120.00       -0.330125
+     1.9242     1.1600   121.82       -0.331060
+     1.9242     1.1600   123.64       -0.331990
+     1.9242     1.1600   125.45       -0.332913
+     1.9242     1.1600   127.27       -0.333825
+     1.9242     1.1600   129.09       -0.334721
+     1.9242     1.1600   130.91       -0.335600
+     1.9242     1.1600   132.73       -0.336458
+     1.9242     1.1600   134.55       -0.337292
+     1.9242     1.1600   136.36       -0.338102
+     1.9242     1.1600   138.18       -0.338884
+     1.9242     1.1600   140.00       -0.339638
+     1.9242     1.1600   141.82       -0.340363
+     1.9242     1.1600   143.64       -0.341056
+     1.9242     1.1600   145.45       -0.341718
+     1.9242     1.1600   147.27       -0.342347
+     1.9242     1.1600   149.09       -0.342943
+     1.9242     1.1600   150.91       -0.343506
+     1.9242     1.1600   152.73       -0.344035
+     1.9242     1.1600   154.55       -0.344530
+     1.9242     1.1600   156.36       -0.344991
+     1.9242     1.1600   158.18       -0.345417
+     1.9242     1.1600   160.00       -0.345809
+     1.9242     1.1600   161.82       -0.346167
+     1.9242     1.1600   163.64       -0.346490
+     1.9242     1.1600   165.45       -0.346779
+     1.9242     1.1600   167.27       -0.347033
+     1.9242     1.1600   169.09       -0.347254
+     1.9242     1.1600   170.91       -0.347440
+     1.9242     1.1600   172.73       -0.347593
+     1.9242     1.1600   174.55       -0.347711
+     1.9242     1.1600   176.36       -0.347796
+     1.9242     1.1600   178.18       -0.347846
+     1.9242     1.1600   180.00       -0.347863
+
+     1.9394     1.1600     0.00       -0.419529
+     1.9394     1.1600     1.82       -0.420451
+     1.9394     1.1600     3.64       -0.423142
+     1.9394     1.1600     5.45       -0.427386
+     1.9394     1.1600     7.27       -0.432852
+     1.9394     1.1600     9.09       -0.439127
+     1.9394     1.1600    10.91       -0.445765
+     1.9394     1.1600    12.73       -0.452318
+     1.9394     1.1600    14.55       -0.458381
+     1.9394     1.1600    16.36       -0.463610
+     1.9394     1.1600    18.18       -0.467742
+     1.9394     1.1600    20.00       -0.470600
+     1.9394     1.1600    21.82       -0.472087
+     1.9394     1.1600    23.64       -0.472183
+     1.9394     1.1600    25.45       -0.470927
+     1.9394     1.1600    27.27       -0.468407
+     1.9394     1.1600    29.09       -0.464746
+     1.9394     1.1600    30.91       -0.460091
+     1.9394     1.1600    32.73       -0.454596
+     1.9394     1.1600    34.55       -0.448421
+     1.9394     1.1600    36.36       -0.441722
+     1.9394     1.1600    38.18       -0.434644
+     1.9394     1.1600    40.00       -0.427321
+     1.9394     1.1600    41.82       -0.419872
+     1.9394     1.1600    43.64       -0.412404
+     1.9394     1.1600    45.45       -0.405005
+     1.9394     1.1600    47.27       -0.397752
+     1.9394     1.1600    49.09       -0.390707
+     1.9394     1.1600    50.91       -0.383921
+     1.9394     1.1600    52.73       -0.377431
+     1.9394     1.1600    54.55       -0.371269
+     1.9394     1.1600    56.36       -0.365455
+     1.9394     1.1600    58.18       -0.360004
+     1.9394     1.1600    60.00       -0.354922
+     1.9394     1.1600    61.82       -0.350214
+     1.9394     1.1600    63.64       -0.345878
+     1.9394     1.1600    65.45       -0.341909
+     1.9394     1.1600    67.27       -0.338299
+     1.9394     1.1600    69.09       -0.335040
+     1.9394     1.1600    70.91       -0.332117
+     1.9394     1.1600    72.73       -0.329520
+     1.9394     1.1600    74.55       -0.327234
+     1.9394     1.1600    76.36       -0.325243
+     1.9394     1.1600    78.18       -0.323532
+     1.9394     1.1600    80.00       -0.322085
+     1.9394     1.1600    81.82       -0.320887
+     1.9394     1.1600    83.64       -0.319921
+     1.9394     1.1600    85.45       -0.319172
+     1.9394     1.1600    87.27       -0.318623
+     1.9394     1.1600    89.09       -0.318259
+     1.9394     1.1600    90.91       -0.318065
+     1.9394     1.1600    92.73       -0.318026
+     1.9394     1.1600    94.55       -0.318128
+     1.9394     1.1600    96.36       -0.318358
+     1.9394     1.1600    98.18       -0.318702
+     1.9394     1.1600   100.00       -0.319148
+     1.9394     1.1600   101.82       -0.319684
+     1.9394     1.1600   103.64       -0.320298
+     1.9394     1.1600   105.45       -0.320981
+     1.9394     1.1600   107.27       -0.321722
+     1.9394     1.1600   109.09       -0.322512
+     1.9394     1.1600   110.91       -0.323342
+     1.9394     1.1600   112.73       -0.324204
+     1.9394     1.1600   114.55       -0.325091
+     1.9394     1.1600   116.36       -0.325996
+     1.9394     1.1600   118.18       -0.326913
+     1.9394     1.1600   120.00       -0.327836
+     1.9394     1.1600   121.82       -0.328760
+     1.9394     1.1600   123.64       -0.329679
+     1.9394     1.1600   125.45       -0.330591
+     1.9394     1.1600   127.27       -0.331491
+     1.9394     1.1600   129.09       -0.332375
+     1.9394     1.1600   130.91       -0.333241
+     1.9394     1.1600   132.73       -0.334087
+     1.9394     1.1600   134.55       -0.334909
+     1.9394     1.1600   136.36       -0.335706
+     1.9394     1.1600   138.18       -0.336477
+     1.9394     1.1600   140.00       -0.337219
+     1.9394     1.1600   141.82       -0.337931
+     1.9394     1.1600   143.64       -0.338613
+     1.9394     1.1600   145.45       -0.339264
+     1.9394     1.1600   147.27       -0.339883
+     1.9394     1.1600   149.09       -0.340469
+     1.9394     1.1600   150.91       -0.341022
+     1.9394     1.1600   152.73       -0.341541
+     1.9394     1.1600   154.55       -0.342027
+     1.9394     1.1600   156.36       -0.342480
+     1.9394     1.1600   158.18       -0.342898
+     1.9394     1.1600   160.00       -0.343283
+     1.9394     1.1600   161.82       -0.343634
+     1.9394     1.1600   163.64       -0.343951
+     1.9394     1.1600   165.45       -0.344234
+     1.9394     1.1600   167.27       -0.344484
+     1.9394     1.1600   169.09       -0.344700
+     1.9394     1.1600   170.91       -0.344883
+     1.9394     1.1600   172.73       -0.345033
+     1.9394     1.1600   174.55       -0.345149
+     1.9394     1.1600   176.36       -0.345232
+     1.9394     1.1600   178.18       -0.345281
+     1.9394     1.1600   180.00       -0.345298
+
+     1.9545     1.1600     0.00       -0.429576
+     1.9545     1.1600     1.82       -0.430378
+     1.9545     1.1600     3.64       -0.432716
+     1.9545     1.1600     5.45       -0.436398
+     1.9545     1.1600     7.27       -0.441124
+     1.9545     1.1600     9.09       -0.446524
+     1.9545     1.1600    10.91       -0.452195
+     1.9545     1.1600    12.73       -0.457734
+     1.9545     1.1600    14.55       -0.462776
+     1.9545     1.1600    16.36       -0.467010
+     1.9545     1.1600    18.18       -0.470200
+     1.9545     1.1600    20.00       -0.472186
+     1.9545     1.1600    21.82       -0.472886
+     1.9545     1.1600    23.64       -0.472284
+     1.9545     1.1600    25.45       -0.470420
+     1.9545     1.1600    27.27       -0.467380
+     1.9545     1.1600    29.09       -0.463282
+     1.9545     1.1600    30.91       -0.458264
+     1.9545     1.1600    32.73       -0.452475
+     1.9545     1.1600    34.55       -0.446065
+     1.9545     1.1600    36.36       -0.439183
+     1.9545     1.1600    38.18       -0.431966
+     1.9545     1.1600    40.00       -0.424541
+     1.9545     1.1600    41.82       -0.417023
+     1.9545     1.1600    43.64       -0.409510
+     1.9545     1.1600    45.45       -0.402088
+     1.9545     1.1600    47.27       -0.394829
+     1.9545     1.1600    49.09       -0.387791
+     1.9545     1.1600    50.91       -0.381022
+     1.9545     1.1600    52.73       -0.374558
+     1.9545     1.1600    54.55       -0.368427
+     1.9545     1.1600    56.36       -0.362648
+     1.9545     1.1600    58.18       -0.357235
+     1.9545     1.1600    60.00       -0.352195
+     1.9545     1.1600    61.82       -0.347528
+     1.9545     1.1600    63.64       -0.343234
+     1.9545     1.1600    65.45       -0.339306
+     1.9545     1.1600    67.27       -0.335737
+     1.9545     1.1600    69.09       -0.332517
+     1.9545     1.1600    70.91       -0.329633
+     1.9545     1.1600    72.73       -0.327072
+     1.9545     1.1600    74.55       -0.324819
+     1.9545     1.1600    76.36       -0.322861
+     1.9545     1.1600    78.18       -0.321180
+     1.9545     1.1600    80.00       -0.319762
+     1.9545     1.1600    81.82       -0.318590
+     1.9545     1.1600    83.64       -0.317647
+     1.9545     1.1600    85.45       -0.316919
+     1.9545     1.1600    87.27       -0.316388
+     1.9545     1.1600    89.09       -0.316041
+     1.9545     1.1600    90.91       -0.315861
+     1.9545     1.1600    92.73       -0.315834
+     1.9545     1.1600    94.55       -0.315946
+     1.9545     1.1600    96.36       -0.316183
+     1.9545     1.1600    98.18       -0.316533
+     1.9545     1.1600   100.00       -0.316982
+     1.9545     1.1600   101.82       -0.317520
+     1.9545     1.1600   103.64       -0.318135
+     1.9545     1.1600   105.45       -0.318816
+     1.9545     1.1600   107.27       -0.319554
+     1.9545     1.1600   109.09       -0.320339
+     1.9545     1.1600   110.91       -0.321163
+     1.9545     1.1600   112.73       -0.322019
+     1.9545     1.1600   114.55       -0.322898
+     1.9545     1.1600   116.36       -0.323794
+     1.9545     1.1600   118.18       -0.324701
+     1.9545     1.1600   120.00       -0.325613
+     1.9545     1.1600   121.82       -0.326526
+     1.9545     1.1600   123.64       -0.327434
+     1.9545     1.1600   125.45       -0.328333
+     1.9545     1.1600   127.27       -0.329221
+     1.9545     1.1600   129.09       -0.330093
+     1.9545     1.1600   130.91       -0.330946
+     1.9545     1.1600   132.73       -0.331779
+     1.9545     1.1600   134.55       -0.332589
+     1.9545     1.1600   136.36       -0.333373
+     1.9545     1.1600   138.18       -0.334131
+     1.9545     1.1600   140.00       -0.334861
+     1.9545     1.1600   141.82       -0.335562
+     1.9545     1.1600   143.64       -0.336232
+     1.9545     1.1600   145.45       -0.336871
+     1.9545     1.1600   147.27       -0.337479
+     1.9545     1.1600   149.09       -0.338054
+     1.9545     1.1600   150.91       -0.338597
+     1.9545     1.1600   152.73       -0.339107
+     1.9545     1.1600   154.55       -0.339584
+     1.9545     1.1600   156.36       -0.340028
+     1.9545     1.1600   158.18       -0.340438
+     1.9545     1.1600   160.00       -0.340816
+     1.9545     1.1600   161.82       -0.341160
+     1.9545     1.1600   163.64       -0.341471
+     1.9545     1.1600   165.45       -0.341749
+     1.9545     1.1600   167.27       -0.341993
+     1.9545     1.1600   169.09       -0.342205
+     1.9545     1.1600   170.91       -0.342385
+     1.9545     1.1600   172.73       -0.342531
+     1.9545     1.1600   174.55       -0.342645
+     1.9545     1.1600   176.36       -0.342726
+     1.9545     1.1600   178.18       -0.342775
+     1.9545     1.1600   180.00       -0.342791
+
+     1.9697     1.1600     0.00       -0.438497
+     1.9697     1.1600     1.82       -0.439189
+     1.9697     1.1600     3.64       -0.441206
+     1.9697     1.1600     5.45       -0.444373
+     1.9697     1.1600     7.27       -0.448423
+     1.9697     1.1600     9.09       -0.453022
+     1.9697     1.1600    10.91       -0.457808
+     1.9697     1.1600    12.73       -0.462417
+     1.9697     1.1600    14.55       -0.466521
+     1.9697     1.1600    16.36       -0.469841
+     1.9697     1.1600    18.18       -0.472165
+     1.9697     1.1600    20.00       -0.473352
+     1.9697     1.1600    21.82       -0.473328
+     1.9697     1.1600    23.64       -0.472084
+     1.9697     1.1600    25.45       -0.469662
+     1.9697     1.1600    27.27       -0.466146
+     1.9697     1.1600    29.09       -0.461648
+     1.9697     1.1600    30.91       -0.456301
+     1.9697     1.1600    32.73       -0.450245
+     1.9697     1.1600    34.55       -0.443625
+     1.9697     1.1600    36.36       -0.436580
+     1.9697     1.1600    38.18       -0.429243
+     1.9697     1.1600    40.00       -0.421732
+     1.9697     1.1600    41.82       -0.414157
+     1.9697     1.1600    43.64       -0.406611
+     1.9697     1.1600    45.45       -0.399175
+     1.9697     1.1600    47.27       -0.391918
+     1.9697     1.1600    49.09       -0.384894
+     1.9697     1.1600    50.91       -0.378149
+     1.9697     1.1600    52.73       -0.371716
+     1.9697     1.1600    54.55       -0.365622
+     1.9697     1.1600    56.36       -0.359884
+     1.9697     1.1600    58.18       -0.354514
+     1.9697     1.1600    60.00       -0.349517
+     1.9697     1.1600    61.82       -0.344895
+     1.9697     1.1600    63.64       -0.340646
+     1.9697     1.1600    65.45       -0.336762
+     1.9697     1.1600    67.27       -0.333236
+     1.9697     1.1600    69.09       -0.330057
+     1.9697     1.1600    70.91       -0.327213
+     1.9697     1.1600    72.73       -0.324691
+     1.9697     1.1600    74.55       -0.322474
+     1.9697     1.1600    76.36       -0.320549
+     1.9697     1.1600    78.18       -0.318900
+     1.9697     1.1600    80.00       -0.317511
+     1.9697     1.1600    81.82       -0.316365
+     1.9697     1.1600    83.64       -0.315447
+     1.9697     1.1600    85.45       -0.314740
+     1.9697     1.1600    87.27       -0.314228
+     1.9697     1.1600    89.09       -0.313897
+     1.9697     1.1600    90.91       -0.313732
+     1.9697     1.1600    92.73       -0.313717
+     1.9697     1.1600    94.55       -0.313838
+     1.9697     1.1600    96.36       -0.314083
+     1.9697     1.1600    98.18       -0.314438
+     1.9697     1.1600   100.00       -0.314891
+     1.9697     1.1600   101.82       -0.315430
+     1.9697     1.1600   103.64       -0.316044
+     1.9697     1.1600   105.45       -0.316724
+     1.9697     1.1600   107.27       -0.317458
+     1.9697     1.1600   109.09       -0.318238
+     1.9697     1.1600   110.91       -0.319056
+     1.9697     1.1600   112.73       -0.319904
+     1.9697     1.1600   114.55       -0.320775
+     1.9697     1.1600   116.36       -0.321661
+     1.9697     1.1600   118.18       -0.322558
+     1.9697     1.1600   120.00       -0.323459
+     1.9697     1.1600   121.82       -0.324360
+     1.9697     1.1600   123.64       -0.325256
+     1.9697     1.1600   125.45       -0.326143
+     1.9697     1.1600   127.27       -0.327018
+     1.9697     1.1600   129.09       -0.327877
+     1.9697     1.1600   130.91       -0.328717
+     1.9697     1.1600   132.73       -0.329537
+     1.9697     1.1600   134.55       -0.330333
+     1.9697     1.1600   136.36       -0.331105
+     1.9697     1.1600   138.18       -0.331850
+     1.9697     1.1600   140.00       -0.332567
+     1.9697     1.1600   141.82       -0.333255
+     1.9697     1.1600   143.64       -0.333914
+     1.9697     1.1600   145.45       -0.334541
+     1.9697     1.1600   147.27       -0.335138
+     1.9697     1.1600   149.09       -0.335702
+     1.9697     1.1600   150.91       -0.336235
+     1.9697     1.1600   152.73       -0.336735
+     1.9697     1.1600   154.55       -0.337202
+     1.9697     1.1600   156.36       -0.337638
+     1.9697     1.1600   158.18       -0.338040
+     1.9697     1.1600   160.00       -0.338410
+     1.9697     1.1600   161.82       -0.338747
+     1.9697     1.1600   163.64       -0.339051
+     1.9697     1.1600   165.45       -0.339324
+     1.9697     1.1600   167.27       -0.339563
+     1.9697     1.1600   169.09       -0.339771
+     1.9697     1.1600   170.91       -0.339947
+     1.9697     1.1600   172.73       -0.340090
+     1.9697     1.1600   174.55       -0.340201
+     1.9697     1.1600   176.36       -0.340281
+     1.9697     1.1600   178.18       -0.340329
+     1.9697     1.1600   180.00       -0.340345
+
+     1.9848     1.1600     0.00       -0.446368
+     1.9848     1.1600     1.82       -0.446961
+     1.9848     1.1600     3.64       -0.448684
+     1.9848     1.1600     5.45       -0.451382
+     1.9848     1.1600     7.27       -0.454813
+     1.9848     1.1600     9.09       -0.458680
+     1.9848     1.1600    10.91       -0.462655
+     1.9848     1.1600    12.73       -0.466414
+     1.9848     1.1600    14.55       -0.469659
+     1.9848     1.1600    16.36       -0.472141
+     1.9848     1.1600    18.18       -0.473670
+     1.9848     1.1600    20.00       -0.474122
+     1.9848     1.1600    21.82       -0.473434
+     1.9848     1.1600    23.64       -0.471602
+     1.9848     1.1600    25.45       -0.468670
+     1.9848     1.1600    27.27       -0.464719
+     1.9848     1.1600    29.09       -0.459858
+     1.9848     1.1600    30.91       -0.454212
+     1.9848     1.1600    32.73       -0.447917
+     1.9848     1.1600    34.55       -0.441109
+     1.9848     1.1600    36.36       -0.433922
+     1.9848     1.1600    38.18       -0.426481
+     1.9848     1.1600    40.00       -0.418899
+     1.9848     1.1600    41.82       -0.411279
+     1.9848     1.1600    43.64       -0.403711
+     1.9848     1.1600    45.45       -0.396272
+     1.9848     1.1600    47.27       -0.389025
+     1.9848     1.1600    49.09       -0.382023
+     1.9848     1.1600    50.91       -0.375308
+     1.9848     1.1600    52.73       -0.368912
+     1.9848     1.1600    54.55       -0.362859
+     1.9848     1.1600    56.36       -0.357166
+     1.9848     1.1600    58.18       -0.351842
+     1.9848     1.1600    60.00       -0.346893
+     1.9848     1.1600    61.82       -0.342320
+     1.9848     1.1600    63.64       -0.338118
+     1.9848     1.1600    65.45       -0.334281
+     1.9848     1.1600    67.27       -0.330801
+     1.9848     1.1600    69.09       -0.327666
+     1.9848     1.1600    70.91       -0.324864
+     1.9848     1.1600    72.73       -0.322380
+     1.9848     1.1600    74.55       -0.320201
+     1.9848     1.1600    76.36       -0.318312
+     1.9848     1.1600    78.18       -0.316695
+     1.9848     1.1600    80.00       -0.315335
+     1.9848     1.1600    81.82       -0.314217
+     1.9848     1.1600    83.64       -0.313323
+     1.9848     1.1600    85.45       -0.312638
+     1.9848     1.1600    87.27       -0.312146
+     1.9848     1.1600    89.09       -0.311832
+     1.9848     1.1600    90.91       -0.311681
+     1.9848     1.1600    92.73       -0.311677
+     1.9848     1.1600    94.55       -0.311809
+     1.9848     1.1600    96.36       -0.312061
+     1.9848     1.1600    98.18       -0.312421
+     1.9848     1.1600   100.00       -0.312876
+     1.9848     1.1600   101.82       -0.313416
+     1.9848     1.1600   103.64       -0.314030
+     1.9848     1.1600   105.45       -0.314707
+     1.9848     1.1600   107.27       -0.315437
+     1.9848     1.1600   109.09       -0.316212
+     1.9848     1.1600   110.91       -0.317023
+     1.9848     1.1600   112.73       -0.317863
+     1.9848     1.1600   114.55       -0.318724
+     1.9848     1.1600   116.36       -0.319601
+     1.9848     1.1600   118.18       -0.320486
+     1.9848     1.1600   120.00       -0.321376
+     1.9848     1.1600   121.82       -0.322265
+     1.9848     1.1600   123.64       -0.323148
+     1.9848     1.1600   125.45       -0.324022
+     1.9848     1.1600   127.27       -0.324884
+     1.9848     1.1600   129.09       -0.325729
+     1.9848     1.1600   130.91       -0.326556
+     1.9848     1.1600   132.73       -0.327362
+     1.9848     1.1600   134.55       -0.328145
+     1.9848     1.1600   136.36       -0.328903
+     1.9848     1.1600   138.18       -0.329635
+     1.9848     1.1600   140.00       -0.330339
+     1.9848     1.1600   141.82       -0.331014
+     1.9848     1.1600   143.64       -0.331660
+     1.9848     1.1600   145.45       -0.332276
+     1.9848     1.1600   147.27       -0.332861
+     1.9848     1.1600   149.09       -0.333414
+     1.9848     1.1600   150.91       -0.333936
+     1.9848     1.1600   152.73       -0.334426
+     1.9848     1.1600   154.55       -0.334885
+     1.9848     1.1600   156.36       -0.335311
+     1.9848     1.1600   158.18       -0.335705
+     1.9848     1.1600   160.00       -0.336067
+     1.9848     1.1600   161.82       -0.336397
+     1.9848     1.1600   163.64       -0.336695
+     1.9848     1.1600   165.45       -0.336962
+     1.9848     1.1600   167.27       -0.337196
+     1.9848     1.1600   169.09       -0.337399
+     1.9848     1.1600   170.91       -0.337571
+     1.9848     1.1600   172.73       -0.337712
+     1.9848     1.1600   174.55       -0.337821
+     1.9848     1.1600   176.36       -0.337898
+     1.9848     1.1600   178.18       -0.337945
+     1.9848     1.1600   180.00       -0.337961
+
+     2.0000     1.1600     0.00       -0.453263
+     2.0000     1.1600     1.82       -0.453764
+     2.0000     1.1600     3.64       -0.455220
+     2.0000     1.1600     5.45       -0.457489
+     2.0000     1.1600     7.27       -0.460357
+     2.0000     1.1600     9.09       -0.463554
+     2.0000     1.1600    10.91       -0.466789
+     2.0000     1.1600    12.73       -0.469768
+     2.0000     1.1600    14.55       -0.472227
+     2.0000     1.1600    16.36       -0.473941
+     2.0000     1.1600    18.18       -0.474742
+     2.0000     1.1600    20.00       -0.474521
+     2.0000     1.1600    21.82       -0.473226
+     2.0000     1.1600    23.64       -0.470857
+     2.0000     1.1600    25.45       -0.467460
+     2.0000     1.1600    27.27       -0.463113
+     2.0000     1.1600    29.09       -0.457922
+     2.0000     1.1600    30.91       -0.452008
+     2.0000     1.1600    32.73       -0.445499
+     2.0000     1.1600    34.55       -0.438526
+     2.0000     1.1600    36.36       -0.431216
+     2.0000     1.1600    38.18       -0.423687
+     2.0000     1.1600    40.00       -0.416048
+     2.0000     1.1600    41.82       -0.408396
+     2.0000     1.1600    43.64       -0.400817
+     2.0000     1.1600    45.45       -0.393382
+     2.0000     1.1600    47.27       -0.386154
+     2.0000     1.1600    49.09       -0.379180
+     2.0000     1.1600    50.91       -0.372502
+     2.0000     1.1600    52.73       -0.366148
+     2.0000     1.1600    54.55       -0.360142
+     2.0000     1.1600    56.36       -0.354498
+     2.0000     1.1600    58.18       -0.349225
+     2.0000     1.1600    60.00       -0.344328
+     2.0000     1.1600    61.82       -0.339806
+     2.0000     1.1600    63.64       -0.335654
+     2.0000     1.1600    65.45       -0.331867
+     2.0000     1.1600    67.27       -0.328434
+     2.0000     1.1600    69.09       -0.325345
+     2.0000     1.1600    70.91       -0.322586
+     2.0000     1.1600    72.73       -0.320144
+     2.0000     1.1600    74.55       -0.318004
+     2.0000     1.1600    76.36       -0.316150
+     2.0000     1.1600    78.18       -0.314567
+     2.0000     1.1600    80.00       -0.313238
+     2.0000     1.1600    81.82       -0.312147
+     2.0000     1.1600    83.64       -0.311279
+     2.0000     1.1600    85.45       -0.310616
+     2.0000     1.1600    87.27       -0.310144
+     2.0000     1.1600    89.09       -0.309846
+     2.0000     1.1600    90.91       -0.309709
+     2.0000     1.1600    92.73       -0.309718
+     2.0000     1.1600    94.55       -0.309858
+     2.0000     1.1600    96.36       -0.310117
+     2.0000     1.1600    98.18       -0.310482
+     2.0000     1.1600   100.00       -0.310940
+     2.0000     1.1600   101.82       -0.311481
+     2.0000     1.1600   103.64       -0.312093
+     2.0000     1.1600   105.45       -0.312767
+     2.0000     1.1600   107.27       -0.313492
+     2.0000     1.1600   109.09       -0.314261
+     2.0000     1.1600   110.91       -0.315064
+     2.0000     1.1600   112.73       -0.315896
+     2.0000     1.1600   114.55       -0.316747
+     2.0000     1.1600   116.36       -0.317613
+     2.0000     1.1600   118.18       -0.318488
+     2.0000     1.1600   120.00       -0.319365
+     2.0000     1.1600   121.82       -0.320241
+     2.0000     1.1600   123.64       -0.321111
+     2.0000     1.1600   125.45       -0.321972
+     2.0000     1.1600   127.27       -0.322819
+     2.0000     1.1600   129.09       -0.323651
+     2.0000     1.1600   130.91       -0.324464
+     2.0000     1.1600   132.73       -0.325256
+     2.0000     1.1600   134.55       -0.326025
+     2.0000     1.1600   136.36       -0.326769
+     2.0000     1.1600   138.18       -0.327487
+     2.0000     1.1600   140.00       -0.328178
+     2.0000     1.1600   141.82       -0.328841
+     2.0000     1.1600   143.64       -0.329474
+     2.0000     1.1600   145.45       -0.330077
+     2.0000     1.1600   147.27       -0.330650
+     2.0000     1.1600   149.09       -0.331193
+     2.0000     1.1600   150.91       -0.331704
+     2.0000     1.1600   152.73       -0.332184
+     2.0000     1.1600   154.55       -0.332632
+     2.0000     1.1600   156.36       -0.333049
+     2.0000     1.1600   158.18       -0.333435
+     2.0000     1.1600   160.00       -0.333789
+     2.0000     1.1600   161.82       -0.334112
+     2.0000     1.1600   163.64       -0.334404
+     2.0000     1.1600   165.45       -0.334664
+     2.0000     1.1600   167.27       -0.334894
+     2.0000     1.1600   169.09       -0.335093
+     2.0000     1.1600   170.91       -0.335260
+     2.0000     1.1600   172.73       -0.335398
+     2.0000     1.1600   174.55       -0.335504
+     2.0000     1.1600   176.36       -0.335580
+     2.0000     1.1600   178.18       -0.335626
+     2.0000     1.1600   180.00       -0.335641
+
+     2.0152     1.1600     0.00       -0.459249
+     2.0152     1.1600     1.82       -0.459667
+     2.0152     1.1600     3.64       -0.460878
+     2.0152     1.1600     5.45       -0.462757
+     2.0152     1.1600     7.27       -0.465110
+     2.0152     1.1600     9.09       -0.467697
+     2.0152     1.1600    10.91       -0.470255
+     2.0152     1.1600    12.73       -0.472523
+     2.0152     1.1600    14.55       -0.474262
+     2.0152     1.1600    16.36       -0.475275
+     2.0152     1.1600    18.18       -0.475411
+     2.0152     1.1600    20.00       -0.474575
+     2.0152     1.1600    21.82       -0.472725
+     2.0152     1.1600    23.64       -0.469867
+     2.0152     1.1600    25.45       -0.466046
+     2.0152     1.1600    27.27       -0.461341
+     2.0152     1.1600    29.09       -0.455854
+     2.0152     1.1600    30.91       -0.449699
+     2.0152     1.1600    32.73       -0.443001
+     2.0152     1.1600    34.55       -0.435884
+     2.0152     1.1600    36.36       -0.428469
+     2.0152     1.1600    38.18       -0.420868
+     2.0152     1.1600    40.00       -0.413185
+     2.0152     1.1600    41.82       -0.405513
+     2.0152     1.1600    43.64       -0.397933
+     2.0152     1.1600    45.45       -0.390512
+     2.0152     1.1600    47.27       -0.383310
+     2.0152     1.1600    49.09       -0.376372
+     2.0152     1.1600    50.91       -0.369736
+     2.0152     1.1600    52.73       -0.363430
+     2.0152     1.1600    54.55       -0.357475
+     2.0152     1.1600    56.36       -0.351885
+     2.0152     1.1600    58.18       -0.346667
+     2.0152     1.1600    60.00       -0.341824
+     2.0152     1.1600    61.82       -0.337356
+     2.0152     1.1600    63.64       -0.333258
+     2.0152     1.1600    65.45       -0.329522
+     2.0152     1.1600    67.27       -0.326139
+     2.0152     1.1600    69.09       -0.323098
+     2.0152     1.1600    70.91       -0.320384
+     2.0152     1.1600    72.73       -0.317985
+     2.0152     1.1600    74.55       -0.315885
+     2.0152     1.1600    76.36       -0.314068
+     2.0152     1.1600    78.18       -0.312519
+     2.0152     1.1600    80.00       -0.311221
+     2.0152     1.1600    81.82       -0.310159
+     2.0152     1.1600    83.64       -0.309316
+     2.0152     1.1600    85.45       -0.308676
+     2.0152     1.1600    87.27       -0.308223
+     2.0152     1.1600    89.09       -0.307942
+     2.0152     1.1600    90.91       -0.307819
+     2.0152     1.1600    92.73       -0.307840
+     2.0152     1.1600    94.55       -0.307989
+     2.0152     1.1600    96.36       -0.308254
+     2.0152     1.1600    98.18       -0.308623
+     2.0152     1.1600   100.00       -0.309084
+     2.0152     1.1600   101.82       -0.309624
+     2.0152     1.1600   103.64       -0.310235
+     2.0152     1.1600   105.45       -0.310905
+     2.0152     1.1600   107.27       -0.311625
+     2.0152     1.1600   109.09       -0.312387
+     2.0152     1.1600   110.91       -0.313183
+     2.0152     1.1600   112.73       -0.314005
+     2.0152     1.1600   114.55       -0.314846
+     2.0152     1.1600   116.36       -0.315701
+     2.0152     1.1600   118.18       -0.316563
+     2.0152     1.1600   120.00       -0.317428
+     2.0152     1.1600   121.82       -0.318291
+     2.0152     1.1600   123.64       -0.319147
+     2.0152     1.1600   125.45       -0.319994
+     2.0152     1.1600   127.27       -0.320827
+     2.0152     1.1600   129.09       -0.321644
+     2.0152     1.1600   130.91       -0.322442
+     2.0152     1.1600   132.73       -0.323220
+     2.0152     1.1600   134.55       -0.323975
+     2.0152     1.1600   136.36       -0.324705
+     2.0152     1.1600   138.18       -0.325409
+     2.0152     1.1600   140.00       -0.326086
+     2.0152     1.1600   141.82       -0.326735
+     2.0152     1.1600   143.64       -0.327356
+     2.0152     1.1600   145.45       -0.327947
+     2.0152     1.1600   147.27       -0.328508
+     2.0152     1.1600   149.09       -0.329039
+     2.0152     1.1600   150.91       -0.329539
+     2.0152     1.1600   152.73       -0.330008
+     2.0152     1.1600   154.55       -0.330447
+     2.0152     1.1600   156.36       -0.330855
+     2.0152     1.1600   158.18       -0.331232
+     2.0152     1.1600   160.00       -0.331578
+     2.0152     1.1600   161.82       -0.331894
+     2.0152     1.1600   163.64       -0.332179
+     2.0152     1.1600   165.45       -0.332434
+     2.0152     1.1600   167.27       -0.332658
+     2.0152     1.1600   169.09       -0.332852
+     2.0152     1.1600   170.91       -0.333016
+     2.0152     1.1600   172.73       -0.333150
+     2.0152     1.1600   174.55       -0.333254
+     2.0152     1.1600   176.36       -0.333328
+     2.0152     1.1600   178.18       -0.333373
+     2.0152     1.1600   180.00       -0.333388
+
+     2.0303     1.1600     0.00       -0.464390
+     2.0303     1.1600     1.82       -0.464732
+     2.0303     1.1600     3.64       -0.465721
+     2.0303     1.1600     5.45       -0.467244
+     2.0303     1.1600     7.27       -0.469128
+     2.0303     1.1600     9.09       -0.471159
+     2.0303     1.1600    10.91       -0.473099
+     2.0303     1.1600    12.73       -0.474718
+     2.0303     1.1600    14.55       -0.475801
+     2.0303     1.1600    16.36       -0.476173
+     2.0303     1.1600    18.18       -0.475702
+     2.0303     1.1600    20.00       -0.474306
+     2.0303     1.1600    21.82       -0.471952
+     2.0303     1.1600    23.64       -0.468649
+     2.0303     1.1600    25.45       -0.464444
+     2.0303     1.1600    27.27       -0.459417
+     2.0303     1.1600    29.09       -0.453663
+     2.0303     1.1600    30.91       -0.447295
+     2.0303     1.1600    32.73       -0.440431
+     2.0303     1.1600    34.55       -0.433190
+     2.0303     1.1600    36.36       -0.425687
+     2.0303     1.1600    38.18       -0.418030
+     2.0303     1.1600    40.00       -0.410317
+     2.0303     1.1600    41.82       -0.402636
+     2.0303     1.1600    43.64       -0.395064
+     2.0303     1.1600    45.45       -0.387666
+     2.0303     1.1600    47.27       -0.380498
+     2.0303     1.1600    49.09       -0.373602
+     2.0303     1.1600    50.91       -0.367015
+     2.0303     1.1600    52.73       -0.360762
+     2.0303     1.1600    54.55       -0.354863
+     2.0303     1.1600    56.36       -0.349330
+     2.0303     1.1600    58.18       -0.344170
+     2.0303     1.1600    60.00       -0.339385
+     2.0303     1.1600    61.82       -0.334974
+     2.0303     1.1600    63.64       -0.330932
+     2.0303     1.1600    65.45       -0.327250
+     2.0303     1.1600    67.27       -0.323919
+     2.0303     1.1600    69.09       -0.320927
+     2.0303     1.1600    70.91       -0.318260
+     2.0303     1.1600    72.73       -0.315905
+     2.0303     1.1600    74.55       -0.313846
+     2.0303     1.1600    76.36       -0.312067
+     2.0303     1.1600    78.18       -0.310553
+     2.0303     1.1600    80.00       -0.309287
+     2.0303     1.1600    81.82       -0.308254
+     2.0303     1.1600    83.64       -0.307436
+     2.0303     1.1600    85.45       -0.306819
+     2.0303     1.1600    87.27       -0.306386
+     2.0303     1.1600    89.09       -0.306122
+     2.0303     1.1600    90.91       -0.306013
+     2.0303     1.1600    92.73       -0.306044
+     2.0303     1.1600    94.55       -0.306202
+     2.0303     1.1600    96.36       -0.306474
+     2.0303     1.1600    98.18       -0.306847
+     2.0303     1.1600   100.00       -0.307309
+     2.0303     1.1600   101.82       -0.307849
+     2.0303     1.1600   103.64       -0.308457
+     2.0303     1.1600   105.45       -0.309122
+     2.0303     1.1600   107.27       -0.309837
+     2.0303     1.1600   109.09       -0.310592
+     2.0303     1.1600   110.91       -0.311379
+     2.0303     1.1600   112.73       -0.312191
+     2.0303     1.1600   114.55       -0.313021
+     2.0303     1.1600   116.36       -0.313864
+     2.0303     1.1600   118.18       -0.314714
+     2.0303     1.1600   120.00       -0.315566
+     2.0303     1.1600   121.82       -0.316414
+     2.0303     1.1600   123.64       -0.317257
+     2.0303     1.1600   125.45       -0.318089
+     2.0303     1.1600   127.27       -0.318907
+     2.0303     1.1600   129.09       -0.319709
+     2.0303     1.1600   130.91       -0.320493
+     2.0303     1.1600   132.73       -0.321256
+     2.0303     1.1600   134.55       -0.321996
+     2.0303     1.1600   136.36       -0.322711
+     2.0303     1.1600   138.18       -0.323401
+     2.0303     1.1600   140.00       -0.324065
+     2.0303     1.1600   141.82       -0.324700
+     2.0303     1.1600   143.64       -0.325307
+     2.0303     1.1600   145.45       -0.325886
+     2.0303     1.1600   147.27       -0.326435
+     2.0303     1.1600   149.09       -0.326954
+     2.0303     1.1600   150.91       -0.327443
+     2.0303     1.1600   152.73       -0.327902
+     2.0303     1.1600   154.55       -0.328331
+     2.0303     1.1600   156.36       -0.328729
+     2.0303     1.1600   158.18       -0.329097
+     2.0303     1.1600   160.00       -0.329436
+     2.0303     1.1600   161.82       -0.329744
+     2.0303     1.1600   163.64       -0.330022
+     2.0303     1.1600   165.45       -0.330271
+     2.0303     1.1600   167.27       -0.330490
+     2.0303     1.1600   169.09       -0.330679
+     2.0303     1.1600   170.91       -0.330839
+     2.0303     1.1600   172.73       -0.330970
+     2.0303     1.1600   174.55       -0.331072
+     2.0303     1.1600   176.36       -0.331144
+     2.0303     1.1600   178.18       -0.331188
+     2.0303     1.1600   180.00       -0.331202
+
+     2.0455     1.1600     0.00       -0.468746
+     2.0455     1.1600     1.82       -0.469019
+     2.0455     1.1600     3.64       -0.469806
+     2.0455     1.1600     5.45       -0.471005
+     2.0455     1.1600     7.27       -0.472463
+     2.0455     1.1600     9.09       -0.473986
+     2.0455     1.1600    10.91       -0.475365
+     2.0455     1.1600    12.73       -0.476391
+     2.0455     1.1600    14.55       -0.476877
+     2.0455     1.1600    16.36       -0.476666
+     2.0455     1.1600    18.18       -0.475642
+     2.0455     1.1600    20.00       -0.473737
+     2.0455     1.1600    21.82       -0.470924
+     2.0455     1.1600    23.64       -0.467218
+     2.0455     1.1600    25.45       -0.462669
+     2.0455     1.1600    27.27       -0.457351
+     2.0455     1.1600    29.09       -0.451361
+     2.0455     1.1600    30.91       -0.444806
+     2.0455     1.1600    32.73       -0.437798
+     2.0455     1.1600    34.55       -0.430453
+     2.0455     1.1600    36.36       -0.422879
+     2.0455     1.1600    38.18       -0.415179
+     2.0455     1.1600    40.00       -0.407448
+     2.0455     1.1600    41.82       -0.399769
+     2.0455     1.1600    43.64       -0.392216
+     2.0455     1.1600    45.45       -0.384849
+     2.0455     1.1600    47.27       -0.377721
+     2.0455     1.1600    49.09       -0.370875
+     2.0455     1.1600    50.91       -0.364341
+     2.0455     1.1600    52.73       -0.358146
+     2.0455     1.1600    54.55       -0.352307
+     2.0455     1.1600    56.36       -0.346836
+     2.0455     1.1600    58.18       -0.341737
+     2.0455     1.1600    60.00       -0.337014
+     2.0455     1.1600    61.82       -0.332663
+     2.0455     1.1600    63.64       -0.328679
+     2.0455     1.1600    65.45       -0.325054
+     2.0455     1.1600    67.27       -0.321776
+     2.0455     1.1600    69.09       -0.318835
+     2.0455     1.1600    70.91       -0.316217
+     2.0455     1.1600    72.73       -0.313907
+     2.0455     1.1600    74.55       -0.311889
+     2.0455     1.1600    76.36       -0.310150
+     2.0455     1.1600    78.18       -0.308671
+     2.0455     1.1600    80.00       -0.307438
+     2.0455     1.1600    81.82       -0.306433
+     2.0455     1.1600    83.64       -0.305641
+     2.0455     1.1600    85.45       -0.305046
+     2.0455     1.1600    87.27       -0.304633
+     2.0455     1.1600    89.09       -0.304386
+     2.0455     1.1600    90.91       -0.304291
+     2.0455     1.1600    92.73       -0.304333
+     2.0455     1.1600    94.55       -0.304499
+     2.0455     1.1600    96.36       -0.304776
+     2.0455     1.1600    98.18       -0.305152
+     2.0455     1.1600   100.00       -0.305615
+     2.0455     1.1600   101.82       -0.306155
+     2.0455     1.1600   103.64       -0.306759
+     2.0455     1.1600   105.45       -0.307420
+     2.0455     1.1600   107.27       -0.308128
+     2.0455     1.1600   109.09       -0.308875
+     2.0455     1.1600   110.91       -0.309653
+     2.0455     1.1600   112.73       -0.310455
+     2.0455     1.1600   114.55       -0.311274
+     2.0455     1.1600   116.36       -0.312104
+     2.0455     1.1600   118.18       -0.312941
+     2.0455     1.1600   120.00       -0.313779
+     2.0455     1.1600   121.82       -0.314613
+     2.0455     1.1600   123.64       -0.315441
+     2.0455     1.1600   125.45       -0.316258
+     2.0455     1.1600   127.27       -0.317061
+     2.0455     1.1600   129.09       -0.317848
+     2.0455     1.1600   130.91       -0.318616
+     2.0455     1.1600   132.73       -0.319364
+     2.0455     1.1600   134.55       -0.320089
+     2.0455     1.1600   136.36       -0.320790
+     2.0455     1.1600   138.18       -0.321465
+     2.0455     1.1600   140.00       -0.322114
+     2.0455     1.1600   141.82       -0.322736
+     2.0455     1.1600   143.64       -0.323330
+     2.0455     1.1600   145.45       -0.323895
+     2.0455     1.1600   147.27       -0.324432
+     2.0455     1.1600   149.09       -0.324939
+     2.0455     1.1600   150.91       -0.325417
+     2.0455     1.1600   152.73       -0.325865
+     2.0455     1.1600   154.55       -0.326284
+     2.0455     1.1600   156.36       -0.326673
+     2.0455     1.1600   158.18       -0.327032
+     2.0455     1.1600   160.00       -0.327362
+     2.0455     1.1600   161.82       -0.327663
+     2.0455     1.1600   163.64       -0.327935
+     2.0455     1.1600   165.45       -0.328177
+     2.0455     1.1600   167.27       -0.328391
+     2.0455     1.1600   169.09       -0.328576
+     2.0455     1.1600   170.91       -0.328732
+     2.0455     1.1600   172.73       -0.328859
+     2.0455     1.1600   174.55       -0.328958
+     2.0455     1.1600   176.36       -0.329029
+     2.0455     1.1600   178.18       -0.329071
+     2.0455     1.1600   180.00       -0.329086
+
+     2.0606     1.1600     0.00       -0.472373
+     2.0606     1.1600     1.82       -0.472584
+     2.0606     1.1600     3.64       -0.473187
+     2.0606     1.1600     5.45       -0.474092
+     2.0606     1.1600     7.27       -0.475162
+     2.0606     1.1600     9.09       -0.476224
+     2.0606     1.1600    10.91       -0.477092
+     2.0606     1.1600    12.73       -0.477580
+     2.0606     1.1600    14.55       -0.477523
+     2.0606     1.1600    16.36       -0.476781
+     2.0606     1.1600    18.18       -0.475256
+     2.0606     1.1600    20.00       -0.472889
+     2.0606     1.1600    21.82       -0.469662
+     2.0606     1.1600    23.64       -0.465593
+     2.0606     1.1600    25.45       -0.460734
+     2.0606     1.1600    27.27       -0.455158
+     2.0606     1.1600    29.09       -0.448959
+     2.0606     1.1600    30.91       -0.442240
+     2.0606     1.1600    32.73       -0.435110
+     2.0606     1.1600    34.55       -0.427679
+     2.0606     1.1600    36.36       -0.420050
+     2.0606     1.1600    38.18       -0.412322
+     2.0606     1.1600    40.00       -0.404585
+     2.0606     1.1600    41.82       -0.396918
+     2.0606     1.1600    43.64       -0.389392
+     2.0606     1.1600    45.45       -0.382064
+     2.0606     1.1600    47.27       -0.374985
+     2.0606     1.1600    49.09       -0.368193
+     2.0606     1.1600    50.91       -0.361719
+     2.0606     1.1600    52.73       -0.355587
+     2.0606     1.1600    54.55       -0.349812
+     2.0606     1.1600    56.36       -0.344406
+     2.0606     1.1600    58.18       -0.339373
+     2.0606     1.1600    60.00       -0.334714
+     2.0606     1.1600    61.82       -0.330425
+     2.0606     1.1600    63.64       -0.326502
+     2.0606     1.1600    65.45       -0.322934
+     2.0606     1.1600    67.27       -0.319713
+     2.0606     1.1600    69.09       -0.316824
+     2.0606     1.1600    70.91       -0.314255
+     2.0606     1.1600    72.73       -0.311991
+     2.0606     1.1600    74.55       -0.310017
+     2.0606     1.1600    76.36       -0.308317
+     2.0606     1.1600    78.18       -0.306874
+     2.0606     1.1600    80.00       -0.305673
+     2.0606     1.1600    81.82       -0.304698
+     2.0606     1.1600    83.64       -0.303932
+     2.0606     1.1600    85.45       -0.303360
+     2.0606     1.1600    87.27       -0.302966
+     2.0606     1.1600    89.09       -0.302735
+     2.0606     1.1600    90.91       -0.302653
+     2.0606     1.1600    92.73       -0.302706
+     2.0606     1.1600    94.55       -0.302880
+     2.0606     1.1600    96.36       -0.303162
+     2.0606     1.1600    98.18       -0.303541
+     2.0606     1.1600   100.00       -0.304005
+     2.0606     1.1600   101.82       -0.304542
+     2.0606     1.1600   103.64       -0.305143
+     2.0606     1.1600   105.45       -0.305799
+     2.0606     1.1600   107.27       -0.306500
+     2.0606     1.1600   109.09       -0.307238
+     2.0606     1.1600   110.91       -0.308006
+     2.0606     1.1600   112.73       -0.308797
+     2.0606     1.1600   114.55       -0.309604
+     2.0606     1.1600   116.36       -0.310421
+     2.0606     1.1600   118.18       -0.311244
+     2.0606     1.1600   120.00       -0.312068
+     2.0606     1.1600   121.82       -0.312888
+     2.0606     1.1600   123.64       -0.313700
+     2.0606     1.1600   125.45       -0.314502
+     2.0606     1.1600   127.27       -0.315289
+     2.0606     1.1600   129.09       -0.316061
+     2.0606     1.1600   130.91       -0.316813
+     2.0606     1.1600   132.73       -0.317545
+     2.0606     1.1600   134.55       -0.318255
+     2.0606     1.1600   136.36       -0.318940
+     2.0606     1.1600   138.18       -0.319601
+     2.0606     1.1600   140.00       -0.320236
+     2.0606     1.1600   141.82       -0.320843
+     2.0606     1.1600   143.64       -0.321424
+     2.0606     1.1600   145.45       -0.321976
+     2.0606     1.1600   147.27       -0.322500
+     2.0606     1.1600   149.09       -0.322995
+     2.0606     1.1600   150.91       -0.323461
+     2.0606     1.1600   152.73       -0.323899
+     2.0606     1.1600   154.55       -0.324307
+     2.0606     1.1600   156.36       -0.324687
+     2.0606     1.1600   158.18       -0.325038
+     2.0606     1.1600   160.00       -0.325359
+     2.0606     1.1600   161.82       -0.325653
+     2.0606     1.1600   163.64       -0.325917
+     2.0606     1.1600   165.45       -0.326154
+     2.0606     1.1600   167.27       -0.326362
+     2.0606     1.1600   169.09       -0.326542
+     2.0606     1.1600   170.91       -0.326694
+     2.0606     1.1600   172.73       -0.326818
+     2.0606     1.1600   174.55       -0.326915
+     2.0606     1.1600   176.36       -0.326984
+     2.0606     1.1600   178.18       -0.327025
+     2.0606     1.1600   180.00       -0.327039
+
+     2.0758     1.1600     0.00       -0.475325
+     2.0758     1.1600     1.82       -0.475479
+     2.0758     1.1600     3.64       -0.475916
+     2.0758     1.1600     5.45       -0.476554
+     2.0758     1.1600     7.27       -0.477271
+     2.0758     1.1600     9.09       -0.477914
+     2.0758     1.1600    10.91       -0.478318
+     2.0758     1.1600    12.73       -0.478319
+     2.0758     1.1600    14.55       -0.477768
+     2.0758     1.1600    16.36       -0.476546
+     2.0758     1.1600    18.18       -0.474567
+     2.0758     1.1600    20.00       -0.471783
+     2.0758     1.1600    21.82       -0.468182
+     2.0758     1.1600    23.64       -0.463788
+     2.0758     1.1600    25.45       -0.458652
+     2.0758     1.1600    27.27       -0.452848
+     2.0758     1.1600    29.09       -0.446466
+     2.0758     1.1600    30.91       -0.439607
+     2.0758     1.1600    32.73       -0.432375
+     2.0758     1.1600    34.55       -0.424875
+     2.0758     1.1600    36.36       -0.417206
+     2.0758     1.1600    38.18       -0.409463
+     2.0758     1.1600    40.00       -0.401732
+     2.0758     1.1600    41.82       -0.394088
+     2.0758     1.1600    43.64       -0.386597
+     2.0758     1.1600    45.45       -0.379317
+     2.0758     1.1600    47.27       -0.372292
+     2.0758     1.1600    49.09       -0.365560
+     2.0758     1.1600    50.91       -0.359151
+     2.0758     1.1600    52.73       -0.353086
+     2.0758     1.1600    54.55       -0.347380
+     2.0758     1.1600    56.36       -0.342043
+     2.0758     1.1600    58.18       -0.337078
+     2.0758     1.1600    60.00       -0.332486
+     2.0758     1.1600    61.82       -0.328263
+     2.0758     1.1600    63.64       -0.324402
+     2.0758     1.1600    65.45       -0.320895
+     2.0758     1.1600    67.27       -0.317730
+     2.0758     1.1600    69.09       -0.314895
+     2.0758     1.1600    70.91       -0.312377
+     2.0758     1.1600    72.73       -0.310160
+     2.0758     1.1600    74.55       -0.308229
+     2.0758     1.1600    76.36       -0.306569
+     2.0758     1.1600    78.18       -0.305163
+     2.0758     1.1600    80.00       -0.303995
+     2.0758     1.1600    81.82       -0.303049
+     2.0758     1.1600    83.64       -0.302309
+     2.0758     1.1600    85.45       -0.301760
+     2.0758     1.1600    87.27       -0.301385
+     2.0758     1.1600    89.09       -0.301170
+     2.0758     1.1600    90.91       -0.301101
+     2.0758     1.1600    92.73       -0.301164
+     2.0758     1.1600    94.55       -0.301345
+     2.0758     1.1600    96.36       -0.301632
+     2.0758     1.1600    98.18       -0.302013
+     2.0758     1.1600   100.00       -0.302477
+     2.0758     1.1600   101.82       -0.303012
+     2.0758     1.1600   103.64       -0.303609
+     2.0758     1.1600   105.45       -0.304258
+     2.0758     1.1600   107.27       -0.304952
+     2.0758     1.1600   109.09       -0.305681
+     2.0758     1.1600   110.91       -0.306438
+     2.0758     1.1600   112.73       -0.307217
+     2.0758     1.1600   114.55       -0.308011
+     2.0758     1.1600   116.36       -0.308816
+     2.0758     1.1600   118.18       -0.309624
+     2.0758     1.1600   120.00       -0.310433
+     2.0758     1.1600   121.82       -0.311238
+     2.0758     1.1600   123.64       -0.312034
+     2.0758     1.1600   125.45       -0.312820
+     2.0758     1.1600   127.27       -0.313592
+     2.0758     1.1600   129.09       -0.314347
+     2.0758     1.1600   130.91       -0.315084
+     2.0758     1.1600   132.73       -0.315800
+     2.0758     1.1600   134.55       -0.316494
+     2.0758     1.1600   136.36       -0.317164
+     2.0758     1.1600   138.18       -0.317810
+     2.0758     1.1600   140.00       -0.318430
+     2.0758     1.1600   141.82       -0.319023
+     2.0758     1.1600   143.64       -0.319590
+     2.0758     1.1600   145.45       -0.320129
+     2.0758     1.1600   147.27       -0.320640
+     2.0758     1.1600   149.09       -0.321123
+     2.0758     1.1600   150.91       -0.321578
+     2.0758     1.1600   152.73       -0.322004
+     2.0758     1.1600   154.55       -0.322402
+     2.0758     1.1600   156.36       -0.322772
+     2.0758     1.1600   158.18       -0.323114
+     2.0758     1.1600   160.00       -0.323428
+     2.0758     1.1600   161.82       -0.323713
+     2.0758     1.1600   163.64       -0.323971
+     2.0758     1.1600   165.45       -0.324201
+     2.0758     1.1600   167.27       -0.324404
+     2.0758     1.1600   169.09       -0.324579
+     2.0758     1.1600   170.91       -0.324727
+     2.0758     1.1600   172.73       -0.324848
+     2.0758     1.1600   174.55       -0.324942
+     2.0758     1.1600   176.36       -0.325010
+     2.0758     1.1600   178.18       -0.325050
+     2.0758     1.1600   180.00       -0.325063
+
+     2.0909     1.1600     0.00       -0.477651
+     2.0909     1.1600     1.82       -0.477754
+     2.0909     1.1600     3.64       -0.478040
+     2.0909     1.1600     5.45       -0.478436
+     2.0909     1.1600     7.27       -0.478833
+     2.0909     1.1600     9.09       -0.479098
+     2.0909     1.1600    10.91       -0.479081
+     2.0909     1.1600    12.73       -0.478640
+     2.0909     1.1600    14.55       -0.477643
+     2.0909     1.1600    16.36       -0.475986
+     2.0909     1.1600    18.18       -0.473598
+     2.0909     1.1600    20.00       -0.470438
+     2.0909     1.1600    21.82       -0.466502
+     2.0909     1.1600    23.64       -0.461818
+     2.0909     1.1600    25.45       -0.456437
+     2.0909     1.1600    27.27       -0.450433
+     2.0909     1.1600    29.09       -0.443893
+     2.0909     1.1600    30.91       -0.436916
+     2.0909     1.1600    32.73       -0.429600
+     2.0909     1.1600    34.55       -0.422048
+     2.0909     1.1600    36.36       -0.414354
+     2.0909     1.1600    38.18       -0.406609
+     2.0909     1.1600    40.00       -0.398894
+     2.0909     1.1600    41.82       -0.391282
+     2.0909     1.1600    43.64       -0.383836
+     2.0909     1.1600    45.45       -0.376609
+     2.0909     1.1600    47.27       -0.369645
+     2.0909     1.1600    49.09       -0.362980
+     2.0909     1.1600    50.91       -0.356641
+     2.0909     1.1600    52.73       -0.350648
+     2.0909     1.1600    54.55       -0.345014
+     2.0909     1.1600    56.36       -0.339749
+     2.0909     1.1600    58.18       -0.334856
+     2.0909     1.1600    60.00       -0.330333
+     2.0909     1.1600    61.82       -0.326177
+     2.0909     1.1600    63.64       -0.322381
+     2.0909     1.1600    65.45       -0.318935
+     2.0909     1.1600    67.27       -0.315829
+     2.0909     1.1600    69.09       -0.313050
+     2.0909     1.1600    70.91       -0.310583
+     2.0909     1.1600    72.73       -0.308414
+     2.0909     1.1600    74.55       -0.306528
+     2.0909     1.1600    76.36       -0.304908
+     2.0909     1.1600    78.18       -0.303539
+     2.0909     1.1600    80.00       -0.302404
+     2.0909     1.1600    81.82       -0.301487
+     2.0909     1.1600    83.64       -0.300773
+     2.0909     1.1600    85.45       -0.300246
+     2.0909     1.1600    87.27       -0.299890
+     2.0909     1.1600    89.09       -0.299691
+     2.0909     1.1600    90.91       -0.299635
+     2.0909     1.1600    92.73       -0.299707
+     2.0909     1.1600    94.55       -0.299895
+     2.0909     1.1600    96.36       -0.300186
+     2.0909     1.1600    98.18       -0.300569
+     2.0909     1.1600   100.00       -0.301031
+     2.0909     1.1600   101.82       -0.301564
+     2.0909     1.1600   103.64       -0.302156
+     2.0909     1.1600   105.45       -0.302798
+     2.0909     1.1600   107.27       -0.303483
+     2.0909     1.1600   109.09       -0.304203
+     2.0909     1.1600   110.91       -0.304949
+     2.0909     1.1600   112.73       -0.305716
+     2.0909     1.1600   114.55       -0.306497
+     2.0909     1.1600   116.36       -0.307287
+     2.0909     1.1600   118.18       -0.308081
+     2.0909     1.1600   120.00       -0.308875
+     2.0909     1.1600   121.82       -0.309663
+     2.0909     1.1600   123.64       -0.310444
+     2.0909     1.1600   125.45       -0.311214
+     2.0909     1.1600   127.27       -0.311969
+     2.0909     1.1600   129.09       -0.312708
+     2.0909     1.1600   130.91       -0.313429
+     2.0909     1.1600   132.73       -0.314128
+     2.0909     1.1600   134.55       -0.314806
+     2.0909     1.1600   136.36       -0.315461
+     2.0909     1.1600   138.18       -0.316091
+     2.0909     1.1600   140.00       -0.316697
+     2.0909     1.1600   141.82       -0.317276
+     2.0909     1.1600   143.64       -0.317828
+     2.0909     1.1600   145.45       -0.318354
+     2.0909     1.1600   147.27       -0.318852
+     2.0909     1.1600   149.09       -0.319323
+     2.0909     1.1600   150.91       -0.319766
+     2.0909     1.1600   152.73       -0.320181
+     2.0909     1.1600   154.55       -0.320569
+     2.0909     1.1600   156.36       -0.320929
+     2.0909     1.1600   158.18       -0.321262
+     2.0909     1.1600   160.00       -0.321567
+     2.0909     1.1600   161.82       -0.321845
+     2.0909     1.1600   163.64       -0.322096
+     2.0909     1.1600   165.45       -0.322320
+     2.0909     1.1600   167.27       -0.322518
+     2.0909     1.1600   169.09       -0.322688
+     2.0909     1.1600   170.91       -0.322832
+     2.0909     1.1600   172.73       -0.322950
+     2.0909     1.1600   174.55       -0.323041
+     2.0909     1.1600   176.36       -0.323107
+     2.0909     1.1600   178.18       -0.323146
+     2.0909     1.1600   180.00       -0.323159
+
+     2.1061     1.1600     0.00       -0.479399
+     2.1061     1.1600     1.82       -0.479456
+     2.1061     1.1600     3.64       -0.479604
+     2.1061     1.1600     5.45       -0.479781
+     2.1061     1.1600     7.27       -0.479891
+     2.1061     1.1600     9.09       -0.479812
+     2.1061     1.1600    10.91       -0.479416
+     2.1061     1.1600    12.73       -0.478574
+     2.1061     1.1600    14.55       -0.477175
+     2.1061     1.1600    16.36       -0.475127
+     2.1061     1.1600    18.18       -0.472370
+     2.1061     1.1600    20.00       -0.468874
+     2.1061     1.1600    21.82       -0.464639
+     2.1061     1.1600    23.64       -0.459697
+     2.1061     1.1600    25.45       -0.454101
+     2.1061     1.1600    27.27       -0.447923
+     2.1061     1.1600    29.09       -0.441249
+     2.1061     1.1600    30.91       -0.434174
+     2.1061     1.1600    32.73       -0.426793
+     2.1061     1.1600    34.55       -0.419204
+     2.1061     1.1600    36.36       -0.411499
+     2.1061     1.1600    38.18       -0.403763
+     2.1061     1.1600    40.00       -0.396076
+     2.1061     1.1600    41.82       -0.388505
+     2.1061     1.1600    43.64       -0.381111
+     2.1061     1.1600    45.45       -0.373945
+     2.1061     1.1600    47.27       -0.367049
+     2.1061     1.1600    49.09       -0.360455
+     2.1061     1.1600    50.91       -0.354191
+     2.1061     1.1600    52.73       -0.348273
+     2.1061     1.1600    54.55       -0.342716
+     2.1061     1.1600    56.36       -0.337526
+     2.1061     1.1600    58.18       -0.332707
+     2.1061     1.1600    60.00       -0.328256
+     2.1061     1.1600    61.82       -0.324170
+     2.1061     1.1600    63.64       -0.320440
+     2.1061     1.1600    65.45       -0.317058
+     2.1061     1.1600    67.27       -0.314012
+     2.1061     1.1600    69.09       -0.311289
+     2.1061     1.1600    70.91       -0.308874
+     2.1061     1.1600    72.73       -0.306754
+     2.1061     1.1600    74.55       -0.304912
+     2.1061     1.1600    76.36       -0.303333
+     2.1061     1.1600    78.18       -0.302001
+     2.1061     1.1600    80.00       -0.300899
+     2.1061     1.1600    81.82       -0.300012
+     2.1061     1.1600    83.64       -0.299324
+     2.1061     1.1600    85.45       -0.298819
+     2.1061     1.1600    87.27       -0.298481
+     2.1061     1.1600    89.09       -0.298298
+     2.1061     1.1600    90.91       -0.298253
+     2.1061     1.1600    92.73       -0.298334
+     2.1061     1.1600    94.55       -0.298529
+     2.1061     1.1600    96.36       -0.298823
+     2.1061     1.1600    98.18       -0.299207
+     2.1061     1.1600   100.00       -0.299668
+     2.1061     1.1600   101.82       -0.300197
+     2.1061     1.1600   103.64       -0.300783
+     2.1061     1.1600   105.45       -0.301419
+     2.1061     1.1600   107.27       -0.302095
+     2.1061     1.1600   109.09       -0.302804
+     2.1061     1.1600   110.91       -0.303538
+     2.1061     1.1600   112.73       -0.304292
+     2.1061     1.1600   114.55       -0.305060
+     2.1061     1.1600   116.36       -0.305835
+     2.1061     1.1600   118.18       -0.306614
+     2.1061     1.1600   120.00       -0.307392
+     2.1061     1.1600   121.82       -0.308165
+     2.1061     1.1600   123.64       -0.308929
+     2.1061     1.1600   125.45       -0.309682
+     2.1061     1.1600   127.27       -0.310421
+     2.1061     1.1600   129.09       -0.311143
+     2.1061     1.1600   130.91       -0.311847
+     2.1061     1.1600   132.73       -0.312531
+     2.1061     1.1600   134.55       -0.313192
+     2.1061     1.1600   136.36       -0.313831
+     2.1061     1.1600   138.18       -0.314446
+     2.1061     1.1600   140.00       -0.315036
+     2.1061     1.1600   141.82       -0.315601
+     2.1061     1.1600   143.64       -0.316139
+     2.1061     1.1600   145.45       -0.316651
+     2.1061     1.1600   147.27       -0.317136
+     2.1061     1.1600   149.09       -0.317595
+     2.1061     1.1600   150.91       -0.318026
+     2.1061     1.1600   152.73       -0.318431
+     2.1061     1.1600   154.55       -0.318808
+     2.1061     1.1600   156.36       -0.319159
+     2.1061     1.1600   158.18       -0.319482
+     2.1061     1.1600   160.00       -0.319779
+     2.1061     1.1600   161.82       -0.320049
+     2.1061     1.1600   163.64       -0.320293
+     2.1061     1.1600   165.45       -0.320511
+     2.1061     1.1600   167.27       -0.320703
+     2.1061     1.1600   169.09       -0.320869
+     2.1061     1.1600   170.91       -0.321009
+     2.1061     1.1600   172.73       -0.321123
+     2.1061     1.1600   174.55       -0.321212
+     2.1061     1.1600   176.36       -0.321275
+     2.1061     1.1600   178.18       -0.321313
+     2.1061     1.1600   180.00       -0.321326
+
+     2.1212     1.1600     0.00       -0.480613
+     2.1212     1.1600     1.82       -0.480628
+     2.1212     1.1600     3.64       -0.480653
+     2.1212     1.1600     5.45       -0.480632
+     2.1212     1.1600     7.27       -0.480481
+     2.1212     1.1600     9.09       -0.480093
+     2.1212     1.1600    10.91       -0.479354
+     2.1212     1.1600    12.73       -0.478153
+     2.1212     1.1600    14.55       -0.476391
+     2.1212     1.1600    16.36       -0.473992
+     2.1212     1.1600    18.18       -0.470904
+     2.1212     1.1600    20.00       -0.467108
+     2.1212     1.1600    21.82       -0.462609
+     2.1212     1.1600    23.64       -0.457440
+     2.1212     1.1600    25.45       -0.451656
+     2.1212     1.1600    27.27       -0.445330
+     2.1212     1.1600    29.09       -0.438544
+     2.1212     1.1600    30.91       -0.431390
+     2.1212     1.1600    32.73       -0.423961
+     2.1212     1.1600    34.55       -0.416351
+     2.1212     1.1600    36.36       -0.408647
+     2.1212     1.1600    38.18       -0.400932
+     2.1212     1.1600    40.00       -0.393281
+     2.1212     1.1600    41.82       -0.385760
+     2.1212     1.1600    43.64       -0.378427
+     2.1212     1.1600    45.45       -0.371328
+     2.1212     1.1600    47.27       -0.364505
+     2.1212     1.1600    49.09       -0.357988
+     2.1212     1.1600    50.91       -0.351802
+     2.1212     1.1600    52.73       -0.345965
+     2.1212     1.1600    54.55       -0.340487
+     2.1212     1.1600    56.36       -0.335376
+     2.1212     1.1600    58.18       -0.330633
+     2.1212     1.1600    60.00       -0.326257
+     2.1212     1.1600    61.82       -0.322242
+     2.1212     1.1600    63.64       -0.318580
+     2.1212     1.1600    65.45       -0.315263
+     2.1212     1.1600    67.27       -0.312278
+     2.1212     1.1600    69.09       -0.309612
+     2.1212     1.1600    70.91       -0.307251
+     2.1212     1.1600    72.73       -0.305180
+     2.1212     1.1600    74.55       -0.303383
+     2.1212     1.1600    76.36       -0.301845
+     2.1212     1.1600    78.18       -0.300550
+     2.1212     1.1600    80.00       -0.299481
+     2.1212     1.1600    81.82       -0.298623
+     2.1212     1.1600    83.64       -0.297960
+     2.1212     1.1600    85.45       -0.297477
+     2.1212     1.1600    87.27       -0.297158
+     2.1212     1.1600    89.09       -0.296989
+     2.1212     1.1600    90.91       -0.296956
+     2.1212     1.1600    92.73       -0.297046
+     2.1212     1.1600    94.55       -0.297245
+     2.1212     1.1600    96.36       -0.297543
+     2.1212     1.1600    98.18       -0.297926
+     2.1212     1.1600   100.00       -0.298386
+     2.1212     1.1600   101.82       -0.298910
+     2.1212     1.1600   103.64       -0.299491
+     2.1212     1.1600   105.45       -0.300118
+     2.1212     1.1600   107.27       -0.300785
+     2.1212     1.1600   109.09       -0.301483
+     2.1212     1.1600   110.91       -0.302205
+     2.1212     1.1600   112.73       -0.302946
+     2.1212     1.1600   114.55       -0.303699
+     2.1212     1.1600   116.36       -0.304460
+     2.1212     1.1600   118.18       -0.305223
+     2.1212     1.1600   120.00       -0.305985
+     2.1212     1.1600   121.82       -0.306741
+     2.1212     1.1600   123.64       -0.307489
+     2.1212     1.1600   125.45       -0.308225
+     2.1212     1.1600   127.27       -0.308947
+     2.1212     1.1600   129.09       -0.309652
+     2.1212     1.1600   130.91       -0.310339
+     2.1212     1.1600   132.73       -0.311006
+     2.1212     1.1600   134.55       -0.311651
+     2.1212     1.1600   136.36       -0.312274
+     2.1212     1.1600   138.18       -0.312873
+     2.1212     1.1600   140.00       -0.313448
+     2.1212     1.1600   141.82       -0.313998
+     2.1212     1.1600   143.64       -0.314522
+     2.1212     1.1600   145.45       -0.315021
+     2.1212     1.1600   147.27       -0.315493
+     2.1212     1.1600   149.09       -0.315939
+     2.1212     1.1600   150.91       -0.316359
+     2.1212     1.1600   152.73       -0.316752
+     2.1212     1.1600   154.55       -0.317119
+     2.1212     1.1600   156.36       -0.317459
+     2.1212     1.1600   158.18       -0.317774
+     2.1212     1.1600   160.00       -0.318063
+     2.1212     1.1600   161.82       -0.318325
+     2.1212     1.1600   163.64       -0.318562
+     2.1212     1.1600   165.45       -0.318774
+     2.1212     1.1600   167.27       -0.318960
+     2.1212     1.1600   169.09       -0.319121
+     2.1212     1.1600   170.91       -0.319257
+     2.1212     1.1600   172.73       -0.319368
+     2.1212     1.1600   174.55       -0.319454
+     2.1212     1.1600   176.36       -0.319516
+     2.1212     1.1600   178.18       -0.319553
+     2.1212     1.1600   180.00       -0.319565
+
+     2.1364     1.1600     0.00       -0.481334
+     2.1364     1.1600     1.82       -0.481311
+     2.1364     1.1600     3.64       -0.481225
+     2.1364     1.1600     5.45       -0.481026
+     2.1364     1.1600     7.27       -0.480640
+     2.1364     1.1600     9.09       -0.479974
+     2.1364     1.1600    10.91       -0.478927
+     2.1364     1.1600    12.73       -0.477402
+     2.1364     1.1600    14.55       -0.475316
+     2.1364     1.1600    16.36       -0.472602
+     2.1364     1.1600    18.18       -0.469221
+     2.1364     1.1600    20.00       -0.465158
+     2.1364     1.1600    21.82       -0.460426
+     2.1364     1.1600    23.64       -0.455059
+     2.1364     1.1600    25.45       -0.449114
+     2.1364     1.1600    27.27       -0.442662
+     2.1364     1.1600    29.09       -0.435785
+     2.1364     1.1600    30.91       -0.428571
+     2.1364     1.1600    32.73       -0.421110
+     2.1364     1.1600    34.55       -0.413492
+     2.1364     1.1600    36.36       -0.405802
+     2.1364     1.1600    38.18       -0.398119
+     2.1364     1.1600    40.00       -0.390515
+     2.1364     1.1600    41.82       -0.383052
+     2.1364     1.1600    43.64       -0.375785
+     2.1364     1.1600    45.45       -0.368761
+     2.1364     1.1600    47.27       -0.362016
+     2.1364     1.1600    49.09       -0.355581
+     2.1364     1.1600    50.91       -0.349478
+     2.1364     1.1600    52.73       -0.343724
+     2.1364     1.1600    54.55       -0.338329
+     2.1364     1.1600    56.36       -0.333299
+     2.1364     1.1600    58.18       -0.328635
+     2.1364     1.1600    60.00       -0.324335
+     2.1364     1.1600    61.82       -0.320394
+     2.1364     1.1600    63.64       -0.316802
+     2.1364     1.1600    65.45       -0.313551
+     2.1364     1.1600    67.27       -0.310628
+     2.1364     1.1600    69.09       -0.308020
+     2.1364     1.1600    70.91       -0.305712
+     2.1364     1.1600    72.73       -0.303691
+     2.1364     1.1600    74.55       -0.301940
+     2.1364     1.1600    76.36       -0.300443
+     2.1364     1.1600    78.18       -0.299185
+     2.1364     1.1600    80.00       -0.298149
+     2.1364     1.1600    81.82       -0.297320
+     2.1364     1.1600    83.64       -0.296682
+     2.1364     1.1600    85.45       -0.296220
+     2.1364     1.1600    87.27       -0.295918
+     2.1364     1.1600    89.09       -0.295764
+     2.1364     1.1600    90.91       -0.295742
+     2.1364     1.1600    92.73       -0.295839
+     2.1364     1.1600    94.55       -0.296044
+     2.1364     1.1600    96.36       -0.296344
+     2.1364     1.1600    98.18       -0.296727
+     2.1364     1.1600   100.00       -0.297184
+     2.1364     1.1600   101.82       -0.297703
+     2.1364     1.1600   103.64       -0.298277
+     2.1364     1.1600   105.45       -0.298896
+     2.1364     1.1600   107.27       -0.299553
+     2.1364     1.1600   109.09       -0.300239
+     2.1364     1.1600   110.91       -0.300949
+     2.1364     1.1600   112.73       -0.301676
+     2.1364     1.1600   114.55       -0.302415
+     2.1364     1.1600   116.36       -0.303160
+     2.1364     1.1600   118.18       -0.303907
+     2.1364     1.1600   120.00       -0.304652
+     2.1364     1.1600   121.82       -0.305391
+     2.1364     1.1600   123.64       -0.306122
+     2.1364     1.1600   125.45       -0.306841
+     2.1364     1.1600   127.27       -0.307545
+     2.1364     1.1600   129.09       -0.308234
+     2.1364     1.1600   130.91       -0.308903
+     2.1364     1.1600   132.73       -0.309554
+     2.1364     1.1600   134.55       -0.310183
+     2.1364     1.1600   136.36       -0.310789
+     2.1364     1.1600   138.18       -0.311373
+     2.1364     1.1600   140.00       -0.311932
+     2.1364     1.1600   141.82       -0.312467
+     2.1364     1.1600   143.64       -0.312977
+     2.1364     1.1600   145.45       -0.313462
+     2.1364     1.1600   147.27       -0.313921
+     2.1364     1.1600   149.09       -0.314355
+     2.1364     1.1600   150.91       -0.314763
+     2.1364     1.1600   152.73       -0.315145
+     2.1364     1.1600   154.55       -0.315501
+     2.1364     1.1600   156.36       -0.315832
+     2.1364     1.1600   158.18       -0.316138
+     2.1364     1.1600   160.00       -0.316418
+     2.1364     1.1600   161.82       -0.316673
+     2.1364     1.1600   163.64       -0.316903
+     2.1364     1.1600   165.45       -0.317108
+     2.1364     1.1600   167.27       -0.317289
+     2.1364     1.1600   169.09       -0.317445
+     2.1364     1.1600   170.91       -0.317577
+     2.1364     1.1600   172.73       -0.317685
+     2.1364     1.1600   174.55       -0.317768
+     2.1364     1.1600   176.36       -0.317828
+     2.1364     1.1600   178.18       -0.317864
+     2.1364     1.1600   180.00       -0.317876
+
+     2.1515     1.1600     0.00       -0.481602
+     2.1515     1.1600     1.82       -0.481545
+     2.1515     1.1600     3.64       -0.481359
+     2.1515     1.1600     5.45       -0.481000
+     2.1515     1.1600     7.27       -0.480404
+     2.1515     1.1600     9.09       -0.479487
+     2.1515     1.1600    10.91       -0.478164
+     2.1515     1.1600    12.73       -0.476350
+     2.1515     1.1600    14.55       -0.473974
+     2.1515     1.1600    16.36       -0.470981
+     2.1515     1.1600    18.18       -0.467339
+     2.1515     1.1600    20.00       -0.463041
+     2.1515     1.1600    21.82       -0.458105
+     2.1515     1.1600    23.64       -0.452568
+     2.1515     1.1600    25.45       -0.446486
+     2.1515     1.1600    27.27       -0.439930
+     2.1515     1.1600    29.09       -0.432981
+     2.1515     1.1600    30.91       -0.425724
+     2.1515     1.1600    32.73       -0.418247
+     2.1515     1.1600    34.55       -0.410635
+     2.1515     1.1600    36.36       -0.402971
+     2.1515     1.1600    38.18       -0.395330
+     2.1515     1.1600    40.00       -0.387780
+     2.1515     1.1600    41.82       -0.380383
+     2.1515     1.1600    43.64       -0.373190
+     2.1515     1.1600    45.45       -0.366245
+     2.1515     1.1600    47.27       -0.359584
+     2.1515     1.1600    49.09       -0.353235
+     2.1515     1.1600    50.91       -0.347219
+     2.1515     1.1600    52.73       -0.341552
+     2.1515     1.1600    54.55       -0.336243
+     2.1515     1.1600    56.36       -0.331297
+     2.1515     1.1600    58.18       -0.326714
+     2.1515     1.1600    60.00       -0.322493
+     2.1515     1.1600    61.82       -0.318626
+     2.1515     1.1600    63.64       -0.315105
+     2.1515     1.1600    65.45       -0.311921
+     2.1515     1.1600    67.27       -0.309061
+     2.1515     1.1600    69.09       -0.306512
+     2.1515     1.1600    70.91       -0.304259
+     2.1515     1.1600    72.73       -0.302287
+     2.1515     1.1600    74.55       -0.300581
+     2.1515     1.1600    76.36       -0.299126
+     2.1515     1.1600    78.18       -0.297905
+     2.1515     1.1600    80.00       -0.296902
+     2.1515     1.1600    81.82       -0.296101
+     2.1515     1.1600    83.64       -0.295488
+     2.1515     1.1600    85.45       -0.295046
+     2.1515     1.1600    87.27       -0.294762
+     2.1515     1.1600    89.09       -0.294621
+     2.1515     1.1600    90.91       -0.294609
+     2.1515     1.1600    92.73       -0.294714
+     2.1515     1.1600    94.55       -0.294923
+     2.1515     1.1600    96.36       -0.295225
+     2.1515     1.1600    98.18       -0.295607
+     2.1515     1.1600   100.00       -0.296060
+     2.1515     1.1600   101.82       -0.296575
+     2.1515     1.1600   103.64       -0.297141
+     2.1515     1.1600   105.45       -0.297751
+     2.1515     1.1600   107.27       -0.298397
+     2.1515     1.1600   109.09       -0.299071
+     2.1515     1.1600   110.91       -0.299768
+     2.1515     1.1600   112.73       -0.300481
+     2.1515     1.1600   114.55       -0.301204
+     2.1515     1.1600   116.36       -0.301933
+     2.1515     1.1600   118.18       -0.302664
+     2.1515     1.1600   120.00       -0.303393
+     2.1515     1.1600   121.82       -0.304115
+     2.1515     1.1600   123.64       -0.304828
+     2.1515     1.1600   125.45       -0.305529
+     2.1515     1.1600   127.27       -0.306216
+     2.1515     1.1600   129.09       -0.306887
+     2.1515     1.1600   130.91       -0.307540
+     2.1515     1.1600   132.73       -0.308173
+     2.1515     1.1600   134.55       -0.308786
+     2.1515     1.1600   136.36       -0.309376
+     2.1515     1.1600   138.18       -0.309944
+     2.1515     1.1600   140.00       -0.310488
+     2.1515     1.1600   141.82       -0.311008
+     2.1515     1.1600   143.64       -0.311504
+     2.1515     1.1600   145.45       -0.311975
+     2.1515     1.1600   147.27       -0.312421
+     2.1515     1.1600   149.09       -0.312842
+     2.1515     1.1600   150.91       -0.313238
+     2.1515     1.1600   152.73       -0.313609
+     2.1515     1.1600   154.55       -0.313955
+     2.1515     1.1600   156.36       -0.314276
+     2.1515     1.1600   158.18       -0.314572
+     2.1515     1.1600   160.00       -0.314844
+     2.1515     1.1600   161.82       -0.315091
+     2.1515     1.1600   163.64       -0.315314
+     2.1515     1.1600   165.45       -0.315514
+     2.1515     1.1600   167.27       -0.315689
+     2.1515     1.1600   169.09       -0.315840
+     2.1515     1.1600   170.91       -0.315968
+     2.1515     1.1600   172.73       -0.316073
+     2.1515     1.1600   174.55       -0.316154
+     2.1515     1.1600   176.36       -0.316212
+     2.1515     1.1600   178.18       -0.316246
+     2.1515     1.1600   180.00       -0.316258
+
+     2.1667     1.1600     0.00       -0.481454
+     2.1667     1.1600     1.82       -0.481366
+     2.1667     1.1600     3.64       -0.481090
+     2.1667     1.1600     5.45       -0.480589
+     2.1667     1.1600     7.27       -0.479803
+     2.1667     1.1600     9.09       -0.478663
+     2.1667     1.1600    10.91       -0.477094
+     2.1667     1.1600    12.73       -0.475022
+     2.1667     1.1600    14.55       -0.472388
+     2.1667     1.1600    16.36       -0.469147
+     2.1667     1.1600    18.18       -0.465275
+     2.1667     1.1600    20.00       -0.460773
+     2.1667     1.1600    21.82       -0.455660
+     2.1667     1.1600    23.64       -0.449977
+     2.1667     1.1600    25.45       -0.443782
+     2.1667     1.1600    27.27       -0.437143
+     2.1667     1.1600    29.09       -0.430140
+     2.1667     1.1600    30.91       -0.422857
+     2.1667     1.1600    32.73       -0.415377
+     2.1667     1.1600    34.55       -0.407784
+     2.1667     1.1600    36.36       -0.400156
+     2.1667     1.1600    38.18       -0.392566
+     2.1667     1.1600    40.00       -0.385081
+     2.1667     1.1600    41.82       -0.377757
+     2.1667     1.1600    43.64       -0.370644
+     2.1667     1.1600    45.45       -0.363784
+     2.1667     1.1600    47.27       -0.357211
+     2.1667     1.1600    49.09       -0.350953
+     2.1667     1.1600    50.91       -0.345027
+     2.1667     1.1600    52.73       -0.339450
+     2.1667     1.1600    54.55       -0.334230
+     2.1667     1.1600    56.36       -0.329370
+     2.1667     1.1600    58.18       -0.324871
+     2.1667     1.1600    60.00       -0.320729
+     2.1667     1.1600    61.82       -0.316938
+     2.1667     1.1600    63.64       -0.313490
+     2.1667     1.1600    65.45       -0.310374
+     2.1667     1.1600    67.27       -0.307577
+     2.1667     1.1600    69.09       -0.305087
+     2.1667     1.1600    70.91       -0.302889
+     2.1667     1.1600    72.73       -0.300967
+     2.1667     1.1600    74.55       -0.299307
+     2.1667     1.1600    76.36       -0.297893
+     2.1667     1.1600    78.18       -0.296708
+     2.1667     1.1600    80.00       -0.295737
+     2.1667     1.1600    81.82       -0.294965
+     2.1667     1.1600    83.64       -0.294376
+     2.1667     1.1600    85.45       -0.293955
+     2.1667     1.1600    87.27       -0.293687
+     2.1667     1.1600    89.09       -0.293559
+     2.1667     1.1600    90.91       -0.293557
+     2.1667     1.1600    92.73       -0.293669
+     2.1667     1.1600    94.55       -0.293882
+     2.1667     1.1600    96.36       -0.294184
+     2.1667     1.1600    98.18       -0.294565
+     2.1667     1.1600   100.00       -0.295014
+     2.1667     1.1600   101.82       -0.295522
+     2.1667     1.1600   103.64       -0.296081
+     2.1667     1.1600   105.45       -0.296681
+     2.1667     1.1600   107.27       -0.297316
+     2.1667     1.1600   109.09       -0.297978
+     2.1667     1.1600   110.91       -0.298661
+     2.1667     1.1600   112.73       -0.299359
+     2.1667     1.1600   114.55       -0.300067
+     2.1667     1.1600   116.36       -0.300780
+     2.1667     1.1600   118.18       -0.301494
+     2.1667     1.1600   120.00       -0.302205
+     2.1667     1.1600   121.82       -0.302910
+     2.1667     1.1600   123.64       -0.303606
+     2.1667     1.1600   125.45       -0.304289
+     2.1667     1.1600   127.27       -0.304959
+     2.1667     1.1600   129.09       -0.305612
+     2.1667     1.1600   130.91       -0.306247
+     2.1667     1.1600   132.73       -0.306864
+     2.1667     1.1600   134.55       -0.307459
+     2.1667     1.1600   136.36       -0.308033
+     2.1667     1.1600   138.18       -0.308585
+     2.1667     1.1600   140.00       -0.309114
+     2.1667     1.1600   141.82       -0.309619
+     2.1667     1.1600   143.64       -0.310100
+     2.1667     1.1600   145.45       -0.310558
+     2.1667     1.1600   147.27       -0.310991
+     2.1667     1.1600   149.09       -0.311399
+     2.1667     1.1600   150.91       -0.311783
+     2.1667     1.1600   152.73       -0.312143
+     2.1667     1.1600   154.55       -0.312479
+     2.1667     1.1600   156.36       -0.312790
+     2.1667     1.1600   158.18       -0.313077
+     2.1667     1.1600   160.00       -0.313341
+     2.1667     1.1600   161.82       -0.313580
+     2.1667     1.1600   163.64       -0.313797
+     2.1667     1.1600   165.45       -0.313990
+     2.1667     1.1600   167.27       -0.314159
+     2.1667     1.1600   169.09       -0.314306
+     2.1667     1.1600   170.91       -0.314430
+     2.1667     1.1600   172.73       -0.314531
+     2.1667     1.1600   174.55       -0.314610
+     2.1667     1.1600   176.36       -0.314666
+     2.1667     1.1600   178.18       -0.314699
+     2.1667     1.1600   180.00       -0.314711
+
+     2.1818     1.1600     0.00       -0.480924
+     2.1818     1.1600     1.82       -0.480809
+     2.1818     1.1600     3.64       -0.480453
+     2.1818     1.1600     5.45       -0.479823
+     2.1818     1.1600     7.27       -0.478870
+     2.1818     1.1600     9.09       -0.477531
+     2.1818     1.1600    10.91       -0.475742
+     2.1818     1.1600    12.73       -0.473441
+     2.1818     1.1600    14.55       -0.470579
+     2.1818     1.1600    16.36       -0.467120
+     2.1818     1.1600    18.18       -0.463048
+     2.1818     1.1600    20.00       -0.458368
+     2.1818     1.1600    21.82       -0.453105
+     2.1818     1.1600    23.64       -0.447300
+     2.1818     1.1600    25.45       -0.441012
+     2.1818     1.1600    27.27       -0.434310
+     2.1818     1.1600    29.09       -0.427271
+     2.1818     1.1600    30.91       -0.419976
+     2.1818     1.1600    32.73       -0.412507
+     2.1818     1.1600    34.55       -0.404944
+     2.1818     1.1600    36.36       -0.397363
+     2.1818     1.1600    38.18       -0.389834
+     2.1818     1.1600    40.00       -0.382419
+     2.1818     1.1600    41.82       -0.375175
+     2.1818     1.1600    43.64       -0.368148
+     2.1818     1.1600    45.45       -0.361379
+     2.1818     1.1600    47.27       -0.354899
+     2.1818     1.1600    49.09       -0.348734
+     2.1818     1.1600    50.91       -0.342903
+     2.1818     1.1600    52.73       -0.337419
+     2.1818     1.1600    54.55       -0.332289
+     2.1818     1.1600    56.36       -0.327518
+     2.1818     1.1600    58.18       -0.323104
+     2.1818     1.1600    60.00       -0.319043
+     2.1818     1.1600    61.82       -0.315330
+     2.1818     1.1600    63.64       -0.311955
+     2.1818     1.1600    65.45       -0.308908
+     2.1818     1.1600    67.27       -0.306175
+     2.1818     1.1600    69.09       -0.303745
+     2.1818     1.1600    70.91       -0.301601
+     2.1818     1.1600    72.73       -0.299730
+     2.1818     1.1600    74.55       -0.298115
+     2.1818     1.1600    76.36       -0.296742
+     2.1818     1.1600    78.18       -0.295594
+     2.1818     1.1600    80.00       -0.294655
+     2.1818     1.1600    81.82       -0.293910
+     2.1818     1.1600    83.64       -0.293345
+     2.1818     1.1600    85.45       -0.292944
+     2.1818     1.1600    87.27       -0.292692
+     2.1818     1.1600    89.09       -0.292577
+     2.1818     1.1600    90.91       -0.292584
+     2.1818     1.1600    92.73       -0.292701
+     2.1818     1.1600    94.55       -0.292917
+     2.1818     1.1600    96.36       -0.293220
+     2.1818     1.1600    98.18       -0.293598
+     2.1818     1.1600   100.00       -0.294043
+     2.1818     1.1600   101.82       -0.294545
+     2.1818     1.1600   103.64       -0.295095
+     2.1818     1.1600   105.45       -0.295685
+     2.1818     1.1600   107.27       -0.296308
+     2.1818     1.1600   109.09       -0.296957
+     2.1818     1.1600   110.91       -0.297626
+     2.1818     1.1600   112.73       -0.298309
+     2.1818     1.1600   114.55       -0.299001
+     2.1818     1.1600   116.36       -0.299697
+     2.1818     1.1600   118.18       -0.300394
+     2.1818     1.1600   120.00       -0.301088
+     2.1818     1.1600   121.82       -0.301775
+     2.1818     1.1600   123.64       -0.302453
+     2.1818     1.1600   125.45       -0.303119
+     2.1818     1.1600   127.27       -0.303771
+     2.1818     1.1600   129.09       -0.304406
+     2.1818     1.1600   130.91       -0.305024
+     2.1818     1.1600   132.73       -0.305623
+     2.1818     1.1600   134.55       -0.306202
+     2.1818     1.1600   136.36       -0.306760
+     2.1818     1.1600   138.18       -0.307296
+     2.1818     1.1600   140.00       -0.307809
+     2.1818     1.1600   141.82       -0.308299
+     2.1818     1.1600   143.64       -0.308766
+     2.1818     1.1600   145.45       -0.309210
+     2.1818     1.1600   147.27       -0.309630
+     2.1818     1.1600   149.09       -0.310026
+     2.1818     1.1600   150.91       -0.310398
+     2.1818     1.1600   152.73       -0.310747
+     2.1818     1.1600   154.55       -0.311072
+     2.1818     1.1600   156.36       -0.311374
+     2.1818     1.1600   158.18       -0.311652
+     2.1818     1.1600   160.00       -0.311907
+     2.1818     1.1600   161.82       -0.312139
+     2.1818     1.1600   163.64       -0.312349
+     2.1818     1.1600   165.45       -0.312535
+     2.1818     1.1600   167.27       -0.312700
+     2.1818     1.1600   169.09       -0.312842
+     2.1818     1.1600   170.91       -0.312962
+     2.1818     1.1600   172.73       -0.313059
+     2.1818     1.1600   174.55       -0.313136
+     2.1818     1.1600   176.36       -0.313190
+     2.1818     1.1600   178.18       -0.313222
+     2.1818     1.1600   180.00       -0.313233
+
+     2.1970     1.1600     0.00       -0.480045
+     2.1970     1.1600     1.82       -0.479906
+     2.1970     1.1600     3.64       -0.479479
+     2.1970     1.1600     5.45       -0.478735
+     2.1970     1.1600     7.27       -0.477632
+     2.1970     1.1600     9.09       -0.476116
+     2.1970     1.1600    10.91       -0.474133
+     2.1970     1.1600    12.73       -0.471631
+     2.1970     1.1600    14.55       -0.468568
+     2.1970     1.1600    16.36       -0.464919
+     2.1970     1.1600    18.18       -0.460673
+     2.1970     1.1600    20.00       -0.455841
+     2.1970     1.1600    21.82       -0.450451
+     2.1970     1.1600    23.64       -0.444546
+     2.1970     1.1600    25.45       -0.438186
+     2.1970     1.1600    27.27       -0.431438
+     2.1970     1.1600    29.09       -0.424379
+     2.1970     1.1600    30.91       -0.417086
+     2.1970     1.1600    32.73       -0.409641
+     2.1970     1.1600    34.55       -0.402119
+     2.1970     1.1600    36.36       -0.394595
+     2.1970     1.1600    38.18       -0.387134
+     2.1970     1.1600    40.00       -0.379798
+     2.1970     1.1600    41.82       -0.372640
+     2.1970     1.1600    43.64       -0.365705
+     2.1970     1.1600    45.45       -0.359031
+     2.1970     1.1600    47.27       -0.352648
+     2.1970     1.1600    49.09       -0.346581
+     2.1970     1.1600    50.91       -0.340847
+     2.1970     1.1600    52.73       -0.335459
+     2.1970     1.1600    54.55       -0.330422
+     2.1970     1.1600    56.36       -0.325741
+     2.1970     1.1600    58.18       -0.321413
+     2.1970     1.1600    60.00       -0.317436
+     2.1970     1.1600    61.82       -0.313801
+     2.1970     1.1600    63.64       -0.310500
+     2.1970     1.1600    65.45       -0.307522
+     2.1970     1.1600    67.27       -0.304854
+     2.1970     1.1600    69.09       -0.302483
+     2.1970     1.1600    70.91       -0.300395
+     2.1970     1.1600    72.73       -0.298574
+     2.1970     1.1600    74.55       -0.297004
+     2.1970     1.1600    76.36       -0.295671
+     2.1970     1.1600    78.18       -0.294559
+     2.1970     1.1600    80.00       -0.293652
+     2.1970     1.1600    81.82       -0.292935
+     2.1970     1.1600    83.64       -0.292393
+     2.1970     1.1600    85.45       -0.292010
+     2.1970     1.1600    87.27       -0.291774
+     2.1970     1.1600    89.09       -0.291671
+     2.1970     1.1600    90.91       -0.291686
+     2.1970     1.1600    92.73       -0.291809
+     2.1970     1.1600    94.55       -0.292027
+     2.1970     1.1600    96.36       -0.292330
+     2.1970     1.1600    98.18       -0.292705
+     2.1970     1.1600   100.00       -0.293145
+     2.1970     1.1600   101.82       -0.293640
+     2.1970     1.1600   103.64       -0.294181
+     2.1970     1.1600   105.45       -0.294760
+     2.1970     1.1600   107.27       -0.295371
+     2.1970     1.1600   109.09       -0.296007
+     2.1970     1.1600   110.91       -0.296661
+     2.1970     1.1600   112.73       -0.297329
+     2.1970     1.1600   114.55       -0.298004
+     2.1970     1.1600   116.36       -0.298684
+     2.1970     1.1600   118.18       -0.299364
+     2.1970     1.1600   120.00       -0.300040
+     2.1970     1.1600   121.82       -0.300709
+     2.1970     1.1600   123.64       -0.301369
+     2.1970     1.1600   125.45       -0.302017
+     2.1970     1.1600   127.27       -0.302651
+     2.1970     1.1600   129.09       -0.303269
+     2.1970     1.1600   130.91       -0.303869
+     2.1970     1.1600   132.73       -0.304451
+     2.1970     1.1600   134.55       -0.305013
+     2.1970     1.1600   136.36       -0.305554
+     2.1970     1.1600   138.18       -0.306074
+     2.1970     1.1600   140.00       -0.306572
+     2.1970     1.1600   141.82       -0.307048
+     2.1970     1.1600   143.64       -0.307500
+     2.1970     1.1600   145.45       -0.307930
+     2.1970     1.1600   147.27       -0.308337
+     2.1970     1.1600   149.09       -0.308721
+     2.1970     1.1600   150.91       -0.309082
+     2.1970     1.1600   152.73       -0.309419
+     2.1970     1.1600   154.55       -0.309734
+     2.1970     1.1600   156.36       -0.310026
+     2.1970     1.1600   158.18       -0.310295
+     2.1970     1.1600   160.00       -0.310542
+     2.1970     1.1600   161.82       -0.310767
+     2.1970     1.1600   163.64       -0.310969
+     2.1970     1.1600   165.45       -0.311150
+     2.1970     1.1600   167.27       -0.311309
+     2.1970     1.1600   169.09       -0.311446
+     2.1970     1.1600   170.91       -0.311562
+     2.1970     1.1600   172.73       -0.311657
+     2.1970     1.1600   174.55       -0.311730
+     2.1970     1.1600   176.36       -0.311783
+     2.1970     1.1600   178.18       -0.311814
+     2.1970     1.1600   180.00       -0.311825
+
+     2.2121     1.1600     0.00       -0.478848
+     2.2121     1.1600     1.82       -0.478687
+     2.2121     1.1600     3.64       -0.478197
+     2.2121     1.1600     5.45       -0.477353
+     2.2121     1.1600     7.27       -0.476117
+     2.2121     1.1600     9.09       -0.474446
+     2.2121     1.1600    10.91       -0.472291
+     2.2121     1.1600    12.73       -0.469612
+     2.2121     1.1600    14.55       -0.466375
+     2.2121     1.1600    16.36       -0.462561
+     2.2121     1.1600    18.18       -0.458166
+     2.2121     1.1600    20.00       -0.453206
+     2.2121     1.1600    21.82       -0.447711
+     2.2121     1.1600    23.64       -0.441727
+     2.2121     1.1600    25.45       -0.435312
+     2.2121     1.1600    27.27       -0.428536
+     2.2121     1.1600    29.09       -0.421471
+     2.2121     1.1600    30.91       -0.414195
+     2.2121     1.1600    32.73       -0.406785
+     2.2121     1.1600    34.55       -0.399315
+     2.2121     1.1600    36.36       -0.391855
+     2.2121     1.1600    38.18       -0.384472
+     2.2121     1.1600    40.00       -0.377221
+     2.2121     1.1600    41.82       -0.370155
+     2.2121     1.1600    43.64       -0.363317
+     2.2121     1.1600    45.45       -0.356742
+     2.2121     1.1600    47.27       -0.350460
+     2.2121     1.1600    49.09       -0.344494
+     2.2121     1.1600    50.91       -0.338860
+     2.2121     1.1600    52.73       -0.333569
+     2.2121     1.1600    54.55       -0.328628
+     2.2121     1.1600    56.36       -0.324038
+     2.2121     1.1600    58.18       -0.319799
+     2.2121     1.1600    60.00       -0.315905
+     2.2121     1.1600    61.82       -0.312350
+     2.2121     1.1600    63.64       -0.309124
+     2.2121     1.1600    65.45       -0.306215
+     2.2121     1.1600    67.27       -0.303613
+     2.2121     1.1600    69.09       -0.301301
+     2.2121     1.1600    70.91       -0.299268
+     2.2121     1.1600    72.73       -0.297497
+     2.2121     1.1600    74.55       -0.295972
+     2.2121     1.1600    76.36       -0.294680
+     2.2121     1.1600    78.18       -0.293603
+     2.2121     1.1600    80.00       -0.292727
+     2.2121     1.1600    81.82       -0.292037
+     2.2121     1.1600    83.64       -0.291517
+     2.2121     1.1600    85.45       -0.291153
+     2.2121     1.1600    87.27       -0.290932
+     2.2121     1.1600    89.09       -0.290839
+     2.2121     1.1600    90.91       -0.290863
+     2.2121     1.1600    92.73       -0.290990
+     2.2121     1.1600    94.55       -0.291210
+     2.2121     1.1600    96.36       -0.291512
+     2.2121     1.1600    98.18       -0.291884
+     2.2121     1.1600   100.00       -0.292318
+     2.2121     1.1600   101.82       -0.292805
+     2.2121     1.1600   103.64       -0.293336
+     2.2121     1.1600   105.45       -0.293905
+     2.2121     1.1600   107.27       -0.294503
+     2.2121     1.1600   109.09       -0.295125
+     2.2121     1.1600   110.91       -0.295764
+     2.2121     1.1600   112.73       -0.296416
+     2.2121     1.1600   114.55       -0.297076
+     2.2121     1.1600   116.36       -0.297738
+     2.2121     1.1600   118.18       -0.298401
+     2.2121     1.1600   120.00       -0.299059
+     2.2121     1.1600   121.82       -0.299710
+     2.2121     1.1600   123.64       -0.300352
+     2.2121     1.1600   125.45       -0.300982
+     2.2121     1.1600   127.27       -0.301597
+     2.2121     1.1600   129.09       -0.302198
+     2.2121     1.1600   130.91       -0.302781
+     2.2121     1.1600   132.73       -0.303345
+     2.2121     1.1600   134.55       -0.303890
+     2.2121     1.1600   136.36       -0.304415
+     2.2121     1.1600   138.18       -0.304919
+     2.2121     1.1600   140.00       -0.305402
+     2.2121     1.1600   141.82       -0.305863
+     2.2121     1.1600   143.64       -0.306301
+     2.2121     1.1600   145.45       -0.306717
+     2.2121     1.1600   147.27       -0.307111
+     2.2121     1.1600   149.09       -0.307483
+     2.2121     1.1600   150.91       -0.307832
+     2.2121     1.1600   152.73       -0.308158
+     2.2121     1.1600   154.55       -0.308463
+     2.2121     1.1600   156.36       -0.308745
+     2.2121     1.1600   158.18       -0.309005
+     2.2121     1.1600   160.00       -0.309244
+     2.2121     1.1600   161.82       -0.309461
+     2.2121     1.1600   163.64       -0.309657
+     2.2121     1.1600   165.45       -0.309832
+     2.2121     1.1600   167.27       -0.309985
+     2.2121     1.1600   169.09       -0.310118
+     2.2121     1.1600   170.91       -0.310230
+     2.2121     1.1600   172.73       -0.310321
+     2.2121     1.1600   174.55       -0.310393
+     2.2121     1.1600   176.36       -0.310443
+     2.2121     1.1600   178.18       -0.310474
+     2.2121     1.1600   180.00       -0.310484
+
+     2.2273     1.1600     0.00       -0.477361
+     2.2273     1.1600     1.82       -0.477182
+     2.2273     1.1600     3.64       -0.476636
+     2.2273     1.1600     5.45       -0.475703
+     2.2273     1.1600     7.27       -0.474351
+     2.2273     1.1600     9.09       -0.472543
+     2.2273     1.1600    10.91       -0.470239
+     2.2273     1.1600    12.73       -0.467406
+     2.2273     1.1600    14.55       -0.464018
+     2.2273     1.1600    16.36       -0.460062
+     2.2273     1.1600    18.18       -0.455542
+     2.2273     1.1600    20.00       -0.450475
+     2.2273     1.1600    21.82       -0.444896
+     2.2273     1.1600    23.64       -0.438851
+     2.2273     1.1600    25.45       -0.432401
+     2.2273     1.1600    27.27       -0.425611
+     2.2273     1.1600    29.09       -0.418555
+     2.2273     1.1600    30.91       -0.411307
+     2.2273     1.1600    32.73       -0.403943
+     2.2273     1.1600    34.55       -0.396534
+     2.2273     1.1600    36.36       -0.389148
+     2.2273     1.1600    38.18       -0.381848
+     2.2273     1.1600    40.00       -0.374689
+     2.2273     1.1600    41.82       -0.367721
+     2.2273     1.1600    43.64       -0.360984
+     2.2273     1.1600    45.45       -0.354513
+     2.2273     1.1600    47.27       -0.348335
+     2.2273     1.1600    49.09       -0.342473
+     2.2273     1.1600    50.91       -0.336941
+     2.2273     1.1600    52.73       -0.331750
+     2.2273     1.1600    54.55       -0.326906
+     2.2273     1.1600    56.36       -0.322410
+     2.2273     1.1600    58.18       -0.318260
+     2.2273     1.1600    60.00       -0.314451
+     2.2273     1.1600    61.82       -0.310976
+     2.2273     1.1600    63.64       -0.307825
+     2.2273     1.1600    65.45       -0.304986
+     2.2273     1.1600    67.27       -0.302448
+     2.2273     1.1600    69.09       -0.300197
+     2.2273     1.1600    70.91       -0.298218
+     2.2273     1.1600    72.73       -0.296497
+     2.2273     1.1600    74.55       -0.295017
+     2.2273     1.1600    76.36       -0.293764
+     2.2273     1.1600    78.18       -0.292723
+     2.2273     1.1600    80.00       -0.291877
+     2.2273     1.1600    81.82       -0.291213
+     2.2273     1.1600    83.64       -0.290715
+     2.2273     1.1600    85.45       -0.290369
+     2.2273     1.1600    87.27       -0.290162
+     2.2273     1.1600    89.09       -0.290080
+     2.2273     1.1600    90.91       -0.290111
+     2.2273     1.1600    92.73       -0.290242
+     2.2273     1.1600    94.55       -0.290463
+     2.2273     1.1600    96.36       -0.290763
+     2.2273     1.1600    98.18       -0.291131
+     2.2273     1.1600   100.00       -0.291559
+     2.2273     1.1600   101.82       -0.292038
+     2.2273     1.1600   103.64       -0.292560
+     2.2273     1.1600   105.45       -0.293116
+     2.2273     1.1600   107.27       -0.293702
+     2.2273     1.1600   109.09       -0.294309
+     2.2273     1.1600   110.91       -0.294934
+     2.2273     1.1600   112.73       -0.295569
+     2.2273     1.1600   114.55       -0.296212
+     2.2273     1.1600   116.36       -0.296858
+     2.2273     1.1600   118.18       -0.297502
+     2.2273     1.1600   120.00       -0.298143
+     2.2273     1.1600   121.82       -0.298776
+     2.2273     1.1600   123.64       -0.299399
+     2.2273     1.1600   125.45       -0.300011
+     2.2273     1.1600   127.27       -0.300609
+     2.2273     1.1600   129.09       -0.301191
+     2.2273     1.1600   130.91       -0.301756
+     2.2273     1.1600   132.73       -0.302304
+     2.2273     1.1600   134.55       -0.302832
+     2.2273     1.1600   136.36       -0.303341
+     2.2273     1.1600   138.18       -0.303829
+     2.2273     1.1600   140.00       -0.304296
+     2.2273     1.1600   141.82       -0.304742
+     2.2273     1.1600   143.64       -0.305167
+     2.2273     1.1600   145.45       -0.305570
+     2.2273     1.1600   147.27       -0.305951
+     2.2273     1.1600   149.09       -0.306310
+     2.2273     1.1600   150.91       -0.306647
+     2.2273     1.1600   152.73       -0.306963
+     2.2273     1.1600   154.55       -0.307257
+     2.2273     1.1600   156.36       -0.307530
+     2.2273     1.1600   158.18       -0.307782
+     2.2273     1.1600   160.00       -0.308012
+     2.2273     1.1600   161.82       -0.308222
+     2.2273     1.1600   163.64       -0.308411
+     2.2273     1.1600   165.45       -0.308580
+     2.2273     1.1600   167.27       -0.308728
+     2.2273     1.1600   169.09       -0.308856
+     2.2273     1.1600   170.91       -0.308964
+     2.2273     1.1600   172.73       -0.309053
+     2.2273     1.1600   174.55       -0.309121
+     2.2273     1.1600   176.36       -0.309170
+     2.2273     1.1600   178.18       -0.309199
+     2.2273     1.1600   180.00       -0.309209
+
+     2.2424     1.1600     0.00       -0.475613
+     2.2424     1.1600     1.82       -0.475417
+     2.2424     1.1600     3.64       -0.474822
+     2.2424     1.1600     5.45       -0.473811
+     2.2424     1.1600     7.27       -0.472358
+     2.2424     1.1600     9.09       -0.470430
+     2.2424     1.1600    10.91       -0.467997
+     2.2424     1.1600    12.73       -0.465031
+     2.2424     1.1600    14.55       -0.461513
+     2.2424     1.1600    16.36       -0.457439
+     2.2424     1.1600    18.18       -0.452814
+     2.2424     1.1600    20.00       -0.447661
+     2.2424     1.1600    21.82       -0.442017
+     2.2424     1.1600    23.64       -0.435929
+     2.2424     1.1600    25.45       -0.429458
+     2.2424     1.1600    27.27       -0.422670
+     2.2424     1.1600    29.09       -0.415635
+     2.2424     1.1600    30.91       -0.408428
+     2.2424     1.1600    32.73       -0.401119
+     2.2424     1.1600    34.55       -0.393780
+     2.2424     1.1600    36.36       -0.386476
+     2.2424     1.1600    38.18       -0.379266
+     2.2424     1.1600    40.00       -0.372205
+     2.2424     1.1600    41.82       -0.365339
+     2.2424     1.1600    43.64       -0.358707
+     2.2424     1.1600    45.45       -0.352344
+     2.2424     1.1600    47.27       -0.346274
+     2.2424     1.1600    49.09       -0.340518
+     2.2424     1.1600    50.91       -0.335091
+     2.2424     1.1600    52.73       -0.330002
+     2.2424     1.1600    54.55       -0.325256
+     2.2424     1.1600    56.36       -0.320854
+     2.2424     1.1600    58.18       -0.316794
+     2.2424     1.1600    60.00       -0.313071
+     2.2424     1.1600    61.82       -0.309676
+     2.2424     1.1600    63.64       -0.306601
+     2.2424     1.1600    65.45       -0.303833
+     2.2424     1.1600    67.27       -0.301360
+     2.2424     1.1600    69.09       -0.299168
+     2.2424     1.1600    70.91       -0.297244
+     2.2424     1.1600    72.73       -0.295571
+     2.2424     1.1600    74.55       -0.294136
+     2.2424     1.1600    76.36       -0.292923
+     2.2424     1.1600    78.18       -0.291916
+     2.2424     1.1600    80.00       -0.291100
+     2.2424     1.1600    81.82       -0.290461
+     2.2424     1.1600    83.64       -0.289985
+     2.2424     1.1600    85.45       -0.289656
+     2.2424     1.1600    87.27       -0.289462
+     2.2424     1.1600    89.09       -0.289390
+     2.2424     1.1600    90.91       -0.289427
+     2.2424     1.1600    92.73       -0.289562
+     2.2424     1.1600    94.55       -0.289784
+     2.2424     1.1600    96.36       -0.290081
+     2.2424     1.1600    98.18       -0.290445
+     2.2424     1.1600   100.00       -0.290866
+     2.2424     1.1600   101.82       -0.291336
+     2.2424     1.1600   103.64       -0.291847
+     2.2424     1.1600   105.45       -0.292392
+     2.2424     1.1600   107.27       -0.292964
+     2.2424     1.1600   109.09       -0.293557
+     2.2424     1.1600   110.91       -0.294166
+     2.2424     1.1600   112.73       -0.294786
+     2.2424     1.1600   114.55       -0.295412
+     2.2424     1.1600   116.36       -0.296040
+     2.2424     1.1600   118.18       -0.296667
+     2.2424     1.1600   120.00       -0.297289
+     2.2424     1.1600   121.82       -0.297904
+     2.2424     1.1600   123.64       -0.298509
+     2.2424     1.1600   125.45       -0.299103
+     2.2424     1.1600   127.27       -0.299683
+     2.2424     1.1600   129.09       -0.300247
+     2.2424     1.1600   130.91       -0.300795
+     2.2424     1.1600   132.73       -0.301325
+     2.2424     1.1600   134.55       -0.301837
+     2.2424     1.1600   136.36       -0.302329
+     2.2424     1.1600   138.18       -0.302802
+     2.2424     1.1600   140.00       -0.303254
+     2.2424     1.1600   141.82       -0.303685
+     2.2424     1.1600   143.64       -0.304096
+     2.2424     1.1600   145.45       -0.304485
+     2.2424     1.1600   147.27       -0.304853
+     2.2424     1.1600   149.09       -0.305200
+     2.2424     1.1600   150.91       -0.305526
+     2.2424     1.1600   152.73       -0.305831
+     2.2424     1.1600   154.55       -0.306116
+     2.2424     1.1600   156.36       -0.306379
+     2.2424     1.1600   158.18       -0.306622
+     2.2424     1.1600   160.00       -0.306844
+     2.2424     1.1600   161.82       -0.307047
+     2.2424     1.1600   163.64       -0.307229
+     2.2424     1.1600   165.45       -0.307392
+     2.2424     1.1600   167.27       -0.307535
+     2.2424     1.1600   169.09       -0.307659
+     2.2424     1.1600   170.91       -0.307763
+     2.2424     1.1600   172.73       -0.307848
+     2.2424     1.1600   174.55       -0.307915
+     2.2424     1.1600   176.36       -0.307962
+     2.2424     1.1600   178.18       -0.307990
+     2.2424     1.1600   180.00       -0.307999
+
+     2.2576     1.1600     0.00       -0.473628
+     2.2576     1.1600     1.82       -0.473417
+     2.2576     1.1600     3.64       -0.472780
+     2.2576     1.1600     5.45       -0.471702
+     2.2576     1.1600     7.27       -0.470160
+     2.2576     1.1600     9.09       -0.468129
+     2.2576     1.1600    10.91       -0.465584
+     2.2576     1.1600    12.73       -0.462505
+     2.2576     1.1600    14.55       -0.458879
+     2.2576     1.1600    16.36       -0.454705
+     2.2576     1.1600    18.18       -0.449995
+     2.2576     1.1600    20.00       -0.444775
+     2.2576     1.1600    21.82       -0.439083
+     2.2576     1.1600    23.64       -0.432970
+     2.2576     1.1600    25.45       -0.426493
+     2.2576     1.1600    27.27       -0.419720
+     2.2576     1.1600    29.09       -0.412719
+     2.2576     1.1600    30.91       -0.405561
+     2.2576     1.1600    32.73       -0.398318
+     2.2576     1.1600    34.55       -0.391057
+     2.2576     1.1600    36.36       -0.383842
+     2.2576     1.1600    38.18       -0.376729
+     2.2576     1.1600    40.00       -0.369770
+     2.2576     1.1600    41.82       -0.363011
+     2.2576     1.1600    43.64       -0.356489
+     2.2576     1.1600    45.45       -0.350236
+     2.2576     1.1600    47.27       -0.344276
+     2.2576     1.1600    49.09       -0.338629
+     2.2576     1.1600    50.91       -0.333308
+     2.2576     1.1600    52.73       -0.328323
+     2.2576     1.1600    54.55       -0.323677
+     2.2576     1.1600    56.36       -0.319371
+     2.2576     1.1600    58.18       -0.315402
+     2.2576     1.1600    60.00       -0.311764
+     2.2576     1.1600    61.82       -0.308450
+     2.2576     1.1600    63.64       -0.305450
+     2.2576     1.1600    65.45       -0.302753
+     2.2576     1.1600    67.27       -0.300344
+     2.2576     1.1600    69.09       -0.298212
+     2.2576     1.1600    70.91       -0.296342
+     2.2576     1.1600    72.73       -0.294718
+     2.2576     1.1600    74.55       -0.293327
+     2.2576     1.1600    76.36       -0.292152
+     2.2576     1.1600    78.18       -0.291179
+     2.2576     1.1600    80.00       -0.290393
+     2.2576     1.1600    81.82       -0.289779
+     2.2576     1.1600    83.64       -0.289323
+     2.2576     1.1600    85.45       -0.289011
+     2.2576     1.1600    87.27       -0.288829
+     2.2576     1.1600    89.09       -0.288766
+     2.2576     1.1600    90.91       -0.288810
+     2.2576     1.1600    92.73       -0.288947
+     2.2576     1.1600    94.55       -0.289169
+     2.2576     1.1600    96.36       -0.289463
+     2.2576     1.1600    98.18       -0.289822
+     2.2576     1.1600   100.00       -0.290236
+     2.2576     1.1600   101.82       -0.290697
+     2.2576     1.1600   103.64       -0.291198
+     2.2576     1.1600   105.45       -0.291730
+     2.2576     1.1600   107.27       -0.292289
+     2.2576     1.1600   109.09       -0.292867
+     2.2576     1.1600   110.91       -0.293460
+     2.2576     1.1600   112.73       -0.294063
+     2.2576     1.1600   114.55       -0.294672
+     2.2576     1.1600   116.36       -0.295283
+     2.2576     1.1600   118.18       -0.295892
+     2.2576     1.1600   120.00       -0.296496
+     2.2576     1.1600   121.82       -0.297093
+     2.2576     1.1600   123.64       -0.297680
+     2.2576     1.1600   125.45       -0.298255
+     2.2576     1.1600   127.27       -0.298817
+     2.2576     1.1600   129.09       -0.299364
+     2.2576     1.1600   130.91       -0.299894
+     2.2576     1.1600   132.73       -0.300408
+     2.2576     1.1600   134.55       -0.300903
+     2.2576     1.1600   136.36       -0.301379
+     2.2576     1.1600   138.18       -0.301836
+     2.2576     1.1600   140.00       -0.302273
+     2.2576     1.1600   141.82       -0.302690
+     2.2576     1.1600   143.64       -0.303086
+     2.2576     1.1600   145.45       -0.303462
+     2.2576     1.1600   147.27       -0.303818
+     2.2576     1.1600   149.09       -0.304153
+     2.2576     1.1600   150.91       -0.304468
+     2.2576     1.1600   152.73       -0.304762
+     2.2576     1.1600   154.55       -0.305036
+     2.2576     1.1600   156.36       -0.305290
+     2.2576     1.1600   158.18       -0.305525
+     2.2576     1.1600   160.00       -0.305739
+     2.2576     1.1600   161.82       -0.305935
+     2.2576     1.1600   163.64       -0.306111
+     2.2576     1.1600   165.45       -0.306267
+     2.2576     1.1600   167.27       -0.306405
+     2.2576     1.1600   169.09       -0.306525
+     2.2576     1.1600   170.91       -0.306625
+     2.2576     1.1600   172.73       -0.306707
+     2.2576     1.1600   174.55       -0.306771
+     2.2576     1.1600   176.36       -0.306817
+     2.2576     1.1600   178.18       -0.306844
+     2.2576     1.1600   180.00       -0.306853
+
+     2.2727     1.1600     0.00       -0.471431
+     2.2727     1.1600     1.82       -0.471208
+     2.2727     1.1600     3.64       -0.470533
+     2.2727     1.1600     5.45       -0.469397
+     2.2727     1.1600     7.27       -0.467779
+     2.2727     1.1600     9.09       -0.465660
+     2.2727     1.1600    10.91       -0.463020
+     2.2727     1.1600    12.73       -0.459846
+     2.2727     1.1600    14.55       -0.456129
+     2.2727     1.1600    16.36       -0.451875
+     2.2727     1.1600    18.18       -0.447098
+     2.2727     1.1600    20.00       -0.441829
+     2.2727     1.1600    21.82       -0.436106
+     2.2727     1.1600    23.64       -0.429981
+     2.2727     1.1600    25.45       -0.423513
+     2.2727     1.1600    27.27       -0.416766
+     2.2727     1.1600    29.09       -0.409810
+     2.2727     1.1600    30.91       -0.402713
+     2.2727     1.1600    32.73       -0.395544
+     2.2727     1.1600    34.55       -0.388368
+     2.2727     1.1600    36.36       -0.381247
+     2.2727     1.1600    38.18       -0.374237
+     2.2727     1.1600    40.00       -0.367386
+     2.2727     1.1600    41.82       -0.360738
+     2.2727     1.1600    43.64       -0.354328
+     2.2727     1.1600    45.45       -0.348189
+     2.2727     1.1600    47.27       -0.342342
+     2.2727     1.1600    49.09       -0.336806
+     2.2727     1.1600    50.91       -0.331593
+     2.2727     1.1600    52.73       -0.326713
+     2.2727     1.1600    54.55       -0.322167
+     2.2727     1.1600    56.36       -0.317957
+     2.2727     1.1600    58.18       -0.314080
+     2.2727     1.1600    60.00       -0.310529
+     2.2727     1.1600    61.82       -0.307296
+     2.2727     1.1600    63.64       -0.304371
+     2.2727     1.1600    65.45       -0.301744
+     2.2727     1.1600    67.27       -0.299400
+     2.2727     1.1600    69.09       -0.297327
+     2.2727     1.1600    70.91       -0.295510
+     2.2727     1.1600    72.73       -0.293935
+     2.2727     1.1600    74.55       -0.292587
+     2.2727     1.1600    76.36       -0.291450
+     2.2727     1.1600    78.18       -0.290510
+     2.2727     1.1600    80.00       -0.289753
+     2.2727     1.1600    81.82       -0.289163
+     2.2727     1.1600    83.64       -0.288726
+     2.2727     1.1600    85.45       -0.288430
+     2.2727     1.1600    87.27       -0.288261
+     2.2727     1.1600    89.09       -0.288206
+     2.2727     1.1600    90.91       -0.288255
+     2.2727     1.1600    92.73       -0.288395
+     2.2727     1.1600    94.55       -0.288615
+     2.2727     1.1600    96.36       -0.288907
+     2.2727     1.1600    98.18       -0.289260
+     2.2727     1.1600   100.00       -0.289667
+     2.2727     1.1600   101.82       -0.290118
+     2.2727     1.1600   103.64       -0.290607
+     2.2727     1.1600   105.45       -0.291127
+     2.2727     1.1600   107.27       -0.291672
+     2.2727     1.1600   109.09       -0.292235
+     2.2727     1.1600   110.91       -0.292812
+     2.2727     1.1600   112.73       -0.293399
+     2.2727     1.1600   114.55       -0.293991
+     2.2727     1.1600   116.36       -0.294584
+     2.2727     1.1600   118.18       -0.295175
+     2.2727     1.1600   120.00       -0.295761
+     2.2727     1.1600   121.82       -0.296339
+     2.2727     1.1600   123.64       -0.296908
+     2.2727     1.1600   125.45       -0.297465
+     2.2727     1.1600   127.27       -0.298009
+     2.2727     1.1600   129.09       -0.298539
+     2.2727     1.1600   130.91       -0.299052
+     2.2727     1.1600   132.73       -0.299548
+     2.2727     1.1600   134.55       -0.300027
+     2.2727     1.1600   136.36       -0.300487
+     2.2727     1.1600   138.18       -0.300929
+     2.2727     1.1600   140.00       -0.301351
+     2.2727     1.1600   141.82       -0.301753
+     2.2727     1.1600   143.64       -0.302136
+     2.2727     1.1600   145.45       -0.302499
+     2.2727     1.1600   147.27       -0.302842
+     2.2727     1.1600   149.09       -0.303165
+     2.2727     1.1600   150.91       -0.303469
+     2.2727     1.1600   152.73       -0.303753
+     2.2727     1.1600   154.55       -0.304017
+     2.2727     1.1600   156.36       -0.304262
+     2.2727     1.1600   158.18       -0.304488
+     2.2727     1.1600   160.00       -0.304695
+     2.2727     1.1600   161.82       -0.304883
+     2.2727     1.1600   163.64       -0.305053
+     2.2727     1.1600   165.45       -0.305204
+     2.2727     1.1600   167.27       -0.305337
+     2.2727     1.1600   169.09       -0.305452
+     2.2727     1.1600   170.91       -0.305549
+     2.2727     1.1600   172.73       -0.305628
+     2.2727     1.1600   174.55       -0.305689
+     2.2727     1.1600   176.36       -0.305733
+     2.2727     1.1600   178.18       -0.305759
+     2.2727     1.1600   180.00       -0.305768
+
+     2.2879     1.1600     0.00       -0.469043
+     2.2879     1.1600     1.82       -0.468809
+     2.2879     1.1600     3.64       -0.468104
+     2.2879     1.1600     5.45       -0.466917
+     2.2879     1.1600     7.27       -0.465235
+     2.2879     1.1600     9.09       -0.463041
+     2.2879     1.1600    10.91       -0.460323
+     2.2879     1.1600    12.73       -0.457069
+     2.2879     1.1600    14.55       -0.453279
+     2.2879     1.1600    16.36       -0.448961
+     2.2879     1.1600    18.18       -0.444135
+     2.2879     1.1600    20.00       -0.438832
+     2.2879     1.1600    21.82       -0.433093
+     2.2879     1.1600    23.64       -0.426971
+     2.2879     1.1600    25.45       -0.420523
+     2.2879     1.1600    27.27       -0.413815
+     2.2879     1.1600    29.09       -0.406913
+     2.2879     1.1600    30.91       -0.399886
+     2.2879     1.1600    32.73       -0.392799
+     2.2879     1.1600    34.55       -0.385716
+     2.2879     1.1600    36.36       -0.378696
+     2.2879     1.1600    38.18       -0.371792
+     2.2879     1.1600    40.00       -0.365053
+     2.2879     1.1600    41.82       -0.358520
+     2.2879     1.1600    43.64       -0.352227
+     2.2879     1.1600    45.45       -0.346203
+     2.2879     1.1600    47.27       -0.340470
+     2.2879     1.1600    49.09       -0.335047
+     2.2879     1.1600    50.91       -0.329944
+     2.2879     1.1600    52.73       -0.325170
+     2.2879     1.1600    54.55       -0.320726
+     2.2879     1.1600    56.36       -0.316613
+     2.2879     1.1600    58.18       -0.312827
+     2.2879     1.1600    60.00       -0.309362
+     2.2879     1.1600    61.82       -0.306211
+     2.2879     1.1600    63.64       -0.303361
+     2.2879     1.1600    65.45       -0.300804
+     2.2879     1.1600    67.27       -0.298524
+     2.2879     1.1600    69.09       -0.296510
+     2.2879     1.1600    70.91       -0.294746
+     2.2879     1.1600    72.73       -0.293219
+     2.2879     1.1600    74.55       -0.291913
+     2.2879     1.1600    76.36       -0.290814
+     2.2879     1.1600    78.18       -0.289906
+     2.2879     1.1600    80.00       -0.289176
+     2.2879     1.1600    81.82       -0.288610
+     2.2879     1.1600    83.64       -0.288192
+     2.2879     1.1600    85.45       -0.287911
+     2.2879     1.1600    87.27       -0.287754
+     2.2879     1.1600    89.09       -0.287707
+     2.2879     1.1600    90.91       -0.287760
+     2.2879     1.1600    92.73       -0.287901
+     2.2879     1.1600    94.55       -0.288121
+     2.2879     1.1600    96.36       -0.288409
+     2.2879     1.1600    98.18       -0.288756
+     2.2879     1.1600   100.00       -0.289154
+     2.2879     1.1600   101.82       -0.289596
+     2.2879     1.1600   103.64       -0.290074
+     2.2879     1.1600   105.45       -0.290581
+     2.2879     1.1600   107.27       -0.291111
+     2.2879     1.1600   109.09       -0.291659
+     2.2879     1.1600   110.91       -0.292221
+     2.2879     1.1600   112.73       -0.292790
+     2.2879     1.1600   114.55       -0.293365
+     2.2879     1.1600   116.36       -0.293940
+     2.2879     1.1600   118.18       -0.294513
+     2.2879     1.1600   120.00       -0.295081
+     2.2879     1.1600   121.82       -0.295642
+     2.2879     1.1600   123.64       -0.296192
+     2.2879     1.1600   125.45       -0.296732
+     2.2879     1.1600   127.27       -0.297258
+     2.2879     1.1600   129.09       -0.297770
+     2.2879     1.1600   130.91       -0.298266
+     2.2879     1.1600   132.73       -0.298746
+     2.2879     1.1600   134.55       -0.299208
+     2.2879     1.1600   136.36       -0.299652
+     2.2879     1.1600   138.18       -0.300078
+     2.2879     1.1600   140.00       -0.300486
+     2.2879     1.1600   141.82       -0.300874
+     2.2879     1.1600   143.64       -0.301244
+     2.2879     1.1600   145.45       -0.301594
+     2.2879     1.1600   147.27       -0.301924
+     2.2879     1.1600   149.09       -0.302236
+     2.2879     1.1600   150.91       -0.302529
+     2.2879     1.1600   152.73       -0.302802
+     2.2879     1.1600   154.55       -0.303057
+     2.2879     1.1600   156.36       -0.303293
+     2.2879     1.1600   158.18       -0.303510
+     2.2879     1.1600   160.00       -0.303710
+     2.2879     1.1600   161.82       -0.303891
+     2.2879     1.1600   163.64       -0.304054
+     2.2879     1.1600   165.45       -0.304200
+     2.2879     1.1600   167.27       -0.304327
+     2.2879     1.1600   169.09       -0.304438
+     2.2879     1.1600   170.91       -0.304531
+     2.2879     1.1600   172.73       -0.304607
+     2.2879     1.1600   174.55       -0.304667
+     2.2879     1.1600   176.36       -0.304709
+     2.2879     1.1600   178.18       -0.304734
+     2.2879     1.1600   180.00       -0.304742
+
+     2.3030     1.1600     0.00       -0.466487
+     2.3030     1.1600     1.82       -0.466244
+     2.3030     1.1600     3.64       -0.465512
+     2.3030     1.1600     5.45       -0.464283
+     2.3030     1.1600     7.27       -0.462547
+     2.3030     1.1600     9.09       -0.460291
+     2.3030     1.1600    10.91       -0.457507
+     2.3030     1.1600    12.73       -0.454190
+     2.3030     1.1600    14.55       -0.450342
+     2.3030     1.1600    16.36       -0.445977
+     2.3030     1.1600    18.18       -0.441116
+     2.3030     1.1600    20.00       -0.435794
+     2.3030     1.1600    21.82       -0.430053
+     2.3030     1.1600    23.64       -0.423946
+     2.3030     1.1600    25.45       -0.417531
+     2.3030     1.1600    27.27       -0.410872
+     2.3030     1.1600    29.09       -0.404035
+     2.3030     1.1600    30.91       -0.397084
+     2.3030     1.1600    32.73       -0.390086
+     2.3030     1.1600    34.55       -0.383102
+     2.3030     1.1600    36.36       -0.376188
+     2.3030     1.1600    38.18       -0.369396
+     2.3030     1.1600    40.00       -0.362773
+     2.3030     1.1600    41.82       -0.356357
+     2.3030     1.1600    43.64       -0.350183
+     2.3030     1.1600    45.45       -0.344278
+     2.3030     1.1600    47.27       -0.338662
+     2.3030     1.1600    49.09       -0.333353
+     2.3030     1.1600    50.91       -0.328361
+     2.3030     1.1600    52.73       -0.323693
+     2.3030     1.1600    54.55       -0.319351
+     2.3030     1.1600    56.36       -0.315335
+     2.3030     1.1600    58.18       -0.311641
+     2.3030     1.1600    60.00       -0.308263
+     2.3030     1.1600    61.82       -0.305192
+     2.3030     1.1600    63.64       -0.302418
+     2.3030     1.1600    65.45       -0.299930
+     2.3030     1.1600    67.27       -0.297714
+     2.3030     1.1600    69.09       -0.295758
+     2.3030     1.1600    70.91       -0.294047
+     2.3030     1.1600    72.73       -0.292566
+     2.3030     1.1600    74.55       -0.291302
+     2.3030     1.1600    76.36       -0.290239
+     2.3030     1.1600    78.18       -0.289364
+     2.3030     1.1600    80.00       -0.288661
+     2.3030     1.1600    81.82       -0.288117
+     2.3030     1.1600    83.64       -0.287718
+     2.3030     1.1600    85.45       -0.287451
+     2.3030     1.1600    87.27       -0.287304
+     2.3030     1.1600    89.09       -0.287265
+     2.3030     1.1600    90.91       -0.287322
+     2.3030     1.1600    92.73       -0.287464
+     2.3030     1.1600    94.55       -0.287682
+     2.3030     1.1600    96.36       -0.287966
+     2.3030     1.1600    98.18       -0.288307
+     2.3030     1.1600   100.00       -0.288697
+     2.3030     1.1600   101.82       -0.289128
+     2.3030     1.1600   103.64       -0.289594
+     2.3030     1.1600   105.45       -0.290088
+     2.3030     1.1600   107.27       -0.290604
+     2.3030     1.1600   109.09       -0.291137
+     2.3030     1.1600   110.91       -0.291682
+     2.3030     1.1600   112.73       -0.292235
+     2.3030     1.1600   114.55       -0.292792
+     2.3030     1.1600   116.36       -0.293350
+     2.3030     1.1600   118.18       -0.293905
+     2.3030     1.1600   120.00       -0.294455
+     2.3030     1.1600   121.82       -0.294997
+     2.3030     1.1600   123.64       -0.295530
+     2.3030     1.1600   125.45       -0.296052
+     2.3030     1.1600   127.27       -0.296560
+     2.3030     1.1600   129.09       -0.297055
+     2.3030     1.1600   130.91       -0.297534
+     2.3030     1.1600   132.73       -0.297997
+     2.3030     1.1600   134.55       -0.298443
+     2.3030     1.1600   136.36       -0.298872
+     2.3030     1.1600   138.18       -0.299283
+     2.3030     1.1600   140.00       -0.299676
+     2.3030     1.1600   141.82       -0.300050
+     2.3030     1.1600   143.64       -0.300406
+     2.3030     1.1600   145.45       -0.300744
+     2.3030     1.1600   147.27       -0.301062
+     2.3030     1.1600   149.09       -0.301362
+     2.3030     1.1600   150.91       -0.301644
+     2.3030     1.1600   152.73       -0.301908
+     2.3030     1.1600   154.55       -0.302153
+     2.3030     1.1600   156.36       -0.302380
+     2.3030     1.1600   158.18       -0.302589
+     2.3030     1.1600   160.00       -0.302781
+     2.3030     1.1600   161.82       -0.302955
+     2.3030     1.1600   163.64       -0.303113
+     2.3030     1.1600   165.45       -0.303252
+     2.3030     1.1600   167.27       -0.303376
+     2.3030     1.1600   169.09       -0.303482
+     2.3030     1.1600   170.91       -0.303572
+     2.3030     1.1600   172.73       -0.303645
+     2.3030     1.1600   174.55       -0.303702
+     2.3030     1.1600   176.36       -0.303742
+     2.3030     1.1600   178.18       -0.303767
+     2.3030     1.1600   180.00       -0.303775
+
+     2.3182     1.1600     0.00       -0.463781
+     2.3182     1.1600     1.82       -0.463531
+     2.3182     1.1600     3.64       -0.462776
+     2.3182     1.1600     5.45       -0.461512
+     2.3182     1.1600     7.27       -0.459732
+     2.3182     1.1600     9.09       -0.457426
+     2.3182     1.1600    10.91       -0.454589
+     2.3182     1.1600    12.73       -0.451222
+     2.3182     1.1600    14.55       -0.447332
+     2.3182     1.1600    16.36       -0.442933
+     2.3182     1.1600    18.18       -0.438052
+     2.3182     1.1600    20.00       -0.432724
+     2.3182     1.1600    21.82       -0.426994
+     2.3182     1.1600    23.64       -0.420914
+     2.3182     1.1600    25.45       -0.414543
+     2.3182     1.1600    27.27       -0.407942
+     2.3182     1.1600    29.09       -0.401177
+     2.3182     1.1600    30.91       -0.394312
+     2.3182     1.1600    32.73       -0.387409
+     2.3182     1.1600    34.55       -0.380529
+     2.3182     1.1600    36.36       -0.373726
+     2.3182     1.1600    38.18       -0.367051
+     2.3182     1.1600    40.00       -0.360546
+     2.3182     1.1600    41.82       -0.354252
+     2.3182     1.1600    43.64       -0.348199
+     2.3182     1.1600    45.45       -0.342413
+     2.3182     1.1600    47.27       -0.336916
+     2.3182     1.1600    49.09       -0.331722
+     2.3182     1.1600    50.91       -0.326841
+     2.3182     1.1600    52.73       -0.322280
+     2.3182     1.1600    54.55       -0.318041
+     2.3182     1.1600    56.36       -0.314123
+     2.3182     1.1600    58.18       -0.310521
+     2.3182     1.1600    60.00       -0.307229
+     2.3182     1.1600    61.82       -0.304239
+     2.3182     1.1600    63.64       -0.301539
+     2.3182     1.1600    65.45       -0.299120
+     2.3182     1.1600    67.27       -0.296967
+     2.3182     1.1600    69.09       -0.295068
+     2.3182     1.1600    70.91       -0.293409
+     2.3182     1.1600    72.73       -0.291975
+     2.3182     1.1600    74.55       -0.290751
+     2.3182     1.1600    76.36       -0.289725
+     2.3182     1.1600    78.18       -0.288880
+     2.3182     1.1600    80.00       -0.288204
+     2.3182     1.1600    81.82       -0.287681
+     2.3182     1.1600    83.64       -0.287300
+     2.3182     1.1600    85.45       -0.287047
+     2.3182     1.1600    87.27       -0.286910
+     2.3182     1.1600    89.09       -0.286877
+     2.3182     1.1600    90.91       -0.286937
+     2.3182     1.1600    92.73       -0.287080
+     2.3182     1.1600    94.55       -0.287296
+     2.3182     1.1600    96.36       -0.287575
+     2.3182     1.1600    98.18       -0.287909
+     2.3182     1.1600   100.00       -0.288290
+     2.3182     1.1600   101.82       -0.288711
+     2.3182     1.1600   103.64       -0.289165
+     2.3182     1.1600   105.45       -0.289645
+     2.3182     1.1600   107.27       -0.290147
+     2.3182     1.1600   109.09       -0.290665
+     2.3182     1.1600   110.91       -0.291194
+     2.3182     1.1600   112.73       -0.291730
+     2.3182     1.1600   114.55       -0.292270
+     2.3182     1.1600   116.36       -0.292810
+     2.3182     1.1600   118.18       -0.293347
+     2.3182     1.1600   120.00       -0.293879
+     2.3182     1.1600   121.82       -0.294404
+     2.3182     1.1600   123.64       -0.294919
+     2.3182     1.1600   125.45       -0.295423
+     2.3182     1.1600   127.27       -0.295914
+     2.3182     1.1600   129.09       -0.296391
+     2.3182     1.1600   130.91       -0.296854
+     2.3182     1.1600   132.73       -0.297300
+     2.3182     1.1600   134.55       -0.297731
+     2.3182     1.1600   136.36       -0.298144
+     2.3182     1.1600   138.18       -0.298540
+     2.3182     1.1600   140.00       -0.298919
+     2.3182     1.1600   141.82       -0.299279
+     2.3182     1.1600   143.64       -0.299622
+     2.3182     1.1600   145.45       -0.299947
+     2.3182     1.1600   147.27       -0.300254
+     2.3182     1.1600   149.09       -0.300543
+     2.3182     1.1600   150.91       -0.300814
+     2.3182     1.1600   152.73       -0.301067
+     2.3182     1.1600   154.55       -0.301303
+     2.3182     1.1600   156.36       -0.301522
+     2.3182     1.1600   158.18       -0.301723
+     2.3182     1.1600   160.00       -0.301908
+     2.3182     1.1600   161.82       -0.302075
+     2.3182     1.1600   163.64       -0.302226
+     2.3182     1.1600   165.45       -0.302361
+     2.3182     1.1600   167.27       -0.302479
+     2.3182     1.1600   169.09       -0.302581
+     2.3182     1.1600   170.91       -0.302667
+     2.3182     1.1600   172.73       -0.302738
+     2.3182     1.1600   174.55       -0.302792
+     2.3182     1.1600   176.36       -0.302831
+     2.3182     1.1600   178.18       -0.302855
+     2.3182     1.1600   180.00       -0.302863
+
+     2.3333     1.1600     0.00       -0.460945
+     2.3333     1.1600     1.82       -0.460688
+     2.3333     1.1600     3.64       -0.459915
+     2.3333     1.1600     5.45       -0.458623
+     2.3333     1.1600     7.27       -0.456806
+     2.3333     1.1600     9.09       -0.454461
+     2.3333     1.1600    10.91       -0.451584
+     2.3333     1.1600    12.73       -0.448180
+     2.3333     1.1600    14.55       -0.444259
+     2.3333     1.1600    16.36       -0.439840
+     2.3333     1.1600    18.18       -0.434952
+     2.3333     1.1600    20.00       -0.429631
+     2.3333     1.1600    21.82       -0.423924
+     2.3333     1.1600    23.64       -0.417881
+     2.3333     1.1600    25.45       -0.411563
+     2.3333     1.1600    27.27       -0.405030
+     2.3333     1.1600    29.09       -0.398345
+     2.3333     1.1600    30.91       -0.391572
+     2.3333     1.1600    32.73       -0.384770
+     2.3333     1.1600    34.55       -0.377999
+     2.3333     1.1600    36.36       -0.371312
+     2.3333     1.1600    38.18       -0.364756
+     2.3333     1.1600    40.00       -0.358373
+     2.3333     1.1600    41.82       -0.352202
+     2.3333     1.1600    43.64       -0.346272
+     2.3333     1.1600    45.45       -0.340608
+     2.3333     1.1600    47.27       -0.335230
+     2.3333     1.1600    49.09       -0.330152
+     2.3333     1.1600    50.91       -0.325384
+     2.3333     1.1600    52.73       -0.320931
+     2.3333     1.1600    54.55       -0.316794
+     2.3333     1.1600    56.36       -0.312973
+     2.3333     1.1600    58.18       -0.309463
+     2.3333     1.1600    60.00       -0.306257
+     2.3333     1.1600    61.82       -0.303347
+     2.3333     1.1600    63.64       -0.300722
+     2.3333     1.1600    65.45       -0.298371
+     2.3333     1.1600    67.27       -0.296281
+     2.3333     1.1600    69.09       -0.294438
+     2.3333     1.1600    70.91       -0.292830
+     2.3333     1.1600    72.73       -0.291441
+     2.3333     1.1600    74.55       -0.290258
+     2.3333     1.1600    76.36       -0.289266
+     2.3333     1.1600    78.18       -0.288452
+     2.3333     1.1600    80.00       -0.287801
+     2.3333     1.1600    81.82       -0.287300
+     2.3333     1.1600    83.64       -0.286935
+     2.3333     1.1600    85.45       -0.286695
+     2.3333     1.1600    87.27       -0.286567
+     2.3333     1.1600    89.09       -0.286540
+     2.3333     1.1600    90.91       -0.286603
+     2.3333     1.1600    92.73       -0.286746
+     2.3333     1.1600    94.55       -0.286959
+     2.3333     1.1600    96.36       -0.287233
+     2.3333     1.1600    98.18       -0.287560
+     2.3333     1.1600   100.00       -0.287932
+     2.3333     1.1600   101.82       -0.288343
+     2.3333     1.1600   103.64       -0.288784
+     2.3333     1.1600   105.45       -0.289251
+     2.3333     1.1600   107.27       -0.289738
+     2.3333     1.1600   109.09       -0.290241
+     2.3333     1.1600   110.91       -0.290753
+     2.3333     1.1600   112.73       -0.291273
+     2.3333     1.1600   114.55       -0.291796
+     2.3333     1.1600   116.36       -0.292318
+     2.3333     1.1600   118.18       -0.292838
+     2.3333     1.1600   120.00       -0.293352
+     2.3333     1.1600   121.82       -0.293859
+     2.3333     1.1600   123.64       -0.294356
+     2.3333     1.1600   125.45       -0.294842
+     2.3333     1.1600   127.27       -0.295316
+     2.3333     1.1600   129.09       -0.295777
+     2.3333     1.1600   130.91       -0.296223
+     2.3333     1.1600   132.73       -0.296653
+     2.3333     1.1600   134.55       -0.297068
+     2.3333     1.1600   136.36       -0.297466
+     2.3333     1.1600   138.18       -0.297848
+     2.3333     1.1600   140.00       -0.298212
+     2.3333     1.1600   141.82       -0.298559
+     2.3333     1.1600   143.64       -0.298889
+     2.3333     1.1600   145.45       -0.299202
+     2.3333     1.1600   147.27       -0.299497
+     2.3333     1.1600   149.09       -0.299775
+     2.3333     1.1600   150.91       -0.300035
+     2.3333     1.1600   152.73       -0.300279
+     2.3333     1.1600   154.55       -0.300506
+     2.3333     1.1600   156.36       -0.300716
+     2.3333     1.1600   158.18       -0.300909
+     2.3333     1.1600   160.00       -0.301087
+     2.3333     1.1600   161.82       -0.301248
+     2.3333     1.1600   163.64       -0.301393
+     2.3333     1.1600   165.45       -0.301522
+     2.3333     1.1600   167.27       -0.301636
+     2.3333     1.1600   169.09       -0.301734
+     2.3333     1.1600   170.91       -0.301817
+     2.3333     1.1600   172.73       -0.301884
+     2.3333     1.1600   174.55       -0.301937
+     2.3333     1.1600   176.36       -0.301974
+     2.3333     1.1600   178.18       -0.301997
+     2.3333     1.1600   180.00       -0.302004
+
+     2.3485     1.1600     0.00       -0.457994
+     2.3485     1.1600     1.82       -0.457732
+     2.3485     1.1600     3.64       -0.456945
+     2.3485     1.1600     5.45       -0.455631
+     2.3485     1.1600     7.27       -0.453787
+     2.3485     1.1600     9.09       -0.451410
+     2.3485     1.1600    10.91       -0.448504
+     2.3485     1.1600    12.73       -0.445075
+     2.3485     1.1600    14.55       -0.441136
+     2.3485     1.1600    16.36       -0.436710
+     2.3485     1.1600    18.18       -0.431826
+     2.3485     1.1600    20.00       -0.426523
+     2.3485     1.1600    21.82       -0.420848
+     2.3485     1.1600    23.64       -0.414854
+     2.3485     1.1600    25.45       -0.408597
+     2.3485     1.1600    27.27       -0.402139
+     2.3485     1.1600    29.09       -0.395542
+     2.3485     1.1600    30.91       -0.388866
+     2.3485     1.1600    32.73       -0.382172
+     2.3485     1.1600    34.55       -0.375514
+     2.3485     1.1600    36.36       -0.368946
+     2.3485     1.1600    38.18       -0.362512
+     2.3485     1.1600    40.00       -0.356255
+     2.3485     1.1600    41.82       -0.350209
+     2.3485     1.1600    43.64       -0.344404
+     2.3485     1.1600    45.45       -0.338863
+     2.3485     1.1600    47.27       -0.333605
+     2.3485     1.1600    49.09       -0.328644
+     2.3485     1.1600    50.91       -0.323988
+     2.3485     1.1600    52.73       -0.319643
+     2.3485     1.1600    54.55       -0.315609
+     2.3485     1.1600    56.36       -0.311885
+     2.3485     1.1600    58.18       -0.308466
+     2.3485     1.1600    60.00       -0.305346
+     2.3485     1.1600    61.82       -0.302515
+     2.3485     1.1600    63.64       -0.299964
+     2.3485     1.1600    65.45       -0.297680
+     2.3485     1.1600    67.27       -0.295651
+     2.3485     1.1600    69.09       -0.293865
+     2.3485     1.1600    70.91       -0.292306
+     2.3485     1.1600    72.73       -0.290962
+     2.3485     1.1600    74.55       -0.289819
+     2.3485     1.1600    76.36       -0.288861
+     2.3485     1.1600    78.18       -0.288076
+     2.3485     1.1600    80.00       -0.287449
+     2.3485     1.1600    81.82       -0.286969
+     2.3485     1.1600    83.64       -0.286620
+     2.3485     1.1600    85.45       -0.286393
+     2.3485     1.1600    87.27       -0.286274
+     2.3485     1.1600    89.09       -0.286252
+     2.3485     1.1600    90.91       -0.286317
+     2.3485     1.1600    92.73       -0.286459
+     2.3485     1.1600    94.55       -0.286669
+     2.3485     1.1600    96.36       -0.286938
+     2.3485     1.1600    98.18       -0.287258
+     2.3485     1.1600   100.00       -0.287620
+     2.3485     1.1600   101.82       -0.288019
+     2.3485     1.1600   103.64       -0.288449
+     2.3485     1.1600   105.45       -0.288902
+     2.3485     1.1600   107.27       -0.289375
+     2.3485     1.1600   109.09       -0.289861
+     2.3485     1.1600   110.91       -0.290358
+     2.3485     1.1600   112.73       -0.290861
+     2.3485     1.1600   114.55       -0.291366
+     2.3485     1.1600   116.36       -0.291872
+     2.3485     1.1600   118.18       -0.292374
+     2.3485     1.1600   120.00       -0.292870
+     2.3485     1.1600   121.82       -0.293359
+     2.3485     1.1600   123.64       -0.293839
+     2.3485     1.1600   125.45       -0.294308
+     2.3485     1.1600   127.27       -0.294765
+     2.3485     1.1600   129.09       -0.295209
+     2.3485     1.1600   130.91       -0.295639
+     2.3485     1.1600   132.73       -0.296053
+     2.3485     1.1600   134.55       -0.296453
+     2.3485     1.1600   136.36       -0.296836
+     2.3485     1.1600   138.18       -0.297203
+     2.3485     1.1600   140.00       -0.297554
+     2.3485     1.1600   141.82       -0.297888
+     2.3485     1.1600   143.64       -0.298205
+     2.3485     1.1600   145.45       -0.298505
+     2.3485     1.1600   147.27       -0.298789
+     2.3485     1.1600   149.09       -0.299056
+     2.3485     1.1600   150.91       -0.299307
+     2.3485     1.1600   152.73       -0.299541
+     2.3485     1.1600   154.55       -0.299759
+     2.3485     1.1600   156.36       -0.299960
+     2.3485     1.1600   158.18       -0.300146
+     2.3485     1.1600   160.00       -0.300316
+     2.3485     1.1600   161.82       -0.300471
+     2.3485     1.1600   163.64       -0.300610
+     2.3485     1.1600   165.45       -0.300734
+     2.3485     1.1600   167.27       -0.300843
+     2.3485     1.1600   169.09       -0.300938
+     2.3485     1.1600   170.91       -0.301017
+     2.3485     1.1600   172.73       -0.301082
+     2.3485     1.1600   174.55       -0.301132
+     2.3485     1.1600   176.36       -0.301168
+     2.3485     1.1600   178.18       -0.301190
+     2.3485     1.1600   180.00       -0.301197
+
+     2.3636     1.1600     0.00       -0.454946
+     2.3636     1.1600     1.82       -0.454680
+     2.3636     1.1600     3.64       -0.453882
+     2.3636     1.1600     5.45       -0.452551
+     2.3636     1.1600     7.27       -0.450686
+     2.3636     1.1600     9.09       -0.448288
+     2.3636     1.1600    10.91       -0.445362
+     2.3636     1.1600    12.73       -0.441918
+     2.3636     1.1600    14.55       -0.437973
+     2.3636     1.1600    16.36       -0.433549
+     2.3636     1.1600    18.18       -0.428681
+     2.3636     1.1600    20.00       -0.423407
+     2.3636     1.1600    21.82       -0.417775
+     2.3636     1.1600    23.64       -0.411836
+     2.3636     1.1600    25.45       -0.405650
+     2.3636     1.1600    27.27       -0.399274
+     2.3636     1.1600    29.09       -0.392770
+     2.3636     1.1600    30.91       -0.386198
+     2.3636     1.1600    32.73       -0.379615
+     2.3636     1.1600    34.55       -0.373075
+     2.3636     1.1600    36.36       -0.366629
+     2.3636     1.1600    38.18       -0.360321
+     2.3636     1.1600    40.00       -0.354190
+     2.3636     1.1600    41.82       -0.348272
+     2.3636     1.1600    43.64       -0.342592
+     2.3636     1.1600    45.45       -0.337176
+     2.3636     1.1600    47.27       -0.332039
+     2.3636     1.1600    49.09       -0.327195
+     2.3636     1.1600    50.91       -0.322652
+     2.3636     1.1600    52.73       -0.318414
+     2.3636     1.1600    54.55       -0.314483
+     2.3636     1.1600    56.36       -0.310855
+     2.3636     1.1600    58.18       -0.307528
+     2.3636     1.1600    60.00       -0.304492
+     2.3636     1.1600    61.82       -0.301740
+     2.3636     1.1600    63.64       -0.299261
+     2.3636     1.1600    65.45       -0.297044
+     2.3636     1.1600    67.27       -0.295077
+     2.3636     1.1600    69.09       -0.293345
+     2.3636     1.1600    70.91       -0.291836
+     2.3636     1.1600    72.73       -0.290535
+     2.3636     1.1600    74.55       -0.289430
+     2.3636     1.1600    76.36       -0.288506
+     2.3636     1.1600    78.18       -0.287749
+     2.3636     1.1600    80.00       -0.287147
+     2.3636     1.1600    81.82       -0.286685
+     2.3636     1.1600    83.64       -0.286352
+     2.3636     1.1600    85.45       -0.286136
+     2.3636     1.1600    87.27       -0.286025
+     2.3636     1.1600    89.09       -0.286008
+     2.3636     1.1600    90.91       -0.286075
+     2.3636     1.1600    92.73       -0.286217
+     2.3636     1.1600    94.55       -0.286423
+     2.3636     1.1600    96.36       -0.286686
+     2.3636     1.1600    98.18       -0.286998
+     2.3636     1.1600   100.00       -0.287351
+     2.3636     1.1600   101.82       -0.287739
+     2.3636     1.1600   103.64       -0.288156
+     2.3636     1.1600   105.45       -0.288596
+     2.3636     1.1600   107.27       -0.289053
+     2.3636     1.1600   109.09       -0.289525
+     2.3636     1.1600   110.91       -0.290005
+     2.3636     1.1600   112.73       -0.290491
+     2.3636     1.1600   114.55       -0.290980
+     2.3636     1.1600   116.36       -0.291468
+     2.3636     1.1600   118.18       -0.291952
+     2.3636     1.1600   120.00       -0.292432
+     2.3636     1.1600   121.82       -0.292903
+     2.3636     1.1600   123.64       -0.293366
+     2.3636     1.1600   125.45       -0.293818
+     2.3636     1.1600   127.27       -0.294258
+     2.3636     1.1600   129.09       -0.294686
+     2.3636     1.1600   130.91       -0.295099
+     2.3636     1.1600   132.73       -0.295498
+     2.3636     1.1600   134.55       -0.295883
+     2.3636     1.1600   136.36       -0.296251
+     2.3636     1.1600   138.18       -0.296604
+     2.3636     1.1600   140.00       -0.296942
+     2.3636     1.1600   141.82       -0.297263
+     2.3636     1.1600   143.64       -0.297567
+     2.3636     1.1600   145.45       -0.297856
+     2.3636     1.1600   147.27       -0.298129
+     2.3636     1.1600   149.09       -0.298385
+     2.3636     1.1600   150.91       -0.298626
+     2.3636     1.1600   152.73       -0.298850
+     2.3636     1.1600   154.55       -0.299059
+     2.3636     1.1600   156.36       -0.299253
+     2.3636     1.1600   158.18       -0.299431
+     2.3636     1.1600   160.00       -0.299595
+     2.3636     1.1600   161.82       -0.299743
+     2.3636     1.1600   163.64       -0.299877
+     2.3636     1.1600   165.45       -0.299996
+     2.3636     1.1600   167.27       -0.300100
+     2.3636     1.1600   169.09       -0.300191
+     2.3636     1.1600   170.91       -0.300267
+     2.3636     1.1600   172.73       -0.300329
+     2.3636     1.1600   174.55       -0.300377
+     2.3636     1.1600   176.36       -0.300412
+     2.3636     1.1600   178.18       -0.300433
+     2.3636     1.1600   180.00       -0.300439
+
+     2.3788     1.1600     0.00       -0.451815
+     2.3788     1.1600     1.82       -0.451547
+     2.3788     1.1600     3.64       -0.450741
+     2.3788     1.1600     5.45       -0.449398
+     2.3788     1.1600     7.27       -0.447519
+     2.3788     1.1600     9.09       -0.445107
+     2.3788     1.1600    10.91       -0.442171
+     2.3788     1.1600    12.73       -0.438722
+     2.3788     1.1600    14.55       -0.434779
+     2.3788     1.1600    16.36       -0.430369
+     2.3788     1.1600    18.18       -0.425526
+     2.3788     1.1600    20.00       -0.420290
+     2.3788     1.1600    21.82       -0.414708
+     2.3788     1.1600    23.64       -0.408835
+     2.3788     1.1600    25.45       -0.402725
+     2.3788     1.1600    27.27       -0.396438
+     2.3788     1.1600    29.09       -0.390034
+     2.3788     1.1600    30.91       -0.383570
+     2.3788     1.1600    32.73       -0.377102
+     2.3788     1.1600    34.55       -0.370683
+     2.3788     1.1600    36.36       -0.364362
+     2.3788     1.1600    38.18       -0.358182
+     2.3788     1.1600    40.00       -0.352180
+     2.3788     1.1600    41.82       -0.346390
+     2.3788     1.1600    43.64       -0.340838
+     2.3788     1.1600    45.45       -0.335546
+     2.3788     1.1600    47.27       -0.330530
+     2.3788     1.1600    49.09       -0.325803
+     2.3788     1.1600    50.91       -0.321373
+     2.3788     1.1600    52.73       -0.317243
+     2.3788     1.1600    54.55       -0.313413
+     2.3788     1.1600    56.36       -0.309882
+     2.3788     1.1600    58.18       -0.306645
+     2.3788     1.1600    60.00       -0.303693
+     2.3788     1.1600    61.82       -0.301019
+     2.3788     1.1600    63.64       -0.298613
+     2.3788     1.1600    65.45       -0.296461
+     2.3788     1.1600    67.27       -0.294553
+     2.3788     1.1600    69.09       -0.292876
+     2.3788     1.1600    70.91       -0.291415
+     2.3788     1.1600    72.73       -0.290157
+     2.3788     1.1600    74.55       -0.289089
+     2.3788     1.1600    76.36       -0.288198
+     2.3788     1.1600    78.18       -0.287469
+     2.3788     1.1600    80.00       -0.286889
+     2.3788     1.1600    81.82       -0.286446
+     2.3788     1.1600    83.64       -0.286128
+     2.3788     1.1600    85.45       -0.285923
+     2.3788     1.1600    87.27       -0.285819
+     2.3788     1.1600    89.09       -0.285807
+     2.3788     1.1600    90.91       -0.285875
+     2.3788     1.1600    92.73       -0.286015
+     2.3788     1.1600    94.55       -0.286217
+     2.3788     1.1600    96.36       -0.286474
+     2.3788     1.1600    98.18       -0.286778
+     2.3788     1.1600   100.00       -0.287122
+     2.3788     1.1600   101.82       -0.287498
+     2.3788     1.1600   103.64       -0.287902
+     2.3788     1.1600   105.45       -0.288329
+     2.3788     1.1600   107.27       -0.288772
+     2.3788     1.1600   109.09       -0.289228
+     2.3788     1.1600   110.91       -0.289692
+     2.3788     1.1600   112.73       -0.290162
+     2.3788     1.1600   114.55       -0.290634
+     2.3788     1.1600   116.36       -0.291104
+     2.3788     1.1600   118.18       -0.291572
+     2.3788     1.1600   120.00       -0.292034
+     2.3788     1.1600   121.82       -0.292488
+     2.3788     1.1600   123.64       -0.292934
+     2.3788     1.1600   125.45       -0.293369
+     2.3788     1.1600   127.27       -0.293793
+     2.3788     1.1600   129.09       -0.294204
+     2.3788     1.1600   130.91       -0.294602
+     2.3788     1.1600   132.73       -0.294986
+     2.3788     1.1600   134.55       -0.295355
+     2.3788     1.1600   136.36       -0.295710
+     2.3788     1.1600   138.18       -0.296049
+     2.3788     1.1600   140.00       -0.296373
+     2.3788     1.1600   141.82       -0.296681
+     2.3788     1.1600   143.64       -0.296974
+     2.3788     1.1600   145.45       -0.297251
+     2.3788     1.1600   147.27       -0.297513
+     2.3788     1.1600   149.09       -0.297759
+     2.3788     1.1600   150.91       -0.297990
+     2.3788     1.1600   152.73       -0.298205
+     2.3788     1.1600   154.55       -0.298406
+     2.3788     1.1600   156.36       -0.298592
+     2.3788     1.1600   158.18       -0.298763
+     2.3788     1.1600   160.00       -0.298919
+     2.3788     1.1600   161.82       -0.299062
+     2.3788     1.1600   163.64       -0.299190
+     2.3788     1.1600   165.45       -0.299304
+     2.3788     1.1600   167.27       -0.299404
+     2.3788     1.1600   169.09       -0.299491
+     2.3788     1.1600   170.91       -0.299564
+     2.3788     1.1600   172.73       -0.299623
+     2.3788     1.1600   174.55       -0.299670
+     2.3788     1.1600   176.36       -0.299703
+     2.3788     1.1600   178.18       -0.299722
+     2.3788     1.1600   180.00       -0.299729
+
+     2.3939     1.1600     0.00       -0.448616
+     2.3939     1.1600     1.82       -0.448345
+     2.3939     1.1600     3.64       -0.447534
+     2.3939     1.1600     5.45       -0.446184
+     2.3939     1.1600     7.27       -0.444297
+     2.3939     1.1600     9.09       -0.441879
+     2.3939     1.1600    10.91       -0.438940
+     2.3939     1.1600    12.73       -0.435495
+     2.3939     1.1600    14.55       -0.431564
+     2.3939     1.1600    16.36       -0.427177
+     2.3939     1.1600    18.18       -0.422367
+     2.3939     1.1600    20.00       -0.417177
+     2.3939     1.1600    21.82       -0.411655
+     2.3939     1.1600    23.64       -0.405853
+     2.3939     1.1600    25.45       -0.399827
+     2.3939     1.1600    27.27       -0.393635
+     2.3939     1.1600    29.09       -0.387335
+     2.3939     1.1600    30.91       -0.380983
+     2.3939     1.1600    32.73       -0.374634
+     2.3939     1.1600    34.55       -0.368340
+     2.3939     1.1600    36.36       -0.362146
+     2.3939     1.1600    38.18       -0.356096
+     2.3939     1.1600    40.00       -0.350224
+     2.3939     1.1600    41.82       -0.344563
+     2.3939     1.1600    43.64       -0.339139
+     2.3939     1.1600    45.45       -0.333972
+     2.3939     1.1600    47.27       -0.329078
+     2.3939     1.1600    49.09       -0.324468
+     2.3939     1.1600    50.91       -0.320150
+     2.3939     1.1600    52.73       -0.316127
+     2.3939     1.1600    54.55       -0.312399
+     2.3939     1.1600    56.36       -0.308963
+     2.3939     1.1600    58.18       -0.305815
+     2.3939     1.1600    60.00       -0.302947
+     2.3939     1.1600    61.82       -0.300350
+     2.3939     1.1600    63.64       -0.298015
+     2.3939     1.1600    65.45       -0.295928
+     2.3939     1.1600    67.27       -0.294079
+     2.3939     1.1600    69.09       -0.292454
+     2.3939     1.1600    70.91       -0.291041
+     2.3939     1.1600    72.73       -0.289825
+     2.3939     1.1600    74.55       -0.288794
+     2.3939     1.1600    76.36       -0.287933
+     2.3939     1.1600    78.18       -0.287231
+     2.3939     1.1600    80.00       -0.286674
+     2.3939     1.1600    81.82       -0.286249
+     2.3939     1.1600    83.64       -0.285945
+     2.3939     1.1600    85.45       -0.285750
+     2.3939     1.1600    87.27       -0.285653
+     2.3939     1.1600    89.09       -0.285644
+     2.3939     1.1600    90.91       -0.285713
+     2.3939     1.1600    92.73       -0.285851
+     2.3939     1.1600    94.55       -0.286050
+     2.3939     1.1600    96.36       -0.286300
+     2.3939     1.1600    98.18       -0.286596
+     2.3939     1.1600   100.00       -0.286929
+     2.3939     1.1600   101.82       -0.287295
+     2.3939     1.1600   103.64       -0.287686
+     2.3939     1.1600   105.45       -0.288099
+     2.3939     1.1600   107.27       -0.288527
+     2.3939     1.1600   109.09       -0.288968
+     2.3939     1.1600   110.91       -0.289416
+     2.3939     1.1600   112.73       -0.289870
+     2.3939     1.1600   114.55       -0.290325
+     2.3939     1.1600   116.36       -0.290779
+     2.3939     1.1600   118.18       -0.291229
+     2.3939     1.1600   120.00       -0.291674
+     2.3939     1.1600   121.82       -0.292112
+     2.3939     1.1600   123.64       -0.292541
+     2.3939     1.1600   125.45       -0.292960
+     2.3939     1.1600   127.27       -0.293367
+     2.3939     1.1600   129.09       -0.293763
+     2.3939     1.1600   130.91       -0.294145
+     2.3939     1.1600   132.73       -0.294514
+     2.3939     1.1600   134.55       -0.294869
+     2.3939     1.1600   136.36       -0.295209
+     2.3939     1.1600   138.18       -0.295535
+     2.3939     1.1600   140.00       -0.295846
+     2.3939     1.1600   141.82       -0.296142
+     2.3939     1.1600   143.64       -0.296423
+     2.3939     1.1600   145.45       -0.296689
+     2.3939     1.1600   147.27       -0.296940
+     2.3939     1.1600   149.09       -0.297176
+     2.3939     1.1600   150.91       -0.297397
+     2.3939     1.1600   152.73       -0.297604
+     2.3939     1.1600   154.55       -0.297796
+     2.3939     1.1600   156.36       -0.297974
+     2.3939     1.1600   158.18       -0.298138
+     2.3939     1.1600   160.00       -0.298288
+     2.3939     1.1600   161.82       -0.298425
+     2.3939     1.1600   163.64       -0.298547
+     2.3939     1.1600   165.45       -0.298657
+     2.3939     1.1600   167.27       -0.298753
+     2.3939     1.1600   169.09       -0.298836
+     2.3939     1.1600   170.91       -0.298906
+     2.3939     1.1600   172.73       -0.298963
+     2.3939     1.1600   174.55       -0.299007
+     2.3939     1.1600   176.36       -0.299039
+     2.3939     1.1600   178.18       -0.299058
+     2.3939     1.1600   180.00       -0.299064
+
+     2.4091     1.1600     0.00       -0.445360
+     2.4091     1.1600     1.82       -0.445088
+     2.4091     1.1600     3.64       -0.444275
+     2.4091     1.1600     5.45       -0.442921
+     2.4091     1.1600     7.27       -0.441031
+     2.4091     1.1600     9.09       -0.438614
+     2.4091     1.1600    10.91       -0.435680
+     2.4091     1.1600    12.73       -0.432246
+     2.4091     1.1600    14.55       -0.428336
+     2.4091     1.1600    16.36       -0.423979
+     2.4091     1.1600    18.18       -0.419212
+     2.4091     1.1600    20.00       -0.414076
+     2.4091     1.1600    21.82       -0.408620
+     2.4091     1.1600    23.64       -0.402896
+     2.4091     1.1600    25.45       -0.396960
+     2.4091     1.1600    27.27       -0.390867
+     2.4091     1.1600    29.09       -0.384675
+     2.4091     1.1600    30.91       -0.378440
+     2.4091     1.1600    32.73       -0.372213
+     2.4091     1.1600    34.55       -0.366045
+     2.4091     1.1600    36.36       -0.359982
+     2.4091     1.1600    38.18       -0.354062
+     2.4091     1.1600    40.00       -0.348322
+     2.4091     1.1600    41.82       -0.342791
+     2.4091     1.1600    43.64       -0.337495
+     2.4091     1.1600    45.45       -0.332453
+     2.4091     1.1600    47.27       -0.327680
+     2.4091     1.1600    49.09       -0.323187
+     2.4091     1.1600    50.91       -0.318981
+     2.4091     1.1600    52.73       -0.315064
+     2.4091     1.1600    54.55       -0.311437
+     2.4091     1.1600    56.36       -0.308096
+     2.4091     1.1600    58.18       -0.305037
+     2.4091     1.1600    60.00       -0.302251
+     2.4091     1.1600    61.82       -0.299730
+     2.4091     1.1600    63.64       -0.297464
+     2.4091     1.1600    65.45       -0.295442
+     2.4091     1.1600    67.27       -0.293650
+     2.4091     1.1600    69.09       -0.292077
+     2.4091     1.1600    70.91       -0.290710
+     2.4091     1.1600    72.73       -0.289535
+     2.4091     1.1600    74.55       -0.288540
+     2.4091     1.1600    76.36       -0.287710
+     2.4091     1.1600    78.18       -0.287033
+     2.4091     1.1600    80.00       -0.286497
+     2.4091     1.1600    81.82       -0.286090
+     2.4091     1.1600    83.64       -0.285799
+     2.4091     1.1600    85.45       -0.285614
+     2.4091     1.1600    87.27       -0.285523
+     2.4091     1.1600    89.09       -0.285518
+     2.4091     1.1600    90.91       -0.285587
+     2.4091     1.1600    92.73       -0.285723
+     2.4091     1.1600    94.55       -0.285917
+     2.4091     1.1600    96.36       -0.286161
+     2.4091     1.1600    98.18       -0.286448
+     2.4091     1.1600   100.00       -0.286772
+     2.4091     1.1600   101.82       -0.287125
+     2.4091     1.1600   103.64       -0.287504
+     2.4091     1.1600   105.45       -0.287903
+     2.4091     1.1600   107.27       -0.288317
+     2.4091     1.1600   109.09       -0.288743
+     2.4091     1.1600   110.91       -0.289175
+     2.4091     1.1600   112.73       -0.289613
+     2.4091     1.1600   114.55       -0.290051
+     2.4091     1.1600   116.36       -0.290488
+     2.4091     1.1600   118.18       -0.290922
+     2.4091     1.1600   120.00       -0.291351
+     2.4091     1.1600   121.82       -0.291772
+     2.4091     1.1600   123.64       -0.292184
+     2.4091     1.1600   125.45       -0.292587
+     2.4091     1.1600   127.27       -0.292979
+     2.4091     1.1600   129.09       -0.293359
+     2.4091     1.1600   130.91       -0.293726
+     2.4091     1.1600   132.73       -0.294080
+     2.4091     1.1600   134.55       -0.294421
+     2.4091     1.1600   136.36       -0.294748
+     2.4091     1.1600   138.18       -0.295060
+     2.4091     1.1600   140.00       -0.295359
+     2.4091     1.1600   141.82       -0.295642
+     2.4091     1.1600   143.64       -0.295912
+     2.4091     1.1600   145.45       -0.296167
+     2.4091     1.1600   147.27       -0.296407
+     2.4091     1.1600   149.09       -0.296634
+     2.4091     1.1600   150.91       -0.296846
+     2.4091     1.1600   152.73       -0.297044
+     2.4091     1.1600   154.55       -0.297228
+     2.4091     1.1600   156.36       -0.297399
+     2.4091     1.1600   158.18       -0.297556
+     2.4091     1.1600   160.00       -0.297699
+     2.4091     1.1600   161.82       -0.297830
+     2.4091     1.1600   163.64       -0.297947
+     2.4091     1.1600   165.45       -0.298052
+     2.4091     1.1600   167.27       -0.298144
+     2.4091     1.1600   169.09       -0.298223
+     2.4091     1.1600   170.91       -0.298290
+     2.4091     1.1600   172.73       -0.298345
+     2.4091     1.1600   174.55       -0.298387
+     2.4091     1.1600   176.36       -0.298418
+     2.4091     1.1600   178.18       -0.298436
+     2.4091     1.1600   180.00       -0.298442
+
+     2.4242     1.1600     0.00       -0.442059
+     2.4242     1.1600     1.82       -0.441788
+     2.4242     1.1600     3.64       -0.440974
+     2.4242     1.1600     5.45       -0.439621
+     2.4242     1.1600     7.27       -0.437734
+     2.4242     1.1600     9.09       -0.435322
+     2.4242     1.1600    10.91       -0.432400
+     2.4242     1.1600    12.73       -0.428985
+     2.4242     1.1600    14.55       -0.425103
+     2.4242     1.1600    16.36       -0.420784
+     2.4242     1.1600    18.18       -0.416066
+     2.4242     1.1600    20.00       -0.410991
+     2.4242     1.1600    21.82       -0.405608
+     2.4242     1.1600    23.64       -0.399968
+     2.4242     1.1600    25.45       -0.394126
+     2.4242     1.1600    27.27       -0.388137
+     2.4242     1.1600    29.09       -0.382058
+     2.4242     1.1600    30.91       -0.375941
+     2.4242     1.1600    32.73       -0.369840
+     2.4242     1.1600    34.55       -0.363801
+     2.4242     1.1600    36.36       -0.357868
+     2.4242     1.1600    38.18       -0.352081
+     2.4242     1.1600    40.00       -0.346473
+     2.4242     1.1600    41.82       -0.341073
+     2.4242     1.1600    43.64       -0.335905
+     2.4242     1.1600    45.45       -0.330988
+     2.4242     1.1600    47.27       -0.326336
+     2.4242     1.1600    49.09       -0.321960
+     2.4242     1.1600    50.91       -0.317865
+     2.4242     1.1600    52.73       -0.314054
+     2.4242     1.1600    54.55       -0.310526
+     2.4242     1.1600    56.36       -0.307279
+     2.4242     1.1600    58.18       -0.304307
+     2.4242     1.1600    60.00       -0.301603
+     2.4242     1.1600    61.82       -0.299157
+     2.4242     1.1600    63.64       -0.296960
+     2.4242     1.1600    65.45       -0.295000
+     2.4242     1.1600    67.27       -0.293265
+     2.4242     1.1600    69.09       -0.291743
+     2.4242     1.1600    70.91       -0.290421
+     2.4242     1.1600    72.73       -0.289286
+     2.4242     1.1600    74.55       -0.288324
+     2.4242     1.1600    76.36       -0.287524
+     2.4242     1.1600    78.18       -0.286873
+     2.4242     1.1600    80.00       -0.286357
+     2.4242     1.1600    81.82       -0.285966
+     2.4242     1.1600    83.64       -0.285688
+     2.4242     1.1600    85.45       -0.285512
+     2.4242     1.1600    87.27       -0.285427
+     2.4242     1.1600    89.09       -0.285425
+     2.4242     1.1600    90.91       -0.285494
+     2.4242     1.1600    92.73       -0.285627
+     2.4242     1.1600    94.55       -0.285816
+     2.4242     1.1600    96.36       -0.286054
+     2.4242     1.1600    98.18       -0.286332
+     2.4242     1.1600   100.00       -0.286646
+     2.4242     1.1600   101.82       -0.286988
+     2.4242     1.1600   103.64       -0.287354
+     2.4242     1.1600   105.45       -0.287739
+     2.4242     1.1600   107.27       -0.288139
+     2.4242     1.1600   109.09       -0.288549
+     2.4242     1.1600   110.91       -0.288967
+     2.4242     1.1600   112.73       -0.289388
+     2.4242     1.1600   114.55       -0.289810
+     2.4242     1.1600   116.36       -0.290231
+     2.4242     1.1600   118.18       -0.290649
+     2.4242     1.1600   120.00       -0.291061
+     2.4242     1.1600   121.82       -0.291465
+     2.4242     1.1600   123.64       -0.291862
+     2.4242     1.1600   125.45       -0.292249
+     2.4242     1.1600   127.27       -0.292625
+     2.4242     1.1600   129.09       -0.292990
+     2.4242     1.1600   130.91       -0.293342
+     2.4242     1.1600   132.73       -0.293682
+     2.4242     1.1600   134.55       -0.294009
+     2.4242     1.1600   136.36       -0.294323
+     2.4242     1.1600   138.18       -0.294622
+     2.4242     1.1600   140.00       -0.294908
+     2.4242     1.1600   141.82       -0.295180
+     2.4242     1.1600   143.64       -0.295439
+     2.4242     1.1600   145.45       -0.295683
+     2.4242     1.1600   147.27       -0.295913
+     2.4242     1.1600   149.09       -0.296130
+     2.4242     1.1600   150.91       -0.296333
+     2.4242     1.1600   152.73       -0.296523
+     2.4242     1.1600   154.55       -0.296699
+     2.4242     1.1600   156.36       -0.296862
+     2.4242     1.1600   158.18       -0.297013
+     2.4242     1.1600   160.00       -0.297150
+     2.4242     1.1600   161.82       -0.297275
+     2.4242     1.1600   163.64       -0.297388
+     2.4242     1.1600   165.45       -0.297488
+     2.4242     1.1600   167.27       -0.297576
+     2.4242     1.1600   169.09       -0.297652
+     2.4242     1.1600   170.91       -0.297716
+     2.4242     1.1600   172.73       -0.297768
+     2.4242     1.1600   174.55       -0.297809
+     2.4242     1.1600   176.36       -0.297838
+     2.4242     1.1600   178.18       -0.297855
+     2.4242     1.1600   180.00       -0.297861
+
+     2.4394     1.1600     0.00       -0.438726
+     2.4394     1.1600     1.82       -0.438455
+     2.4394     1.1600     3.64       -0.437643
+     2.4394     1.1600     5.45       -0.436294
+     2.4394     1.1600     7.27       -0.434414
+     2.4394     1.1600     9.09       -0.432014
+     2.4394     1.1600    10.91       -0.429109
+     2.4394     1.1600    12.73       -0.425720
+     2.4394     1.1600    14.55       -0.421872
+     2.4394     1.1600    16.36       -0.417598
+     2.4394     1.1600    18.18       -0.412935
+     2.4394     1.1600    20.00       -0.407927
+     2.4394     1.1600    21.82       -0.402622
+     2.4394     1.1600    23.64       -0.397071
+     2.4394     1.1600    25.45       -0.391328
+     2.4394     1.1600    27.27       -0.385448
+     2.4394     1.1600    29.09       -0.379484
+     2.4394     1.1600    30.91       -0.373490
+     2.4394     1.1600    32.73       -0.367515
+     2.4394     1.1600    34.55       -0.361606
+     2.4394     1.1600    36.36       -0.355806
+     2.4394     1.1600    38.18       -0.350152
+     2.4394     1.1600    40.00       -0.344676
+     2.4394     1.1600    41.82       -0.339407
+     2.4394     1.1600    43.64       -0.334367
+     2.4394     1.1600    45.45       -0.329575
+     2.4394     1.1600    47.27       -0.325044
+     2.4394     1.1600    49.09       -0.320783
+     2.4394     1.1600    50.91       -0.316798
+     2.4394     1.1600    52.73       -0.313092
+     2.4394     1.1600    54.55       -0.309663
+     2.4394     1.1600    56.36       -0.306509
+     2.4394     1.1600    58.18       -0.303623
+     2.4394     1.1600    60.00       -0.300999
+     2.4394     1.1600    61.82       -0.298627
+     2.4394     1.1600    63.64       -0.296497
+     2.4394     1.1600    65.45       -0.294599
+     2.4394     1.1600    67.27       -0.292919
+     2.4394     1.1600    69.09       -0.291447
+     2.4394     1.1600    70.91       -0.290169
+     2.4394     1.1600    72.73       -0.289073
+     2.4394     1.1600    74.55       -0.288145
+     2.4394     1.1600    76.36       -0.287374
+     2.4394     1.1600    78.18       -0.286747
+     2.4394     1.1600    80.00       -0.286251
+     2.4394     1.1600    81.82       -0.285876
+     2.4394     1.1600    83.64       -0.285610
+     2.4394     1.1600    85.45       -0.285442
+     2.4394     1.1600    87.27       -0.285362
+     2.4394     1.1600    89.09       -0.285362
+     2.4394     1.1600    90.91       -0.285431
+     2.4394     1.1600    92.73       -0.285561
+     2.4394     1.1600    94.55       -0.285745
+     2.4394     1.1600    96.36       -0.285976
+     2.4394     1.1600    98.18       -0.286246
+     2.4394     1.1600   100.00       -0.286549
+     2.4394     1.1600   101.82       -0.286880
+     2.4394     1.1600   103.64       -0.287234
+     2.4394     1.1600   105.45       -0.287605
+     2.4394     1.1600   107.27       -0.287991
+     2.4394     1.1600   109.09       -0.288386
+     2.4394     1.1600   110.91       -0.288788
+     2.4394     1.1600   112.73       -0.289193
+     2.4394     1.1600   114.55       -0.289600
+     2.4394     1.1600   116.36       -0.290005
+     2.4394     1.1600   118.18       -0.290406
+     2.4394     1.1600   120.00       -0.290802
+     2.4394     1.1600   121.82       -0.291191
+     2.4394     1.1600   123.64       -0.291572
+     2.4394     1.1600   125.45       -0.291943
+     2.4394     1.1600   127.27       -0.292304
+     2.4394     1.1600   129.09       -0.292654
+     2.4394     1.1600   130.91       -0.292992
+     2.4394     1.1600   132.73       -0.293318
+     2.4394     1.1600   134.55       -0.293632
+     2.4394     1.1600   136.36       -0.293932
+     2.4394     1.1600   138.18       -0.294219
+     2.4394     1.1600   140.00       -0.294493
+     2.4394     1.1600   141.82       -0.294754
+     2.4394     1.1600   143.64       -0.295001
+     2.4394     1.1600   145.45       -0.295235
+     2.4394     1.1600   147.27       -0.295456
+     2.4394     1.1600   149.09       -0.295663
+     2.4394     1.1600   150.91       -0.295857
+     2.4394     1.1600   152.73       -0.296039
+     2.4394     1.1600   154.55       -0.296208
+     2.4394     1.1600   156.36       -0.296364
+     2.4394     1.1600   158.18       -0.296508
+     2.4394     1.1600   160.00       -0.296639
+     2.4394     1.1600   161.82       -0.296759
+     2.4394     1.1600   163.64       -0.296866
+     2.4394     1.1600   165.45       -0.296962
+     2.4394     1.1600   167.27       -0.297046
+     2.4394     1.1600   169.09       -0.297119
+     2.4394     1.1600   170.91       -0.297180
+     2.4394     1.1600   172.73       -0.297230
+     2.4394     1.1600   174.55       -0.297269
+     2.4394     1.1600   176.36       -0.297296
+     2.4394     1.1600   178.18       -0.297313
+     2.4394     1.1600   180.00       -0.297318
+
+     2.4545     1.1600     0.00       -0.435370
+     2.4545     1.1600     1.82       -0.435100
+     2.4545     1.1600     3.64       -0.434291
+     2.4545     1.1600     5.45       -0.432949
+     2.4545     1.1600     7.27       -0.431080
+     2.4545     1.1600     9.09       -0.428697
+     2.4545     1.1600    10.91       -0.425815
+     2.4545     1.1600    12.73       -0.422457
+     2.4545     1.1600    14.55       -0.418650
+     2.4545     1.1600    16.36       -0.414426
+     2.4545     1.1600    18.18       -0.409825
+     2.4545     1.1600    20.00       -0.404889
+     2.4545     1.1600    21.82       -0.399667
+     2.4545     1.1600    23.64       -0.394210
+     2.4545     1.1600    25.45       -0.388570
+     2.4545     1.1600    27.27       -0.382800
+     2.4545     1.1600    29.09       -0.376955
+     2.4545     1.1600    30.91       -0.371085
+     2.4545     1.1600    32.73       -0.365239
+     2.4545     1.1600    34.55       -0.359462
+     2.4545     1.1600    36.36       -0.353795
+     2.4545     1.1600    38.18       -0.348274
+     2.4545     1.1600    40.00       -0.342931
+     2.4545     1.1600    41.82       -0.337793
+     2.4545     1.1600    43.64       -0.332881
+     2.4545     1.1600    45.45       -0.328213
+     2.4545     1.1600    47.27       -0.323802
+     2.4545     1.1600    49.09       -0.319656
+     2.4545     1.1600    50.91       -0.315780
+     2.4545     1.1600    52.73       -0.312178
+     2.4545     1.1600    54.55       -0.308847
+     2.4545     1.1600    56.36       -0.305784
+     2.4545     1.1600    58.18       -0.302983
+     2.4545     1.1600    60.00       -0.300438
+     2.4545     1.1600    61.82       -0.298138
+     2.4545     1.1600    63.64       -0.296075
+     2.4545     1.1600    65.45       -0.294237
+     2.4545     1.1600    67.27       -0.292612
+     2.4545     1.1600    69.09       -0.291188
+     2.4545     1.1600    70.91       -0.289953
+     2.4545     1.1600    72.73       -0.288894
+     2.4545     1.1600    74.55       -0.287999
+     2.4545     1.1600    76.36       -0.287256
+     2.4545     1.1600    78.18       -0.286652
+     2.4545     1.1600    80.00       -0.286175
+     2.4545     1.1600    81.82       -0.285815
+     2.4545     1.1600    83.64       -0.285560
+     2.4545     1.1600    85.45       -0.285400
+     2.4545     1.1600    87.27       -0.285326
+     2.4545     1.1600    89.09       -0.285327
+     2.4545     1.1600    90.91       -0.285395
+     2.4545     1.1600    92.73       -0.285523
+     2.4545     1.1600    94.55       -0.285702
+     2.4545     1.1600    96.36       -0.285925
+     2.4545     1.1600    98.18       -0.286186
+     2.4545     1.1600   100.00       -0.286479
+     2.4545     1.1600   101.82       -0.286799
+     2.4545     1.1600   103.64       -0.287140
+     2.4545     1.1600   105.45       -0.287498
+     2.4545     1.1600   107.27       -0.287869
+     2.4545     1.1600   109.09       -0.288250
+     2.4545     1.1600   110.91       -0.288637
+     2.4545     1.1600   112.73       -0.289027
+     2.4545     1.1600   114.55       -0.289418
+     2.4545     1.1600   116.36       -0.289807
+     2.4545     1.1600   118.18       -0.290192
+     2.4545     1.1600   120.00       -0.290572
+     2.4545     1.1600   121.82       -0.290946
+     2.4545     1.1600   123.64       -0.291311
+     2.4545     1.1600   125.45       -0.291667
+     2.4545     1.1600   127.27       -0.292014
+     2.4545     1.1600   129.09       -0.292349
+     2.4545     1.1600   130.91       -0.292674
+     2.4545     1.1600   132.73       -0.292986
+     2.4545     1.1600   134.55       -0.293286
+     2.4545     1.1600   136.36       -0.293574
+     2.4545     1.1600   138.18       -0.293849
+     2.4545     1.1600   140.00       -0.294111
+     2.4545     1.1600   141.82       -0.294361
+     2.4545     1.1600   143.64       -0.294597
+     2.4545     1.1600   145.45       -0.294821
+     2.4545     1.1600   147.27       -0.295032
+     2.4545     1.1600   149.09       -0.295231
+     2.4545     1.1600   150.91       -0.295416
+     2.4545     1.1600   152.73       -0.295590
+     2.4545     1.1600   154.55       -0.295751
+     2.4545     1.1600   156.36       -0.295901
+     2.4545     1.1600   158.18       -0.296038
+     2.4545     1.1600   160.00       -0.296164
+     2.4545     1.1600   161.82       -0.296278
+     2.4545     1.1600   163.64       -0.296381
+     2.4545     1.1600   165.45       -0.296472
+     2.4545     1.1600   167.27       -0.296553
+     2.4545     1.1600   169.09       -0.296622
+     2.4545     1.1600   170.91       -0.296681
+     2.4545     1.1600   172.73       -0.296728
+     2.4545     1.1600   174.55       -0.296766
+     2.4545     1.1600   176.36       -0.296792
+     2.4545     1.1600   178.18       -0.296808
+     2.4545     1.1600   180.00       -0.296813
+
+     2.4697     1.1600     0.00       -0.432000
+     2.4697     1.1600     1.82       -0.431732
+     2.4697     1.1600     3.64       -0.430929
+     2.4697     1.1600     5.45       -0.429596
+     2.4697     1.1600     7.27       -0.427741
+     2.4697     1.1600     9.09       -0.425379
+     2.4697     1.1600    10.91       -0.422525
+     2.4697     1.1600    12.73       -0.419203
+     2.4697     1.1600    14.55       -0.415442
+     2.4697     1.1600    16.36       -0.411274
+     2.4697     1.1600    18.18       -0.406739
+     2.4697     1.1600    20.00       -0.401881
+     2.4697     1.1600    21.82       -0.396746
+     2.4697     1.1600    23.64       -0.391386
+     2.4697     1.1600    25.45       -0.385852
+     2.4697     1.1600    27.27       -0.380197
+     2.4697     1.1600    29.09       -0.374473
+     2.4697     1.1600    30.91       -0.368729
+     2.4697     1.1600    32.73       -0.363013
+     2.4697     1.1600    34.55       -0.357369
+     2.4697     1.1600    36.36       -0.351836
+     2.4697     1.1600    38.18       -0.346449
+     2.4697     1.1600    40.00       -0.341238
+     2.4697     1.1600    41.82       -0.336230
+     2.4697     1.1600    43.64       -0.331446
+     2.4697     1.1600    45.45       -0.326901
+     2.4697     1.1600    47.27       -0.322608
+     2.4697     1.1600    49.09       -0.318576
+     2.4697     1.1600    50.91       -0.314809
+     2.4697     1.1600    52.73       -0.311309
+     2.4697     1.1600    54.55       -0.308074
+     2.4697     1.1600    56.36       -0.305101
+     2.4697     1.1600    58.18       -0.302385
+     2.4697     1.1600    60.00       -0.299917
+     2.4697     1.1600    61.82       -0.297688
+     2.4697     1.1600    63.64       -0.295690
+     2.4697     1.1600    65.45       -0.293911
+     2.4697     1.1600    67.27       -0.292339
+     2.4697     1.1600    69.09       -0.290963
+     2.4697     1.1600    70.91       -0.289769
+     2.4697     1.1600    72.73       -0.288747
+     2.4697     1.1600    74.55       -0.287884
+     2.4697     1.1600    76.36       -0.287168
+     2.4697     1.1600    78.18       -0.286586
+     2.4697     1.1600    80.00       -0.286128
+     2.4697     1.1600    81.82       -0.285782
+     2.4697     1.1600    83.64       -0.285538
+     2.4697     1.1600    85.45       -0.285385
+     2.4697     1.1600    87.27       -0.285315
+     2.4697     1.1600    89.09       -0.285318
+     2.4697     1.1600    90.91       -0.285385
+     2.4697     1.1600    92.73       -0.285509
+     2.4697     1.1600    94.55       -0.285683
+     2.4697     1.1600    96.36       -0.285899
+     2.4697     1.1600    98.18       -0.286151
+     2.4697     1.1600   100.00       -0.286434
+     2.4697     1.1600   101.82       -0.286742
+     2.4697     1.1600   103.64       -0.287071
+     2.4697     1.1600   105.45       -0.287416
+     2.4697     1.1600   107.27       -0.287773
+     2.4697     1.1600   109.09       -0.288139
+     2.4697     1.1600   110.91       -0.288511
+     2.4697     1.1600   112.73       -0.288886
+     2.4697     1.1600   114.55       -0.289261
+     2.4697     1.1600   116.36       -0.289635
+     2.4697     1.1600   118.18       -0.290005
+     2.4697     1.1600   120.00       -0.290370
+     2.4697     1.1600   121.82       -0.290728
+     2.4697     1.1600   123.64       -0.291079
+     2.4697     1.1600   125.45       -0.291420
+     2.4697     1.1600   127.27       -0.291752
+     2.4697     1.1600   129.09       -0.292074
+     2.4697     1.1600   130.91       -0.292384
+     2.4697     1.1600   132.73       -0.292683
+     2.4697     1.1600   134.55       -0.292971
+     2.4697     1.1600   136.36       -0.293246
+     2.4697     1.1600   138.18       -0.293509
+     2.4697     1.1600   140.00       -0.293760
+     2.4697     1.1600   141.82       -0.293999
+     2.4697     1.1600   143.64       -0.294225
+     2.4697     1.1600   145.45       -0.294439
+     2.4697     1.1600   147.27       -0.294641
+     2.4697     1.1600   149.09       -0.294831
+     2.4697     1.1600   150.91       -0.295008
+     2.4697     1.1600   152.73       -0.295174
+     2.4697     1.1600   154.55       -0.295329
+     2.4697     1.1600   156.36       -0.295471
+     2.4697     1.1600   158.18       -0.295603
+     2.4697     1.1600   160.00       -0.295723
+     2.4697     1.1600   161.82       -0.295832
+     2.4697     1.1600   163.64       -0.295930
+     2.4697     1.1600   165.45       -0.296017
+     2.4697     1.1600   167.27       -0.296094
+     2.4697     1.1600   169.09       -0.296160
+     2.4697     1.1600   170.91       -0.296216
+     2.4697     1.1600   172.73       -0.296262
+     2.4697     1.1600   174.55       -0.296297
+     2.4697     1.1600   176.36       -0.296323
+     2.4697     1.1600   178.18       -0.296338
+     2.4697     1.1600   180.00       -0.296343
+
+     2.4848     1.1600     0.00       -0.428625
+     2.4848     1.1600     1.82       -0.428359
+     2.4848     1.1600     3.64       -0.427563
+     2.4848     1.1600     5.45       -0.426242
+     2.4848     1.1600     7.27       -0.424405
+     2.4848     1.1600     9.09       -0.422067
+     2.4848     1.1600    10.91       -0.419246
+     2.4848     1.1600    12.73       -0.415965
+     2.4848     1.1600    14.55       -0.412254
+     2.4848     1.1600    16.36       -0.408147
+     2.4848     1.1600    18.18       -0.403683
+     2.4848     1.1600    20.00       -0.398906
+     2.4848     1.1600    21.82       -0.393863
+     2.4848     1.1600    23.64       -0.388603
+     2.4848     1.1600    25.45       -0.383179
+     2.4848     1.1600    27.27       -0.377640
+     2.4848     1.1600    29.09       -0.372039
+     2.4848     1.1600    30.91       -0.366422
+     2.4848     1.1600    32.73       -0.360837
+     2.4848     1.1600    34.55       -0.355326
+     2.4848     1.1600    36.36       -0.349927
+     2.4848     1.1600    38.18       -0.344673
+     2.4848     1.1600    40.00       -0.339595
+     2.4848     1.1600    41.82       -0.334717
+     2.4848     1.1600    43.64       -0.330059
+     2.4848     1.1600    45.45       -0.325637
+     2.4848     1.1600    47.27       -0.321462
+     2.4848     1.1600    49.09       -0.317542
+     2.4848     1.1600    50.91       -0.313882
+     2.4848     1.1600    52.73       -0.310483
+     2.4848     1.1600    54.55       -0.307343
+     2.4848     1.1600    56.36       -0.304459
+     2.4848     1.1600    58.18       -0.301825
+     2.4848     1.1600    60.00       -0.299433
+     2.4848     1.1600    61.82       -0.297275
+     2.4848     1.1600    63.64       -0.295340
+     2.4848     1.1600    65.45       -0.293619
+     2.4848     1.1600    67.27       -0.292099
+     2.4848     1.1600    69.09       -0.290768
+     2.4848     1.1600    70.91       -0.289616
+     2.4848     1.1600    72.73       -0.288630
+     2.4848     1.1600    74.55       -0.287797
+     2.4848     1.1600    76.36       -0.287106
+     2.4848     1.1600    78.18       -0.286546
+     2.4848     1.1600    80.00       -0.286106
+     2.4848     1.1600    81.82       -0.285773
+     2.4848     1.1600    83.64       -0.285539
+     2.4848     1.1600    85.45       -0.285394
+     2.4848     1.1600    87.27       -0.285327
+     2.4848     1.1600    89.09       -0.285331
+     2.4848     1.1600    90.91       -0.285397
+     2.4848     1.1600    92.73       -0.285518
+     2.4848     1.1600    94.55       -0.285686
+     2.4848     1.1600    96.36       -0.285895
+     2.4848     1.1600    98.18       -0.286138
+     2.4848     1.1600   100.00       -0.286411
+     2.4848     1.1600   101.82       -0.286708
+     2.4848     1.1600   103.64       -0.287024
+     2.4848     1.1600   105.45       -0.287356
+     2.4848     1.1600   107.27       -0.287700
+     2.4848     1.1600   109.09       -0.288052
+     2.4848     1.1600   110.91       -0.288409
+     2.4848     1.1600   112.73       -0.288769
+     2.4848     1.1600   114.55       -0.289129
+     2.4848     1.1600   116.36       -0.289488
+     2.4848     1.1600   118.18       -0.289843
+     2.4848     1.1600   120.00       -0.290193
+     2.4848     1.1600   121.82       -0.290536
+     2.4848     1.1600   123.64       -0.290872
+     2.4848     1.1600   125.45       -0.291199
+     2.4848     1.1600   127.27       -0.291517
+     2.4848     1.1600   129.09       -0.291825
+     2.4848     1.1600   130.91       -0.292122
+     2.4848     1.1600   132.73       -0.292408
+     2.4848     1.1600   134.55       -0.292683
+     2.4848     1.1600   136.36       -0.292947
+     2.4848     1.1600   138.18       -0.293199
+     2.4848     1.1600   140.00       -0.293438
+     2.4848     1.1600   141.82       -0.293667
+     2.4848     1.1600   143.64       -0.293883
+     2.4848     1.1600   145.45       -0.294087
+     2.4848     1.1600   147.27       -0.294280
+     2.4848     1.1600   149.09       -0.294462
+     2.4848     1.1600   150.91       -0.294631
+     2.4848     1.1600   152.73       -0.294790
+     2.4848     1.1600   154.55       -0.294937
+     2.4848     1.1600   156.36       -0.295073
+     2.4848     1.1600   158.18       -0.295199
+     2.4848     1.1600   160.00       -0.295313
+     2.4848     1.1600   161.82       -0.295418
+     2.4848     1.1600   163.64       -0.295511
+     2.4848     1.1600   165.45       -0.295595
+     2.4848     1.1600   167.27       -0.295668
+     2.4848     1.1600   169.09       -0.295731
+     2.4848     1.1600   170.91       -0.295785
+     2.4848     1.1600   172.73       -0.295828
+     2.4848     1.1600   174.55       -0.295862
+     2.4848     1.1600   176.36       -0.295886
+     2.4848     1.1600   178.18       -0.295900
+     2.4848     1.1600   180.00       -0.295905
+
+     2.5000     1.1600     0.00       -0.425253
+     2.5000     1.1600     1.82       -0.424989
+     2.5000     1.1600     3.64       -0.424201
+     2.5000     1.1600     5.45       -0.422894
+     2.5000     1.1600     7.27       -0.421078
+     2.5000     1.1600     9.09       -0.418768
+     2.5000     1.1600    10.91       -0.415983
+     2.5000     1.1600    12.73       -0.412748
+     2.5000     1.1600    14.55       -0.409092
+     2.5000     1.1600    16.36       -0.405049
+     2.5000     1.1600    18.18       -0.400660
+     2.5000     1.1600    20.00       -0.395968
+     2.5000     1.1600    21.82       -0.391019
+     2.5000     1.1600    23.64       -0.385863
+     2.5000     1.1600    25.45       -0.380550
+     2.5000     1.1600    27.27       -0.375130
+     2.5000     1.1600    29.09       -0.369653
+     2.5000     1.1600    30.91       -0.364165
+     2.5000     1.1600    32.73       -0.358712
+     2.5000     1.1600    34.55       -0.353334
+     2.5000     1.1600    36.36       -0.348068
+     2.5000     1.1600    38.18       -0.342948
+     2.5000     1.1600    40.00       -0.338002
+     2.5000     1.1600    41.82       -0.333253
+     2.5000     1.1600    43.64       -0.328720
+     2.5000     1.1600    45.45       -0.324419
+     2.5000     1.1600    47.27       -0.320361
+     2.5000     1.1600    49.09       -0.316552
+     2.5000     1.1600    50.91       -0.312998
+     2.5000     1.1600    52.73       -0.309698
+     2.5000     1.1600    54.55       -0.306652
+     2.5000     1.1600    56.36       -0.303855
+     2.5000     1.1600    58.18       -0.301302
+     2.5000     1.1600    60.00       -0.298985
+     2.5000     1.1600    61.82       -0.296895
+     2.5000     1.1600    63.64       -0.295023
+     2.5000     1.1600    65.45       -0.293358
+     2.5000     1.1600    67.27       -0.291888
+     2.5000     1.1600    69.09       -0.290603
+     2.5000     1.1600    70.91       -0.289490
+     2.5000     1.1600    72.73       -0.288538
+     2.5000     1.1600    74.55       -0.287735
+     2.5000     1.1600    76.36       -0.287070
+     2.5000     1.1600    78.18       -0.286531
+     2.5000     1.1600    80.00       -0.286107
+     2.5000     1.1600    81.82       -0.285788
+     2.5000     1.1600    83.64       -0.285563
+     2.5000     1.1600    85.45       -0.285424
+     2.5000     1.1600    87.27       -0.285361
+     2.5000     1.1600    89.09       -0.285366
+     2.5000     1.1600    90.91       -0.285430
+     2.5000     1.1600    92.73       -0.285547
+     2.5000     1.1600    94.55       -0.285709
+     2.5000     1.1600    96.36       -0.285911
+     2.5000     1.1600    98.18       -0.286146
+     2.5000     1.1600   100.00       -0.286408
+     2.5000     1.1600   101.82       -0.286694
+     2.5000     1.1600   103.64       -0.286998
+     2.5000     1.1600   105.45       -0.287318
+     2.5000     1.1600   107.27       -0.287648
+     2.5000     1.1600   109.09       -0.287986
+     2.5000     1.1600   110.91       -0.288329
+     2.5000     1.1600   112.73       -0.288674
+     2.5000     1.1600   114.55       -0.289019
+     2.5000     1.1600   116.36       -0.289363
+     2.5000     1.1600   118.18       -0.289703
+     2.5000     1.1600   120.00       -0.290039
+     2.5000     1.1600   121.82       -0.290367
+     2.5000     1.1600   123.64       -0.290689
+     2.5000     1.1600   125.45       -0.291002
+     2.5000     1.1600   127.27       -0.291307
+     2.5000     1.1600   129.09       -0.291601
+     2.5000     1.1600   130.91       -0.291885
+     2.5000     1.1600   132.73       -0.292159
+     2.5000     1.1600   134.55       -0.292422
+     2.5000     1.1600   136.36       -0.292674
+     2.5000     1.1600   138.18       -0.292915
+     2.5000     1.1600   140.00       -0.293144
+     2.5000     1.1600   141.82       -0.293362
+     2.5000     1.1600   143.64       -0.293569
+     2.5000     1.1600   145.45       -0.293764
+     2.5000     1.1600   147.27       -0.293948
+     2.5000     1.1600   149.09       -0.294121
+     2.5000     1.1600   150.91       -0.294283
+     2.5000     1.1600   152.73       -0.294435
+     2.5000     1.1600   154.55       -0.294575
+     2.5000     1.1600   156.36       -0.294705
+     2.5000     1.1600   158.18       -0.294825
+     2.5000     1.1600   160.00       -0.294934
+     2.5000     1.1600   161.82       -0.295034
+     2.5000     1.1600   163.64       -0.295123
+     2.5000     1.1600   165.45       -0.295203
+     2.5000     1.1600   167.27       -0.295273
+     2.5000     1.1600   169.09       -0.295333
+     2.5000     1.1600   170.91       -0.295384
+     2.5000     1.1600   172.73       -0.295425
+     2.5000     1.1600   174.55       -0.295458
+     2.5000     1.1600   176.36       -0.295481
+     2.5000     1.1600   178.18       -0.295494
+     2.5000     1.1600   180.00       -0.295499
+
Index: examples/Test/Zmat/HCN_zmat.path
===================================================================
--- examples/Test/Zmat/HCN_zmat.path	(revision 0)
+++ examples/Test/Zmat/HCN_zmat.path	(revision 1)
@@ -0,0 +1,25 @@
+ &path
+ nat=3, ! Number of atoms
+ ngeomi=3,! Number of initial geometries
+ ngeomf=12, !Number of geometries along the path
+ Ereac=-0.499465, ! Reactant energy
+ EProd=-0.481645, ! Product energy
+ PathOnly=.F. ! Optimize the path
+ Prog='test' ! Use analytical HCN PES
+ MaxCyc=10, !Maximum number of iterations
+ /
+  3
+ Energy :      0.04937364
+ H     0.0000     0.0000     0.0340
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+  3
+ Energy :      0.04937364
+ H     0.0000     1.1000     1.1030
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+3
+ CNH
+H 0.000000    0.000000    3.3
+C 0.000000    0.000000    1.1
+N 0.000000    0.000000    2.26
Index: examples/Test/Zmat/Dep_tscan_movie
===================================================================
--- examples/Test/Zmat/Dep_tscan_movie	(revision 0)
+++ examples/Test/Zmat/Dep_tscan_movie	(revision 1)
@@ -0,0 +1,86 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NGplot=${Nom}_movie.gplot
+
+# For gif files (that may be joined into an mpeg)
+Term=gif
+Ext=gif
+# For postscript eps files
+#Term="postscript eps enhanced color solid"
+#Ext=eps
+# DefTerm is the default terminal (=screen)
+# wxt is better for Linux, but x11 is more general
+DefTerm=x11
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NGplot
+#!/usr/bin/gnuplot 
+ set xrange [1.:2.25]
+ set yrange [-10:190]
+ set pointsize 2
+ set style line 1 linetype 3 pointtype 3 linewidth 3
+ unset key
+ set term $DefTerm
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ echo "plot \"HCN_irc.dat\" u 1:3 w l lw 2" >> ${NGplot}
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> ${NGplot}
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p ls 1" >> ${NGplot}
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l ls 1" >> ${NGplot}
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p ls 1" >> ${NGplot}
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l ls 1" >> ${NGplot}
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp ls 1" >> ${NGplot}
+fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> ${NGplot}
+ fi
+ IMov=`echo $i | awk '{ It="000" $1; l=length(It); print substr(It,l-2,3)}' `
+ cat <<EOF >> ${NGplot}
+ pause 0.5
+ set term $Term
+ set output "${Nom}_${IMov}.$Ext"
+ replot
+ unset output
+ set term $DefTerm
+EOF
+ done
+let i=ItMax
+ awk -f Path2dat.awk  ${Nom}.${i} > ${Nom}_${i}.dat
+ echo "plot \"HCN_irc.dat\" u 1:3 w l lw 2" >> ${NGplot}
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> ${NGplot}
+ fi
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp ls 1" >> ${NGplot}
+ IMov=`echo $i | awk '{ It="000" $1; l=length(It); print substr(It,l-2,3)}' `
+ cat <<EOF >> ${NGplot}
+ set term $Term
+ set output "${Nom}_${IMov}.$Ext"
+ replot
+ unset output
+ set term $DefTerm
+EOF
+
+echo "./${NGplot}      to see the path"
+chmod u+x ./${NGplot}
\ No newline at end of file

Property changes on: examples/Test/Zmat/Dep_tscan_movie
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/Dep_tscan_p
===================================================================
--- examples/Test/Zmat/Dep_tscan_p	(revision 0)
+++ examples/Test/Zmat/Dep_tscan_p	(revision 1)
@@ -0,0 +1,113 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NomGplot=${Nom}_p.gplot
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+
+if [ -s ${Nom}_cart.0 ]; then
+ Ext=_cart
+elif [ -s ${Nom}.0 ]; then
+ Ext=""
+else
+ echo "Cannot find ${Nom}.0 nor ${Nom}_cart.0 -- ERROR"
+ exit
+fi
+
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NomGplot
+#!/usr/bin/gnuplot -persist
+ set term x11
+ set pointsize 2
+ set origin 0.,0.
+ set size square 1
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}${Ext}.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+if [ "$Ext" = "" ]; then
+# We are analysing a calculation done in cartesian. 
+# We have to  analyse the spline file and maybe also the tangent file.
+ if [ -s ${Nom}_spline.${i} ]; then
+   xyz2scan ${Nom}_spline.${i}  > /dev/null
+   mv Scan.dat  ${Nom}_spline_${i}.dat
+ fi
+ if [  -s ${Nom}_dbgtgt.${i} ]; then
+   xyz2scan ${Nom}_dbgtgt.${i}  > /dev/null
+   mv Scan.dat  ${Nom}_dbgtgt_${i}.dat
+ fi
+fi
+  
+ cat <<EOF >>  $NomGplot
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ "$Ext" = "_cart" ]; then
+   if [ -s ${Nom}_spline.${i} ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+   elif [  -s ${Nom}_dbgtgt.${i} ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_dbgtgt.${i}\" u 2:(\$4*180./pi) w l" >> $NomGplot
+   else
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+   fi
+ else
+   if [ -s ${Nom}_spline_${i}.dat ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_spline_${i}.dat\" u 1:3 w lp" >> $NomGplot
+   elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+     echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+   else
+     echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+   fi
+ fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+ fi
+ echo "pause -1" >> $NomGplot
+ done
+let i=ItMax
+ xyz2scan ${Nom}${Ext}.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ echo "pause -1" >> $NomGplot
+chmod u+x $NomGplot
+
+echo "./$NomGplot      to see the path"
\ No newline at end of file

Property changes on: examples/Test/Zmat/Dep_tscan_p
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/Dep_tgt.awk
===================================================================
--- examples/Test/Zmat/Dep_tgt.awk	(revision 0)
+++ examples/Test/Zmat/Dep_tgt.awk	(revision 1)
@@ -0,0 +1,19 @@
+BEGIN{
+it=-1
+pi=3.14159265358979
+}
+{ if ($1=="PATHNAME") { i=index($3,",");  if (i==0) {Nom=$3} else {Nom=substr($3,1,i-1) }; Nom=Nom "_tgt_";next}
+}
+
+/Visualization of tangents/,/END of tangents/ {
+    if ($1=="Visualization") { it++; File=Nom  it ".dat"; 
+               print "#Tangents for Iopt=" it > File; next;}
+    if ($1=="END") { next }
+    if (NF==0) {print "" >> File; next}
+    printf(" %12.5f %12.5f %12.5f",$1*1.,$2*1.,$3*180./pi) >> File
+	for(j=4;j<=NF;j+=3) { printf(" %12.5f %12.5f %12.5f",$j*1.,$(j+1)*180./pi,$(j+2)*180./pi) >> File }  
+    print "" >> File
+	}
+END{
+}
+   

Property changes on: examples/Test/Zmat/Dep_tgt.awk
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/Path2dat.awk
===================================================================
--- examples/Test/Zmat/Path2dat.awk	(revision 0)
+++ examples/Test/Zmat/Path2dat.awk	(revision 1)
@@ -0,0 +1,15 @@
+BEGIN{
+	Nat=3
+Pi=3.141592653589793238462643383
+ConvDeg=1.
+}
+{ getline;
+ getline; printf(" %.6f ",$3)
+ getline; printf(" %.6f %.6f",$3,$5*ConvDeg)
+ for (i=4;i<=Nat;i++) {
+ getline; printf(" %.6f %.6f %.6f ",$3,$5*ConvDeg,$7*ConvDeg)
+ }
+  print ""
+ }
+ END{
+	 }

Property changes on: examples/Test/Zmat/Path2dat.awk
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/HCN_PES_2D.dat
===================================================================
--- examples/Test/Zmat/HCN_PES_2D.dat	(revision 0)
+++ examples/Test/Zmat/HCN_PES_2D.dat	(revision 1)
@@ -0,0 +1,5334 @@
+
+#Surface 0 of 1 surfaces
+
+# Contour 0, label:     -0.2
+ 1.76942  0 -0.2 
+ 1.76781  1.82 -0.2 
+ 1.76288  3.64 -0.2 
+ 1.7576  4.7807 -0.2 
+ 1.75456  5.45 -0.2 
+ 1.7428  7.27 -0.2 
+ 1.7424  7.3191 -0.2 
+ 1.72779  9.09 -0.2 
+ 1.7273  9.14015 -0.2 
+ 1.7121  10.6404 -0.2 
+ 1.70928  10.91 -0.2 
+ 1.697  11.9528 -0.2 
+ 1.68718  12.73 -0.2 
+ 1.6818  13.1275 -0.2 
+ 1.6667  14.1936 -0.2 
+ 1.66134  14.55 -0.2 
+ 1.6515  15.1821 -0.2 
+ 1.6364  16.0871 -0.2 
+ 1.63158  16.36 -0.2 
+ 1.6212  16.9562 -0.2 
+ 1.6061  17.7642 -0.2 
+ 1.59772  18.18 -0.2 
+ 1.5909  18.5329 -0.2 
+ 1.5758  19.2757 -0.2 
+ 1.5606  19.9479 -0.2 
+ 1.55939  20 -0.2 
+ 1.5455  20.6439 -0.2 
+ 1.5303  21.2835 -0.2 
+ 1.51645  21.82 -0.2 
+ 1.5152  21.8731 -0.2 
+ 1.5  22.4981 -0.2 
+ 1.4848  23.0684 -0.2 
+ 1.4697  23.5895 -0.2 
+ 1.46818  23.64 -0.2 
+ 1.4545  24.1489 -0.2 
+ 1.4394  24.6708 -0.2 
+ 1.4242  25.15 -0.2 
+ 1.4141  25.45 -0.2 
+ 1.4091  25.622 -0.2 
+ 1.3939  26.1182 -0.2 
+ 1.3788  26.5759 -0.2 
+ 1.3636  26.9989 -0.2 
+ 1.3533  27.27 -0.2 
+ 1.3485  27.4178 -0.2 
+ 1.3333  27.8629 -0.2 
+ 1.3182  28.276 -0.2 
+ 1.303  28.6603 -0.2 
+ 1.2879  29.0186 -0.2 
+ 1.28475  29.09 -0.2 
+ 1.2727  29.414 -0.2 
+ 1.2576  29.7987 -0.2 
+ 1.2424  30.1591 -0.2 
+ 1.2273  30.4975 -0.2 
+ 1.2121  30.8162 -0.2 
+ 1.20747  30.91 -0.2 
+ 1.197  31.1645 -0.2 
+ 1.1818  31.5136 -0.2 
+ 1.1667  31.8443 -0.2 
+ 1.1515  32.1589 -0.2 
+ 1.1364  32.4592 -0.2 
+ 1.12213  32.73 -0.2 
+ 1.1212  32.7513 -0.2 
+ 1.1061  33.0892 -0.2 
+ 1.0909  33.4149 -0.2 
+ 1.0758  33.7309 -0.2 
+ 1.0606  34.0394 -0.2 
+ 1.0455  34.3427 -0.2 
+ 1.03501  34.55 -0.2 
+ 1.0303  34.6614 -0.2 
+ 1.0152  35.0187 -0.2 
+ 1  35.3762 -0.2 
+
+
+# Contour 1, label:    -0.21
+ 1.77431  0 -0.21 
+ 1.7727  1.7229 -0.21 
+ 1.77262  1.82 -0.21 
+ 1.76784  3.64 -0.21 
+ 1.75958  5.45 -0.21 
+ 1.7576  5.76299 -0.21 
+ 1.74806  7.27 -0.21 
+ 1.7424  7.96423 -0.21 
+ 1.73311  9.09 -0.21 
+ 1.7273  9.68053 -0.21 
+ 1.71461  10.91 -0.21 
+ 1.7121  11.1261 -0.21 
+ 1.697  12.3894 -0.21 
+ 1.6927  12.73 -0.21 
+ 1.6818  13.5346 -0.21 
+ 1.66695  14.55 -0.21 
+ 1.6667  14.5664 -0.21 
+ 1.6515  15.5418 -0.21 
+ 1.63747  16.36 -0.21 
+ 1.6364  16.4229 -0.21 
+ 1.6212  17.2909 -0.21 
+ 1.6061  18.0724 -0.21 
+ 1.60393  18.18 -0.21 
+ 1.5909  18.854 -0.21 
+ 1.5758  19.5727 -0.21 
+ 1.56608  20 -0.21 
+ 1.5606  20.2579 -0.21 
+ 1.5455  20.9394 -0.21 
+ 1.5303  21.5585 -0.21 
+ 1.52355  21.82 -0.21 
+ 1.5152  22.1756 -0.21 
+ 1.5  22.7808 -0.21 
+ 1.4848  23.3331 -0.21 
+ 1.47585  23.64 -0.21 
+ 1.4697  23.8762 -0.21 
+ 1.4545  24.4277 -0.21 
+ 1.4394  24.9334 -0.21 
+ 1.4242  25.398 -0.21 
+ 1.42245  25.45 -0.21 
+ 1.4091  25.9089 -0.21 
+ 1.3939  26.3901 -0.21 
+ 1.3788  26.8343 -0.21 
+ 1.3636  27.245 -0.21 
+ 1.36265  27.27 -0.21 
+ 1.3485  27.7059 -0.21 
+ 1.3333  28.1384 -0.21 
+ 1.3182  28.5401 -0.21 
+ 1.303  28.914 -0.21 
+ 1.29552  29.09 -0.21 
+ 1.2879  29.3029 -0.21 
+ 1.2727  29.704 -0.21 
+ 1.2576  30.0791 -0.21 
+ 1.2424  30.4307 -0.21 
+ 1.2273  30.7613 -0.21 
+ 1.22015  30.91 -0.21 
+ 1.2121  31.1107 -0.21 
+ 1.197  31.4724 -0.21 
+ 1.1818  31.8144 -0.21 
+ 1.1667  32.1389 -0.21 
+ 1.1515  32.4481 -0.21 
+ 1.13713  32.73 -0.21 
+ 1.1364  32.7472 -0.21 
+ 1.1212  33.094 -0.21 
+ 1.1061  33.4274 -0.21 
+ 1.0909  33.7496 -0.21 
+ 1.0758  34.0629 -0.21 
+ 1.0606  34.3696 -0.21 
+ 1.0516  34.55 -0.21 
+ 1.0455  34.6963 -0.21 
+ 1.0303  35.055 -0.21 
+ 1.0152  35.4118 -0.21 
+ 1  35.7699 -0.21 
+
+
+# Contour 2, label:    -0.22
+ 1.77952  0 -0.22 
+ 1.77787  1.82 -0.22 
+ 1.77282  3.64 -0.22 
+ 1.7727  3.66687 -0.22 
+ 1.76483  5.45 -0.22 
+ 1.7576  6.59385 -0.22 
+ 1.75332  7.27 -0.22 
+ 1.7424  8.60937 -0.22 
+ 1.73844  9.09 -0.22 
+ 1.7273  10.2209 -0.22 
+ 1.72019  10.91 -0.22 
+ 1.7121  11.6057 -0.22 
+ 1.69829  12.73 -0.22 
+ 1.697  12.828 -0.22 
+ 1.6818  13.9417 -0.22 
+ 1.6729  14.55 -0.22 
+ 1.6667  14.9592 -0.22 
+ 1.6515  15.9015 -0.22 
+ 1.64364  16.36 -0.22 
+ 1.6364  16.787 -0.22 
+ 1.6212  17.6256 -0.22 
+ 1.61036  18.18 -0.22 
+ 1.6061  18.4065 -0.22 
+ 1.5909  19.1751 -0.22 
+ 1.5758  19.8697 -0.22 
+ 1.57284  20 -0.22 
+ 1.5606  20.576 -0.22 
+ 1.5455  21.2349 -0.22 
+ 1.53067  21.82 -0.22 
+ 1.5303  21.8359 -0.22 
+ 1.5152  22.4781 -0.22 
+ 1.5  23.0635 -0.22 
+ 1.4848  23.5978 -0.22 
+ 1.48357  23.64 -0.22 
+ 1.4697  24.1726 -0.22 
+ 1.4545  24.7064 -0.22 
+ 1.4394  25.1961 -0.22 
+ 1.43104  25.45 -0.22 
+ 1.4242  25.6896 -0.22 
+ 1.4091  26.1957 -0.22 
+ 1.3939  26.6621 -0.22 
+ 1.3788  27.0928 -0.22 
+ 1.37222  27.27 -0.22 
+ 1.3636  27.5414 -0.22 
+ 1.3485  27.9941 -0.22 
+ 1.3333  28.4139 -0.22 
+ 1.3182  28.8041 -0.22 
+ 1.30635  29.09 -0.22 
+ 1.303  29.1858 -0.22 
+ 1.2879  29.6038 -0.22 
+ 1.2727  29.9941 -0.22 
+ 1.2576  30.3594 -0.22 
+ 1.2424  30.7024 -0.22 
+ 1.23279  30.91 -0.22 
+ 1.2273  31.052 -0.22 
+ 1.2121  31.4267 -0.22 
+ 1.197  31.7804 -0.22 
+ 1.1818  32.1152 -0.22 
+ 1.1667  32.4336 -0.22 
+ 1.15188  32.73 -0.22 
+ 1.1515  32.7391 -0.22 
+ 1.1364  33.0954 -0.22 
+ 1.1212  33.4368 -0.22 
+ 1.1061  33.7657 -0.22 
+ 1.0909  34.0843 -0.22 
+ 1.0758  34.3949 -0.22 
+ 1.06809  34.55 -0.22 
+ 1.0606  34.7304 -0.22 
+ 1.0455  35.0914 -0.22 
+ 1.0303  35.4486 -0.22 
+ 1.0152  35.805 -0.22 
+ 1  36.1636 -0.22 
+
+
+# Contour 3, label:    -0.23
+ 1.78472  0 -0.23 
+ 1.78313  1.82 -0.23 
+ 1.77826  3.64 -0.23 
+ 1.7727  4.85602 -0.23 
+ 1.77008  5.45 -0.23 
+ 1.75866  7.27 -0.23 
+ 1.7576  7.40272 -0.23 
+ 1.74388  9.09 -0.23 
+ 1.7424  9.24194 -0.23 
+ 1.7273  10.7613 -0.23 
+ 1.72577  10.91 -0.23 
+ 1.7121  12.0854 -0.23 
+ 1.70418  12.73 -0.23 
+ 1.697  13.2743 -0.23 
+ 1.6818  14.3487 -0.23 
+ 1.67886  14.55 -0.23 
+ 1.6667  15.352 -0.23 
+ 1.6515  16.2613 -0.23 
+ 1.64981  16.36 -0.23 
+ 1.6364  17.151 -0.23 
+ 1.6212  17.9603 -0.23 
+ 1.6169  18.18 -0.23 
+ 1.6061  18.7543 -0.23 
+ 1.5909  19.4962 -0.23 
+ 1.57978  20 -0.23 
+ 1.5758  20.1926 -0.23 
+ 1.5606  20.8942 -0.23 
+ 1.5455  21.5304 -0.23 
+ 1.53816  21.82 -0.23 
+ 1.5303  22.1603 -0.23 
+ 1.5152  22.7807 -0.23 
+ 1.5  23.3462 -0.23 
+ 1.4916  23.64 -0.23 
+ 1.4848  23.9056 -0.23 
+ 1.4697  24.469 -0.23 
+ 1.4545  24.9851 -0.23 
+ 1.43969  25.45 -0.23 
+ 1.4394  25.4606 -0.23 
+ 1.4242  25.9928 -0.23 
+ 1.4091  26.4826 -0.23 
+ 1.3939  26.9341 -0.23 
+ 1.38186  27.27 -0.23 
+ 1.3788  27.3698 -0.23 
+ 1.3636  27.8435 -0.23 
+ 1.3485  28.2822 -0.23 
+ 1.3333  28.6894 -0.23 
+ 1.3182  29.0681 -0.23 
+ 1.31729  29.09 -0.23 
+ 1.303  29.4986 -0.23 
+ 1.2879  29.9047 -0.23 
+ 1.2727  30.2842 -0.23 
+ 1.2576  30.6398 -0.23 
+ 1.24539  30.91 -0.23 
+ 1.2424  30.989 -0.23 
+ 1.2273  31.3772 -0.23 
+ 1.2121  31.7428 -0.23 
+ 1.197  32.0883 -0.23 
+ 1.1818  32.4161 -0.23 
+ 1.1667  32.7282 -0.23 
+ 1.16661  32.73 -0.23 
+ 1.1515  33.0938 -0.23 
+ 1.1364  33.4436 -0.23 
+ 1.1212  33.7796 -0.23 
+ 1.1061  34.1039 -0.23 
+ 1.0909  34.419 -0.23 
+ 1.08451  34.55 -0.23 
+ 1.0758  34.7638 -0.23 
+ 1.0606  35.1279 -0.23 
+ 1.0455  35.4865 -0.23 
+ 1.0303  35.8423 -0.23 
+ 1.0152  36.1982 -0.23 
+ 1.00835  36.36 -0.23 
+ 1  36.598 -0.23 
+
+
+# Contour 4, label:    -0.24
+ 1.79008  0 -0.24 
+ 1.78842  1.82 -0.24 
+ 1.7879  2.01348 -0.24 
+ 1.7837  3.64 -0.24 
+ 1.77557  5.45 -0.24 
+ 1.7727  5.91033 -0.24 
+ 1.76432  7.27 -0.24 
+ 1.7576  8.11549 -0.24 
+ 1.74967  9.09 -0.24 
+ 1.7424  9.83781 -0.24 
+ 1.73164  10.91 -0.24 
+ 1.7273  11.2925 -0.24 
+ 1.7121  12.565 -0.24 
+ 1.71007  12.73 -0.24 
+ 1.697  13.7205 -0.24 
+ 1.68505  14.55 -0.24 
+ 1.6818  14.7672 -0.24 
+ 1.6667  15.7448 -0.24 
+ 1.65631  16.36 -0.24 
+ 1.6515  16.6477 -0.24 
+ 1.6364  17.515 -0.24 
+ 1.62361  18.18 -0.24 
+ 1.6212  18.3097 -0.24 
+ 1.6061  19.1021 -0.24 
+ 1.5909  19.8173 -0.24 
+ 1.58687  20 -0.24 
+ 1.5758  20.5358 -0.24 
+ 1.5606  21.2123 -0.24 
+ 1.54566  21.82 -0.24 
+ 1.5455  21.827 -0.24 
+ 1.5303  22.4846 -0.24 
+ 1.5152  23.0832 -0.24 
+ 1.5  23.6289 -0.24 
+ 1.49968  23.64 -0.24 
+ 1.4848  24.2215 -0.24 
+ 1.4697  24.7655 -0.24 
+ 1.4545  25.2638 -0.24 
+ 1.44857  25.45 -0.24 
+ 1.4394  25.7819 -0.24 
+ 1.4242  26.2961 -0.24 
+ 1.4091  26.7694 -0.24 
+ 1.3939  27.2061 -0.24 
+ 1.39161  27.27 -0.24 
+ 1.3788  27.6871 -0.24 
+ 1.3636  28.1455 -0.24 
+ 1.3485  28.5703 -0.24 
+ 1.3333  28.9648 -0.24 
+ 1.3283  29.09 -0.24 
+ 1.3182  29.3891 -0.24 
+ 1.303  29.8115 -0.24 
+ 1.2879  30.2055 -0.24 
+ 1.2727  30.5742 -0.24 
+ 1.25806  30.91 -0.24 
+ 1.2576  30.9226 -0.24 
+ 1.2424  31.3245 -0.24 
+ 1.2273  31.7024 -0.24 
+ 1.2121  32.0588 -0.24 
+ 1.197  32.3963 -0.24 
+ 1.1818  32.7169 -0.24 
+ 1.18117  32.73 -0.24 
+ 1.1667  33.0899 -0.24 
+ 1.1515  33.4484 -0.24 
+ 1.1364  33.7918 -0.24 
+ 1.1212  34.1223 -0.24 
+ 1.1061  34.4422 -0.24 
+ 1.10088  34.55 -0.24 
+ 1.0909  34.7969 -0.24 
+ 1.0758  35.1648 -0.24 
+ 1.0606  35.5255 -0.24 
+ 1.0455  35.8816 -0.24 
+ 1.0303  36.2359 -0.24 
+ 1.02503  36.36 -0.24 
+ 1.0152  36.64 -0.24 
+ 1  37.0727 -0.24 
+
+
+# Contour 5, label:    -0.25
+ 1.79571  0 -0.25 
+ 1.79411  1.82 -0.25 
+ 1.78923  3.64 -0.25 
+ 1.7879  3.93883 -0.25 
+ 1.78132  5.45 -0.25 
+ 1.7727  6.83008 -0.25 
+ 1.76999  7.27 -0.25 
+ 1.7576  8.82827 -0.25 
+ 1.75547  9.09 -0.25 
+ 1.7424  10.4337 -0.25 
+ 1.73762  10.91 -0.25 
+ 1.7273  11.8203 -0.25 
+ 1.71629  12.73 -0.25 
+ 1.7121  13.0514 -0.25 
+ 1.697  14.1668 -0.25 
+ 1.69148  14.55 -0.25 
+ 1.6818  15.1969 -0.25 
+ 1.6667  16.1376 -0.25 
+ 1.66295  16.36 -0.25 
+ 1.6515  17.0443 -0.25 
+ 1.6364  17.879 -0.25 
+ 1.63061  18.18 -0.25 
+ 1.6212  18.6871 -0.25 
+ 1.6061  19.4499 -0.25 
+ 1.59415  20 -0.25 
+ 1.5909  20.1599 -0.25 
+ 1.5758  20.879 -0.25 
+ 1.5606  21.5305 -0.25 
+ 1.55348  21.82 -0.25 
+ 1.5455  22.1756 -0.25 
+ 1.5303  22.809 -0.25 
+ 1.5152  23.3857 -0.25 
+ 1.50811  23.64 -0.25 
+ 1.5  23.9642 -0.25 
+ 1.4848  24.5374 -0.25 
+ 1.4697  25.0619 -0.25 
+ 1.45758  25.45 -0.25 
+ 1.4545  25.5633 -0.25 
+ 1.4394  26.1031 -0.25 
+ 1.4242  26.5993 -0.25 
+ 1.4091  27.0563 -0.25 
+ 1.4016  27.27 -0.25 
+ 1.3939  27.5257 -0.25 
+ 1.3788  28.0045 -0.25 
+ 1.3636  28.4476 -0.25 
+ 1.3485  28.8584 -0.25 
+ 1.33945  29.09 -0.25 
+ 1.3333  29.2759 -0.25 
+ 1.3182  29.7151 -0.25 
+ 1.303  30.1243 -0.25 
+ 1.2879  30.5064 -0.25 
+ 1.2727  30.8643 -0.25 
+ 1.27071  30.91 -0.25 
+ 1.2576  31.2695 -0.25 
+ 1.2424  31.66 -0.25 
+ 1.2273  32.0276 -0.25 
+ 1.2121  32.3749 -0.25 
+ 1.197  32.7042 -0.25 
+ 1.19578  32.73 -0.25 
+ 1.1818  33.0846 -0.25 
+ 1.1667  33.4521 -0.25 
+ 1.1515  33.8031 -0.25 
+ 1.1364  34.14 -0.25 
+ 1.1212  34.4651 -0.25 
+ 1.11717  34.55 -0.25 
+ 1.1061  34.8302 -0.25 
+ 1.0909  35.2025 -0.25 
+ 1.0758  35.5658 -0.25 
+ 1.0606  35.923 -0.25 
+ 1.0455  36.2766 -0.25 
+ 1.04192  36.36 -0.25 
+ 1.0303  36.6874 -0.25 
+ 1.0152  37.1159 -0.25 
+ 1  37.5474 -0.25 
+
+
+# Contour 6, label:    -0.26
+ 1.80134  0 -0.26 
+ 1.7998  1.82 -0.26 
+ 1.79511  3.64 -0.26 
+ 1.7879  5.25759 -0.26 
+ 1.78706  5.45 -0.26 
+ 1.77593  7.27 -0.26 
+ 1.7727  7.68152 -0.26 
+ 1.76155  9.09 -0.26 
+ 1.7576  9.50645 -0.26 
+ 1.74371  10.91 -0.26 
+ 1.7424  11.0267 -0.26 
+ 1.7273  12.3481 -0.26 
+ 1.72268  12.73 -0.26 
+ 1.7121  13.5414 -0.26 
+ 1.69797  14.55 -0.26 
+ 1.697  14.6165 -0.26 
+ 1.6818  15.6265 -0.26 
+ 1.66976  16.36 -0.26 
+ 1.6667  16.5478 -0.26 
+ 1.6515  17.4409 -0.26 
+ 1.63768  18.18 -0.26 
+ 1.6364  18.251 -0.26 
+ 1.6212  19.0645 -0.26 
+ 1.6061  19.7977 -0.26 
+ 1.60171  20 -0.26 
+ 1.5909  20.5308 -0.26 
+ 1.5758  21.2222 -0.26 
+ 1.56135  21.82 -0.26 
+ 1.5606  21.8537 -0.26 
+ 1.5455  22.5241 -0.26 
+ 1.5303  23.1334 -0.26 
+ 1.5166  23.64 -0.26 
+ 1.5152  23.6976 -0.26 
+ 1.5  24.3017 -0.26 
+ 1.4848  24.8534 -0.26 
+ 1.4697  25.3583 -0.26 
+ 1.46684  25.45 -0.26 
+ 1.4545  25.9044 -0.26 
+ 1.4394  26.4243 -0.26 
+ 1.4242  26.9025 -0.26 
+ 1.41172  27.27 -0.26 
+ 1.4091  27.36 -0.26 
+ 1.3939  27.86 -0.26 
+ 1.3788  28.3219 -0.26 
+ 1.3636  28.7496 -0.26 
+ 1.35074  29.09 -0.26 
+ 1.3485  29.16 -0.26 
+ 1.3333  29.6166 -0.26 
+ 1.3182  30.0412 -0.26 
+ 1.303  30.4371 -0.26 
+ 1.2879  30.8073 -0.26 
+ 1.28352  30.91 -0.26 
+ 1.2727  31.213 -0.26 
+ 1.2576  31.6164 -0.26 
+ 1.2424  31.9954 -0.26 
+ 1.2273  32.3528 -0.26 
+ 1.2121  32.691 -0.26 
+ 1.21031  32.73 -0.26 
+ 1.197  33.0787 -0.26 
+ 1.1818  33.4553 -0.26 
+ 1.1667  33.8142 -0.26 
+ 1.1515  34.1578 -0.26 
+ 1.1364  34.4882 -0.26 
+ 1.1335  34.55 -0.26 
+ 1.1212  34.8645 -0.26 
+ 1.1061  35.2415 -0.26 
+ 1.0909  35.6081 -0.26 
+ 1.0758  35.9669 -0.26 
+ 1.0606  36.3206 -0.26 
+ 1.05891  36.36 -0.26 
+ 1.0455  36.7401 -0.26 
+ 1.0303  37.1657 -0.26 
+ 1.0152  37.5918 -0.26 
+ 1  38.0221 -0.26 
+
+
+# Contour 7, label:    -0.27
+ 1.80735  0 -0.27 
+ 1.80574  1.82 -0.27 
+ 1.803  2.84331 -0.27 
+ 1.80099  3.64 -0.27 
+ 1.79321  5.45 -0.27 
+ 1.7879  6.32094 -0.27 
+ 1.78213  7.27 -0.27 
+ 1.7727  8.47032 -0.27 
+ 1.76779  9.09 -0.27 
+ 1.7576  10.1646 -0.27 
+ 1.75022  10.91 -0.27 
+ 1.7424  11.6084 -0.27 
+ 1.72919  12.73 -0.27 
+ 1.7273  12.879 -0.27 
+ 1.7121  14.0314 -0.27 
+ 1.70483  14.55 -0.27 
+ 1.697  15.0873 -0.27 
+ 1.6818  16.0562 -0.27 
+ 1.67681  16.36 -0.27 
+ 1.6667  16.9807 -0.27 
+ 1.6515  17.8375 -0.27 
+ 1.6451  18.18 -0.27 
+ 1.6364  18.6614 -0.27 
+ 1.6212  19.4419 -0.27 
+ 1.60943  20 -0.27 
+ 1.6061  20.168 -0.27 
+ 1.5909  20.9018 -0.27 
+ 1.5758  21.5654 -0.27 
+ 1.56964  21.82 -0.27 
+ 1.5606  22.229 -0.27 
+ 1.5455  22.8727 -0.27 
+ 1.5303  23.4578 -0.27 
+ 1.52537  23.64 -0.27 
+ 1.5152  24.0588 -0.27 
+ 1.5  24.6391 -0.27 
+ 1.4848  25.1693 -0.27 
+ 1.4763  25.45 -0.27 
+ 1.4697  25.7007 -0.27 
+ 1.4545  26.2454 -0.27 
+ 1.4394  26.7455 -0.27 
+ 1.4242  27.2057 -0.27 
+ 1.42202  27.27 -0.27 
+ 1.4091  27.7129 -0.27 
+ 1.3939  28.1943 -0.27 
+ 1.3788  28.6393 -0.27 
+ 1.3636  29.0517 -0.27 
+ 1.36215  29.09 -0.27 
+ 1.3485  29.5169 -0.27 
+ 1.3333  29.9573 -0.27 
+ 1.3182  30.3673 -0.27 
+ 1.303  30.75 -0.27 
+ 1.2964  30.91 -0.27 
+ 1.2879  31.1561 -0.27 
+ 1.2727  31.5726 -0.27 
+ 1.2576  31.9633 -0.27 
+ 1.2424  32.3309 -0.27 
+ 1.2273  32.678 -0.27 
+ 1.22496  32.73 -0.27 
+ 1.2121  33.0732 -0.27 
+ 1.197  33.4592 -0.27 
+ 1.1818  33.8261 -0.27 
+ 1.1667  34.1764 -0.27 
+ 1.1515  34.5124 -0.27 
+ 1.14978  34.55 -0.27 
+ 1.1364  34.9005 -0.27 
+ 1.1212  35.2825 -0.27 
+ 1.1061  35.6527 -0.27 
+ 1.0909  36.0137 -0.27 
+ 1.07614  36.36 -0.27 
+ 1.0758  36.3698 -0.27 
+ 1.0606  36.7983 -0.27 
+ 1.0455  37.2219 -0.27 
+ 1.0303  37.6439 -0.27 
+ 1.0152  38.0676 -0.27 
+ 1.01123  38.18 -0.27 
+ 1  38.5617 -0.27 
+
+
+# Contour 8, label:    -0.28
+ 1.81353  0 -0.28 
+ 1.81198  1.82 -0.28 
+ 1.80726  3.64 -0.28 
+ 1.803  4.60527 -0.28 
+ 1.79942  5.45 -0.28 
+ 1.78836  7.27 -0.28 
+ 1.7879  7.3306 -0.28 
+ 1.77416  9.09 -0.28 
+ 1.7727  9.24611 -0.28 
+ 1.7576  10.8227 -0.28 
+ 1.75674  10.91 -0.28 
+ 1.7424  12.1902 -0.28 
+ 1.73604  12.73 -0.28 
+ 1.7273  13.418 -0.28 
+ 1.7121  14.5214 -0.28 
+ 1.7117  14.55 -0.28 
+ 1.697  15.5581 -0.28 
+ 1.68403  16.36 -0.28 
+ 1.6818  16.4986 -0.28 
+ 1.6667  17.4136 -0.28 
+ 1.65259  18.18 -0.28 
+ 1.6515  18.241 -0.28 
+ 1.6364  19.0718 -0.28 
+ 1.6212  19.8193 -0.28 
+ 1.61739  20 -0.28 
+ 1.6061  20.5698 -0.28 
+ 1.5909  21.2727 -0.28 
+ 1.57805  21.82 -0.28 
+ 1.5758  21.9246 -0.28 
+ 1.5606  22.6043 -0.28 
+ 1.5455  23.2212 -0.28 
+ 1.53436  23.64 -0.28 
+ 1.5303  23.8099 -0.28 
+ 1.5152  24.42 -0.28 
+ 1.5  24.9765 -0.28 
+ 1.48592  25.45 -0.28 
+ 1.4848  25.4932 -0.28 
+ 1.4697  26.0637 -0.28 
+ 1.4545  26.5865 -0.28 
+ 1.4394  27.0668 -0.28 
+ 1.43263  27.27 -0.28 
+ 1.4242  27.5642 -0.28 
+ 1.4091  28.0658 -0.28 
+ 1.3939  28.5286 -0.28 
+ 1.3788  28.9567 -0.28 
+ 1.37386  29.09 -0.28 
+ 1.3636  29.4171 -0.28 
+ 1.3485  29.8737 -0.28 
+ 1.3333  30.298 -0.28 
+ 1.3182  30.6934 -0.28 
+ 1.30944  30.91 -0.28 
+ 1.303  31.1002 -0.28 
+ 1.2879  31.5299 -0.28 
+ 1.2727  31.9322 -0.28 
+ 1.2576  32.3101 -0.28 
+ 1.2424  32.6663 -0.28 
+ 1.23962  32.73 -0.28 
+ 1.2273  33.0693 -0.28 
+ 1.2121  33.4647 -0.28 
+ 1.197  33.8397 -0.28 
+ 1.1818  34.1969 -0.28 
+ 1.1667  34.5386 -0.28 
+ 1.16618  34.55 -0.28 
+ 1.1515  34.9392 -0.28 
+ 1.1364  35.3265 -0.28 
+ 1.1212  35.7006 -0.28 
+ 1.1061  36.064 -0.28 
+ 1.09347  36.36 -0.28 
+ 1.0909  36.4331 -0.28 
+ 1.0758  36.8624 -0.28 
+ 1.0606  37.2848 -0.28 
+ 1.0455  37.7037 -0.28 
+ 1.0303  38.1221 -0.28 
+ 1.02823  38.18 -0.28 
+ 1.0152  38.6199 -0.28 
+ 1  39.1338 -0.28 
+
+
+# Contour 9, label:    -0.29
+ 1.81984  0 -0.29 
+ 1.81824  1.82 -0.29 
+ 1.8182  1.83352 -0.29 
+ 1.81371  3.64 -0.29 
+ 1.80589  5.45 -0.29 
+ 1.803  5.92941 -0.29 
+ 1.79507  7.27 -0.29 
+ 1.7879  8.20501 -0.29 
+ 1.78099  9.09 -0.29 
+ 1.7727  9.97422 -0.29 
+ 1.76368  10.91 -0.29 
+ 1.7576  11.4672 -0.29 
+ 1.74294  12.73 -0.29 
+ 1.7424  12.7728 -0.29 
+ 1.7273  13.957 -0.29 
+ 1.71911  14.55 -0.29 
+ 1.7121  15.0368 -0.29 
+ 1.697  16.0289 -0.29 
+ 1.69164  16.36 -0.29 
+ 1.6818  16.9721 -0.29 
+ 1.6667  17.8465 -0.29 
+ 1.66056  18.18 -0.29 
+ 1.6515  18.6881 -0.29 
+ 1.6364  19.4821 -0.29 
+ 1.62564  20 -0.29 
+ 1.6212  20.2274 -0.29 
+ 1.6061  20.9716 -0.29 
+ 1.5909  21.6437 -0.29 
+ 1.58676  21.82 -0.29 
+ 1.5758  22.3295 -0.29 
+ 1.5606  22.9796 -0.29 
+ 1.5455  23.5698 -0.29 
+ 1.54363  23.64 -0.29 
+ 1.5303  24.1974 -0.29 
+ 1.5152  24.7812 -0.29 
+ 1.5  25.314 -0.29 
+ 1.49595  25.45 -0.29 
+ 1.4848  25.8803 -0.29 
+ 1.4697  26.4267 -0.29 
+ 1.4545  26.9276 -0.29 
+ 1.44344  27.27 -0.29 
+ 1.4394  27.4155 -0.29 
+ 1.4242  27.9377 -0.29 
+ 1.4091  28.4187 -0.29 
+ 1.3939  28.8629 -0.29 
+ 1.38575  29.09 -0.29 
+ 1.3788  29.3187 -0.29 
+ 1.3636  29.7917 -0.29 
+ 1.3485  30.2305 -0.29 
+ 1.3333  30.6387 -0.29 
+ 1.32268  30.91 -0.29 
+ 1.3182  31.0465 -0.29 
+ 1.303  31.4895 -0.29 
+ 1.2879  31.9036 -0.29 
+ 1.2727  32.2919 -0.29 
+ 1.2576  32.657 -0.29 
+ 1.25447  32.73 -0.29 
+ 1.2424  33.0684 -0.29 
+ 1.2273  33.4732 -0.29 
+ 1.2121  33.8562 -0.29 
+ 1.197  34.2202 -0.29 
+ 1.18259  34.55 -0.29 
+ 1.1818  34.5717 -0.29 
+ 1.1667  34.9817 -0.29 
+ 1.1515  35.3744 -0.29 
+ 1.1364  35.7525 -0.29 
+ 1.1212  36.1186 -0.29 
+ 1.11103  36.36 -0.29 
+ 1.1061  36.5026 -0.29 
+ 1.0909  36.9331 -0.29 
+ 1.0758  37.355 -0.29 
+ 1.0606  37.7714 -0.29 
+ 1.0457  38.18 -0.29 
+ 1.0455  38.1866 -0.29 
+ 1.0303  38.6906 -0.29 
+ 1.0152  39.1957 -0.29 
+ 1  39.7058 -0.29 
+
+ 2.5  70.076 -0.29 
+ 2.4848  70.3033 -0.29 
+ 2.4697  70.5579 -0.29 
+ 2.4545  70.8407 -0.29 
+ 2.45121  70.91 -0.29 
+ 2.4394  71.1906 -0.29 
+ 2.4242  71.5851 -0.29 
+ 2.4091  72.0097 -0.29 
+ 2.3939  72.4681 -0.29 
+ 2.38594  72.73 -0.29 
+ 2.3788  72.9975 -0.29 
+ 2.3636  73.6112 -0.29 
+ 2.3485  74.2618 -0.29 
+ 2.34223  74.55 -0.29 
+ 2.3333  75.0207 -0.29 
+ 2.3182  75.8749 -0.29 
+ 2.31007  76.36 -0.29 
+ 2.303  76.8571 -0.29 
+ 2.2879  77.9916 -0.29 
+ 2.28553  78.18 -0.29 
+ 2.2727  79.4062 -0.29 
+ 2.26687  80 -0.29 
+ 2.2576  81.1649 -0.29 
+ 2.25267  81.82 -0.29 
+ 2.2424  83.5826 -0.29 
+ 2.24209  83.64 -0.29 
+ 2.23511  85.45 -0.29 
+ 2.23079  87.27 -0.29 
+ 2.22905  89.09 -0.29 
+ 2.22975  90.91 -0.29 
+ 2.23267  92.73 -0.29 
+ 2.2376  94.55 -0.29 
+ 2.2424  95.8664 -0.29 
+ 2.24439  96.36 -0.29 
+ 2.25326  98.18 -0.29 
+ 2.2576  98.9625 -0.29 
+ 2.26386  100 -0.29 
+ 2.2727  101.344 -0.29 
+ 2.27614  101.82 -0.29 
+ 2.2879  103.358 -0.29 
+ 2.29023  103.64 -0.29 
+ 2.303  105.128 -0.29 
+ 2.30602  105.45 -0.29 
+ 2.3182  106.737 -0.29 
+ 2.32363  107.27 -0.29 
+ 2.3333  108.218 -0.29 
+ 2.34294  109.09 -0.29 
+ 2.3485  109.599 -0.29 
+ 2.3636  110.891 -0.29 
+ 2.36384  110.91 -0.29 
+ 2.3788  112.103 -0.29 
+ 2.38718  112.73 -0.29 
+ 2.3939  113.25 -0.29 
+ 2.4091  114.338 -0.29 
+ 2.4123  114.55 -0.29 
+ 2.4242  115.367 -0.29 
+ 2.4394  116.338 -0.29 
+ 2.43978  116.36 -0.29 
+ 2.4545  117.272 -0.29 
+ 2.4697  118.155 -0.29 
+ 2.47017  118.18 -0.29 
+ 2.4848  118.996 -0.29 
+ 2.5  119.789 -0.29 
+
+
+# Contour 10, label:     -0.3
+ 1.82655  0 -0.3 
+ 1.82502  1.82 -0.3 
+ 1.82034  3.64 -0.3 
+ 1.8182  4.13728 -0.3 
+ 1.81271  5.45 -0.3 
+ 1.803  7.06195 -0.3 
+ 1.80177  7.27 -0.3 
+ 1.7879  9.07942 -0.3 
+ 1.78782  9.09 -0.3 
+ 1.7727  10.7023 -0.3 
+ 1.7707  10.91 -0.3 
+ 1.7576  12.1096 -0.3 
+ 1.7504  12.73 -0.3 
+ 1.7424  13.3669 -0.3 
+ 1.7273  14.496 -0.3 
+ 1.72655  14.55 -0.3 
+ 1.7121  15.5537 -0.3 
+ 1.69941  16.36 -0.3 
+ 1.697  16.514 -0.3 
+ 1.6818  17.4456 -0.3 
+ 1.66865  18.18 -0.3 
+ 1.6667  18.2921 -0.3 
+ 1.6515  19.1352 -0.3 
+ 1.6364  19.8925 -0.3 
+ 1.63417  20 -0.3 
+ 1.6212  20.6635 -0.3 
+ 1.6061  21.3734 -0.3 
+ 1.59577  21.82 -0.3 
+ 1.5909  22.0498 -0.3 
+ 1.5758  22.7345 -0.3 
+ 1.5606  23.3549 -0.3 
+ 1.55324  23.64 -0.3 
+ 1.5455  23.9727 -0.3 
+ 1.5303  24.5849 -0.3 
+ 1.5152  25.1424 -0.3 
+ 1.50626  25.45 -0.3 
+ 1.5  25.6971 -0.3 
+ 1.4848  26.2675 -0.3 
+ 1.4697  26.7896 -0.3 
+ 1.4545  27.2687 -0.3 
+ 1.45446  27.27 -0.3 
+ 1.4394  27.8116 -0.3 
+ 1.4242  28.3111 -0.3 
+ 1.4091  28.7716 -0.3 
+ 1.39788  29.09 -0.3 
+ 1.3939  29.2233 -0.3 
+ 1.3788  29.7129 -0.3 
+ 1.3636  30.1663 -0.3 
+ 1.3485  30.5873 -0.3 
+ 1.33609  30.91 -0.3 
+ 1.3333  30.9967 -0.3 
+ 1.3182  31.4531 -0.3 
+ 1.303  31.8789 -0.3 
+ 1.2879  32.2774 -0.3 
+ 1.2727  32.6515 -0.3 
+ 1.26943  32.73 -0.3 
+ 1.2576  33.0719 -0.3 
+ 1.2424  33.486 -0.3 
+ 1.2273  33.877 -0.3 
+ 1.2121  34.2478 -0.3 
+ 1.19923  34.55 -0.3 
+ 1.197  34.6129 -0.3 
+ 1.1818  35.0295 -0.3 
+ 1.1667  35.4276 -0.3 
+ 1.1515  35.8097 -0.3 
+ 1.1364  36.1786 -0.3 
+ 1.12877  36.36 -0.3 
+ 1.1212  36.5793 -0.3 
+ 1.1061  37.0114 -0.3 
+ 1.0909  37.4331 -0.3 
+ 1.0758  37.8476 -0.3 
+ 1.06352  38.18 -0.3 
+ 1.0606  38.2755 -0.3 
+ 1.0455  38.7743 -0.3 
+ 1.0303  39.2716 -0.3 
+ 1.0152  39.7715 -0.3 
+ 1.00837  40 -0.3 
+ 1  40.3367 -0.3 
+
+ 2.3477  156.36 -0.3 
+ 2.3485  156.751 -0.3 
+ 2.35158  158.18 -0.3 
+ 2.35512  160 -0.3 
+ 2.35827  161.82 -0.3 
+ 2.36107  163.64 -0.3 
+ 2.36352  165.45 -0.3 
+ 2.3636  165.52 -0.3 
+ 2.36578  167.27 -0.3 
+ 2.36775  169.09 -0.3 
+ 2.36937  170.91 -0.3 
+ 2.37068  172.73 -0.3 
+ 2.37171  174.55 -0.3 
+ 2.37243  176.36 -0.3 
+ 2.37286  178.18 -0.3 
+ 2.373  180 -0.3 
+
+ 2.5  59.2027 -0.3 
+ 2.4848  59.5686 -0.3 
+ 2.4697  59.9388 -0.3 
+ 2.46728  60 -0.3 
+ 2.4545  60.3466 -0.3 
+ 2.4394  60.7665 -0.3 
+ 2.4242  61.1927 -0.3 
+ 2.4091  61.6251 -0.3 
+ 2.40248  61.82 -0.3 
+ 2.3939  62.0928 -0.3 
+ 2.3788  62.5908 -0.3 
+ 2.3636  63.0975 -0.3 
+ 2.3485  63.6143 -0.3 
+ 2.34778  63.64 -0.3 
+ 2.3333  64.1959 -0.3 
+ 2.3182  64.7915 -0.3 
+ 2.303  65.3991 -0.3 
+ 2.30179  65.45 -0.3 
+ 2.2879  66.0918 -0.3 
+ 2.2727  66.8041 -0.3 
+ 2.2631  67.27 -0.3 
+ 2.2576  67.5637 -0.3 
+ 2.2424  68.3992 -0.3 
+ 2.23019  69.09 -0.3 
+ 2.2273  69.2712 -0.3 
+ 2.2121  70.2547 -0.3 
+ 2.20229  70.91 -0.3 
+ 2.197  71.3048 -0.3 
+ 2.1818  72.4674 -0.3 
+ 2.1785  72.73 -0.3 
+ 2.1667  73.7902 -0.3 
+ 2.15843  74.55 -0.3 
+ 2.1515  75.2728 -0.3 
+ 2.14148  76.36 -0.3 
+ 2.1364  77.0009 -0.3 
+ 2.12732  78.18 -0.3 
+ 2.1212  79.1164 -0.3 
+ 2.11567  80 -0.3 
+ 2.10623  81.82 -0.3 
+ 2.1061  81.8517 -0.3 
+ 2.09901  83.64 -0.3 
+ 2.09352  85.45 -0.3 
+ 2.0909  86.7076 -0.3 
+ 2.08979  87.27 -0.3 
+ 2.08775  89.09 -0.3 
+ 2.08714  90.91 -0.3 
+ 2.08786  92.73 -0.3 
+ 2.08981  94.55 -0.3 
+ 2.0909  95.2031 -0.3 
+ 2.09297  96.36 -0.3 
+ 2.09725  98.18 -0.3 
+ 2.1024  100 -0.3 
+ 2.1061  101.142 -0.3 
+ 2.10841  101.82 -0.3 
+ 2.11525  103.64 -0.3 
+ 2.1212  105.109 -0.3 
+ 2.12267  105.45 -0.3 
+ 2.13089  107.27 -0.3 
+ 2.1364  108.456 -0.3 
+ 2.13949  109.09 -0.3 
+ 2.14853  110.91 -0.3 
+ 2.1515  111.502 -0.3 
+ 2.15802  112.73 -0.3 
+ 2.1667  114.378 -0.3 
+ 2.16765  114.55 -0.3 
+ 2.17758  116.36 -0.3 
+ 2.1818  117.151 -0.3 
+ 2.18761  118.18 -0.3 
+ 2.197  119.892 -0.3 
+ 2.19762  120 -0.3 
+ 2.20772  121.82 -0.3 
+ 2.2121  122.642 -0.3 
+ 2.21771  123.64 -0.3 
+ 2.2273  125.417 -0.3 
+ 2.22748  125.45 -0.3 
+ 2.23723  127.27 -0.3 
+ 2.2424  128.293 -0.3 
+ 2.24665  129.09 -0.3 
+ 2.25581  130.91 -0.3 
+ 2.2576  131.285 -0.3 
+ 2.26476  132.73 -0.3 
+ 2.2727  134.447 -0.3 
+ 2.2732  134.55 -0.3 
+ 2.28157  136.36 -0.3 
+ 2.2879  137.847 -0.3 
+ 2.28938  138.18 -0.3 
+ 2.29696  140 -0.3 
+ 2.303  141.577 -0.3 
+ 2.30399  141.82 -0.3 
+ 2.31087  143.64 -0.3 
+ 2.31719  145.45 -0.3 
+ 2.3182  145.764 -0.3 
+ 2.32327  147.27 -0.3 
+ 2.32888  149.09 -0.3 
+ 2.3333  150.665 -0.3 
+ 2.33403  150.91 -0.3 
+ 2.33905  152.73 -0.3 
+ 2.3436  154.55 -0.3 
+ 2.3477  156.36 -0.3 
+
+
+# Contour 11, label:    -0.31
+ 1.83326  0 -0.31 
+ 1.8318  1.82 -0.31 
+ 1.82735  3.64 -0.31 
+ 1.81964  5.45 -0.31 
+ 1.8182  5.69525 -0.31 
+ 1.80901  7.27 -0.31 
+ 1.803  8.06274 -0.31 
+ 1.79519  9.09 -0.31 
+ 1.7879  9.8874 -0.31 
+ 1.77818  10.91 -0.31 
+ 1.7727  11.4181 -0.31 
+ 1.75787  12.73 -0.31 
+ 1.7576  12.7524 -0.31 
+ 1.7424  13.961 -0.31 
+ 1.73448  14.55 -0.31 
+ 1.7273  15.0618 -0.31 
+ 1.7121  16.0706 -0.31 
+ 1.70755  16.36 -0.31 
+ 1.697  17.0329 -0.31 
+ 1.6818  17.919 -0.31 
+ 1.67713  18.18 -0.31 
+ 1.6667  18.7803 -0.31 
+ 1.6515  19.5823 -0.31 
+ 1.64306  20 -0.31 
+ 1.6364  20.3502 -0.31 
+ 1.6212  21.0996 -0.31 
+ 1.6061  21.7752 -0.31 
+ 1.60506  21.82 -0.31 
+ 1.5909  22.4878 -0.31 
+ 1.5758  23.1395 -0.31 
+ 1.56308  23.64 -0.31 
+ 1.5606  23.748 -0.31 
+ 1.5455  24.3894 -0.31 
+ 1.5303  24.9723 -0.31 
+ 1.51682  25.45 -0.31 
+ 1.5152  25.5158 -0.31 
+ 1.5  26.111 -0.31 
+ 1.4848  26.6547 -0.31 
+ 1.4697  27.1526 -0.31 
+ 1.46597  27.27 -0.31 
+ 1.4545  27.6895 -0.31 
+ 1.4394  28.2077 -0.31 
+ 1.4242  28.6846 -0.31 
+ 1.41035  29.09 -0.31 
+ 1.4091  29.133 -0.31 
+ 1.3939  29.6393 -0.31 
+ 1.3788  30.1072 -0.31 
+ 1.3636  30.5409 -0.31 
+ 1.34984  30.91 -0.31 
+ 1.3485  30.9528 -0.31 
+ 1.3333  31.4225 -0.31 
+ 1.3182  31.8598 -0.31 
+ 1.303  32.2683 -0.31 
+ 1.2879  32.6511 -0.31 
+ 1.28467  32.73 -0.31 
+ 1.2727  33.0818 -0.31 
+ 1.2576  33.5049 -0.31 
+ 1.2424  33.9037 -0.31 
+ 1.2273  34.2809 -0.31 
+ 1.21598  34.55 -0.31 
+ 1.2121  34.6609 -0.31 
+ 1.197  35.0841 -0.31 
+ 1.1818  35.4873 -0.31 
+ 1.1667  35.8734 -0.31 
+ 1.1515  36.245 -0.31 
+ 1.14674  36.36 -0.31 
+ 1.1364  36.6647 -0.31 
+ 1.1212  37.0984 -0.31 
+ 1.1061  37.5201 -0.31 
+ 1.0909  37.9331 -0.31 
+ 1.0818  38.18 -0.31 
+ 1.0758  38.377 -0.31 
+ 1.0606  38.8713 -0.31 
+ 1.0455  39.3619 -0.31 
+ 1.0303  39.8526 -0.31 
+ 1.02583  40 -0.31 
+ 1.0152  40.4225 -0.31 
+ 1  41.0298 -0.31 
+
+ 2.17769  147.27 -0.31 
+ 2.1818  148.971 -0.31 
+ 2.1821  149.09 -0.31 
+ 2.1864  150.91 -0.31 
+ 2.19035  152.73 -0.31 
+ 2.19398  154.55 -0.31 
+ 2.197  156.199 -0.31 
+ 2.19731  156.36 -0.31 
+ 2.20045  158.18 -0.31 
+ 2.20331  160 -0.31 
+ 2.20587  161.82 -0.31 
+ 2.20815  163.64 -0.31 
+ 2.21018  165.45 -0.31 
+ 2.21193  167.27 -0.31 
+ 2.2121  167.475 -0.31 
+ 2.21352  169.09 -0.31 
+ 2.21486  170.91 -0.31 
+ 2.21595  172.73 -0.31 
+ 2.2168  174.55 -0.31 
+ 2.21739  176.36 -0.31 
+ 2.21775  178.18 -0.31 
+ 2.21787  180 -0.31 
+
+ 2.5  52.5634 -0.31 
+ 2.49415  52.73 -0.31 
+ 2.4848  53.01 -0.31 
+ 2.4697  53.4664 -0.31 
+ 2.4545  53.92 -0.31 
+ 2.4394  54.3711 -0.31 
+ 2.43346  54.55 -0.31 
+ 2.4242  54.8432 -0.31 
+ 2.4091  55.3285 -0.31 
+ 2.3939  55.8137 -0.31 
+ 2.3788  56.2995 -0.31 
+ 2.37696  56.36 -0.31 
+ 2.3636  56.8277 -0.31 
+ 2.3485  57.3634 -0.31 
+ 2.3333  57.9016 -0.31 
+ 2.32564  58.18 -0.31 
+ 2.3182  58.468 -0.31 
+ 2.303  59.0641 -0.31 
+ 2.2879  59.6649 -0.31 
+ 2.27959  60 -0.31 
+ 2.2727  60.2978 -0.31 
+ 2.2576  60.9688 -0.31 
+ 2.2424  61.6463 -0.31 
+ 2.23864  61.82 -0.31 
+ 2.2273  62.3837 -0.31 
+ 2.2121  63.1458 -0.31 
+ 2.20249  63.64 -0.31 
+ 2.197  63.9439 -0.31 
+ 2.1818  64.8013 -0.31 
+ 2.17055  65.45 -0.31 
+ 2.1667  65.6934 -0.31 
+ 2.1515  66.6725 -0.31 
+ 2.14245  67.27 -0.31 
+ 2.1364  67.7083 -0.31 
+ 2.1212  68.8251 -0.31 
+ 2.11771  69.09 -0.31 
+ 2.1061  70.0614 -0.31 
+ 2.09609  70.91 -0.31 
+ 2.0909  71.3992 -0.31 
+ 2.07718  72.73 -0.31 
+ 2.0758  72.8808 -0.31 
+ 2.06074  74.55 -0.31 
+ 2.0606  74.5681 -0.31 
+ 2.04674  76.36 -0.31 
+ 2.0455  76.5446 -0.31 
+ 2.03477  78.18 -0.31 
+ 2.0303  78.975 -0.31 
+ 2.02473  80 -0.31 
+ 2.01646  81.82 -0.31 
+ 2.0152  82.1633 -0.31 
+ 2.0099  83.64 -0.31 
+ 2.00483  85.45 -0.31 
+ 2.00114  87.27 -0.31 
+ 2  88.1495 -0.31 
+ 1.99882  89.09 -0.31 
+ 1.99776  90.91 -0.31 
+ 1.99781  92.73 -0.31 
+ 1.99889  94.55 -0.31 
+ 2  95.5424 -0.31 
+ 2.00095  96.36 -0.31 
+ 2.00394  98.18 -0.31 
+ 2.0077  100 -0.31 
+ 2.01212  101.82 -0.31 
+ 2.0152  102.94 -0.31 
+ 2.0172  103.64 -0.31 
+ 2.02286  105.45 -0.31 
+ 2.02892  107.27 -0.31 
+ 2.0303  107.663 -0.31 
+ 2.03554  109.09 -0.31 
+ 2.04244  110.91 -0.31 
+ 2.0455  111.697 -0.31 
+ 2.04964  112.73 -0.31 
+ 2.05702  114.55 -0.31 
+ 2.0606  115.427 -0.31 
+ 2.06459  116.36 -0.31 
+ 2.07227  118.18 -0.31 
+ 2.0758  119.026 -0.31 
+ 2.08  120 -0.31 
+ 2.08767  121.82 -0.31 
+ 2.0909  122.605 -0.31 
+ 2.09535  123.64 -0.31 
+ 2.10294  125.45 -0.31 
+ 2.1061  126.233 -0.31 
+ 2.11041  127.27 -0.31 
+ 2.11768  129.09 -0.31 
+ 2.1212  130.012 -0.31 
+ 2.12479  130.91 -0.31 
+ 2.13173  132.73 -0.31 
+ 2.1364  134.02 -0.31 
+ 2.13838  134.55 -0.31 
+ 2.14483  136.36 -0.31 
+ 2.15091  138.18 -0.31 
+ 2.1515  138.367 -0.31 
+ 2.1569  140 -0.31 
+ 2.16253  141.82 -0.31 
+ 2.1667  143.262 -0.31 
+ 2.16783  143.64 -0.31 
+ 2.17295  145.45 -0.31 
+ 2.17769  147.27 -0.31 
+
+
+# Contour 12, label:    -0.32
+ 1.84065  0 -0.32 
+ 1.83913  1.82 -0.32 
+ 1.83447  3.64 -0.32 
+ 1.8333  3.9148 -0.32 
+ 1.82705  5.45 -0.32 
+ 1.8182  6.95556 -0.32 
+ 1.81636  7.27 -0.32 
+ 1.803  9.03387 -0.32 
+ 1.80257  9.09 -0.32 
+ 1.7879  10.6946 -0.32 
+ 1.78585  10.91 -0.32 
+ 1.7727  12.1289 -0.32 
+ 1.76591  12.73 -0.32 
+ 1.7576  13.4087 -0.32 
+ 1.74247  14.55 -0.32 
+ 1.7424  14.5554 -0.32 
+ 1.7273  15.6306 -0.32 
+ 1.71598  16.36 -0.32 
+ 1.7121  16.611 -0.32 
+ 1.697  17.5519 -0.32 
+ 1.68591  18.18 -0.32 
+ 1.6818  18.4198 -0.32 
+ 1.6667  19.2685 -0.32 
+ 1.65214  20 -0.32 
+ 1.6515  20.034 -0.32 
+ 1.6364  20.8246 -0.32 
+ 1.6212  21.5357 -0.32 
+ 1.61481  21.82 -0.32 
+ 1.6061  22.2419 -0.32 
+ 1.5909  22.9258 -0.32 
+ 1.5758  23.5445 -0.32 
+ 1.57337  23.64 -0.32 
+ 1.5606  24.197 -0.32 
+ 1.5455  24.806 -0.32 
+ 1.5303  25.3598 -0.32 
+ 1.52776  25.45 -0.32 
+ 1.5152  25.9595 -0.32 
+ 1.5  26.525 -0.32 
+ 1.4848  27.0419 -0.32 
+ 1.47777  27.27 -0.32 
+ 1.4697  27.5737 -0.32 
+ 1.4545  28.1107 -0.32 
+ 1.4394  28.6038 -0.32 
+ 1.4242  29.058 -0.32 
+ 1.42311  29.09 -0.32 
+ 1.4091  29.5729 -0.32 
+ 1.3939  30.0552 -0.32 
+ 1.3788  30.5015 -0.32 
+ 1.36381  30.91 -0.32 
+ 1.3636  30.917 -0.32 
+ 1.3485  31.3997 -0.32 
+ 1.3333  31.8482 -0.32 
+ 1.3182  32.2665 -0.32 
+ 1.303  32.6577 -0.32 
+ 1.30012  32.73 -0.32 
+ 1.2879  33.0999 -0.32 
+ 1.2727  33.5318 -0.32 
+ 1.2576  33.9379 -0.32 
+ 1.2424  34.3213 -0.32 
+ 1.23302  34.55 -0.32 
+ 1.2273  34.7179 -0.32 
+ 1.2121  35.1473 -0.32 
+ 1.197  35.5554 -0.32 
+ 1.1818  35.9451 -0.32 
+ 1.1667  36.3192 -0.32 
+ 1.16502  36.36 -0.32 
+ 1.1515  36.7604 -0.32 
+ 1.1364  37.1955 -0.32 
+ 1.1212  37.6174 -0.32 
+ 1.1061  38.0289 -0.32 
+ 1.10048  38.18 -0.32 
+ 1.0909  38.4925 -0.32 
+ 1.0758  38.9827 -0.32 
+ 1.0606  39.4671 -0.32 
+ 1.0455  39.9495 -0.32 
+ 1.04393  40 -0.32 
+ 1.0303  40.5298 -0.32 
+ 1.0152  41.1232 -0.32 
+ 1  41.7228 -0.32 
+
+ 2.06764  141.82 -0.32 
+ 2.0724  143.64 -0.32 
+ 2.0758  145.017 -0.32 
+ 2.0769  145.45 -0.32 
+ 2.0812  147.27 -0.32 
+ 2.08522  149.09 -0.32 
+ 2.08895  150.91 -0.32 
+ 2.0909  151.936 -0.32 
+ 2.09247  152.73 -0.32 
+ 2.09581  154.55 -0.32 
+ 2.09888  156.36 -0.32 
+ 2.10168  158.18 -0.32 
+ 2.10422  160 -0.32 
+ 2.1061  161.49 -0.32 
+ 2.10653  161.82 -0.32 
+ 2.10866  163.64 -0.32 
+ 2.11054  165.45 -0.32 
+ 2.11219  167.27 -0.32 
+ 2.11361  169.09 -0.32 
+ 2.1148  170.91 -0.32 
+ 2.11576  172.73 -0.32 
+ 2.11651  174.55 -0.32 
+ 2.11705  176.36 -0.32 
+ 2.11736  178.18 -0.32 
+ 2.11747  180 -0.32 
+
+ 2.5  47.4425 -0.32 
+ 2.4848  47.9488 -0.32 
+ 2.4697  48.4472 -0.32 
+ 2.4545  48.939 -0.32 
+ 2.44989  49.09 -0.32 
+ 2.4394  49.4476 -0.32 
+ 2.4242  49.9611 -0.32 
+ 2.4091  50.4691 -0.32 
+ 2.39585  50.91 -0.32 
+ 2.3939  50.9779 -0.32 
+ 2.3788  51.5151 -0.32 
+ 2.3636  52.0489 -0.32 
+ 2.3485  52.5805 -0.32 
+ 2.34429  52.73 -0.32 
+ 2.3333  53.1396 -0.32 
+ 2.3182  53.7089 -0.32 
+ 2.303  54.278 -0.32 
+ 2.29587  54.55 -0.32 
+ 2.2879  54.8695 -0.32 
+ 2.2727  55.4817 -0.32 
+ 2.2576  56.0956 -0.32 
+ 2.25115  56.36 -0.32 
+ 2.2424  56.7428 -0.32 
+ 2.2273  57.4169 -0.32 
+ 2.2121  58.0937 -0.32 
+ 2.21022  58.18 -0.32 
+ 2.197  58.8266 -0.32 
+ 2.1818  59.5711 -0.32 
+ 2.17323  60 -0.32 
+ 2.1667  60.35 -0.32 
+ 2.1515  61.1733 -0.32 
+ 2.13977  61.82 -0.32 
+ 2.1364  62.0196 -0.32 
+ 2.1212  62.9343 -0.32 
+ 2.10967  63.64 -0.32 
+ 2.1061  63.8755 -0.32 
+ 2.0909  64.8906 -0.32 
+ 2.0827  65.45 -0.32 
+ 2.0758  65.9647 -0.32 
+ 2.0606  67.1078 -0.32 
+ 2.0585  67.27 -0.32 
+ 2.0455  68.3691 -0.32 
+ 2.03704  69.09 -0.32 
+ 2.0303  69.7226 -0.32 
+ 2.01793  70.91 -0.32 
+ 2.0152  71.2013 -0.32 
+ 2.00101  72.73 -0.32 
+ 2  72.8525 -0.32 
+ 1.98619  74.55 -0.32 
+ 1.9848  74.7426 -0.32 
+ 1.97341  76.36 -0.32 
+ 1.9697  76.9659 -0.32 
+ 1.96237  78.18 -0.32 
+ 1.9545  79.6945 -0.32 
+ 1.95295  80 -0.32 
+ 1.94523  81.82 -0.32 
+ 1.9394  83.4912 -0.32 
+ 1.93889  83.64 -0.32 
+ 1.93399  85.45 -0.32 
+ 1.93032  87.27 -0.32 
+ 1.92784  89.09 -0.32 
+ 1.92648  90.91 -0.32 
+ 1.92615  92.73 -0.32 
+ 1.92678  94.55 -0.32 
+ 1.92829  96.36 -0.32 
+ 1.9306  98.18 -0.32 
+ 1.93361  100 -0.32 
+ 1.93725  101.82 -0.32 
+ 1.9394  102.757 -0.32 
+ 1.94148  103.64 -0.32 
+ 1.94624  105.45 -0.32 
+ 1.95139  107.27 -0.32 
+ 1.9545  108.304 -0.32 
+ 1.95695  109.09 -0.32 
+ 1.96289  110.91 -0.32 
+ 1.96901  112.73 -0.32 
+ 1.9697  112.931 -0.32 
+ 1.97541  114.55 -0.32 
+ 1.98188  116.36 -0.32 
+ 1.9848  117.181 -0.32 
+ 1.9885  118.18 -0.32 
+ 1.9952  120 -0.32 
+ 2  121.319 -0.32 
+ 2.00188  121.82 -0.32 
+ 2.0086  123.64 -0.32 
+ 2.01515  125.45 -0.32 
+ 2.0152  125.463 -0.32 
+ 2.0217  127.27 -0.32 
+ 2.02803  129.09 -0.32 
+ 2.0303  129.766 -0.32 
+ 2.03429  130.91 -0.32 
+ 2.04039  132.73 -0.32 
+ 2.0455  134.327 -0.32 
+ 2.04623  134.55 -0.32 
+ 2.05195  136.36 -0.32 
+ 2.05737  138.18 -0.32 
+ 2.0606  139.324 -0.32 
+ 2.06259  140 -0.32 
+ 2.06764  141.82 -0.32 
+
+
+# Contour 13, label:    -0.33
+ 1.84805  0 -0.33 
+ 1.8466  1.82 -0.33 
+ 1.8422  3.64 -0.33 
+ 1.83457  5.45 -0.33 
+ 1.8333  5.66829 -0.33 
+ 1.8242  7.27 -0.33 
+ 1.8182  8.0813 -0.33 
+ 1.81064  9.09 -0.33 
+ 1.803  9.93502 -0.33 
+ 1.79398  10.91 -0.33 
+ 1.7879  11.488 -0.33 
+ 1.77406  12.73 -0.33 
+ 1.7727  12.8422 -0.33 
+ 1.7576  14.065 -0.33 
+ 1.75117  14.55 -0.33 
+ 1.7424  15.1827 -0.33 
+ 1.7273  16.1993 -0.33 
+ 1.72481  16.36 -0.33 
+ 1.7121  17.1811 -0.33 
+ 1.697  18.0708 -0.33 
+ 1.69507  18.18 -0.33 
+ 1.6818  18.9541 -0.33 
+ 1.6667  19.7567 -0.33 
+ 1.66186  20 -0.33 
+ 1.6515  20.5515 -0.33 
+ 1.6364  21.2991 -0.33 
+ 1.62486  21.82 -0.33 
+ 1.6212  21.9997 -0.33 
+ 1.6061  22.7167 -0.33 
+ 1.5909  23.3638 -0.33 
+ 1.58407  23.64 -0.33 
+ 1.5758  24.0108 -0.33 
+ 1.5606  24.6461 -0.33 
+ 1.5455  25.2227 -0.33 
+ 1.53918  25.45 -0.33 
+ 1.5303  25.8157 -0.33 
+ 1.5152  26.4031 -0.33 
+ 1.5  26.9389 -0.33 
+ 1.48996  27.27 -0.33 
+ 1.4848  27.4671 -0.33 
+ 1.4697  28.0226 -0.33 
+ 1.4545  28.5319 -0.33 
+ 1.4394  28.9999 -0.33 
+ 1.43637  29.09 -0.33 
+ 1.4242  29.5164 -0.33 
+ 1.4091  30.0128 -0.33 
+ 1.3939  30.4711 -0.33 
+ 1.3788  30.8957 -0.33 
+ 1.37828  30.91 -0.33 
+ 1.3636  31.3872 -0.33 
+ 1.3485  31.8466 -0.33 
+ 1.3333  32.274 -0.33 
+ 1.3182  32.6731 -0.33 
+ 1.31597  32.73 -0.33 
+ 1.303  33.1288 -0.33 
+ 1.2879  33.5688 -0.33 
+ 1.2727  33.9817 -0.33 
+ 1.2576  34.3708 -0.33 
+ 1.25034  34.55 -0.33 
+ 1.2424  34.7862 -0.33 
+ 1.2273  35.2212 -0.33 
+ 1.2121  35.6337 -0.33 
+ 1.197  36.0266 -0.33 
+ 1.18358  36.36 -0.33 
+ 1.1818  36.414 -0.33 
+ 1.1667  36.8682 -0.33 
+ 1.1515  37.3046 -0.33 
+ 1.1364  37.7263 -0.33 
+ 1.1212  38.1364 -0.33 
+ 1.11959  38.18 -0.33 
+ 1.1061  38.6233 -0.33 
+ 1.0909  39.1097 -0.33 
+ 1.0758  39.5883 -0.33 
+ 1.06265  40 -0.33 
+ 1.0606  40.0776 -0.33 
+ 1.0455  40.6593 -0.33 
+ 1.0303  41.2399 -0.33 
+ 1.0153  41.82 -0.33 
+ 1.0152  41.8246 -0.33 
+ 1  42.546 -0.33 
+
+ 1.9697  133.789 -0.33 
+ 1.972  134.55 -0.33 
+ 1.97728  136.36 -0.33 
+ 1.98231  138.18 -0.33 
+ 1.9848  139.124 -0.33 
+ 1.98718  140 -0.33 
+ 1.99189  141.82 -0.33 
+ 1.99634  143.64 -0.33 
+ 2  145.219 -0.33 
+ 2.00055  145.45 -0.33 
+ 2.00461  147.27 -0.33 
+ 2.00842  149.09 -0.33 
+ 2.01196  150.91 -0.33 
+ 2.0152  152.699 -0.33 
+ 2.01526  152.73 -0.33 
+ 2.01839  154.55 -0.33 
+ 2.02127  156.36 -0.33 
+ 2.02391  158.18 -0.33 
+ 2.02632  160 -0.33 
+ 2.0285  161.82 -0.33 
+ 2.0303  163.496 -0.33 
+ 2.03046  163.64 -0.33 
+ 2.03227  165.45 -0.33 
+ 2.03385  167.27 -0.33 
+ 2.03521  169.09 -0.33 
+ 2.03635  170.91 -0.33 
+ 2.03728  172.73 -0.33 
+ 2.03801  174.55 -0.33 
+ 2.03852  176.36 -0.33 
+ 2.03883  178.18 -0.33 
+ 2.03893  180 -0.33 
+
+ 2.5  43.1261 -0.33 
+ 2.48547  43.64 -0.33 
+ 2.4848  43.6641 -0.33 
+ 2.4697  44.2159 -0.33 
+ 2.4545  44.7571 -0.33 
+ 2.4394  45.2895 -0.33 
+ 2.43483  45.45 -0.33 
+ 2.4242  45.8365 -0.33 
+ 2.4091  46.3854 -0.33 
+ 2.3939  46.9271 -0.33 
+ 2.38431  47.27 -0.33 
+ 2.3788  47.4741 -0.33 
+ 2.3636  48.0361 -0.33 
+ 2.3485  48.5925 -0.33 
+ 2.33483  49.09 -0.33 
+ 2.3333  49.148 -0.33 
+ 2.3182  49.7321 -0.33 
+ 2.303  50.3124 -0.33 
+ 2.2879  50.89 -0.33 
+ 2.28738  50.91 -0.33 
+ 2.2727  51.5041 -0.33 
+ 2.2576  52.1177 -0.33 
+ 2.24242  52.73 -0.33 
+ 2.2424  52.7308 -0.33 
+ 2.2273  53.3875 -0.33 
+ 2.2121  54.0446 -0.33 
+ 2.20055  54.55 -0.33 
+ 2.197  54.7132 -0.33 
+ 2.1818  55.4184 -0.33 
+ 2.1667  56.1254 -0.33 
+ 2.16173  56.36 -0.33 
+ 2.1515  56.8751 -0.33 
+ 2.1364  57.6473 -0.33 
+ 2.12602  58.18 -0.33 
+ 2.1212  58.4433 -0.33 
+ 2.1061  59.2869 -0.33 
+ 2.09334  60 -0.33 
+ 2.0909  60.1458 -0.33 
+ 2.0758  61.0714 -0.33 
+ 2.06359  61.82 -0.33 
+ 2.0606  62.0172 -0.33 
+ 2.0455  63.0365 -0.33 
+ 2.03659  63.64 -0.33 
+ 2.0303  64.0982 -0.33 
+ 2.0152  65.2184 -0.33 
+ 2.0121  65.45 -0.33 
+ 2  66.4398 -0.33 
+ 1.98994  67.27 -0.33 
+ 1.9848  67.735 -0.33 
+ 1.97006  69.09 -0.33 
+ 1.9697  69.1265 -0.33 
+ 1.9545  70.6784 -0.33 
+ 1.95227  70.91 -0.33 
+ 1.9394  72.3936 -0.33 
+ 1.9365  72.73 -0.33 
+ 1.9242  74.3249 -0.33 
+ 1.92249  74.55 -0.33 
+ 1.91032  76.36 -0.33 
+ 1.9091  76.569 -0.33 
+ 1.89975  78.18 -0.33 
+ 1.8939  79.3499 -0.33 
+ 1.89071  80 -0.33 
+ 1.88318  81.82 -0.33 
+ 1.8788  83.1049 -0.33 
+ 1.87699  83.64 -0.33 
+ 1.87209  85.45 -0.33 
+ 1.86838  87.27 -0.33 
+ 1.86578  89.09 -0.33 
+ 1.86423  90.91 -0.33 
+ 1.86366  92.73 -0.33 
+ 1.86399  94.55 -0.33 
+ 1.86516  96.36 -0.33 
+ 1.86708  98.18 -0.33 
+ 1.86967  100 -0.33 
+ 1.87287  101.82 -0.33 
+ 1.8766  103.64 -0.33 
+ 1.8788  104.594 -0.33 
+ 1.88081  105.45 -0.33 
+ 1.88546  107.27 -0.33 
+ 1.89043  109.09 -0.33 
+ 1.8939  110.296 -0.33 
+ 1.89572  110.91 -0.33 
+ 1.90132  112.73 -0.33 
+ 1.90707  114.55 -0.33 
+ 1.9091  115.176 -0.33 
+ 1.913  116.36 -0.33 
+ 1.919  118.18 -0.33 
+ 1.9242  119.756 -0.33 
+ 1.92503  120 -0.33 
+ 1.93121  121.82 -0.33 
+ 1.93729  123.64 -0.33 
+ 1.9394  124.277 -0.33 
+ 1.94335  125.45 -0.33 
+ 1.94932  127.27 -0.33 
+ 1.9545  128.896 -0.33 
+ 1.95514  129.09 -0.33 
+ 1.96095  130.91 -0.33 
+ 1.96656  132.73 -0.33 
+ 1.9697  133.789 -0.33 
+
+
+# Contour 14, label:    -0.34
+ 1.85607  0 -0.34 
+ 1.85459  1.82 -0.34 
+ 1.85006  3.64 -0.34 
+ 1.8485  4.01476 -0.34 
+ 1.84273  5.45 -0.34 
+ 1.8333  7.07392 -0.34 
+ 1.83219  7.27 -0.34 
+ 1.81879  9.09 -0.34 
+ 1.8182  9.15683 -0.34 
+ 1.803  10.8319 -0.34 
+ 1.80228  10.91 -0.34 
+ 1.7879  12.2764 -0.34 
+ 1.78284  12.73 -0.34 
+ 1.7727  13.5689 -0.34 
+ 1.76005  14.55 -0.34 
+ 1.7576  14.731 -0.34 
+ 1.7424  15.8099 -0.34 
+ 1.7341  16.36 -0.34 
+ 1.7273  16.8105 -0.34 
+ 1.7121  17.7512 -0.34 
+ 1.70473  18.18 -0.34 
+ 1.697  18.643 -0.34 
+ 1.6818  19.4885 -0.34 
+ 1.67189  20 -0.34 
+ 1.6667  20.2838 -0.34 
+ 1.6515  21.0689 -0.34 
+ 1.6364  21.7735 -0.34 
+ 1.63537  21.82 -0.34 
+ 1.6212  22.5157 -0.34 
+ 1.6061  23.1915 -0.34 
+ 1.59517  23.64 -0.34 
+ 1.5909  23.8342 -0.34 
+ 1.5758  24.496 -0.34 
+ 1.5606  25.0952 -0.34 
+ 1.55101  25.45 -0.34 
+ 1.5455  25.6833 -0.34 
+ 1.5303  26.2924 -0.34 
+ 1.5152  26.8468 -0.34 
+ 1.50264  27.27 -0.34 
+ 1.5  27.3729 -0.34 
+ 1.4848  27.9467 -0.34 
+ 1.4697  28.4715 -0.34 
+ 1.4545  28.953 -0.34 
+ 1.45003  29.09 -0.34 
+ 1.4394  29.4731 -0.34 
+ 1.4242  29.9829 -0.34 
+ 1.4091  30.4527 -0.34 
+ 1.3939  30.8871 -0.34 
+ 1.39308  30.91 -0.34 
+ 1.3788  31.3882 -0.34 
+ 1.3636  31.8575 -0.34 
+ 1.3485  32.2935 -0.34 
+ 1.3333  32.6998 -0.34 
+ 1.33215  32.73 -0.34 
+ 1.3182  33.1712 -0.34 
+ 1.303  33.6186 -0.34 
+ 1.2879  34.0377 -0.34 
+ 1.2727  34.4317 -0.34 
+ 1.26803  34.55 -0.34 
+ 1.2576  34.8683 -0.34 
+ 1.2424  35.3082 -0.34 
+ 1.2273  35.7244 -0.34 
+ 1.2121  36.12 -0.34 
+ 1.20262  36.36 -0.34 
+ 1.197  36.5343 -0.34 
+ 1.1818  36.9904 -0.34 
+ 1.1667  37.4275 -0.34 
+ 1.1515  37.8487 -0.34 
+ 1.13931  38.18 -0.34 
+ 1.1364  38.2763 -0.34 
+ 1.1212  38.7715 -0.34 
+ 1.1061  39.2538 -0.34 
+ 1.0909  39.7268 -0.34 
+ 1.08214  40 -0.34 
+ 1.0758  40.2402 -0.34 
+ 1.0606  40.8123 -0.34 
+ 1.0455  41.3807 -0.34 
+ 1.03381  41.82 -0.34 
+ 1.0303  41.9798 -0.34 
+ 1.0152  42.6824 -0.34 
+ 1  43.3905 -0.34 
+
+ 1.8803  125.45 -0.34 
+ 1.88596  127.27 -0.34 
+ 1.8915  129.09 -0.34 
+ 1.8939  129.902 -0.34 
+ 1.89696  130.91 -0.34 
+ 1.90232  132.73 -0.34 
+ 1.9075  134.55 -0.34 
+ 1.9091  135.132 -0.34 
+ 1.91253  136.36 -0.34 
+ 1.91737  138.18 -0.34 
+ 1.92199  140 -0.34 
+ 1.9242  140.909 -0.34 
+ 1.92647  141.82 -0.34 
+ 1.93077  143.64 -0.34 
+ 1.93484  145.45 -0.34 
+ 1.93868  147.27 -0.34 
+ 1.9394  147.633 -0.34 
+ 1.94233  149.09 -0.34 
+ 1.94576  150.91 -0.34 
+ 1.94896  152.73 -0.34 
+ 1.95193  154.55 -0.34 
+ 1.9545  156.246 -0.34 
+ 1.95468  156.36 -0.34 
+ 1.95728  158.18 -0.34 
+ 1.95966  160 -0.34 
+ 1.96181  161.82 -0.34 
+ 1.96374  163.64 -0.34 
+ 1.96546  165.45 -0.34 
+ 1.96697  167.27 -0.34 
+ 1.96827  169.09 -0.34 
+ 1.96937  170.91 -0.34 
+ 1.9697  171.585 -0.34 
+ 1.97027  172.73 -0.34 
+ 1.97098  174.55 -0.34 
+ 1.97148  176.36 -0.34 
+ 1.97178  178.18 -0.34 
+ 1.97189  180 -0.34 
+
+ 2.5  39.2648 -0.34 
+ 2.4848  39.8548 -0.34 
+ 2.48108  40 -0.34 
+ 2.4697  40.4499 -0.34 
+ 2.4545  41.0382 -0.34 
+ 2.4394  41.6152 -0.34 
+ 2.43399  41.82 -0.34 
+ 2.4242  42.1979 -0.34 
+ 2.4091  42.7791 -0.34 
+ 2.3939  43.3511 -0.34 
+ 2.38625  43.64 -0.34 
+ 2.3788  43.9266 -0.34 
+ 2.3636  44.5062 -0.34 
+ 2.3485  45.0786 -0.34 
+ 2.3386  45.45 -0.34 
+ 2.3333  45.6558 -0.34 
+ 2.3182  46.2489 -0.34 
+ 2.303  46.8364 -0.34 
+ 2.29183  47.27 -0.34 
+ 2.2879  47.4277 -0.34 
+ 2.2727  48.0399 -0.34 
+ 2.2576  48.6481 -0.34 
+ 2.24657  49.09 -0.34 
+ 2.2424  49.2637 -0.34 
+ 2.2273  49.9036 -0.34 
+ 2.2121  50.5417 -0.34 
+ 2.20344  50.91 -0.34 
+ 2.197  51.1961 -0.34 
+ 2.1818  51.8734 -0.34 
+ 2.1667  52.5505 -0.34 
+ 2.16272  52.73 -0.34 
+ 2.1515  53.262 -0.34 
+ 2.1364  53.9863 -0.34 
+ 2.12463  54.55 -0.34 
+ 2.1212  54.7225 -0.34 
+ 2.1061  55.4972 -0.34 
+ 2.0909  56.2737 -0.34 
+ 2.08925  56.36 -0.34 
+ 2.0758  57.1089 -0.34 
+ 2.0606  57.9533 -0.34 
+ 2.0566  58.18 -0.34 
+ 2.0455  58.8493 -0.34 
+ 2.0303  59.7661 -0.34 
+ 2.02649  60 -0.34 
+ 2.0152  60.743 -0.34 
+ 2  61.7419 -0.34 
+ 1.99883  61.82 -0.34 
+ 1.9848  62.8249 -0.34 
+ 1.97356  63.64 -0.34 
+ 1.9697  63.941 -0.34 
+ 1.9545  65.1302 -0.34 
+ 1.95047  65.45 -0.34 
+ 1.9394  66.4124 -0.34 
+ 1.92953  67.27 -0.34 
+ 1.9242  67.7773 -0.34 
+ 1.91059  69.09 -0.34 
+ 1.9091  69.2482 -0.34 
+ 1.8939  70.8655 -0.34 
+ 1.89349  70.91 -0.34 
+ 1.8788  72.6698 -0.34 
+ 1.8783  72.73 -0.34 
+ 1.86474  74.55 -0.34 
+ 1.8636  74.7217 -0.34 
+ 1.8529  76.36 -0.34 
+ 1.8485  77.1347 -0.34 
+ 1.84257  78.18 -0.34 
+ 1.83366  80 -0.34 
+ 1.8333  80.0878 -0.34 
+ 1.82624  81.82 -0.34 
+ 1.82011  83.64 -0.34 
+ 1.8182  84.3424 -0.34 
+ 1.8152  85.45 -0.34 
+ 1.81145  87.27 -0.34 
+ 1.80878  89.09 -0.34 
+ 1.80712  90.91 -0.34 
+ 1.8064  92.73 -0.34 
+ 1.80654  94.55 -0.34 
+ 1.80748  96.36 -0.34 
+ 1.80915  98.18 -0.34 
+ 1.81147  100 -0.34 
+ 1.81438  101.82 -0.34 
+ 1.81779  103.64 -0.34 
+ 1.8182  103.83 -0.34 
+ 1.82169  105.45 -0.34 
+ 1.82599  107.27 -0.34 
+ 1.83061  109.09 -0.34 
+ 1.8333  110.092 -0.34 
+ 1.83555  110.91 -0.34 
+ 1.84078  112.73 -0.34 
+ 1.84617  114.55 -0.34 
+ 1.8485  115.316 -0.34 
+ 1.85171  116.36 -0.34 
+ 1.85736  118.18 -0.34 
+ 1.86303  120 -0.34 
+ 1.8636  120.184 -0.34 
+ 1.86882  121.82 -0.34 
+ 1.87459  123.64 -0.34 
+ 1.8788  124.979 -0.34 
+ 1.8803  125.45 -0.34 
+
+
+# Contour 15, label:    -0.35
+ 1.86419  0 -0.35 
+ 1.8636  0.699755 -0.35 
+ 1.86274  1.82 -0.35 
+ 1.85848  3.64 -0.35 
+ 1.85111  5.45 -0.35 
+ 1.8485  5.91121 -0.35 
+ 1.84088  7.27 -0.35 
+ 1.8333  8.30812 -0.35 
+ 1.82759  9.09 -0.35 
+ 1.8182  10.1558 -0.35 
+ 1.81132  10.91 -0.35 
+ 1.803  11.7103 -0.35 
+ 1.79194  12.73 -0.35 
+ 1.7879  13.0726 -0.35 
+ 1.7727  14.2956 -0.35 
+ 1.76942  14.55 -0.35 
+ 1.7576  15.4245 -0.35 
+ 1.74367  16.36 -0.35 
+ 1.7424  16.4454 -0.35 
+ 1.7273  17.4385 -0.35 
+ 1.71474  18.18 -0.35 
+ 1.7121  18.3399 -0.35 
+ 1.697  19.2293 -0.35 
+ 1.68228  20 -0.35 
+ 1.6818  20.0265 -0.35 
+ 1.6667  20.8496 -0.35 
+ 1.6515  21.5863 -0.35 
+ 1.64646  21.82 -0.35 
+ 1.6364  22.3273 -0.35 
+ 1.6212  23.0317 -0.35 
+ 1.60678  23.64 -0.35 
+ 1.6061  23.6716 -0.35 
+ 1.5909  24.3598 -0.35 
+ 1.5758  24.9812 -0.35 
+ 1.56331  25.45 -0.35 
+ 1.5606  25.5664 -0.35 
+ 1.5455  26.1968 -0.35 
+ 1.5303  26.769 -0.35 
+ 1.51583  27.27 -0.35 
+ 1.5152  27.2954 -0.35 
+ 1.5  27.8868 -0.35 
+ 1.4848  28.4264 -0.35 
+ 1.4697  28.9204 -0.35 
+ 1.46425  29.09 -0.35 
+ 1.4545  29.4466 -0.35 
+ 1.4394  29.9689 -0.35 
+ 1.4242  30.4493 -0.35 
+ 1.4091  30.8926 -0.35 
+ 1.40849  30.91 -0.35 
+ 1.3939  31.4059 -0.35 
+ 1.3788  31.8843 -0.35 
+ 1.3636  32.3277 -0.35 
+ 1.3489  32.73 -0.35 
+ 1.3485  32.7432 -0.35 
+ 1.3333  33.2304 -0.35 
+ 1.3182  33.6841 -0.35 
+ 1.303  34.1084 -0.35 
+ 1.2879  34.5065 -0.35 
+ 1.2862  34.55 -0.35 
+ 1.2727  34.9673 -0.35 
+ 1.2576  35.4112 -0.35 
+ 1.2424  35.8302 -0.35 
+ 1.2273  36.2276 -0.35 
+ 1.22211  36.36 -0.35 
+ 1.2121  36.6725 -0.35 
+ 1.197  37.1298 -0.35 
+ 1.1818  37.5668 -0.35 
+ 1.1667  37.9869 -0.35 
+ 1.15957  38.18 -0.35 
+ 1.1515  38.4471 -0.35 
+ 1.1364  38.9393 -0.35 
+ 1.1212  39.4172 -0.35 
+ 1.1061  39.8843 -0.35 
+ 1.10234  40 -0.35 
+ 1.0909  40.4279 -0.35 
+ 1.0758  40.9903 -0.35 
+ 1.0606  41.5469 -0.35 
+ 1.05324  41.82 -0.35 
+ 1.0455  42.1685 -0.35 
+ 1.0303  42.8532 -0.35 
+ 1.0152  43.5401 -0.35 
+ 1.01304  43.64 -0.35 
+ 1  44.3652 -0.35 
+
+ 1.80046  118.18 -0.35 
+ 1.803  119.029 -0.35 
+ 1.80596  120 -0.35 
+ 1.81152  121.82 -0.35 
+ 1.81706  123.64 -0.35 
+ 1.8182  124.016 -0.35 
+ 1.82258  125.45 -0.35 
+ 1.82802  127.27 -0.35 
+ 1.8333  129.071 -0.35 
+ 1.83336  129.09 -0.35 
+ 1.83868  130.91 -0.35 
+ 1.84386  132.73 -0.35 
+ 1.8485  134.413 -0.35 
+ 1.84888  134.55 -0.35 
+ 1.85376  136.36 -0.35 
+ 1.85846  138.18 -0.35 
+ 1.86295  140 -0.35 
+ 1.8636  140.273 -0.35 
+ 1.86734  141.82 -0.35 
+ 1.87153  143.64 -0.35 
+ 1.8755  145.45 -0.35 
+ 1.8788  147.052 -0.35 
+ 1.87925  147.27 -0.35 
+ 1.88283  149.09 -0.35 
+ 1.88618  150.91 -0.35 
+ 1.88932  152.73 -0.35 
+ 1.89223  154.55 -0.35 
+ 1.8939  155.669 -0.35 
+ 1.89495  156.36 -0.35 
+ 1.8975  158.18 -0.35 
+ 1.89983  160 -0.35 
+ 1.90195  161.82 -0.35 
+ 1.90385  163.64 -0.35 
+ 1.90554  165.45 -0.35 
+ 1.90704  167.27 -0.35 
+ 1.90832  169.09 -0.35 
+ 1.9091  170.402 -0.35 
+ 1.90941  170.91 -0.35 
+ 1.9103  172.73 -0.35 
+ 1.911  174.55 -0.35 
+ 1.91149  176.36 -0.35 
+ 1.91179  178.18 -0.35 
+ 1.91189  180 -0.35 
+
+ 2.5  35.6959 -0.35 
+ 2.4848  36.3355 -0.35 
+ 2.48422  36.36 -0.35 
+ 2.4697  36.9803 -0.35 
+ 2.4545  37.611 -0.35 
+ 2.44062  38.18 -0.35 
+ 2.4394  38.2305 -0.35 
+ 2.4242  38.8554 -0.35 
+ 2.4091  39.468 -0.35 
+ 2.39569  40 -0.35 
+ 2.3939  40.072 -0.35 
+ 2.3788  40.6853 -0.35 
+ 2.3636  41.2886 -0.35 
+ 2.35013  41.82 -0.35 
+ 2.3485  41.8855 -0.35 
+ 2.3333  42.4958 -0.35 
+ 2.3182  43.0985 -0.35 
+ 2.3044  43.64 -0.35 
+ 2.303  43.6961 -0.35 
+ 2.2879  44.3091 -0.35 
+ 2.2727  44.9161 -0.35 
+ 2.25934  45.45 -0.35 
+ 2.2576  45.5221 -0.35 
+ 2.2424  46.1528 -0.35 
+ 2.2273  46.7795 -0.35 
+ 2.21539  47.27 -0.35 
+ 2.2121  47.4103 -0.35 
+ 2.197  48.0644 -0.35 
+ 2.1818  48.7163 -0.35 
+ 2.17319  49.09 -0.35 
+ 2.1667  49.3827 -0.35 
+ 2.1515  50.0687 -0.35 
+ 2.1364  50.7543 -0.35 
+ 2.13299  50.91 -0.35 
+ 2.1212  51.4719 -0.35 
+ 2.1061  52.1989 -0.35 
+ 2.09505  52.73 -0.35 
+ 2.0909  52.9393 -0.35 
+ 2.0758  53.7143 -0.35 
+ 2.0606  54.4908 -0.35 
+ 2.05946  54.55 -0.35 
+ 2.0455  55.3132 -0.35 
+ 2.0303  56.1408 -0.35 
+ 2.02634  56.36 -0.35 
+ 2.0152  57.0175 -0.35 
+ 2  57.9125 -0.35 
+ 1.9955  58.18 -0.35 
+ 1.9848  58.8574 -0.35 
+ 1.9697  59.8241 -0.35 
+ 1.96696  60 -0.35 
+ 1.9545  60.856 -0.35 
+ 1.9406  61.82 -0.35 
+ 1.9394  61.9098 -0.35 
+ 1.9242  63.0468 -0.35 
+ 1.91636  63.64 -0.35 
+ 1.9091  64.2304 -0.35 
+ 1.89407  65.45 -0.35 
+ 1.8939  65.4647 -0.35 
+ 1.8788  66.8229 -0.35 
+ 1.87381  67.27 -0.35 
+ 1.8636  68.2723 -0.35 
+ 1.85536  69.09 -0.35 
+ 1.8485  69.8393 -0.35 
+ 1.83868  70.91 -0.35 
+ 1.8333  71.5605 -0.35 
+ 1.82373  72.73 -0.35 
+ 1.8182  73.4869 -0.35 
+ 1.81041  74.55 -0.35 
+ 1.803  75.6875 -0.35 
+ 1.79866  76.36 -0.35 
+ 1.78845  78.18 -0.35 
+ 1.7879  78.2945 -0.35 
+ 1.77965  80 -0.35 
+ 1.7727  81.6928 -0.35 
+ 1.77218  81.82 -0.35 
+ 1.76608  83.64 -0.35 
+ 1.76116  85.45 -0.35 
+ 1.7576  87.1678 -0.35 
+ 1.75739  87.27 -0.35 
+ 1.75467  89.09 -0.35 
+ 1.75295  90.91 -0.35 
+ 1.75214  92.73 -0.35 
+ 1.75218  94.55 -0.35 
+ 1.75299  96.36 -0.35 
+ 1.75452  98.18 -0.35 
+ 1.75667  100 -0.35 
+ 1.7576  100.619 -0.35 
+ 1.75941  101.82 -0.35 
+ 1.76265  103.64 -0.35 
+ 1.76634  105.45 -0.35 
+ 1.77042  107.27 -0.35 
+ 1.7727  108.214 -0.35 
+ 1.77486  109.09 -0.35 
+ 1.77961  110.91 -0.35 
+ 1.78459  112.73 -0.35 
+ 1.7879  113.9 -0.35 
+ 1.78975  114.55 -0.35 
+ 1.79506  116.36 -0.35 
+ 1.80046  118.18 -0.35 
+
+
+# Contour 16, label:    -0.36
+ 1.87312  0 -0.36 
+ 1.87168  1.82 -0.36 
+ 1.86727  3.64 -0.36 
+ 1.8636  4.53441 -0.36 
+ 1.86002  5.45 -0.36 
+ 1.8498  7.27 -0.36 
+ 1.8485  7.45307 -0.36 
+ 1.83672  9.09 -0.36 
+ 1.8333  9.48265 -0.36 
+ 1.82063  10.91 -0.36 
+ 1.8182  11.1495 -0.36 
+ 1.803  12.5869 -0.36 
+ 1.80145  12.73 -0.36 
+ 1.7879  13.8794 -0.36 
+ 1.77937  14.55 -0.36 
+ 1.7727  15.0498 -0.36 
+ 1.7576  16.1181 -0.36 
+ 1.754  16.36 -0.36 
+ 1.7424  17.1389 -0.36 
+ 1.7273  18.0664 -0.36 
+ 1.72538  18.18 -0.36 
+ 1.7121  18.9851 -0.36 
+ 1.697  19.8157 -0.36 
+ 1.69348  20 -0.36 
+ 1.6818  20.6468 -0.36 
+ 1.6667  21.4153 -0.36 
+ 1.6581  21.82 -0.36 
+ 1.6515  22.157 -0.36 
+ 1.6364  22.8896 -0.36 
+ 1.6212  23.5477 -0.36 
+ 1.61901  23.64 -0.36 
+ 1.6061  24.2426 -0.36 
+ 1.5909  24.8854 -0.36 
+ 1.57626  25.45 -0.36 
+ 1.5758  25.4703 -0.36 
+ 1.5606  26.121 -0.36 
+ 1.5455  26.7102 -0.36 
+ 1.5303  27.2457 -0.36 
+ 1.5296  27.27 -0.36 
+ 1.5152  27.8475 -0.36 
+ 1.5  28.4007 -0.36 
+ 1.4848  28.9061 -0.36 
+ 1.47904  29.09 -0.36 
+ 1.4697  29.4414 -0.36 
+ 1.4545  29.975 -0.36 
+ 1.4394  30.4647 -0.36 
+ 1.4244  30.91 -0.36 
+ 1.4242  30.9172 -0.36 
+ 1.4091  31.4445 -0.36 
+ 1.3939  31.9306 -0.36 
+ 1.3788  32.3804 -0.36 
+ 1.36619  32.73 -0.36 
+ 1.3636  32.8166 -0.36 
+ 1.3485  33.3102 -0.36 
+ 1.3333  33.769 -0.36 
+ 1.3182  34.1971 -0.36 
+ 1.3049  34.55 -0.36 
+ 1.303  34.611 -0.36 
+ 1.2879  35.087 -0.36 
+ 1.2727  35.5334 -0.36 
+ 1.2576  35.9541 -0.36 
+ 1.2424  36.3522 -0.36 
+ 1.2421  36.36 -0.36 
+ 1.2273  36.8322 -0.36 
+ 1.2121  37.2894 -0.36 
+ 1.197  37.7253 -0.36 
+ 1.1818  38.1432 -0.36 
+ 1.18046  38.18 -0.36 
+ 1.1667  38.6413 -0.36 
+ 1.1515  39.1297 -0.36 
+ 1.1364  39.6024 -0.36 
+ 1.12333  40 -0.36 
+ 1.1212  40.079 -0.36 
+ 1.1061  40.6432 -0.36 
+ 1.0909  41.1956 -0.36 
+ 1.0758  41.7403 -0.36 
+ 1.0736  41.82 -0.36 
+ 1.0606  42.3932 -0.36 
+ 1.0455  43.0601 -0.36 
+ 1.03231  43.64 -0.36 
+ 1.0303  43.7466 -0.36 
+ 1.0152  44.5686 -0.36 
+ 1  45.3945 -0.36 
+
+ 1.7273  111.302 -0.36 
+ 1.73111  112.73 -0.36 
+ 1.73614  114.55 -0.36 
+ 1.7413  116.36 -0.36 
+ 1.7424  116.742 -0.36 
+ 1.74662  118.18 -0.36 
+ 1.75201  120 -0.36 
+ 1.75742  121.82 -0.36 
+ 1.7576  121.88 -0.36 
+ 1.76284  123.64 -0.36 
+ 1.76821  125.45 -0.36 
+ 1.7727  126.988 -0.36 
+ 1.77354  127.27 -0.36 
+ 1.77885  129.09 -0.36 
+ 1.78404  130.91 -0.36 
+ 1.7879  132.298 -0.36 
+ 1.7891  132.73 -0.36 
+ 1.79404  134.55 -0.36 
+ 1.79882  136.36 -0.36 
+ 1.803  138.014 -0.36 
+ 1.80343  138.18 -0.36 
+ 1.80793  140 -0.36 
+ 1.81224  141.82 -0.36 
+ 1.81635  143.64 -0.36 
+ 1.8182  144.495 -0.36 
+ 1.82027  145.45 -0.36 
+ 1.824  147.27 -0.36 
+ 1.82751  149.09 -0.36 
+ 1.83082  150.91 -0.36 
+ 1.8333  152.372 -0.36 
+ 1.83392  152.73 -0.36 
+ 1.83686  154.55 -0.36 
+ 1.83959  156.36 -0.36 
+ 1.8421  158.18 -0.36 
+ 1.8444  160 -0.36 
+ 1.8465  161.82 -0.36 
+ 1.84838  163.64 -0.36 
+ 1.8485  163.766 -0.36 
+ 1.85008  165.45 -0.36 
+ 1.85157  167.27 -0.36 
+ 1.85286  169.09 -0.36 
+ 1.85395  170.91 -0.36 
+ 1.85483  172.73 -0.36 
+ 1.85552  174.55 -0.36 
+ 1.85601  176.36 -0.36 
+ 1.8563  178.18 -0.36 
+ 1.8564  180 -0.36 
+
+ 2.5  32.3001 -0.36 
+ 2.49079  32.73 -0.36 
+ 2.4848  33.0064 -0.36 
+ 2.4697  33.7016 -0.36 
+ 2.4545  34.3805 -0.36 
+ 2.45071  34.55 -0.36 
+ 2.4394  35.0512 -0.36 
+ 2.4242  35.7096 -0.36 
+ 2.4091  36.3546 -0.36 
+ 2.40897  36.36 -0.36 
+ 2.3939  37.0056 -0.36 
+ 2.3788  37.6446 -0.36 
+ 2.36588  38.18 -0.36 
+ 2.3636  38.2753 -0.36 
+ 2.3485  38.9107 -0.36 
+ 2.3333  39.5361 -0.36 
+ 2.32199  40 -0.36 
+ 2.3182  40.1579 -0.36 
+ 2.303  40.7866 -0.36 
+ 2.2879  41.4077 -0.36 
+ 2.27776  41.82 -0.36 
+ 2.2727  42.0295 -0.36 
+ 2.2576  42.6602 -0.36 
+ 2.2424  43.2852 -0.36 
+ 2.23383  43.64 -0.36 
+ 2.2273  43.9152 -0.36 
+ 2.2121  44.5531 -0.36 
+ 2.197  45.1872 -0.36 
+ 2.19073  45.45 -0.36 
+ 2.1818  45.8373 -0.36 
+ 2.1667  46.4978 -0.36 
+ 2.1515  47.1563 -0.36 
+ 2.14892  47.27 -0.36 
+ 2.1364  47.8402 -0.36 
+ 2.1212  48.5281 -0.36 
+ 2.10888  49.09 -0.36 
+ 2.1061  49.2222 -0.36 
+ 2.0909  49.9456 -0.36 
+ 2.0758  50.6689 -0.36 
+ 2.07077  50.91 -0.36 
+ 2.0606  51.4202 -0.36 
+ 2.0455  52.1853 -0.36 
+ 2.03473  52.73 -0.36 
+ 2.0303  52.9651 -0.36 
+ 2.0152  53.7783 -0.36 
+ 2.00081  54.55 -0.36 
+ 2  54.5955 -0.36 
+ 1.9848  55.459 -0.36 
+ 1.9697  56.3234 -0.36 
+ 1.96906  56.36 -0.36 
+ 1.9545  57.2503 -0.36 
+ 1.93942  58.18 -0.36 
+ 1.9394  58.1814 -0.36 
+ 1.9242  59.1803 -0.36 
+ 1.91183  60 -0.36 
+ 1.9091  60.1938 -0.36 
+ 1.8939  61.2708 -0.36 
+ 1.88622  61.82 -0.36 
+ 1.8788  62.3907 -0.36 
+ 1.8636  63.555 -0.36 
+ 1.8625  63.64 -0.36 
+ 1.8485  64.8059 -0.36 
+ 1.84072  65.45 -0.36 
+ 1.8333  66.1224 -0.36 
+ 1.82073  67.27 -0.36 
+ 1.8182  67.5231 -0.36 
+ 1.803  69.0349 -0.36 
+ 1.80245  69.09 -0.36 
+ 1.7879  70.698 -0.36 
+ 1.78597  70.91 -0.36 
+ 1.7727  72.5294 -0.36 
+ 1.77107  72.73 -0.36 
+ 1.75785  74.55 -0.36 
+ 1.7576  74.5887 -0.36 
+ 1.74611  76.36 -0.36 
+ 1.7424  77.0189 -0.36 
+ 1.7359  78.18 -0.36 
+ 1.7273  79.9666 -0.36 
+ 1.72714  80 -0.36 
+ 1.71968  81.82 -0.36 
+ 1.71351  83.64 -0.36 
+ 1.7121  84.1571 -0.36 
+ 1.70859  85.45 -0.36 
+ 1.70481  87.27 -0.36 
+ 1.70209  89.09 -0.36 
+ 1.70035  90.91 -0.36 
+ 1.69952  92.73 -0.36 
+ 1.69953  94.55 -0.36 
+ 1.7003  96.36 -0.36 
+ 1.70176  98.18 -0.36 
+ 1.70386  100 -0.36 
+ 1.70651  101.82 -0.36 
+ 1.70966  103.64 -0.36 
+ 1.7121  104.868 -0.36 
+ 1.71327  105.45 -0.36 
+ 1.71729  107.27 -0.36 
+ 1.72163  109.09 -0.36 
+ 1.72626  110.91 -0.36 
+ 1.7273  111.302 -0.36 
+
+
+# Contour 17, label:    -0.37
+ 1.88236  0 -0.37 
+ 1.88089  1.82 -0.37 
+ 1.8788  2.68148 -0.37 
+ 1.8766  3.64 -0.37 
+ 1.8695  5.45 -0.37 
+ 1.8636  6.50385 -0.37 
+ 1.85942  7.27 -0.37 
+ 1.8485  8.80311 -0.37 
+ 1.84644  9.09 -0.37 
+ 1.8333  10.5985 -0.37 
+ 1.83053  10.91 -0.37 
+ 1.8182  12.1271 -0.37 
+ 1.81175  12.73 -0.37 
+ 1.803  13.4818 -0.37 
+ 1.78978  14.55 -0.37 
+ 1.7879  14.6944 -0.37 
+ 1.7727  15.8189 -0.37 
+ 1.76486  16.36 -0.37 
+ 1.7576  16.8603 -0.37 
+ 1.7424  17.8324 -0.37 
+ 1.73667  18.18 -0.37 
+ 1.7273  18.7632 -0.37 
+ 1.7121  19.6302 -0.37 
+ 1.70522  20 -0.37 
+ 1.697  20.4677 -0.37 
+ 1.6818  21.2671 -0.37 
+ 1.67036  21.82 -0.37 
+ 1.6667  22.0118 -0.37 
+ 1.6515  22.7714 -0.37 
+ 1.6364  23.4519 -0.37 
+ 1.632  23.64 -0.37 
+ 1.6212  24.1509 -0.37 
+ 1.6061  24.8136 -0.37 
+ 1.5909  25.4111 -0.37 
+ 1.58989  25.45 -0.37 
+ 1.5758  26.071 -0.37 
+ 1.5606  26.6756 -0.37 
+ 1.5455  27.2236 -0.37 
+ 1.54418  27.27 -0.37 
+ 1.5303  27.8344 -0.37 
+ 1.5152  28.3996 -0.37 
+ 1.5  28.9147 -0.37 
+ 1.49459  29.09 -0.37 
+ 1.4848  29.4633 -0.37 
+ 1.4697  30.0062 -0.37 
+ 1.4545  30.5034 -0.37 
+ 1.44116  30.91 -0.37 
+ 1.4394  30.9743 -0.37 
+ 1.4242  31.5091 -0.37 
+ 1.4091  32.0011 -0.37 
+ 1.3939  32.4554 -0.37 
+ 1.38425  32.73 -0.37 
+ 1.3788  32.9172 -0.37 
+ 1.3636  33.4153 -0.37 
+ 1.3485  33.8773 -0.37 
+ 1.3333  34.3076 -0.37 
+ 1.32438  34.55 -0.37 
+ 1.3182  34.7535 -0.37 
+ 1.303  35.2314 -0.37 
+ 1.2879  35.6788 -0.37 
+ 1.2727  36.0995 -0.37 
+ 1.26295  36.36 -0.37 
+ 1.2576  36.5358 -0.37 
+ 1.2424  37.0172 -0.37 
+ 1.2273  37.4728 -0.37 
+ 1.2121  37.9062 -0.37 
+ 1.20225  38.18 -0.37 
+ 1.197  38.3589 -0.37 
+ 1.1818  38.8626 -0.37 
+ 1.1667  39.3458 -0.37 
+ 1.1515  39.8122 -0.37 
+ 1.14535  40 -0.37 
+ 1.1364  40.3347 -0.37 
+ 1.1212  40.8896 -0.37 
+ 1.1061  41.4311 -0.37 
+ 1.09507  41.82 -0.37 
+ 1.0909  41.9998 -0.37 
+ 1.0758  42.6568 -0.37 
+ 1.0606  43.3057 -0.37 
+ 1.05287  43.64 -0.37 
+ 1.0455  44.0262 -0.37 
+ 1.0303  44.8227 -0.37 
+ 1.01848  45.45 -0.37 
+ 1.0152  45.6618 -0.37 
+ 1  46.658 -0.37 
+
+ 1.65474  101.82 -0.37 
+ 1.65793  103.64 -0.37 
+ 1.66155  105.45 -0.37 
+ 1.66555  107.27 -0.37 
+ 1.6667  107.753 -0.37 
+ 1.66986  109.09 -0.37 
+ 1.67444  110.91 -0.37 
+ 1.67924  112.73 -0.37 
+ 1.6818  113.665 -0.37 
+ 1.68425  114.55 -0.37 
+ 1.68942  116.36 -0.37 
+ 1.69468  118.18 -0.37 
+ 1.697  118.971 -0.37 
+ 1.70001  120 -0.37 
+ 1.70536  121.82 -0.37 
+ 1.71069  123.64 -0.37 
+ 1.7121  124.119 -0.37 
+ 1.71605  125.45 -0.37 
+ 1.72137  127.27 -0.37 
+ 1.72661  129.09 -0.37 
+ 1.7273  129.335 -0.37 
+ 1.73174  130.91 -0.37 
+ 1.73676  132.73 -0.37 
+ 1.74163  134.55 -0.37 
+ 1.7424  134.843 -0.37 
+ 1.74642  136.36 -0.37 
+ 1.75105  138.18 -0.37 
+ 1.7555  140 -0.37 
+ 1.7576  140.894 -0.37 
+ 1.75978  141.82 -0.37 
+ 1.76387  143.64 -0.37 
+ 1.76776  145.45 -0.37 
+ 1.77145  147.27 -0.37 
+ 1.7727  147.921 -0.37 
+ 1.77498  149.09 -0.37 
+ 1.77832  150.91 -0.37 
+ 1.78145  152.73 -0.37 
+ 1.78437  154.55 -0.37 
+ 1.78708  156.36 -0.37 
+ 1.7879  156.953 -0.37 
+ 1.78959  158.18 -0.37 
+ 1.7919  160 -0.37 
+ 1.79399  161.82 -0.37 
+ 1.79589  163.64 -0.37 
+ 1.79758  165.45 -0.37 
+ 1.79906  167.27 -0.37 
+ 1.80034  169.09 -0.37 
+ 1.80143  170.91 -0.37 
+ 1.80231  172.73 -0.37 
+ 1.803  174.55 -0.37 
+ 1.8035  176.36 -0.37 
+ 1.8038  178.18 -0.37 
+ 1.8039  180 -0.37 
+
+ 2.5  28.9747 -0.37 
+ 2.49779  29.09 -0.37 
+ 2.4848  29.7507 -0.37 
+ 2.4697  30.5073 -0.37 
+ 2.4615  30.91 -0.37 
+ 2.4545  31.2478 -0.37 
+ 2.4394  31.9731 -0.37 
+ 2.4242  32.6823 -0.37 
+ 2.42318  32.73 -0.37 
+ 2.4091  33.383 -0.37 
+ 2.3939  34.07 -0.37 
+ 2.3832  34.55 -0.37 
+ 2.3788  34.7456 -0.37 
+ 2.3636  35.4134 -0.37 
+ 2.3485  36.0695 -0.37 
+ 2.34173  36.36 -0.37 
+ 2.3333  36.7242 -0.37 
+ 2.3182  37.3759 -0.37 
+ 2.303  38.0182 -0.37 
+ 2.29919  38.18 -0.37 
+ 2.2879  38.664 -0.37 
+ 2.2727  39.3056 -0.37 
+ 2.2576  39.9398 -0.37 
+ 2.25616  40 -0.37 
+ 2.2424  40.5845 -0.37 
+ 2.2273  41.2247 -0.37 
+ 2.21307  41.82 -0.37 
+ 2.2121  41.8613 -0.37 
+ 2.197  42.5128 -0.37 
+ 2.1818  43.1603 -0.37 
+ 2.1706  43.64 -0.37 
+ 2.1667  43.8099 -0.37 
+ 2.1515  44.4714 -0.37 
+ 2.1364  45.1307 -0.37 
+ 2.12906  45.45 -0.37 
+ 2.1212  45.8042 -0.37 
+ 2.1061  46.4912 -0.37 
+ 2.0909  47.1772 -0.37 
+ 2.08887  47.27 -0.37 
+ 2.0758  47.8896 -0.37 
+ 2.0606  48.6058 -0.37 
+ 2.05043  49.09 -0.37 
+ 2.0455  49.3337 -0.37 
+ 2.0303  50.0852 -0.37 
+ 2.0152  50.8376 -0.37 
+ 2.01375  50.91 -0.37 
+ 2  51.6267 -0.37 
+ 1.9848  52.4204 -0.37 
+ 1.97894  52.73 -0.37 
+ 1.9697  53.2425 -0.37 
+ 1.9545  54.0831 -0.37 
+ 1.94614  54.55 -0.37 
+ 1.9394  54.9451 -0.37 
+ 1.9242  55.8333 -0.37 
+ 1.91527  56.36 -0.37 
+ 1.9091  56.748 -0.37 
+ 1.8939  57.7002 -0.37 
+ 1.88631  58.18 -0.37 
+ 1.8788  58.6854 -0.37 
+ 1.8636  59.7036 -0.37 
+ 1.85921  60 -0.37 
+ 1.8485  60.7743 -0.37 
+ 1.83394  61.82 -0.37 
+ 1.8333  61.8697 -0.37 
+ 1.8182  63.0463 -0.37 
+ 1.81053  63.64 -0.37 
+ 1.803  64.2664 -0.37 
+ 1.78887  65.45 -0.37 
+ 1.7879  65.5385 -0.37 
+ 1.7727  66.9219 -0.37 
+ 1.7689  67.27 -0.37 
+ 1.7576  68.4024 -0.37 
+ 1.75068  69.09 -0.37 
+ 1.7424  69.9986 -0.37 
+ 1.73413  70.91 -0.37 
+ 1.7273  71.7473 -0.37 
+ 1.71922  72.73 -0.37 
+ 1.7121  73.701 -0.37 
+ 1.70591  74.55 -0.37 
+ 1.697  75.9265 -0.37 
+ 1.69417  76.36 -0.37 
+ 1.68388  78.18 -0.37 
+ 1.6818  78.6087 -0.37 
+ 1.67508  80 -0.37 
+ 1.66765  81.82 -0.37 
+ 1.6667  82.1038 -0.37 
+ 1.66149  83.64 -0.37 
+ 1.65656  85.45 -0.37 
+ 1.65278  87.27 -0.37 
+ 1.6515  88.1292 -0.37 
+ 1.65008  89.09 -0.37 
+ 1.64838  90.91 -0.37 
+ 1.64759  92.73 -0.37 
+ 1.64763  94.55 -0.37 
+ 1.64844  96.36 -0.37 
+ 1.64994  98.18 -0.37 
+ 1.6515  99.5262 -0.37 
+ 1.65205  100 -0.37 
+ 1.65474  101.82 -0.37 
+
+
+# Contour 18, label:    -0.38
+ 1.89215  0 -0.38 
+ 1.89079  1.82 -0.38 
+ 1.88663  3.64 -0.38 
+ 1.87942  5.45 -0.38 
+ 1.8788  5.56446 -0.38 
+ 1.86963  7.27 -0.38 
+ 1.8636  8.12702 -0.38 
+ 1.85686  9.09 -0.38 
+ 1.8485  10.0747 -0.38 
+ 1.84119  10.91 -0.38 
+ 1.8333  11.6984 -0.38 
+ 1.82256  12.73 -0.38 
+ 1.8182  13.1148 -0.38 
+ 1.803  14.3803 -0.38 
+ 1.8009  14.55 -0.38 
+ 1.7879  15.5499 -0.38 
+ 1.77632  16.36 -0.38 
+ 1.7727  16.6131 -0.38 
+ 1.7576  17.6286 -0.38 
+ 1.74863  18.18 -0.38 
+ 1.7424  18.5732 -0.38 
+ 1.7273  19.4752 -0.38 
+ 1.71767  20 -0.38 
+ 1.7121  20.3212 -0.38 
+ 1.697  21.1498 -0.38 
+ 1.68331  21.82 -0.38 
+ 1.6818  21.9005 -0.38 
+ 1.6667  22.6853 -0.38 
+ 1.6515  23.3859 -0.38 
+ 1.64571  23.64 -0.38 
+ 1.6364  24.0924 -0.38 
+ 1.6212  24.7729 -0.38 
+ 1.6061  25.3846 -0.38 
+ 1.60443  25.45 -0.38 
+ 1.5909  26.0543 -0.38 
+ 1.5758  26.6718 -0.38 
+ 1.5606  27.2301 -0.38 
+ 1.55949  27.27 -0.38 
+ 1.5455  27.8546 -0.38 
+ 1.5303  28.4292 -0.38 
+ 1.5152  28.9516 -0.38 
+ 1.51101  29.09 -0.38 
+ 1.5  29.5186 -0.38 
+ 1.4848  30.0685 -0.38 
+ 1.4697  30.5709 -0.38 
+ 1.45872  30.91 -0.38 
+ 1.4545  31.0657 -0.38 
+ 1.4394  31.6056 -0.38 
+ 1.4242  32.101 -0.38 
+ 1.4091  32.5576 -0.38 
+ 1.40311  32.73 -0.38 
+ 1.3939  33.0508 -0.38 
+ 1.3788  33.551 -0.38 
+ 1.3636  34.0139 -0.38 
+ 1.3485  34.4444 -0.38 
+ 1.34466  34.55 -0.38 
+ 1.3333  34.9282 -0.38 
+ 1.3182  35.4058 -0.38 
+ 1.303  35.8519 -0.38 
+ 1.2879  36.2707 -0.38 
+ 1.28458  36.36 -0.38 
+ 1.2727  36.7539 -0.38 
+ 1.2576  37.2325 -0.38 
+ 1.2424  37.6844 -0.38 
+ 1.2273  38.1135 -0.38 
+ 1.22491  38.18 -0.38 
+ 1.2121  38.6179 -0.38 
+ 1.197  39.1155 -0.38 
+ 1.1818  39.5917 -0.38 
+ 1.16841  40 -0.38 
+ 1.1667  40.0641 -0.38 
+ 1.1515  40.6271 -0.38 
+ 1.1364  41.171 -0.38 
+ 1.1212  41.7002 -0.38 
+ 1.11779  41.82 -0.38 
+ 1.1061  42.3232 -0.38 
+ 1.0909  42.9631 -0.38 
+ 1.0758  43.5931 -0.38 
+ 1.07469  43.64 -0.38 
+ 1.0606  44.3604 -0.38 
+ 1.0455  45.1308 -0.38 
+ 1.03928  45.45 -0.38 
+ 1.0303  46.0135 -0.38 
+ 1.0152  46.9734 -0.38 
+ 1.0106  47.27 -0.38 
+ 1  48.0958 -0.38 
+
+ 1.59677  96.36 -0.38 
+ 1.59839  98.18 -0.38 
+ 1.60063  100 -0.38 
+ 1.60343  101.82 -0.38 
+ 1.6061  103.303 -0.38 
+ 1.6067  103.64 -0.38 
+ 1.61039  105.45 -0.38 
+ 1.61444  107.27 -0.38 
+ 1.6188  109.09 -0.38 
+ 1.6212  110.032 -0.38 
+ 1.62345  110.91 -0.38 
+ 1.62833  112.73 -0.38 
+ 1.63339  114.55 -0.38 
+ 1.6364  115.598 -0.38 
+ 1.63857  116.36 -0.38 
+ 1.64384  118.18 -0.38 
+ 1.64916  120 -0.38 
+ 1.6515  120.795 -0.38 
+ 1.65454  121.82 -0.38 
+ 1.65994  123.64 -0.38 
+ 1.6653  125.45 -0.38 
+ 1.6667  125.927 -0.38 
+ 1.67061  127.27 -0.38 
+ 1.67583  129.09 -0.38 
+ 1.68095  130.91 -0.38 
+ 1.6818  131.22 -0.38 
+ 1.686  132.73 -0.38 
+ 1.69093  134.55 -0.38 
+ 1.69571  136.36 -0.38 
+ 1.697  136.869 -0.38 
+ 1.70033  138.18 -0.38 
+ 1.70477  140 -0.38 
+ 1.70904  141.82 -0.38 
+ 1.7121  143.183 -0.38 
+ 1.71314  143.64 -0.38 
+ 1.71708  145.45 -0.38 
+ 1.72083  147.27 -0.38 
+ 1.72437  149.09 -0.38 
+ 1.7273  150.684 -0.38 
+ 1.72771  150.91 -0.38 
+ 1.73085  152.73 -0.38 
+ 1.73378  154.55 -0.38 
+ 1.7365  156.36 -0.38 
+ 1.73902  158.18 -0.38 
+ 1.74133  160 -0.38 
+ 1.7424  160.929 -0.38 
+ 1.74344  161.82 -0.38 
+ 1.74537  163.64 -0.38 
+ 1.74709  165.45 -0.38 
+ 1.7486  167.27 -0.38 
+ 1.74991  169.09 -0.38 
+ 1.75102  170.91 -0.38 
+ 1.75192  172.73 -0.38 
+ 1.75262  174.55 -0.38 
+ 1.75313  176.36 -0.38 
+ 1.75342  178.18 -0.38 
+ 1.75352  180 -0.38 
+
+ 2.5  25.6347 -0.38 
+ 2.4848  26.4946 -0.38 
+ 2.47086  27.27 -0.38 
+ 2.4697  27.3326 -0.38 
+ 2.4545  28.1419 -0.38 
+ 2.4394  28.9325 -0.38 
+ 2.43635  29.09 -0.38 
+ 2.4242  29.7023 -0.38 
+ 2.4091  30.4546 -0.38 
+ 2.39978  30.91 -0.38 
+ 2.3939  31.1918 -0.38 
+ 2.3788  31.9145 -0.38 
+ 2.3636  32.6236 -0.38 
+ 2.36133  32.73 -0.38 
+ 2.3485  33.3237 -0.38 
+ 2.3333  34.0121 -0.38 
+ 2.32136  34.55 -0.38 
+ 2.3182  34.6907 -0.38 
+ 2.303  35.3621 -0.38 
+ 2.2879  36.0238 -0.38 
+ 2.28013  36.36 -0.38 
+ 2.2727  36.6838 -0.38 
+ 2.2576  37.3431 -0.38 
+ 2.2424  37.9947 -0.38 
+ 2.23811  38.18 -0.38 
+ 2.2273  38.6498 -0.38 
+ 2.2121  39.3025 -0.38 
+ 2.197  39.9499 -0.38 
+ 2.19583  40 -0.38 
+ 2.1818  40.6078 -0.38 
+ 2.1667  41.2626 -0.38 
+ 2.15372  41.82 -0.38 
+ 2.1515  41.9169 -0.38 
+ 2.1364  42.5844 -0.38 
+ 2.1212  43.2496 -0.38 
+ 2.11235  43.64 -0.38 
+ 2.1061  43.9206 -0.38 
+ 2.0909  44.6007 -0.38 
+ 2.0758  45.2802 -0.38 
+ 2.07202  45.45 -0.38 
+ 2.0606  45.9807 -0.38 
+ 2.0455  46.6881 -0.38 
+ 2.03303  47.27 -0.38 
+ 2.0303  47.4014 -0.38 
+ 2.0152  48.1383 -0.38 
+ 2  48.876 -0.38 
+ 1.99562  49.09 -0.38 
+ 1.9848  49.6383 -0.38 
+ 1.9697  50.4105 -0.38 
+ 1.95991  50.91 -0.38 
+ 1.9545  51.1978 -0.38 
+ 1.9394  52.0096 -0.38 
+ 1.92594  52.73 -0.38 
+ 1.9242  52.8279 -0.38 
+ 1.9091  53.6844 -0.38 
+ 1.8939  54.5421 -0.38 
+ 1.89376  54.55 -0.38 
+ 1.8788  55.4435 -0.38 
+ 1.8636  56.3456 -0.38 
+ 1.86336  56.36 -0.38 
+ 1.8485  57.3073 -0.38 
+ 1.83472  58.18 -0.38 
+ 1.8333  58.2756 -0.38 
+ 1.8182  59.3003 -0.38 
+ 1.80782  60 -0.38 
+ 1.803  60.3471 -0.38 
+ 1.7879  61.4418 -0.38 
+ 1.78264  61.82 -0.38 
+ 1.7727  62.5892 -0.38 
+ 1.75918  63.64 -0.38 
+ 1.7576  63.7723 -0.38 
+ 1.7424  65.0323 -0.38 
+ 1.73738  65.45 -0.38 
+ 1.7273  66.3684 -0.38 
+ 1.71731  67.27 -0.38 
+ 1.7121  67.7854 -0.38 
+ 1.69896  69.09 -0.38 
+ 1.697  69.3045 -0.38 
+ 1.68221  70.91 -0.38 
+ 1.6818  70.9593 -0.38 
+ 1.6672  72.73 -0.38 
+ 1.6667  72.7975 -0.38 
+ 1.65372  74.55 -0.38 
+ 1.6515  74.8881 -0.38 
+ 1.64188  76.36 -0.38 
+ 1.6364  77.3304 -0.38 
+ 1.63155  78.18 -0.38 
+ 1.62268  80 -0.38 
+ 1.6212  80.3609 -0.38 
+ 1.61524  81.82 -0.38 
+ 1.60914  83.64 -0.38 
+ 1.6061  84.7774 -0.38 
+ 1.60428  85.45 -0.38 
+ 1.60057  87.27 -0.38 
+ 1.59796  89.09 -0.38 
+ 1.59635  90.91 -0.38 
+ 1.59567  92.73 -0.38 
+ 1.59584  94.55 -0.38 
+ 1.59677  96.36 -0.38 
+
+
+# Contour 19, label:    -0.39
+ 1.90286  0 -0.39 
+ 1.90147  1.82 -0.39 
+ 1.89721  3.64 -0.39 
+ 1.8939  4.47743 -0.39 
+ 1.89025  5.45 -0.39 
+ 1.88044  7.27 -0.39 
+ 1.8788  7.5095 -0.39 
+ 1.8679  9.09 -0.39 
+ 1.8636  9.60291 -0.39 
+ 1.85247  10.91 -0.39 
+ 1.8485  11.3178 -0.39 
+ 1.83402  12.73 -0.39 
+ 1.8333  12.794 -0.39 
+ 1.8182  14.1187 -0.39 
+ 1.81294  14.55 -0.39 
+ 1.803  15.3246 -0.39 
+ 1.78861  16.36 -0.39 
+ 1.7879  16.4106 -0.39 
+ 1.7727  17.4672 -0.39 
+ 1.76142  18.18 -0.39 
+ 1.7576  18.4274 -0.39 
+ 1.7424  19.3616 -0.39 
+ 1.731  20 -0.39 
+ 1.7273  20.2191 -0.39 
+ 1.7121  21.0739 -0.39 
+ 1.69726  21.82 -0.39 
+ 1.697  21.8343 -0.39 
+ 1.6818  22.6413 -0.39 
+ 1.6667  23.3589 -0.39 
+ 1.66038  23.64 -0.39 
+ 1.6515  24.0773 -0.39 
+ 1.6364  24.7723 -0.39 
+ 1.6212  25.395 -0.39 
+ 1.61983  25.45 -0.39 
+ 1.6061  26.08 -0.39 
+ 1.5909  26.707 -0.39 
+ 1.57587  27.27 -0.39 
+ 1.5758  27.2732 -0.39 
+ 1.5606  27.9166 -0.39 
+ 1.5455  28.4973 -0.39 
+ 1.5303  29.024 -0.39 
+ 1.52835  29.09 -0.39 
+ 1.5152  29.6158 -0.39 
+ 1.5  30.1693 -0.39 
+ 1.4848  30.6738 -0.39 
+ 1.47734  30.91 -0.39 
+ 1.4697  31.1996 -0.39 
+ 1.4545  31.741 -0.39 
+ 1.4394  32.2368 -0.39 
+ 1.4242  32.6929 -0.39 
+ 1.42294  32.73 -0.39 
+ 1.4091  33.2247 -0.39 
+ 1.3939  33.7237 -0.39 
+ 1.3788  34.1847 -0.39 
+ 1.36594  34.55 -0.39 
+ 1.3636  34.6306 -0.39 
+ 1.3485  35.1416 -0.39 
+ 1.3333  35.6158 -0.39 
+ 1.3182  36.058 -0.39 
+ 1.30727  36.36 -0.39 
+ 1.303  36.5061 -0.39 
+ 1.2879  37.0105 -0.39 
+ 1.2727  37.4834 -0.39 
+ 1.2576  37.9292 -0.39 
+ 1.24873  38.18 -0.39 
+ 1.2424  38.4011 -0.39 
+ 1.2273  38.9162 -0.39 
+ 1.2121  39.4051 -0.39 
+ 1.197  39.8721 -0.39 
+ 1.19278  40 -0.39 
+ 1.1818  40.4108 -0.39 
+ 1.1667  40.9614 -0.39 
+ 1.1515  41.4921 -0.39 
+ 1.14201  41.82 -0.39 
+ 1.1364  42.0588 -0.39 
+ 1.1212  42.6962 -0.39 
+ 1.1061  43.317 -0.39 
+ 1.09816  43.64 -0.39 
+ 1.0909  44.0012 -0.39 
+ 1.0758  44.7547 -0.39 
+ 1.0616  45.45 -0.39 
+ 1.0606  45.5102 -0.39 
+ 1.0455  46.4424 -0.39 
+ 1.03191  47.27 -0.39 
+ 1.0303  47.3891 -0.39 
+ 1.0152  48.5395 -0.39 
+ 1.008  49.09 -0.39 
+ 1  49.8303 -0.39 
+
+ 1.54745  87.27 -0.39 
+ 1.5455  88.7397 -0.39 
+ 1.54503  89.09 -0.39 
+ 1.54361  90.91 -0.39 
+ 1.54313  92.73 -0.39 
+ 1.54351  94.55 -0.39 
+ 1.54466  96.36 -0.39 
+ 1.5455  97.1892 -0.39 
+ 1.54649  98.18 -0.39 
+ 1.54891  100 -0.39 
+ 1.55188  101.82 -0.39 
+ 1.55533  103.64 -0.39 
+ 1.5592  105.45 -0.39 
+ 1.5606  106.054 -0.39 
+ 1.56342  107.27 -0.39 
+ 1.56797  109.09 -0.39 
+ 1.57277  110.91 -0.39 
+ 1.5758  112.008 -0.39 
+ 1.57777  112.73 -0.39 
+ 1.58291  114.55 -0.39 
+ 1.58817  116.36 -0.39 
+ 1.5909  117.285 -0.39 
+ 1.59355  118.18 -0.39 
+ 1.59899  120 -0.39 
+ 1.60446  121.82 -0.39 
+ 1.6061  122.366 -0.39 
+ 1.6099  123.64 -0.39 
+ 1.6153  125.45 -0.39 
+ 1.62064  127.27 -0.39 
+ 1.6212  127.463 -0.39 
+ 1.62595  129.09 -0.39 
+ 1.63116  130.91 -0.39 
+ 1.63626  132.73 -0.39 
+ 1.6364  132.783 -0.39 
+ 1.6412  134.55 -0.39 
+ 1.646  136.36 -0.39 
+ 1.65064  138.18 -0.39 
+ 1.6515  138.528 -0.39 
+ 1.65516  140 -0.39 
+ 1.6595  141.82 -0.39 
+ 1.66366  143.64 -0.39 
+ 1.6667  145.026 -0.39 
+ 1.66763  145.45 -0.39 
+ 1.67139  147.27 -0.39 
+ 1.67495  149.09 -0.39 
+ 1.67831  150.91 -0.39 
+ 1.68147  152.73 -0.39 
+ 1.6818  152.933 -0.39 
+ 1.68445  154.55 -0.39 
+ 1.68723  156.36 -0.39 
+ 1.6898  158.18 -0.39 
+ 1.69216  160 -0.39 
+ 1.69431  161.82 -0.39 
+ 1.69625  163.64 -0.39 
+ 1.697  164.421 -0.39 
+ 1.69799  165.45 -0.39 
+ 1.69951  167.27 -0.39 
+ 1.70083  169.09 -0.39 
+ 1.70195  170.91 -0.39 
+ 1.70286  172.73 -0.39 
+ 1.70357  174.55 -0.39 
+ 1.70407  176.36 -0.39 
+ 1.70438  178.18 -0.39 
+ 1.70448  180 -0.39 
+
+ 2.5  22.1797 -0.39 
+ 2.4848  23.1566 -0.39 
+ 2.47722  23.64 -0.39 
+ 2.4697  24.0933 -0.39 
+ 2.4545  24.9911 -0.39 
+ 2.44667  25.45 -0.39 
+ 2.4394  25.861 -0.39 
+ 2.4242  26.7039 -0.39 
+ 2.4139  27.27 -0.39 
+ 2.4091  27.5248 -0.39 
+ 2.3939  28.3201 -0.39 
+ 2.37899  29.09 -0.39 
+ 2.3788  29.0996 -0.39 
+ 2.3636  29.8571 -0.39 
+ 2.3485  30.6009 -0.39 
+ 2.34213  30.91 -0.39 
+ 2.3333  31.3306 -0.39 
+ 2.3182  32.0469 -0.39 
+ 2.30349  32.73 -0.39 
+ 2.303  32.7524 -0.39 
+ 2.2879  33.4492 -0.39 
+ 2.2727  34.1361 -0.39 
+ 2.26354  34.55 -0.39 
+ 2.2576  34.8152 -0.39 
+ 2.2424  35.4867 -0.39 
+ 2.2273  36.1512 -0.39 
+ 2.22252  36.36 -0.39 
+ 2.2121  36.8173 -0.39 
+ 2.197  37.4809 -0.39 
+ 2.1818  38.1399 -0.39 
+ 2.18088  38.18 -0.39 
+ 2.1667  38.8039 -0.39 
+ 2.1515  39.4648 -0.39 
+ 2.13924  40 -0.39 
+ 2.1364  40.1256 -0.39 
+ 2.1212  40.794 -0.39 
+ 2.1061  41.4606 -0.39 
+ 2.09792  41.82 -0.39 
+ 2.0909  42.1334 -0.39 
+ 2.0758  42.8132 -0.39 
+ 2.0606  43.493 -0.39 
+ 2.05735  43.64 -0.39 
+ 2.0455  44.1844 -0.39 
+ 2.0303  44.879 -0.39 
+ 2.01792  45.45 -0.39 
+ 2.0152  45.5794 -0.39 
+ 2  46.3016 -0.39 
+ 1.9848  47.0251 -0.39 
+ 1.97971  47.27 -0.39 
+ 1.9697  47.767 -0.39 
+ 1.9545  48.5188 -0.39 
+ 1.94306  49.09 -0.39 
+ 1.9394  49.2796 -0.39 
+ 1.9242  50.0643 -0.39 
+ 1.9091  50.8506 -0.39 
+ 1.90796  50.91 -0.39 
+ 1.8939  51.6699 -0.39 
+ 1.8788  52.4931 -0.39 
+ 1.87444  52.73 -0.39 
+ 1.8636  53.3457 -0.39 
+ 1.8485  54.2103 -0.39 
+ 1.84253  54.55 -0.39 
+ 1.8333  55.1003 -0.39 
+ 1.8182  56.0058 -0.39 
+ 1.81225  56.36 -0.39 
+ 1.803  56.9463 -0.39 
+ 1.7879  57.9086 -0.39 
+ 1.78361  58.18 -0.39 
+ 1.7727  58.9131 -0.39 
+ 1.7576  59.9328 -0.39 
+ 1.75659  60 -0.39 
+ 1.7424  61.0152 -0.39 
+ 1.73119  61.82 -0.39 
+ 1.7273  62.1208 -0.39 
+ 1.7121  63.2825 -0.39 
+ 1.70744  63.64 -0.39 
+ 1.697  64.5009 -0.39 
+ 1.68537  65.45 -0.39 
+ 1.6818  65.7697 -0.39 
+ 1.6667  67.1226 -0.39 
+ 1.66504  67.27 -0.39 
+ 1.6515  68.586 -0.39 
+ 1.64633  69.09 -0.39 
+ 1.6364  70.1594 -0.39 
+ 1.62935  70.91 -0.39 
+ 1.6212  71.8799 -0.39 
+ 1.61406  72.73 -0.39 
+ 1.6061  73.8003 -0.39 
+ 1.60046  74.55 -0.39 
+ 1.5909  75.9905 -0.39 
+ 1.58845  76.36 -0.39 
+ 1.57809  78.18 -0.39 
+ 1.5758  78.6525 -0.39 
+ 1.56919  80 -0.39 
+ 1.56176  81.82 -0.39 
+ 1.5606  82.1687 -0.39 
+ 1.55572  83.64 -0.39 
+ 1.55098  85.45 -0.39 
+ 1.54745  87.27 -0.39 
+
+
+# Contour 20, label:     -0.4
+ 1.91424  0 -0.4 
+ 1.91285  1.82 -0.4 
+ 1.9091  3.42148 -0.4 
+ 1.90862  3.64 -0.4 
+ 1.90191  5.45 -0.4 
+ 1.8939  6.93612 -0.4 
+ 1.89215  7.27 -0.4 
+ 1.87977  9.09 -0.4 
+ 1.8788  9.20882 -0.4 
+ 1.86454  10.91 -0.4 
+ 1.8636  11.0078 -0.4 
+ 1.8485  12.546 -0.4 
+ 1.84661  12.73 -0.4 
+ 1.8333  13.92 -0.4 
+ 1.82582  14.55 -0.4 
+ 1.8182  15.1606 -0.4 
+ 1.803  16.2797 -0.4 
+ 1.80188  16.36 -0.4 
+ 1.7879  17.3636 -0.4 
+ 1.77516  18.18 -0.4 
+ 1.7727  18.3417 -0.4 
+ 1.7576  19.3036 -0.4 
+ 1.74534  20 -0.4 
+ 1.7424  20.1764 -0.4 
+ 1.7273  21.0527 -0.4 
+ 1.71224  21.82 -0.4 
+ 1.7121  21.8279 -0.4 
+ 1.697  22.6521 -0.4 
+ 1.6818  23.3821 -0.4 
+ 1.67615  23.64 -0.4 
+ 1.6667  24.1182 -0.4 
+ 1.6515  24.8229 -0.4 
+ 1.63646  25.45 -0.4 
+ 1.6364  25.4527 -0.4 
+ 1.6212  26.1596 -0.4 
+ 1.6061  26.7915 -0.4 
+ 1.59348  27.27 -0.4 
+ 1.5909  27.3838 -0.4 
+ 1.5758  28.0309 -0.4 
+ 1.5606  28.6132 -0.4 
+ 1.54704  29.09 -0.4 
+ 1.5455  29.154 -0.4 
+ 1.5303  29.7648 -0.4 
+ 1.5152  30.3174 -0.4 
+ 1.5  30.8199 -0.4 
+ 1.49719  30.91 -0.4 
+ 1.4848  31.3857 -0.4 
+ 1.4697  31.9242 -0.4 
+ 1.4545  32.4163 -0.4 
+ 1.44424  32.73 -0.4 
+ 1.4394  32.9095 -0.4 
+ 1.4242  33.4475 -0.4 
+ 1.4091  33.9413 -0.4 
+ 1.3939  34.3966 -0.4 
+ 1.38862  34.55 -0.4 
+ 1.3788  34.8975 -0.4 
+ 1.3636  35.4016 -0.4 
+ 1.3485  35.8686 -0.4 
+ 1.3333  36.3034 -0.4 
+ 1.33129  36.36 -0.4 
+ 1.3182  36.8178 -0.4 
+ 1.303  37.3131 -0.4 
+ 1.2879  37.7767 -0.4 
+ 1.2739  38.18 -0.4 
+ 1.2727  38.223 -0.4 
+ 1.2576  38.7576 -0.4 
+ 1.2424  39.2609 -0.4 
+ 1.2273  39.7378 -0.4 
+ 1.21869  40 -0.4 
+ 1.2121  40.2491 -0.4 
+ 1.197  40.8093 -0.4 
+ 1.1818  41.3443 -0.4 
+ 1.16788  41.82 -0.4 
+ 1.1667  41.8701 -0.4 
+ 1.1515  42.5093 -0.4 
+ 1.1364  43.1255 -0.4 
+ 1.12341  43.64 -0.4 
+ 1.1212  43.7478 -0.4 
+ 1.1061  44.4912 -0.4 
+ 1.0909  45.2158 -0.4 
+ 1.08605  45.45 -0.4 
+ 1.0758  46.0625 -0.4 
+ 1.0606  46.9563 -0.4 
+ 1.05535  47.27 -0.4 
+ 1.0455  47.9912 -0.4 
+ 1.03032  49.09 -0.4 
+ 1.0303  49.0915 -0.4 
+ 1.0152  50.4647 -0.4 
+ 1.01033  50.91 -0.4 
+ 1  52.0505 -0.4 
+
+ 1.5152  79.7101 -0.4 
+ 1.51378  80 -0.4 
+ 1.5064  81.82 -0.4 
+ 1.50051  83.64 -0.4 
+ 1.5  83.8406 -0.4 
+ 1.49592  85.45 -0.4 
+ 1.4926  87.27 -0.4 
+ 1.49043  89.09 -0.4 
+ 1.48932  90.91 -0.4 
+ 1.48917  92.73 -0.4 
+ 1.48987  94.55 -0.4 
+ 1.49135  96.36 -0.4 
+ 1.49352  98.18 -0.4 
+ 1.49629  100 -0.4 
+ 1.4996  101.82 -0.4 
+ 1.5  102.011 -0.4 
+ 1.50336  103.64 -0.4 
+ 1.50753  105.45 -0.4 
+ 1.51204  107.27 -0.4 
+ 1.5152  108.464 -0.4 
+ 1.51683  109.09 -0.4 
+ 1.52182  110.91 -0.4 
+ 1.52701  112.73 -0.4 
+ 1.5303  113.848 -0.4 
+ 1.53236  114.55 -0.4 
+ 1.53784  116.36 -0.4 
+ 1.5434  118.18 -0.4 
+ 1.5455  118.861 -0.4 
+ 1.54897  120 -0.4 
+ 1.55455  121.82 -0.4 
+ 1.5601  123.64 -0.4 
+ 1.5606  123.802 -0.4 
+ 1.56565  125.45 -0.4 
+ 1.57114  127.27 -0.4 
+ 1.5758  128.836 -0.4 
+ 1.57655  129.09 -0.4 
+ 1.58182  130.91 -0.4 
+ 1.58697  132.73 -0.4 
+ 1.5909  134.153 -0.4 
+ 1.592  134.55 -0.4 
+ 1.59691  136.36 -0.4 
+ 1.60167  138.18 -0.4 
+ 1.6061  139.94 -0.4 
+ 1.60625  140 -0.4 
+ 1.61063  141.82 -0.4 
+ 1.61483  143.64 -0.4 
+ 1.61884  145.45 -0.4 
+ 1.6212  146.577 -0.4 
+ 1.62266  147.27 -0.4 
+ 1.62631  149.09 -0.4 
+ 1.62975  150.91 -0.4 
+ 1.63299  152.73 -0.4 
+ 1.63601  154.55 -0.4 
+ 1.6364  154.798 -0.4 
+ 1.63882  156.36 -0.4 
+ 1.64141  158.18 -0.4 
+ 1.6438  160 -0.4 
+ 1.64598  161.82 -0.4 
+ 1.64794  163.64 -0.4 
+ 1.6497  165.45 -0.4 
+ 1.65124  167.27 -0.4 
+ 1.6515  167.619 -0.4 
+ 1.6526  169.09 -0.4 
+ 1.65374  170.91 -0.4 
+ 1.65468  172.73 -0.4 
+ 1.6554  174.55 -0.4 
+ 1.65592  176.36 -0.4 
+ 1.65623  178.18 -0.4 
+ 1.65633  180 -0.4 
+
+ 2.5  18.436 -0.4 
+ 2.4848  19.5832 -0.4 
+ 2.47925  20 -0.4 
+ 2.4697  20.6667 -0.4 
+ 2.4545  21.7039 -0.4 
+ 2.4528  21.82 -0.4 
+ 2.4394  22.6797 -0.4 
+ 2.4242  23.6297 -0.4 
+ 2.42403  23.64 -0.4 
+ 2.4091  24.523 -0.4 
+ 2.3939  25.398 -0.4 
+ 2.393  25.45 -0.4 
+ 2.3788  26.2389 -0.4 
+ 2.3636  27.0628 -0.4 
+ 2.35977  27.27 -0.4 
+ 2.3485  27.8601 -0.4 
+ 2.3333  28.6394 -0.4 
+ 2.32448  29.09 -0.4 
+ 2.3182  29.402 -0.4 
+ 2.303  30.1465 -0.4 
+ 2.2879  30.8805 -0.4 
+ 2.28729  30.91 -0.4 
+ 2.2727  31.5988 -0.4 
+ 2.2576  32.3074 -0.4 
+ 2.24847  32.73 -0.4 
+ 2.2424  33.0075 -0.4 
+ 2.2273  33.6986 -0.4 
+ 2.2121  34.3831 -0.4 
+ 2.20841  34.55 -0.4 
+ 2.197  35.0598 -0.4 
+ 2.1818  35.7304 -0.4 
+ 2.16754  36.36 -0.4 
+ 2.1667  36.3974 -0.4 
+ 2.1515  37.0677 -0.4 
+ 2.1364  37.7344 -0.4 
+ 2.12624  38.18 -0.4 
+ 2.1212  38.4017 -0.4 
+ 2.1061  39.0709 -0.4 
+ 2.0909  39.7391 -0.4 
+ 2.08502  40 -0.4 
+ 2.0758  40.4124 -0.4 
+ 2.0606  41.0884 -0.4 
+ 2.0455  41.7653 -0.4 
+ 2.04428  41.82 -0.4 
+ 2.0303  42.4536 -0.4 
+ 2.0152  43.1437 -0.4 
+ 2.00431  43.64 -0.4 
+ 2  43.8389 -0.4 
+ 1.9848  44.5429 -0.4 
+ 1.9697  45.2492 -0.4 
+ 1.9654  45.45 -0.4 
+ 1.9545  45.9735 -0.4 
+ 1.9394  46.7059 -0.4 
+ 1.92774  47.27 -0.4 
+ 1.9242  47.4465 -0.4 
+ 1.9091  48.2051 -0.4 
+ 1.8939  48.9666 -0.4 
+ 1.89146  49.09 -0.4 
+ 1.8788  49.7517 -0.4 
+ 1.8636  50.543 -0.4 
+ 1.85661  50.91 -0.4 
+ 1.8485  51.3527 -0.4 
+ 1.8333  52.1778 -0.4 
+ 1.82321  52.73 -0.4 
+ 1.8182  53.0164 -0.4 
+ 1.803  53.8793 -0.4 
+ 1.79127  54.55 -0.4 
+ 1.7879  54.7513 -0.4 
+ 1.7727  55.6516 -0.4 
+ 1.76081  56.36 -0.4 
+ 1.7576  56.5635 -0.4 
+ 1.7424  57.5162 -0.4 
+ 1.73186  58.18 -0.4 
+ 1.7273  58.4851 -0.4 
+ 1.7121  59.4915 -0.4 
+ 1.70444  60 -0.4 
+ 1.697  60.5282 -0.4 
+ 1.6818  61.5956 -0.4 
+ 1.67861  61.82 -0.4 
+ 1.6667  62.7203 -0.4 
+ 1.65441  63.64 -0.4 
+ 1.6515  63.874 -0.4 
+ 1.6364  65.091 -0.4 
+ 1.63189  65.45 -0.4 
+ 1.6212  66.383 -0.4 
+ 1.61106  67.27 -0.4 
+ 1.6061  67.7462 -0.4 
+ 1.59195  69.09 -0.4 
+ 1.5909  69.2003 -0.4 
+ 1.5758  70.7906 -0.4 
+ 1.57465  70.91 -0.4 
+ 1.5606  72.5469 -0.4 
+ 1.55903  72.73 -0.4 
+ 1.5455  74.5164 -0.4 
+ 1.54524  74.55 -0.4 
+ 1.53306  76.36 -0.4 
+ 1.5303  76.8406 -0.4 
+ 1.52261  78.18 -0.4 
+ 1.5152  79.7101 -0.4 
+
+
+# Contour 21, label:    -0.41
+ 1.92653  0 -0.41 
+ 1.92512  1.82 -0.41 
+ 1.9242  2.21761 -0.41 
+ 1.92117  3.64 -0.41 
+ 1.9145  5.45 -0.41 
+ 1.9091  6.47925 -0.41 
+ 1.90503  7.27 -0.41 
+ 1.8939  8.91541 -0.41 
+ 1.89273  9.09 -0.41 
+ 1.8788  10.7974 -0.41 
+ 1.87786  10.91 -0.41 
+ 1.8636  12.393 -0.41 
+ 1.86024  12.73 -0.41 
+ 1.8485  13.8086 -0.41 
+ 1.83983  14.55 -0.41 
+ 1.8333  15.081 -0.41 
+ 1.8182  16.2311 -0.41 
+ 1.81643  16.36 -0.41 
+ 1.803  17.3383 -0.41 
+ 1.79022  18.18 -0.41 
+ 1.7879  18.3372 -0.41 
+ 1.7727  19.3197 -0.41 
+ 1.76104  20 -0.41 
+ 1.7576  20.2126 -0.41 
+ 1.7424  21.1033 -0.41 
+ 1.72871  21.82 -0.41 
+ 1.7273  21.9003 -0.41 
+ 1.7121  22.7344 -0.41 
+ 1.697  23.4699 -0.41 
+ 1.69332  23.64 -0.41 
+ 1.6818  24.2314 -0.41 
+ 1.6667  24.939 -0.41 
+ 1.65459  25.45 -0.41 
+ 1.6515  25.5999 -0.41 
+ 1.6364  26.3076 -0.41 
+ 1.6212  26.9379 -0.41 
+ 1.61266  27.27 -0.41 
+ 1.6061  27.567 -0.41 
+ 1.5909  28.2111 -0.41 
+ 1.5758  28.7887 -0.41 
+ 1.56733  29.09 -0.41 
+ 1.5606  29.3736 -0.41 
+ 1.5455  29.9784 -0.41 
+ 1.5303  30.5239 -0.41 
+ 1.51873  30.91 -0.41 
+ 1.5152  31.052 -0.41 
+ 1.5  31.6363 -0.41 
+ 1.4848  32.166 -0.41 
+ 1.4697  32.6489 -0.41 
+ 1.46707  32.73 -0.41 
+ 1.4545  33.2026 -0.41 
+ 1.4394  33.7301 -0.41 
+ 1.4242  34.2131 -0.41 
+ 1.41295  34.55 -0.41 
+ 1.4091  34.6912 -0.41 
+ 1.3939  35.2259 -0.41 
+ 1.3788  35.7178 -0.41 
+ 1.3636  36.1726 -0.41 
+ 1.35713  36.36 -0.41 
+ 1.3485  36.6715 -0.41 
+ 1.3333  37.1893 -0.41 
+ 1.3182  37.6704 -0.41 
+ 1.303  38.12 -0.41 
+ 1.30095  38.18 -0.41 
+ 1.2879  38.6554 -0.41 
+ 1.2727  39.1732 -0.41 
+ 1.2576  39.66 -0.41 
+ 1.24652  40 -0.41 
+ 1.2424  40.1581 -0.41 
+ 1.2273  40.7285 -0.41 
+ 1.2121  41.2684 -0.41 
+ 1.197  41.7833 -0.41 
+ 1.19591  41.82 -0.41 
+ 1.1818  42.4149 -0.41 
+ 1.1667  43.0286 -0.41 
+ 1.1515  43.6194 -0.41 
+ 1.15098  43.64 -0.41 
+ 1.1364  44.3503 -0.41 
+ 1.1212  45.061 -0.41 
+ 1.11285  45.45 -0.41 
+ 1.1061  45.8431 -0.41 
+ 1.0909  46.7152 -0.41 
+ 1.08119  47.27 -0.41 
+ 1.0758  47.6515 -0.41 
+ 1.0606  48.719 -0.41 
+ 1.05538  49.09 -0.41 
+ 1.0455  49.9535 -0.41 
+ 1.03449  50.91 -0.41 
+ 1.0303  51.3555 -0.41 
+ 1.01761  52.73 -0.41 
+ 1.0152  53.0469 -0.41 
+ 1.00395  54.55 -0.41 
+ 1  55.1813 -0.41 
+
+ 1.50093  72.73 -0.41 
+ 1.5  72.8507 -0.41 
+ 1.48679  74.55 -0.41 
+ 1.4848  74.8431 -0.41 
+ 1.47452  76.36 -0.41 
+ 1.4697  77.2018 -0.41 
+ 1.46402  78.18 -0.41 
+ 1.45522  80 -0.41 
+ 1.4545  80.1828 -0.41 
+ 1.44803  81.82 -0.41 
+ 1.4424  83.64 -0.41 
+ 1.4394  84.9329 -0.41 
+ 1.43818  85.45 -0.41 
+ 1.43522  87.27 -0.41 
+ 1.43347  89.09 -0.41 
+ 1.43281  90.91 -0.41 
+ 1.43314  92.73 -0.41 
+ 1.43433  94.55 -0.41 
+ 1.43631  96.36 -0.41 
+ 1.43897  98.18 -0.41 
+ 1.4394  98.416 -0.41 
+ 1.44219  100 -0.41 
+ 1.44593  101.82 -0.41 
+ 1.45011  103.64 -0.41 
+ 1.4545  105.377 -0.41 
+ 1.45468  105.45 -0.41 
+ 1.45957  107.27 -0.41 
+ 1.46474  109.09 -0.41 
+ 1.4697  110.764 -0.41 
+ 1.47013  110.91 -0.41 
+ 1.47562  112.73 -0.41 
+ 1.48125  114.55 -0.41 
+ 1.4848  115.668 -0.41 
+ 1.48699  116.36 -0.41 
+ 1.49279  118.18 -0.41 
+ 1.49863  120 -0.41 
+ 1.5  120.425 -0.41 
+ 1.50445  121.82 -0.41 
+ 1.51025  123.64 -0.41 
+ 1.5152  125.201 -0.41 
+ 1.51598  125.45 -0.41 
+ 1.5216  127.27 -0.41 
+ 1.52713  129.09 -0.41 
+ 1.5303  130.153 -0.41 
+ 1.53256  130.91 -0.41 
+ 1.53788  132.73 -0.41 
+ 1.54307  134.55 -0.41 
+ 1.5455  135.425 -0.41 
+ 1.54808  136.36 -0.41 
+ 1.55291  138.18 -0.41 
+ 1.55757  140 -0.41 
+ 1.5606  141.233 -0.41 
+ 1.56205  141.82 -0.41 
+ 1.56637  143.64 -0.41 
+ 1.57049  145.45 -0.41 
+ 1.57442  147.27 -0.41 
+ 1.5758  147.946 -0.41 
+ 1.57812  149.09 -0.41 
+ 1.58161  150.91 -0.41 
+ 1.58489  152.73 -0.41 
+ 1.58796  154.55 -0.41 
+ 1.59082  156.36 -0.41 
+ 1.5909  156.416 -0.41 
+ 1.59349  158.18 -0.41 
+ 1.59594  160 -0.41 
+ 1.59818  161.82 -0.41 
+ 1.6002  163.64 -0.41 
+ 1.60201  165.45 -0.41 
+ 1.6036  167.27 -0.41 
+ 1.60498  169.09 -0.41 
+ 1.6061  170.836 -0.41 
+ 1.60615  170.91 -0.41 
+ 1.60709  172.73 -0.41 
+ 1.60783  174.55 -0.41 
+ 1.60836  176.36 -0.41 
+ 1.60867  178.18 -0.41 
+ 1.60878  180 -0.41 
+
+ 2.5  14.098 -0.41 
+ 2.49564  14.55 -0.41 
+ 2.4848  15.5434 -0.41 
+ 2.47585  16.36 -0.41 
+ 2.4697  16.8713 -0.41 
+ 2.4545  18.1108 -0.41 
+ 2.45365  18.18 -0.41 
+ 2.4394  19.2466 -0.41 
+ 2.42912  20 -0.41 
+ 2.4242  20.3351 -0.41 
+ 2.4091  21.3597 -0.41 
+ 2.40219  21.82 -0.41 
+ 2.3939  22.3391 -0.41 
+ 2.3788  23.279 -0.41 
+ 2.3729  23.64 -0.41 
+ 2.3636  24.1772 -0.41 
+ 2.3485  25.0441 -0.41 
+ 2.34131  25.45 -0.41 
+ 2.3333  25.8854 -0.41 
+ 2.3182  26.7026 -0.41 
+ 2.30752  27.27 -0.41 
+ 2.303  27.5021 -0.41 
+ 2.2879  28.276 -0.41 
+ 2.2727  29.0403 -0.41 
+ 2.27171  29.09 -0.41 
+ 2.2576  29.7813 -0.41 
+ 2.2424  30.513 -0.41 
+ 2.23416  30.91 -0.41 
+ 2.2273  31.233 -0.41 
+ 2.2121  31.9404 -0.41 
+ 2.197  32.6422 -0.41 
+ 2.1951  32.73 -0.41 
+ 2.1818  33.3333 -0.41 
+ 2.1667  34.0188 -0.41 
+ 2.15489  34.55 -0.41 
+ 2.1515  34.7 -0.41 
+ 2.1364  35.3719 -0.41 
+ 2.1212  36.0421 -0.41 
+ 2.11404  36.36 -0.41 
+ 2.1061  36.7127 -0.41 
+ 2.0909  37.3831 -0.41 
+ 2.0758  38.0538 -0.41 
+ 2.07295  38.18 -0.41 
+ 2.0606  38.7262 -0.41 
+ 2.0455  39.3992 -0.41 
+ 2.03198  40 -0.41 
+ 2.0303  40.0751 -0.41 
+ 2.0152  40.7556 -0.41 
+ 2  41.4385 -0.41 
+ 1.99154  41.82 -0.41 
+ 1.9848  42.1276 -0.41 
+ 1.9697  42.8226 -0.41 
+ 1.9545  43.5213 -0.41 
+ 1.95194  43.64 -0.41 
+ 1.9394  44.2281 -0.41 
+ 1.9242  44.9388 -0.41 
+ 1.9134  45.45 -0.41 
+ 1.9091  45.6589 -0.41 
+ 1.8939  46.3937 -0.41 
+ 1.8788  47.1328 -0.41 
+ 1.87598  47.27 -0.41 
+ 1.8636  47.8883 -0.41 
+ 1.8485  48.6505 -0.41 
+ 1.83976  49.09 -0.41 
+ 1.8333  49.4249 -0.41 
+ 1.8182  50.2132 -0.41 
+ 1.80482  50.91 -0.41 
+ 1.803  51.0084 -0.41 
+ 1.7879  51.8268 -0.41 
+ 1.7727  52.648 -0.41 
+ 1.77119  52.73 -0.41 
+ 1.7576  53.4977 -0.41 
+ 1.7424  54.3519 -0.41 
+ 1.73889  54.55 -0.41 
+ 1.7273  55.2309 -0.41 
+ 1.7121  56.1175 -0.41 
+ 1.70795  56.36 -0.41 
+ 1.697  57.0385 -0.41 
+ 1.6818  57.9726 -0.41 
+ 1.67843  58.18 -0.41 
+ 1.6667  58.9448 -0.41 
+ 1.6515  59.9277 -0.41 
+ 1.65038  60 -0.41 
+ 1.6364  60.9637 -0.41 
+ 1.62387  61.82 -0.41 
+ 1.6212  62.0157 -0.41 
+ 1.6061  63.1234 -0.41 
+ 1.59898  63.64 -0.41 
+ 1.5909  64.2702 -0.41 
+ 1.57582  65.45 -0.41 
+ 1.5758  65.452 -0.41 
+ 1.5606  66.737 -0.41 
+ 1.55431  67.27 -0.41 
+ 1.5455  68.0917 -0.41 
+ 1.53467  69.09 -0.41 
+ 1.5303  69.5371 -0.41 
+ 1.51691  70.91 -0.41 
+ 1.5152  71.1067 -0.41 
+ 1.50093  72.73 -0.41 
+
+
+# Contour 22, label:    -0.42
+ 1.94011  0 -0.42 
+ 1.9394  0.92974 -0.42 
+ 1.93878  1.82 -0.42 
+ 1.93495  3.64 -0.42 
+ 1.92831  5.45 -0.42 
+ 1.9242  6.24368 -0.42 
+ 1.91908  7.27 -0.42 
+ 1.9091  8.78538 -0.42 
+ 1.90709  9.09 -0.42 
+ 1.8939  10.7302 -0.42 
+ 1.89244  10.91 -0.42 
+ 1.8788  12.3686 -0.42 
+ 1.87525  12.73 -0.42 
+ 1.8636  13.817 -0.42 
+ 1.85528  14.55 -0.42 
+ 1.8485  15.1172 -0.42 
+ 1.8333  16.2865 -0.42 
+ 1.83232  16.36 -0.42 
+ 1.8182  17.4181 -0.42 
+ 1.80681  18.18 -0.42 
+ 1.803  18.442 -0.42 
+ 1.7879  19.4339 -0.42 
+ 1.77834  20 -0.42 
+ 1.7727  20.354 -0.42 
+ 1.7576  21.2482 -0.42 
+ 1.74683  21.82 -0.42 
+ 1.7424  22.0763 -0.42 
+ 1.7273  22.9097 -0.42 
+ 1.71212  23.64 -0.42 
+ 1.7121  23.6412 -0.42 
+ 1.697  24.4382 -0.42 
+ 1.6818  25.1389 -0.42 
+ 1.67461  25.45 -0.42 
+ 1.6667  25.8445 -0.42 
+ 1.6515  26.5428 -0.42 
+ 1.6364  27.1625 -0.42 
+ 1.63367  27.27 -0.42 
+ 1.6212  27.8426 -0.42 
+ 1.6061  28.4739 -0.42 
+ 1.5909  29.0384 -0.42 
+ 1.58948  29.09 -0.42 
+ 1.5758  29.6826 -0.42 
+ 1.5606  30.2722 -0.42 
+ 1.5455  30.8027 -0.42 
+ 1.54232  30.91 -0.42 
+ 1.5303  31.3994 -0.42 
+ 1.5152  31.9664 -0.42 
+ 1.5  32.4794 -0.42 
+ 1.49213  32.73 -0.42 
+ 1.4848  33.0163 -0.42 
+ 1.4697  33.5763 -0.42 
+ 1.4545  34.0852 -0.42 
+ 1.43942  34.55 -0.42 
+ 1.4394  34.5508 -0.42 
+ 1.4242  35.1147 -0.42 
+ 1.4091  35.6291 -0.42 
+ 1.3939  36.1015 -0.42 
+ 1.3852  36.36 -0.42 
+ 1.3788  36.5984 -0.42 
+ 1.3636  37.1364 -0.42 
+ 1.3485  37.6324 -0.42 
+ 1.3333  38.0929 -0.42 
+ 1.33038  38.18 -0.42 
+ 1.3182  38.6353 -0.42 
+ 1.303  39.165 -0.42 
+ 1.2879  39.6592 -0.42 
+ 1.27691  40 -0.42 
+ 1.2727  40.1641 -0.42 
+ 1.2576  40.7425 -0.42 
+ 1.2424  41.2852 -0.42 
+ 1.2273  41.7985 -0.42 
+ 1.22666  41.82 -0.42 
+ 1.2121  42.4365 -0.42 
+ 1.197  43.0465 -0.42 
+ 1.1818  43.628 -0.42 
+ 1.18149  43.64 -0.42 
+ 1.1667  44.3546 -0.42 
+ 1.1515  45.0515 -0.42 
+ 1.1427  45.45 -0.42 
+ 1.1364  45.8102 -0.42 
+ 1.1212  46.6618 -0.42 
+ 1.11016  47.27 -0.42 
+ 1.1061  47.55 -0.42 
+ 1.0909  48.5884 -0.42 
+ 1.08354  49.09 -0.42 
+ 1.0758  49.7461 -0.42 
+ 1.06184  50.91 -0.42 
+ 1.0606  51.0385 -0.42 
+ 1.0455  52.6235 -0.42 
+ 1.04449  52.73 -0.42 
+ 1.03043  54.55 -0.42 
+ 1.0303  54.57 -0.42 
+ 1.01934  56.36 -0.42 
+ 1.0152  57.1802 -0.42 
+ 1.01029  58.18 -0.42 
+ 1.00287  60 -0.42 
+ 1  60.8487 -0.42 
+
+ 1.5  66.7167 -0.42 
+ 1.49316  67.27 -0.42 
+ 1.4848  68.0167 -0.42 
+ 1.4728  69.09 -0.42 
+ 1.4697  69.3996 -0.42 
+ 1.4545  70.8976 -0.42 
+ 1.45437  70.91 -0.42 
+ 1.4394  72.5743 -0.42 
+ 1.43798  72.73 -0.42 
+ 1.4242  74.4645 -0.42 
+ 1.42352  74.55 -0.42 
+ 1.41109  76.36 -0.42 
+ 1.4091  76.7077 -0.42 
+ 1.40052  78.18 -0.42 
+ 1.3939  79.5725 -0.42 
+ 1.39186  80 -0.42 
+ 1.38494  81.82 -0.42 
+ 1.37972  83.64 -0.42 
+ 1.3788  84.0854 -0.42 
+ 1.37594  85.45 -0.42 
+ 1.37356  87.27 -0.42 
+ 1.37246  89.09 -0.42 
+ 1.3725  90.91 -0.42 
+ 1.37355  92.73 -0.42 
+ 1.3755  94.55 -0.42 
+ 1.37823  96.36 -0.42 
+ 1.3788  96.659 -0.42 
+ 1.38158  98.18 -0.42 
+ 1.3855  100 -0.42 
+ 1.38993  101.82 -0.42 
+ 1.3939  103.302 -0.42 
+ 1.39479  103.64 -0.42 
+ 1.39997  105.45 -0.42 
+ 1.40547  107.27 -0.42 
+ 1.4091  108.418 -0.42 
+ 1.41117  109.09 -0.42 
+ 1.41701  110.91 -0.42 
+ 1.423  112.73 -0.42 
+ 1.4242  113.086 -0.42 
+ 1.42909  114.55 -0.42 
+ 1.43525  116.36 -0.42 
+ 1.4394  117.577 -0.42 
+ 1.44142  118.18 -0.42 
+ 1.44754  120 -0.42 
+ 1.45365  121.82 -0.42 
+ 1.4545  122.073 -0.42 
+ 1.45972  123.64 -0.42 
+ 1.46572  125.45 -0.42 
+ 1.4697  126.671 -0.42 
+ 1.47162  127.27 -0.42 
+ 1.47737  129.09 -0.42 
+ 1.483  130.91 -0.42 
+ 1.4848  131.507 -0.42 
+ 1.4885  132.73 -0.42 
+ 1.49386  134.55 -0.42 
+ 1.49905  136.36 -0.42 
+ 1.5  136.703 -0.42 
+ 1.50407  138.18 -0.42 
+ 1.5089  140 -0.42 
+ 1.51354  141.82 -0.42 
+ 1.5152  142.499 -0.42 
+ 1.51796  143.64 -0.42 
+ 1.52217  145.45 -0.42 
+ 1.52617  147.27 -0.42 
+ 1.52997  149.09 -0.42 
+ 1.5303  149.258 -0.42 
+ 1.53357  150.91 -0.42 
+ 1.53696  152.73 -0.42 
+ 1.54014  154.55 -0.42 
+ 1.54309  156.36 -0.42 
+ 1.5455  157.963 -0.42 
+ 1.54582  158.18 -0.42 
+ 1.54832  160 -0.42 
+ 1.5506  161.82 -0.42 
+ 1.55266  163.64 -0.42 
+ 1.5545  165.45 -0.42 
+ 1.55612  167.27 -0.42 
+ 1.55753  169.09 -0.42 
+ 1.55872  170.91 -0.42 
+ 1.55969  172.73 -0.42 
+ 1.56045  174.55 -0.42 
+ 1.5606  175.054 -0.42 
+ 1.56099  176.36 -0.42 
+ 1.56132  178.18 -0.42 
+ 1.56143  180 -0.42 
+
+ 2.5  8.11933 -0.42 
+ 2.49432  9.09 -0.42 
+ 2.4848  10.4235 -0.42 
+ 2.48133  10.91 -0.42 
+ 2.4697  12.2934 -0.42 
+ 2.46598  12.73 -0.42 
+ 2.4545  13.9046 -0.42 
+ 2.44817  14.55 -0.42 
+ 2.4394  15.3428 -0.42 
+ 2.42794  16.36 -0.42 
+ 2.4242  16.6624 -0.42 
+ 2.4091  17.8791 -0.42 
+ 2.4053  18.18 -0.42 
+ 2.3939  19.01 -0.42 
+ 2.38021  20 -0.42 
+ 2.3788  20.0946 -0.42 
+ 2.3636  21.101 -0.42 
+ 2.35267  21.82 -0.42 
+ 2.3485  22.0775 -0.42 
+ 2.3333  23.0018 -0.42 
+ 2.32275  23.64 -0.42 
+ 2.3182  23.8997 -0.42 
+ 2.303  24.7534 -0.42 
+ 2.29054  25.45 -0.42 
+ 2.2879  25.5919 -0.42 
+ 2.2727  26.3976 -0.42 
+ 2.2576  27.1948 -0.42 
+ 2.25616  27.27 -0.42 
+ 2.2424  27.9607 -0.42 
+ 2.2273  28.7173 -0.42 
+ 2.21977  29.09 -0.42 
+ 2.2121  29.458 -0.42 
+ 2.197  30.1828 -0.42 
+ 2.1818  30.904 -0.42 
+ 2.18167  30.91 -0.42 
+ 2.1667  31.6052 -0.42 
+ 2.1515  32.3033 -0.42 
+ 2.14225  32.73 -0.42 
+ 2.1364  32.9952 -0.42 
+ 2.1212  33.6773 -0.42 
+ 2.1061  34.3591 -0.42 
+ 2.10185  34.55 -0.42 
+ 2.0909  35.0318 -0.42 
+ 2.0758  35.7006 -0.42 
+ 2.06087  36.36 -0.42 
+ 2.0606  36.3718 -0.42 
+ 2.0455  37.0405 -0.42 
+ 2.0303  37.7117 -0.42 
+ 2.01982  38.18 -0.42 
+ 2.0152  38.3856 -0.42 
+ 2  39.0584 -0.42 
+ 1.9848  39.7357 -0.42 
+ 1.97893  40 -0.42 
+ 1.9697  40.4161 -0.42 
+ 1.9545  41.0993 -0.42 
+ 1.9394  41.7887 -0.42 
+ 1.93871  41.82 -0.42 
+ 1.9242  42.4824 -0.42 
+ 1.9091  43.1815 -0.42 
+ 1.8992  43.64 -0.42 
+ 1.8939  43.8866 -0.42 
+ 1.8788  44.5951 -0.42 
+ 1.8636  45.3103 -0.42 
+ 1.86065  45.45 -0.42 
+ 1.8485  46.0384 -0.42 
+ 1.8333  46.7732 -0.42 
+ 1.82316  47.27 -0.42 
+ 1.8182  47.5177 -0.42 
+ 1.803  48.2719 -0.42 
+ 1.7879  49.0324 -0.42 
+ 1.78675  49.09 -0.42 
+ 1.7727  49.8085 -0.42 
+ 1.7576  50.5901 -0.42 
+ 1.75138  50.91 -0.42 
+ 1.7424  51.3863 -0.42 
+ 1.7273  52.1924 -0.42 
+ 1.71719  52.73 -0.42 
+ 1.7121  53.0104 -0.42 
+ 1.697  53.845 -0.42 
+ 1.68419  54.55 -0.42 
+ 1.6818  54.6868 -0.42 
+ 1.6667  55.5493 -0.42 
+ 1.65245  56.36 -0.42 
+ 1.6515  56.4169 -0.42 
+ 1.6364  57.3224 -0.42 
+ 1.62202  58.18 -0.42 
+ 1.6212  58.2317 -0.42 
+ 1.6061  59.1814 -0.42 
+ 1.593  60 -0.42 
+ 1.5909  60.1398 -0.42 
+ 1.5758  61.1423 -0.42 
+ 1.5655  61.82 -0.42 
+ 1.5606  62.1659 -0.42 
+ 1.5455  63.2318 -0.42 
+ 1.53965  63.64 -0.42 
+ 1.5303  64.3411 -0.42 
+ 1.51557  65.45 -0.42 
+ 1.5152  65.4808 -0.42 
+ 1.5  66.7167 -0.42 
+
+
+# Contour 23, label:    -0.43
+ 1.02225  65.45 -0.43 
+ 1.01947  67.27 -0.43 
+ 1.01702  69.09 -0.43 
+ 1.0152  70.5128 -0.43 
+ 1.01473  70.91 -0.43 
+ 1.0126  72.73 -0.43 
+ 1.01026  74.55 -0.43 
+ 1.00755  76.36 -0.43 
+ 1.00434  78.18 -0.43 
+ 1.00053  80 -0.43 
+ 1  80.2204 -0.43 
+
+ 1.95522  0 -0.43 
+ 1.9545  0.962195 -0.43 
+ 1.95393  1.82 -0.43 
+ 1.95022  3.64 -0.43 
+ 1.94378  5.45 -0.43 
+ 1.9394  6.32038 -0.43 
+ 1.93475  7.27 -0.43 
+ 1.9242  8.89622 -0.43 
+ 1.92296  9.09 -0.43 
+ 1.9091  10.8635 -0.43 
+ 1.90873  10.91 -0.43 
+ 1.8939  12.5212 -0.43 
+ 1.89191  12.73 -0.43 
+ 1.8788  13.9896 -0.43 
+ 1.87254  14.55 -0.43 
+ 1.8636  15.3113 -0.43 
+ 1.85027  16.36 -0.43 
+ 1.8485  16.4988 -0.43 
+ 1.8333  17.6397 -0.43 
+ 1.82546  18.18 -0.43 
+ 1.8182  18.6945 -0.43 
+ 1.803  19.6785 -0.43 
+ 1.79772  20 -0.43 
+ 1.7879  20.6358 -0.43 
+ 1.7727  21.517 -0.43 
+ 1.76715  21.82 -0.43 
+ 1.7576  22.3899 -0.43 
+ 1.7424  23.2064 -0.43 
+ 1.73363  23.64 -0.43 
+ 1.7273  23.9896 -0.43 
+ 1.7121  24.7664 -0.43 
+ 1.697  25.446 -0.43 
+ 1.69691  25.45 -0.43 
+ 1.6818  26.2152 -0.43 
+ 1.6667  26.8895 -0.43 
+ 1.65737  27.27 -0.43 
+ 1.6515  27.5514 -0.43 
+ 1.6364  28.2362 -0.43 
+ 1.6212  28.8413 -0.43 
+ 1.6146  29.09 -0.43 
+ 1.6061  29.4738 -0.43 
+ 1.5909  30.1047 -0.43 
+ 1.5758  30.6664 -0.43 
+ 1.5688  30.91 -0.43 
+ 1.5606  31.2578 -0.43 
+ 1.5455  31.8579 -0.43 
+ 1.5303  32.3954 -0.43 
+ 1.52017  32.73 -0.43 
+ 1.5152  32.9332 -0.43 
+ 1.5  33.5206 -0.43 
+ 1.4848  34.0494 -0.43 
+ 1.4697  34.5293 -0.43 
+ 1.46903  34.55 -0.43 
+ 1.4545  35.109 -0.43 
+ 1.4394  35.6396 -0.43 
+ 1.4242  36.1232 -0.43 
+ 1.41642  36.36 -0.43 
+ 1.4091  36.6419 -0.43 
+ 1.3939  37.1931 -0.43 
+ 1.3788  37.6973 -0.43 
+ 1.3636  38.1621 -0.43 
+ 1.36301  38.18 -0.43 
+ 1.3485  38.7376 -0.43 
+ 1.3333  39.2722 -0.43 
+ 1.3182  39.7673 -0.43 
+ 1.31078  40 -0.43 
+ 1.303  40.3098 -0.43 
+ 1.2879  40.8888 -0.43 
+ 1.2727  41.4278 -0.43 
+ 1.26115  41.82 -0.43 
+ 1.2576  41.9737 -0.43 
+ 1.2424  42.6138 -0.43 
+ 1.2273  43.2133 -0.43 
+ 1.21602  43.64 -0.43 
+ 1.2121  43.8283 -0.43 
+ 1.197  44.545 -0.43 
+ 1.1818  45.2219 -0.43 
+ 1.17665  45.45 -0.43 
+ 1.1667  46.0135 -0.43 
+ 1.1515  46.8384 -0.43 
+ 1.14343  47.27 -0.43 
+ 1.1364  47.7473 -0.43 
+ 1.1212  48.75 -0.43 
+ 1.11603  49.09 -0.43 
+ 1.1061  49.9169 -0.43 
+ 1.09381  50.91 -0.43 
+ 1.0909  51.2081 -0.43 
+ 1.07599  52.73 -0.43 
+ 1.0758  52.755 -0.43 
+ 1.06186  54.55 -0.43 
+ 1.0606  54.7519 -0.43 
+ 1.05082  56.36 -0.43 
+ 1.0455  57.4497 -0.43 
+ 1.04201  58.18 -0.43 
+ 1.03514  60 -0.43 
+ 1.0303  61.5801 -0.43 
+ 1.0296  61.82 -0.43 
+ 1.02555  63.64 -0.43 
+ 1.02225  65.45 -0.43 
+
+ 1.50123  61.82 -0.43 
+ 1.5  61.9029 -0.43 
+ 1.4848  62.9113 -0.43 
+ 1.47388  63.64 -0.43 
+ 1.4697  63.9402 -0.43 
+ 1.4545  65.0143 -0.43 
+ 1.44833  65.45 -0.43 
+ 1.4394  66.1443 -0.43 
+ 1.42477  67.27 -0.43 
+ 1.4242  67.3184 -0.43 
+ 1.4091  68.5948 -0.43 
+ 1.40316  69.09 -0.43 
+ 1.3939  69.9572 -0.43 
+ 1.38371  70.91 -0.43 
+ 1.3788  71.4338 -0.43 
+ 1.36644  72.73 -0.43 
+ 1.3636  73.075 -0.43 
+ 1.35141  74.55 -0.43 
+ 1.3485  74.9652 -0.43 
+ 1.33852  76.36 -0.43 
+ 1.3333  77.257 -0.43 
+ 1.32786  78.18 -0.43 
+ 1.31941  80 -0.43 
+ 1.3182  80.3424 -0.43 
+ 1.31281  81.82 -0.43 
+ 1.30816  83.64 -0.43 
+ 1.30528  85.45 -0.43 
+ 1.30394  87.27 -0.43 
+ 1.30398  89.09 -0.43 
+ 1.30521  90.91 -0.43 
+ 1.30748  92.73 -0.43 
+ 1.31067  94.55 -0.43 
+ 1.31466  96.36 -0.43 
+ 1.3182  97.735 -0.43 
+ 1.31929  98.18 -0.43 
+ 1.32433  100 -0.43 
+ 1.32988  101.82 -0.43 
+ 1.3333  102.863 -0.43 
+ 1.33577  103.64 -0.43 
+ 1.34193  105.45 -0.43 
+ 1.34837  107.27 -0.43 
+ 1.3485  107.304 -0.43 
+ 1.35484  109.09 -0.43 
+ 1.36148  110.91 -0.43 
+ 1.3636  111.477 -0.43 
+ 1.36819  112.73 -0.43 
+ 1.37495  114.55 -0.43 
+ 1.3788  115.569 -0.43 
+ 1.3817  116.36 -0.43 
+ 1.38838  118.18 -0.43 
+ 1.3939  119.686 -0.43 
+ 1.39504  120 -0.43 
+ 1.40162  121.82 -0.43 
+ 1.40814  123.64 -0.43 
+ 1.4091  123.908 -0.43 
+ 1.41449  125.45 -0.43 
+ 1.42071  127.27 -0.43 
+ 1.4242  128.31 -0.43 
+ 1.4268  129.09 -0.43 
+ 1.43275  130.91 -0.43 
+ 1.43855  132.73 -0.43 
+ 1.4394  133.003 -0.43 
+ 1.44412  134.55 -0.43 
+ 1.44951  136.36 -0.43 
+ 1.4545  138.105 -0.43 
+ 1.45471  138.18 -0.43 
+ 1.45974  140 -0.43 
+ 1.46455  141.82 -0.43 
+ 1.46917  143.64 -0.43 
+ 1.4697  143.856 -0.43 
+ 1.47353  145.45 -0.43 
+ 1.47768  147.27 -0.43 
+ 1.48161  149.09 -0.43 
+ 1.4848  150.656 -0.43 
+ 1.48532  150.91 -0.43 
+ 1.48882  152.73 -0.43 
+ 1.49209  154.55 -0.43 
+ 1.49514  156.36 -0.43 
+ 1.49797  158.18 -0.43 
+ 1.5  159.605 -0.43 
+ 1.50056  160 -0.43 
+ 1.50293  161.82 -0.43 
+ 1.50506  163.64 -0.43 
+ 1.50697  165.45 -0.43 
+ 1.50866  167.27 -0.43 
+ 1.51012  169.09 -0.43 
+ 1.51135  170.91 -0.43 
+ 1.51236  172.73 -0.43 
+ 1.51315  174.55 -0.43 
+ 1.51371  176.36 -0.43 
+ 1.51404  178.18 -0.43 
+ 1.51416  180 -0.43 
+
+ 2.47865  0 -0.43 
+ 2.47745  1.82 -0.43 
+ 2.47387  3.64 -0.43 
+ 2.4697  4.90143 -0.43 
+ 2.46787  5.45 -0.43 
+ 2.45942  7.27 -0.43 
+ 2.4545  8.09484 -0.43 
+ 2.44857  9.09 -0.43 
+ 2.4394  10.3518 -0.43 
+ 2.43528  10.91 -0.43 
+ 2.4242  12.1891 -0.43 
+ 2.4195  12.73 -0.43 
+ 2.4091  13.7755 -0.43 
+ 2.40126  14.55 -0.43 
+ 2.3939  15.1953 -0.43 
+ 2.38055  16.36 -0.43 
+ 2.3788  16.4987 -0.43 
+ 2.3636  17.6869 -0.43 
+ 2.35727  18.18 -0.43 
+ 2.3485  18.8067 -0.43 
+ 2.3333  19.8738 -0.43 
+ 2.3315  20 -0.43 
+ 2.3182  20.8652 -0.43 
+ 2.30326  21.82 -0.43 
+ 2.303  21.8358 -0.43 
+ 2.2879  22.7395 -0.43 
+ 2.2727  23.6344 -0.43 
+ 2.2726  23.64 -0.43 
+ 2.2576  24.47 -0.43 
+ 2.2424  25.2984 -0.43 
+ 2.23962  25.45 -0.43 
+ 2.2273  26.0936 -0.43 
+ 2.2121  26.8768 -0.43 
+ 2.20448  27.27 -0.43 
+ 2.197  27.6408 -0.43 
+ 2.1818  28.3844 -0.43 
+ 2.16744  29.09 -0.43 
+ 2.1667  29.125 -0.43 
+ 2.1515  29.8376 -0.43 
+ 2.1364  30.5495 -0.43 
+ 2.12869  30.91 -0.43 
+ 2.1212  31.2505 -0.43 
+ 2.1061  31.9392 -0.43 
+ 2.0909  32.6305 -0.43 
+ 2.08872  32.73 -0.43 
+ 2.0758  33.3063 -0.43 
+ 2.0606  33.9815 -0.43 
+ 2.04797  34.55 -0.43 
+ 2.0455  34.6583 -0.43 
+ 2.0303  35.3195 -0.43 
+ 2.0152  35.9863 -0.43 
+ 2.00673  36.36 -0.43 
+ 2  36.6539 -0.43 
+ 1.9848  37.3193 -0.43 
+ 1.9697  37.9922 -0.43 
+ 1.96547  38.18 -0.43 
+ 1.9545  38.6619 -0.43 
+ 1.9394  39.3342 -0.43 
+ 1.92455  40 -0.43 
+ 1.9242  40.0156 -0.43 
+ 1.9091  40.6915 -0.43 
+ 1.8939  41.3759 -0.43 
+ 1.8842  41.82 -0.43 
+ 1.8788  42.0664 -0.43 
+ 1.8636  42.7577 -0.43 
+ 1.8485  43.4584 -0.43 
+ 1.84457  43.64 -0.43 
+ 1.8333  44.1592 -0.43 
+ 1.8182  44.8648 -0.43 
+ 1.80574  45.45 -0.43 
+ 1.803  45.5803 -0.43 
+ 1.7879  46.3017 -0.43 
+ 1.7727  47.032 -0.43 
+ 1.76779  47.27 -0.43 
+ 1.7576  47.7695 -0.43 
+ 1.7424  48.5131 -0.43 
+ 1.73078  49.09 -0.43 
+ 1.7273  49.2659 -0.43 
+ 1.7121  50.026 -0.43 
+ 1.697  50.7933 -0.43 
+ 1.69468  50.91 -0.43 
+ 1.6818  51.5722 -0.43 
+ 1.6667  52.3577 -0.43 
+ 1.65949  52.73 -0.43 
+ 1.6515  53.1554 -0.43 
+ 1.6364  53.9629 -0.43 
+ 1.62538  54.55 -0.43 
+ 1.6212  54.7795 -0.43 
+ 1.6061  55.6088 -0.43 
+ 1.59239  56.36 -0.43 
+ 1.5909  56.4456 -0.43 
+ 1.5758  57.3111 -0.43 
+ 1.56062  58.18 -0.43 
+ 1.5606  58.1812 -0.43 
+ 1.5455  59.0851 -0.43 
+ 1.5303  59.9932 -0.43 
+ 1.53019  60 -0.43 
+ 1.5152  60.9436 -0.43 
+ 1.50123  61.82 -0.43 
+
+
+# Contour 24, label:    -0.44
+ 1.07059  69.09 -0.44 
+ 1.07137  70.91 -0.44 
+ 1.07212  72.73 -0.44 
+ 1.07251  74.55 -0.44 
+ 1.07217  76.36 -0.44 
+ 1.07074  78.18 -0.44 
+ 1.06783  80 -0.44 
+ 1.06305  81.82 -0.44 
+ 1.0606  82.4812 -0.44 
+ 1.05708  83.64 -0.44 
+ 1.04978  85.45 -0.44 
+ 1.0455  86.3044 -0.44 
+ 1.04147  87.27 -0.44 
+ 1.03239  89.09 -0.44 
+ 1.0303  89.4543 -0.44 
+ 1.02339  90.91 -0.44 
+ 1.0152  92.4283 -0.44 
+ 1.01382  92.73 -0.44 
+ 1.00469  94.55 -0.44 
+ 1  95.4048 -0.44 
+
+ 1.97258  0 -0.44 
+ 1.97128  1.82 -0.44 
+ 1.9697  2.55179 -0.44 
+ 1.96754  3.64 -0.44 
+ 1.96137  5.45 -0.44 
+ 1.9545  6.83714 -0.44 
+ 1.95245  7.27 -0.44 
+ 1.94118  9.09 -0.44 
+ 1.9394  9.32936 -0.44 
+ 1.9274  10.91 -0.44 
+ 1.9242  11.2757 -0.44 
+ 1.91106  12.73 -0.44 
+ 1.9091  12.9282 -0.44 
+ 1.8939  14.3878 -0.44 
+ 1.89215  14.55 -0.44 
+ 1.8788  15.7232 -0.44 
+ 1.87085  16.36 -0.44 
+ 1.8636  16.9415 -0.44 
+ 1.8485  18.0529 -0.44 
+ 1.84669  18.18 -0.44 
+ 1.8333  19.148 -0.44 
+ 1.81995  20 -0.44 
+ 1.8182  20.1193 -0.44 
+ 1.803  21.1067 -0.44 
+ 1.79049  21.82 -0.44 
+ 1.7879  21.9832 -0.44 
+ 1.7727  22.8874 -0.44 
+ 1.7581  23.64 -0.44 
+ 1.7576  23.669 -0.44 
+ 1.7424  24.5212 -0.44 
+ 1.7273  25.2536 -0.44 
+ 1.72299  25.45 -0.44 
+ 1.7121  26.0288 -0.44 
+ 1.697  26.7506 -0.44 
+ 1.68471  27.27 -0.44 
+ 1.6818  27.4165 -0.44 
+ 1.6667  28.1462 -0.44 
+ 1.6515  28.7815 -0.44 
+ 1.64358  29.09 -0.44 
+ 1.6364  29.4293 -0.44 
+ 1.6212  30.0899 -0.44 
+ 1.6061  30.6706 -0.44 
+ 1.59943  30.91 -0.44 
+ 1.5909  31.2875 -0.44 
+ 1.5758  31.9073 -0.44 
+ 1.5606  32.4563 -0.44 
+ 1.55254  32.73 -0.44 
+ 1.5455  33.0296 -0.44 
+ 1.5303  33.6297 -0.44 
+ 1.5152  34.1644 -0.44 
+ 1.50324  34.55 -0.44 
+ 1.5  34.6821 -0.44 
+ 1.4848  35.2766 -0.44 
+ 1.4697  35.8088 -0.44 
+ 1.4545  36.2897 -0.44 
+ 1.45224  36.36 -0.44 
+ 1.4394  36.8722 -0.44 
+ 1.4242  37.4211 -0.44 
+ 1.4091  37.9191 -0.44 
+ 1.40069  38.18 -0.44 
+ 1.3939  38.4515 -0.44 
+ 1.3788  39.0273 -0.44 
+ 1.3636  39.5517 -0.44 
+ 1.34964  40 -0.44 
+ 1.3485  40.0473 -0.44 
+ 1.3333  40.664 -0.44 
+ 1.3182  41.228 -0.44 
+ 1.303  41.7488 -0.44 
+ 1.30091  41.82 -0.44 
+ 1.2879  42.3931 -0.44 
+ 1.2727  43.0111 -0.44 
+ 1.2576  43.5854 -0.44 
+ 1.25615  43.64 -0.44 
+ 1.2424  44.3052 -0.44 
+ 1.2273  44.9904 -0.44 
+ 1.21662  45.45 -0.44 
+ 1.2121  45.7048 -0.44 
+ 1.197  46.5401 -0.44 
+ 1.18282  47.27 -0.44 
+ 1.1818  47.3389 -0.44 
+ 1.1667  48.3543 -0.44 
+ 1.15505  49.09 -0.44 
+ 1.1515  49.3826 -0.44 
+ 1.1364  50.6079 -0.44 
+ 1.13259  50.91 -0.44 
+ 1.1212  52.0815 -0.44 
+ 1.1148  52.73 -0.44 
+ 1.1061  53.8788 -0.44 
+ 1.10095  54.55 -0.44 
+ 1.0909  56.2447 -0.44 
+ 1.09023  56.36 -0.44 
+ 1.08262  58.18 -0.44 
+ 1.07694  60 -0.44 
+ 1.0758  60.5557 -0.44 
+ 1.0733  61.82 -0.44 
+ 1.07119  63.64 -0.44 
+ 1.07021  65.45 -0.44 
+ 1.0701  67.27 -0.44 
+ 1.07059  69.09 -0.44 
+
+ 1.4545  60.1741 -0.44 
+ 1.4394  61.0474 -0.44 
+ 1.426  61.82 -0.44 
+ 1.4242  61.9306 -0.44 
+ 1.4091  62.8477 -0.44 
+ 1.39598  63.64 -0.44 
+ 1.3939  63.7748 -0.44 
+ 1.3788  64.7402 -0.44 
+ 1.36757  65.45 -0.44 
+ 1.3636  65.7269 -0.44 
+ 1.3485  66.7636 -0.44 
+ 1.34096  67.27 -0.44 
+ 1.3333  67.8431 -0.44 
+ 1.3182  68.9623 -0.44 
+ 1.3164  69.09 -0.44 
+ 1.303  70.1727 -0.44 
+ 1.29374  70.91 -0.44 
+ 1.2879  71.4496 -0.44 
+ 1.27355  72.73 -0.44 
+ 1.2727  72.8209 -0.44 
+ 1.2576  74.3701 -0.44 
+ 1.25574  74.55 -0.44 
+ 1.2424  76.1585 -0.44 
+ 1.24064  76.36 -0.44 
+ 1.22858  78.18 -0.44 
+ 1.2273  78.4502 -0.44 
+ 1.21935  80 -0.44 
+ 1.21362  81.82 -0.44 
+ 1.2121  82.7941 -0.44 
+ 1.21067  83.64 -0.44 
+ 1.21024  85.45 -0.44 
+ 1.21206  87.27 -0.44 
+ 1.2121  87.2886 -0.44 
+ 1.21531  89.09 -0.44 
+ 1.21993  90.91 -0.44 
+ 1.2257  92.73 -0.44 
+ 1.2273  93.1536 -0.44 
+ 1.23197  94.55 -0.44 
+ 1.23888  96.36 -0.44 
+ 1.2424  97.1987 -0.44 
+ 1.24618  98.18 -0.44 
+ 1.25379  100 -0.44 
+ 1.2576  100.854 -0.44 
+ 1.26158  101.82 -0.44 
+ 1.26948  103.64 -0.44 
+ 1.2727  104.347 -0.44 
+ 1.27746  105.45 -0.44 
+ 1.28553  107.27 -0.44 
+ 1.2879  107.788 -0.44 
+ 1.29351  109.09 -0.44 
+ 1.30149  110.91 -0.44 
+ 1.303  111.248 -0.44 
+ 1.30938  112.73 -0.44 
+ 1.31727  114.55 -0.44 
+ 1.3182  114.763 -0.44 
+ 1.32492  116.36 -0.44 
+ 1.33252  118.18 -0.44 
+ 1.3333  118.366 -0.44 
+ 1.33996  120 -0.44 
+ 1.3473  121.82 -0.44 
+ 1.3485  122.119 -0.44 
+ 1.35439  123.64 -0.44 
+ 1.36134  125.45 -0.44 
+ 1.3636  126.052 -0.44 
+ 1.36811  127.27 -0.44 
+ 1.3747  129.09 -0.44 
+ 1.3788  130.246 -0.44 
+ 1.3811  130.91 -0.44 
+ 1.38723  132.73 -0.44 
+ 1.39318  134.55 -0.44 
+ 1.3939  134.774 -0.44 
+ 1.39892  136.36 -0.44 
+ 1.40445  138.18 -0.44 
+ 1.4091  139.767 -0.44 
+ 1.40977  140 -0.44 
+ 1.4148  141.82 -0.44 
+ 1.41961  143.64 -0.44 
+ 1.4242  145.45 -0.44 
+ 1.42856  147.27 -0.44 
+ 1.43269  149.09 -0.44 
+ 1.43659  150.91 -0.44 
+ 1.4394  152.305 -0.44 
+ 1.44024  152.73 -0.44 
+ 1.44363  154.55 -0.44 
+ 1.44678  156.36 -0.44 
+ 1.4497  158.18 -0.44 
+ 1.45238  160 -0.44 
+ 1.4545  161.572 -0.44 
+ 1.45483  161.82 -0.44 
+ 1.45705  163.64 -0.44 
+ 1.45903  165.45 -0.44 
+ 1.46078  167.27 -0.44 
+ 1.4623  169.09 -0.44 
+ 1.46358  170.91 -0.44 
+ 1.46463  172.73 -0.44 
+ 1.46544  174.55 -0.44 
+ 1.46602  176.36 -0.44 
+ 1.46637  178.18 -0.44 
+ 1.46648  180 -0.44 
+
+ 2.43359  0 -0.44 
+ 2.43235  1.82 -0.44 
+ 2.42864  3.64 -0.44 
+ 2.4242  4.94299 -0.44 
+ 2.42247  5.45 -0.44 
+ 2.41382  7.27 -0.44 
+ 2.4091  8.04634 -0.44 
+ 2.40265  9.09 -0.44 
+ 2.3939  10.2536 -0.44 
+ 2.38895  10.91 -0.44 
+ 2.3788  12.0556 -0.44 
+ 2.37272  12.73 -0.44 
+ 2.3636  13.6149 -0.44 
+ 2.35392  14.55 -0.44 
+ 2.3485  15.0146 -0.44 
+ 2.3333  16.2945 -0.44 
+ 2.33252  16.36 -0.44 
+ 2.3182  17.4536 -0.44 
+ 2.30854  18.18 -0.44 
+ 2.303  18.5616 -0.44 
+ 2.2879  19.5991 -0.44 
+ 2.28198  20 -0.44 
+ 2.2727  20.5816 -0.44 
+ 2.2576  21.5268 -0.44 
+ 2.25285  21.82 -0.44 
+ 2.2424  22.423 -0.44 
+ 2.2273  23.2941 -0.44 
+ 2.22123  23.64 -0.44 
+ 2.2121  24.1273 -0.44 
+ 2.197  24.9338 -0.44 
+ 2.18724  25.45 -0.44 
+ 2.1818  25.7248 -0.44 
+ 2.1667  26.4868 -0.44 
+ 2.1515  27.2506 -0.44 
+ 2.15111  27.27 -0.44 
+ 2.1364  27.9745 -0.44 
+ 2.1212  28.6995 -0.44 
+ 2.11307  29.09 -0.44 
+ 2.1061  29.4113 -0.44 
+ 2.0909  30.1055 -0.44 
+ 2.0758  30.8057 -0.44 
+ 2.07353  30.91 -0.44 
+ 2.0606  31.4818 -0.44 
+ 2.0455  32.1581 -0.44 
+ 2.03279  32.73 -0.44 
+ 2.0303  32.8383 -0.44 
+ 2.0152  33.4974 -0.44 
+ 2  34.1653 -0.44 
+ 1.99133  34.55 -0.44 
+ 1.9848  34.8293 -0.44 
+ 1.9697  35.4813 -0.44 
+ 1.9545  36.1451 -0.44 
+ 1.94964  36.36 -0.44 
+ 1.9394  36.8028 -0.44 
+ 1.9242  37.4618 -0.44 
+ 1.9091  38.1352 -0.44 
+ 1.90809  38.18 -0.44 
+ 1.8939  38.7931 -0.44 
+ 1.8788  39.4611 -0.44 
+ 1.86677  40 -0.44 
+ 1.8636  40.139 -0.44 
+ 1.8485  40.8063 -0.44 
+ 1.8333  41.4873 -0.44 
+ 1.82601  41.82 -0.44 
+ 1.8182  42.1704 -0.44 
+ 1.803  42.8523 -0.44 
+ 1.7879  43.5494 -0.44 
+ 1.78593  43.64 -0.44 
+ 1.7727  44.2357 -0.44 
+ 1.7576  44.9305 -0.44 
+ 1.74641  45.45 -0.44 
+ 1.7424  45.6358 -0.44 
+ 1.7273  46.3394 -0.44 
+ 1.7121  47.0556 -0.44 
+ 1.70759  47.27 -0.44 
+ 1.697  47.7728 -0.44 
+ 1.6818  48.4944 -0.44 
+ 1.6695  49.09 -0.44 
+ 1.6667  49.2266 -0.44 
+ 1.6515  49.957 -0.44 
+ 1.6364  50.6979 -0.44 
+ 1.63204  50.91 -0.44 
+ 1.6212  51.4429 -0.44 
+ 1.6061  52.1932 -0.44 
+ 1.5953  52.73 -0.44 
+ 1.5909  52.9527 -0.44 
+ 1.5758  53.7168 -0.44 
+ 1.5606  54.4893 -0.44 
+ 1.5594  54.55 -0.44 
+ 1.5455  55.2674 -0.44 
+ 1.5303  56.0521 -0.44 
+ 1.52434  56.36 -0.44 
+ 1.5152  56.8522 -0.44 
+ 1.5  57.6627 -0.44 
+ 1.49029  58.18 -0.44 
+ 1.4848  58.486 -0.44 
+ 1.4697  59.3244 -0.44 
+ 1.45748  60 -0.44 
+ 1.4545  60.1741 -0.44 
+
+
+# Contour 25, label:    -0.45
+ 1.41815  180 -0.45 
+ 1.41803  178.18 -0.45 
+ 1.41767  176.36 -0.45 
+ 1.41706  174.55 -0.45 
+ 1.41622  172.73 -0.45 
+ 1.41513  170.91 -0.45 
+ 1.4138  169.09 -0.45 
+ 1.41222  167.27 -0.45 
+ 1.4104  165.45 -0.45 
+ 1.4091  164.306 -0.45 
+ 1.40833  163.64 -0.45 
+ 1.40598  161.82 -0.45 
+ 1.40339  160 -0.45 
+ 1.40055  158.18 -0.45 
+ 1.39746  156.36 -0.45 
+ 1.39413  154.55 -0.45 
+ 1.3939  154.435 -0.45 
+ 1.39053  152.73 -0.45 
+ 1.38668  150.91 -0.45 
+ 1.38258  149.09 -0.45 
+ 1.3788  147.504 -0.45 
+ 1.37823  147.27 -0.45 
+ 1.37356  145.45 -0.45 
+ 1.36864  143.64 -0.45 
+ 1.3636  141.862 -0.45 
+ 1.36348  141.82 -0.45 
+ 1.35803  140 -0.45 
+ 1.35235  138.18 -0.45 
+ 1.3485  136.992 -0.45 
+ 1.34639  136.36 -0.45 
+ 1.34011  134.55 -0.45 
+ 1.3336  132.73 -0.45 
+ 1.3333  132.648 -0.45 
+ 1.32679  130.91 -0.45 
+ 1.31977  129.09 -0.45 
+ 1.3182  128.693 -0.45 
+ 1.31237  127.27 -0.45 
+ 1.30472  125.45 -0.45 
+ 1.303  125.049 -0.45 
+ 1.29677  123.64 -0.45 
+ 1.2886  121.82 -0.45 
+ 1.2879  121.665 -0.45 
+ 1.27997  120 -0.45 
+ 1.2727  118.495 -0.45 
+ 1.27111  118.18 -0.45 
+ 1.26187  116.36 -0.45 
+ 1.2576  115.527 -0.45 
+ 1.25225  114.55 -0.45 
+ 1.2424  112.751 -0.45 
+ 1.24228  112.73 -0.45 
+ 1.23172  110.91 -0.45 
+ 1.2273  110.146 -0.45 
+ 1.22061  109.09 -0.45 
+ 1.2121  107.736 -0.45 
+ 1.20888  107.27 -0.45 
+ 1.197  105.533 -0.45 
+ 1.19635  105.45 -0.45 
+ 1.18237  103.64 -0.45 
+ 1.1818  103.565 -0.45 
+ 1.1667  101.848 -0.45 
+ 1.16639  101.82 -0.45 
+ 1.1515  100.419 -0.45 
+ 1.1456  100 -0.45 
+ 1.1364  99.3301 -0.45 
+ 1.1212  98.62 -0.45 
+ 1.1061  98.3032 -0.45 
+ 1.0909  98.3714 -0.45 
+ 1.0758  98.8173 -0.45 
+ 1.0606  99.6355 -0.45 
+ 1.05607  100 -0.45 
+ 1.0455  100.793 -0.45 
+ 1.0352  101.82 -0.45 
+ 1.0303  102.282 -0.45 
+ 1.01908  103.64 -0.45 
+ 1.0152  104.087 -0.45 
+ 1.00556  105.45 -0.45 
+ 1  106.212 -0.45 
+
+ 1.91566  14.55 -0.45 
+ 1.9242  13.7143 -0.45 
+ 1.93372  12.73 -0.45 
+ 1.9394  12.0862 -0.45 
+ 1.94935  10.91 -0.45 
+ 1.9545  10.2056 -0.45 
+ 1.96263  9.09 -0.45 
+ 1.9697  7.89408 -0.45 
+ 1.97343  7.27 -0.45 
+ 1.98182  5.45 -0.45 
+ 1.9848  4.52286 -0.45 
+ 1.98786  3.64 -0.45 
+ 1.99159  1.82 -0.45 
+ 1.99281  0 -0.45 
+
+ 1.3939  58.4713 -0.45 
+ 1.3788  59.1696 -0.45 
+ 1.3636  59.8667 -0.45 
+ 1.36059  60 -0.45 
+ 1.3485  60.5572 -0.45 
+ 1.3333  61.2374 -0.45 
+ 1.32004  61.82 -0.45 
+ 1.3182  61.9058 -0.45 
+ 1.303  62.5561 -0.45 
+ 1.2879  63.1775 -0.45 
+ 1.27571  63.64 -0.45 
+ 1.2727  63.7625 -0.45 
+ 1.2576  64.2955 -0.45 
+ 1.2424  64.7538 -0.45 
+ 1.2273  65.1129 -0.45 
+ 1.2121  65.332 -0.45 
+ 1.197  65.3527 -0.45 
+ 1.1818  65.0765 -0.45 
+ 1.1667  64.3324 -0.45 
+ 1.15914  63.64 -0.45 
+ 1.1515  62.6367 -0.45 
+ 1.14756  61.82 -0.45 
+ 1.14305  60 -0.45 
+ 1.14298  58.18 -0.45 
+ 1.14681  56.36 -0.45 
+ 1.1515  55.272 -0.45 
+ 1.15459  54.55 -0.45 
+ 1.16657  52.73 -0.45 
+ 1.1667  52.7163 -0.45 
+ 1.1818  51.0874 -0.45 
+ 1.18337  50.91 -0.45 
+ 1.197  49.8239 -0.45 
+ 1.20549  49.09 -0.45 
+ 1.2121  48.6755 -0.45 
+ 1.2273  47.6784 -0.45 
+ 1.23315  47.27 -0.45 
+ 1.2424  46.7981 -0.45 
+ 1.2576  45.9791 -0.45 
+ 1.26669  45.45 -0.45 
+ 1.2727  45.1926 -0.45 
+ 1.2879  44.5228 -0.45 
+ 1.303  43.7805 -0.45 
+ 1.30579  43.64 -0.45 
+ 1.3182  43.1754 -0.45 
+ 1.3333  42.561 -0.45 
+ 1.3485  41.8768 -0.45 
+ 1.34972  41.82 -0.45 
+ 1.3636  41.3427 -0.45 
+ 1.3788  40.7749 -0.45 
+ 1.3939  40.1403 -0.45 
+ 1.39713  40 -0.45 
+ 1.4091  39.6123 -0.45 
+ 1.4242  39.0782 -0.45 
+ 1.4394  38.4798 -0.45 
+ 1.44647  38.18 -0.45 
+ 1.4545  37.9232 -0.45 
+ 1.4697  37.4104 -0.45 
+ 1.4848  36.8341 -0.45 
+ 1.4961  36.36 -0.45 
+ 1.5  36.2359 -0.45 
+ 1.5152  35.7345 -0.45 
+ 1.5303  35.1688 -0.45 
+ 1.54488  34.55 -0.45 
+ 1.5455  34.5296 -0.45 
+ 1.5606  34.0206 -0.45 
+ 1.5758  33.4434 -0.45 
+ 1.5909  32.7776 -0.45 
+ 1.59195  32.73 -0.45 
+ 1.6061  32.2338 -0.45 
+ 1.6212  31.6289 -0.45 
+ 1.6364  30.9254 -0.45 
+ 1.63672  30.91 -0.45 
+ 1.6515  30.352 -0.45 
+ 1.6667  29.6951 -0.45 
+ 1.67887  29.09 -0.45 
+ 1.6818  28.9718 -0.45 
+ 1.697  28.3366 -0.45 
+ 1.7121  27.5929 -0.45 
+ 1.71816  27.27 -0.45 
+ 1.7273  26.8687 -0.45 
+ 1.7424  26.1274 -0.45 
+ 1.75444  25.45 -0.45 
+ 1.7576  25.3 -0.45 
+ 1.7727  24.5393 -0.45 
+ 1.78778  23.64 -0.45 
+ 1.7879  23.6339 -0.45 
+ 1.803  22.8173 -0.45 
+ 1.8182  21.8407 -0.45 
+ 1.81851  21.82 -0.45 
+ 1.8333  20.9331 -0.45 
+ 1.84663  20 -0.45 
+ 1.8485  19.8786 -0.45 
+ 1.8636  18.8417 -0.45 
+ 1.87221  18.18 -0.45 
+ 1.8788  17.6935 -0.45 
+ 1.8939  16.4511 -0.45 
+ 1.89497  16.36 -0.45 
+ 1.9091  15.1616 -0.45 
+ 1.91566  14.55 -0.45 
+
+ 2.38737  0 -0.45 
+ 2.3861  1.82 -0.45 
+ 2.38229  3.64 -0.45 
+ 2.3788  4.63867 -0.45 
+ 2.3759  5.45 -0.45 
+ 2.36689  7.27 -0.45 
+ 2.3636  7.79065 -0.45 
+ 2.35532  9.09 -0.45 
+ 2.3485  9.97307 -0.45 
+ 2.34112  10.91 -0.45 
+ 2.3333  11.7569 -0.45 
+ 2.32427  12.73 -0.45 
+ 2.3182  13.3017 -0.45 
+ 2.30473  14.55 -0.45 
+ 2.303  14.6918 -0.45 
+ 2.2879  15.9245 -0.45 
+ 2.28248  16.36 -0.45 
+ 2.2727  17.0744 -0.45 
+ 2.2576  18.1781 -0.45 
+ 2.25757  18.18 -0.45 
+ 2.2424  19.1739 -0.45 
+ 2.22985  20 -0.45 
+ 2.2273  20.155 -0.45 
+ 2.2121  21.0619 -0.45 
+ 2.19949  21.82 -0.45 
+ 2.197  21.959 -0.45 
+ 2.1818  22.7935 -0.45 
+ 2.1667  23.6326 -0.45 
+ 2.16657  23.64 -0.45 
+ 2.1515  24.4042 -0.45 
+ 2.1364  25.1803 -0.45 
+ 2.1311  25.45 -0.45 
+ 2.1212  25.9264 -0.45 
+ 2.1061  26.6581 -0.45 
+ 2.09352  27.27 -0.45 
+ 2.0909  27.3905 -0.45 
+ 2.0758  28.0822 -0.45 
+ 2.0606  28.7844 -0.45 
+ 2.05406  29.09 -0.45 
+ 2.0455  29.4679 -0.45 
+ 2.0303  30.1369 -0.45 
+ 2.0152  30.821 -0.45 
+ 2.01322  30.91 -0.45 
+ 2  31.4715 -0.45 
+ 1.9848  32.1278 -0.45 
+ 1.97129  32.73 -0.45 
+ 1.9697  32.7974 -0.45 
+ 1.9545  33.4327 -0.45 
+ 1.9394  34.0846 -0.45 
+ 1.9288  34.55 -0.45 
+ 1.9242  34.7409 -0.45 
+ 1.9091  35.3721 -0.45 
+ 1.8939  36.0234 -0.45 
+ 1.88624  36.36 -0.45 
+ 1.8788  36.6724 -0.45 
+ 1.8636  37.3126 -0.45 
+ 1.8485  37.976 -0.45 
+ 1.84388  38.18 -0.45 
+ 1.8333  38.6239 -0.45 
+ 1.8182  39.2737 -0.45 
+ 1.803  39.9493 -0.45 
+ 1.80187  40 -0.45 
+ 1.7879  40.5955 -0.45 
+ 1.7727  41.2578 -0.45 
+ 1.76029  41.82 -0.45 
+ 1.7576  41.937 -0.45 
+ 1.7424  42.5914 -0.45 
+ 1.7273  43.2676 -0.45 
+ 1.71909  43.64 -0.45 
+ 1.7121  43.9432 -0.45 
+ 1.697  44.6067 -0.45 
+ 1.6818  45.2926 -0.45 
+ 1.67835  45.45 -0.45 
+ 1.6667  45.9653 -0.45 
+ 1.6515  46.645 -0.45 
+ 1.638  47.27 -0.45 
+ 1.6364  47.3424 -0.45 
+ 1.6212  48.0164 -0.45 
+ 1.6061  48.7074 -0.45 
+ 1.59778  49.09 -0.45 
+ 1.5909  49.4003 -0.45 
+ 1.5758  50.0848 -0.45 
+ 1.5606  50.786 -0.45 
+ 1.55791  50.91 -0.45 
+ 1.5455  51.4746 -0.45 
+ 1.5303  52.1688 -0.45 
+ 1.51826  52.73 -0.45 
+ 1.5152  52.8724 -0.45 
+ 1.5  53.564 -0.45 
+ 1.4848  54.2666 -0.45 
+ 1.47868  54.55 -0.45 
+ 1.4697  54.9657 -0.45 
+ 1.4545  55.6609 -0.45 
+ 1.43952  56.36 -0.45 
+ 1.4394  56.3656 -0.45 
+ 1.4242  57.0645 -0.45 
+ 1.4091  57.7672 -0.45 
+ 1.40008  58.18 -0.45 
+ 1.3939  58.4713 -0.45 
+
+
+# Contour 26, label:    -0.46
+ 1.36854  180 -0.46 
+ 1.36841  178.18 -0.46 
+ 1.36802  176.36 -0.46 
+ 1.36738  174.55 -0.46 
+ 1.36647  172.73 -0.46 
+ 1.36531  170.91 -0.46 
+ 1.36388  169.09 -0.46 
+ 1.3636  168.782 -0.46 
+ 1.36219  167.27 -0.46 
+ 1.36023  165.45 -0.46 
+ 1.35801  163.64 -0.46 
+ 1.35553  161.82 -0.46 
+ 1.35278  160 -0.46 
+ 1.34977  158.18 -0.46 
+ 1.3485  157.476 -0.46 
+ 1.34644  156.36 -0.46 
+ 1.34281  154.55 -0.46 
+ 1.33892  152.73 -0.46 
+ 1.33474  150.91 -0.46 
+ 1.3333  150.318 -0.46 
+ 1.33026  149.09 -0.46 
+ 1.32549  147.27 -0.46 
+ 1.32044  145.45 -0.46 
+ 1.3182  144.684 -0.46 
+ 1.31504  143.64 -0.46 
+ 1.30929  141.82 -0.46 
+ 1.30326  140 -0.46 
+ 1.303  139.924 -0.46 
+ 1.29684  138.18 -0.46 
+ 1.29014  136.36 -0.46 
+ 1.2879  135.776 -0.46 
+ 1.28299  134.55 -0.46 
+ 1.27547  132.73 -0.46 
+ 1.2727  132.08 -0.46 
+ 1.26753  130.91 -0.46 
+ 1.25923  129.09 -0.46 
+ 1.2576  128.742 -0.46 
+ 1.25029  127.27 -0.46 
+ 1.2424  125.722 -0.46 
+ 1.24094  125.45 -0.46 
+ 1.23093  123.64 -0.46 
+ 1.2273  122.993 -0.46 
+ 1.22017  121.82 -0.46 
+ 1.2121  120.518 -0.46 
+ 1.20862  120 -0.46 
+ 1.197  118.298 -0.46 
+ 1.1961  118.18 -0.46 
+ 1.182  116.36 -0.46 
+ 1.1818  116.335 -0.46 
+ 1.1667  114.641 -0.46 
+ 1.16575  114.55 -0.46 
+ 1.1515  113.206 -0.46 
+ 1.14529  112.73 -0.46 
+ 1.1364  112.054 -0.46 
+ 1.1212  111.198 -0.46 
+ 1.1133  110.91 -0.46 
+ 1.1061  110.649 -0.46 
+ 1.0909  110.417 -0.46 
+ 1.0758  110.515 -0.46 
+ 1.06202  110.91 -0.46 
+ 1.0606  110.95 -0.46 
+ 1.0455  111.725 -0.46 
+ 1.03202  112.73 -0.46 
+ 1.0303  112.856 -0.46 
+ 1.0152  114.354 -0.46 
+ 1.01364  114.55 -0.46 
+ 1  116.233 -0.46 
+
+ 1.3182  54.6348 -0.46 
+ 1.303  54.7339 -0.46 
+ 1.2879  54.6633 -0.46 
+ 1.28243  54.55 -0.46 
+ 1.2727  54.0743 -0.46 
+ 1.26316  52.73 -0.46 
+ 1.26886  50.91 -0.46 
+ 1.2727  50.523 -0.46 
+ 1.28488  49.09 -0.46 
+ 1.2879  48.8882 -0.46 
+ 1.303  47.7797 -0.46 
+ 1.30897  47.27 -0.46 
+ 1.3182  46.7917 -0.46 
+ 1.3333  45.8963 -0.46 
+ 1.33999  45.45 -0.46 
+ 1.3485  45.0876 -0.46 
+ 1.3636  44.377 -0.46 
+ 1.3769  43.64 -0.46 
+ 1.3788  43.569 -0.46 
+ 1.3939  42.9894 -0.46 
+ 1.4091  42.3134 -0.46 
+ 1.41879  41.82 -0.46 
+ 1.4242  41.633 -0.46 
+ 1.4394  41.085 -0.46 
+ 1.4545  40.4448 -0.46 
+ 1.46383  40 -0.46 
+ 1.4697  39.8079 -0.46 
+ 1.4848  39.2829 -0.46 
+ 1.5  38.6683 -0.46 
+ 1.51052  38.18 -0.46 
+ 1.5152  38.0289 -0.46 
+ 1.5303  37.515 -0.46 
+ 1.5455  36.9113 -0.46 
+ 1.5573  36.36 -0.46 
+ 1.5606  36.2515 -0.46 
+ 1.5758  35.7368 -0.46 
+ 1.5909  35.1284 -0.46 
+ 1.60313  34.55 -0.46 
+ 1.6061  34.4484 -0.46 
+ 1.6212  33.9091 -0.46 
+ 1.6364  33.2641 -0.46 
+ 1.64706  32.73 -0.46 
+ 1.6515  32.5679 -0.46 
+ 1.6667  31.9821 -0.46 
+ 1.6818  31.2689 -0.46 
+ 1.68856  30.91 -0.46 
+ 1.697  30.5793 -0.46 
+ 1.7121  29.9107 -0.46 
+ 1.72706  29.09 -0.46 
+ 1.7273  29.08 -0.46 
+ 1.7424  28.4233 -0.46 
+ 1.7576  27.6119 -0.46 
+ 1.76325  27.27 -0.46 
+ 1.7727  26.8239 -0.46 
+ 1.7879  25.9986 -0.46 
+ 1.79649  25.45 -0.46 
+ 1.803  25.1152 -0.46 
+ 1.8182  24.2443 -0.46 
+ 1.82713  23.64 -0.46 
+ 1.8333  23.2872 -0.46 
+ 1.8485  22.3191 -0.46 
+ 1.85531  21.82 -0.46 
+ 1.8636  21.291 -0.46 
+ 1.8788  20.1743 -0.46 
+ 1.88098  20 -0.46 
+ 1.8939  19.0692 -0.46 
+ 1.90459  18.18 -0.46 
+ 1.9091  17.8243 -0.46 
+ 1.9242  16.4994 -0.46 
+ 1.9257  16.36 -0.46 
+ 1.9394  15.1104 -0.46 
+ 1.94496  14.55 -0.46 
+ 1.9545  13.548 -0.46 
+ 1.96185  12.73 -0.46 
+ 1.9697  11.7756 -0.46 
+ 1.97653  10.91 -0.46 
+ 1.9848  9.69438 -0.46 
+ 1.98892  9.09 -0.46 
+ 1.99902  7.27 -0.46 
+ 2  7.04345 -0.46 
+ 2.00725  5.45 -0.46 
+ 2.01284  3.64 -0.46 
+ 2.0152  2.32046 -0.46 
+ 2.01619  1.82 -0.46 
+ 2.01741  0 -0.46 
+
+ 2.33817  0 -0.46 
+ 2.33684  1.82 -0.46 
+ 2.3333  3.43987 -0.46 
+ 2.33285  3.64 -0.46 
+ 2.3261  5.45 -0.46 
+ 2.3182  6.99598 -0.46 
+ 2.31675  7.27 -0.46 
+ 2.30454  9.09 -0.46 
+ 2.303  9.28024 -0.46 
+ 2.28963  10.91 -0.46 
+ 2.2879  11.0907 -0.46 
+ 2.2727  12.6417 -0.46 
+ 2.27183  12.73 -0.46 
+ 2.2576  13.9873 -0.46 
+ 2.25113  14.55 -0.46 
+ 2.2424  15.2222 -0.46 
+ 2.22766  16.36 -0.46 
+ 2.2273  16.385 -0.46 
+ 2.2121  17.4205 -0.46 
+ 2.20105  18.18 -0.46 
+ 2.197  18.4335 -0.46 
+ 2.1818  19.3653 -0.46 
+ 2.17155  20 -0.46 
+ 2.1667  20.2752 -0.46 
+ 2.1515  21.1213 -0.46 
+ 2.13917  21.82 -0.46 
+ 2.1364  21.9645 -0.46 
+ 2.1212  22.7386 -0.46 
+ 2.1061  23.5284 -0.46 
+ 2.10393  23.64 -0.46 
+ 2.0909  24.2515 -0.46 
+ 2.0758  24.9749 -0.46 
+ 2.06596  25.45 -0.46 
+ 2.0606  25.6896 -0.46 
+ 2.0455  26.3634 -0.46 
+ 2.0303  27.0589 -0.46 
+ 2.02572  27.27 -0.46 
+ 2.0152  27.7148 -0.46 
+ 2  28.3614 -0.46 
+ 1.9848  29.0368 -0.46 
+ 1.9836  29.09 -0.46 
+ 1.9697  29.6509 -0.46 
+ 1.9545  30.2804 -0.46 
+ 1.94015  30.91 -0.46 
+ 1.9394  30.9401 -0.46 
+ 1.9242  31.5331 -0.46 
+ 1.9091  32.1538 -0.46 
+ 1.89577  32.73 -0.46 
+ 1.8939  32.8033 -0.46 
+ 1.8788  33.3902 -0.46 
+ 1.8636  34.0098 -0.46 
+ 1.85122  34.55 -0.46 
+ 1.8485  34.6561 -0.46 
+ 1.8333  35.24 -0.46 
+ 1.8182  35.8615 -0.46 
+ 1.80675  36.36 -0.46 
+ 1.803  36.5062 -0.46 
+ 1.7879  37.0986 -0.46 
+ 1.7727  37.7328 -0.46 
+ 1.76267  38.18 -0.46 
+ 1.7576  38.3803 -0.46 
+ 1.7424  38.9807 -0.46 
+ 1.7273  39.6258 -0.46 
+ 1.71893  40 -0.46 
+ 1.7121  40.2696 -0.46 
+ 1.697  40.8782 -0.46 
+ 1.6818  41.5333 -0.46 
+ 1.67545  41.82 -0.46 
+ 1.6667  42.1679 -0.46 
+ 1.6515  42.7825 -0.46 
+ 1.6364  43.4435 -0.46 
+ 1.63199  43.64 -0.46 
+ 1.6212  44.0619 -0.46 
+ 1.6061  44.6743 -0.46 
+ 1.5909  45.3312 -0.46 
+ 1.58819  45.45 -0.46 
+ 1.5758  45.9341 -0.46 
+ 1.5606  46.544 -0.46 
+ 1.5455  47.1945 -0.46 
+ 1.54373  47.27 -0.46 
+ 1.5303  47.7795 -0.46 
+ 1.5152  48.3742 -0.46 
+ 1.5  49.0025 -0.46 
+ 1.49785  49.09 -0.46 
+ 1.4848  49.5685 -0.46 
+ 1.4697  50.1349 -0.46 
+ 1.4545  50.724 -0.46 
+ 1.44966  50.91 -0.46 
+ 1.4394  51.268 -0.46 
+ 1.4242  51.7858 -0.46 
+ 1.4091  52.3101 -0.46 
+ 1.3969  52.73 -0.46 
+ 1.3939  52.8248 -0.46 
+ 1.3788  53.2592 -0.46 
+ 1.3636  53.6716 -0.46 
+ 1.3485  54.0542 -0.46 
+ 1.3333  54.3928 -0.46 
+ 1.32393  54.55 -0.46 
+ 1.3182  54.6348 -0.46 
+
+
+# Contour 27, label:    -0.47
+ 1.31661  180 -0.47 
+ 1.31647  178.18 -0.47 
+ 1.31604  176.36 -0.47 
+ 1.31533  174.55 -0.47 
+ 1.31433  172.73 -0.47 
+ 1.31304  170.91 -0.47 
+ 1.31147  169.09 -0.47 
+ 1.3096  167.27 -0.47 
+ 1.30745  165.45 -0.47 
+ 1.30501  163.64 -0.47 
+ 1.303  162.298 -0.47 
+ 1.30227  161.82 -0.47 
+ 1.29919  160 -0.47 
+ 1.29581  158.18 -0.47 
+ 1.29213  156.36 -0.47 
+ 1.28815  154.55 -0.47 
+ 1.2879  154.444 -0.47 
+ 1.28372  152.73 -0.47 
+ 1.27896  150.91 -0.47 
+ 1.27389  149.09 -0.47 
+ 1.2727  148.686 -0.47 
+ 1.26839  147.27 -0.47 
+ 1.26252  145.45 -0.47 
+ 1.2576  144.01 -0.47 
+ 1.25627  143.64 -0.47 
+ 1.24943  141.82 -0.47 
+ 1.2424  140.036 -0.47 
+ 1.24225  140 -0.47 
+ 1.23441  138.18 -0.47 
+ 1.2273  136.603 -0.47 
+ 1.22612  136.36 -0.47 
+ 1.21699  134.55 -0.47 
+ 1.2121  133.613 -0.47 
+ 1.20716  132.73 -0.47 
+ 1.197  130.979 -0.47 
+ 1.19656  130.91 -0.47 
+ 1.18451  129.09 -0.47 
+ 1.1818  128.693 -0.47 
+ 1.17099  127.27 -0.47 
+ 1.1667  126.722 -0.47 
+ 1.15516  125.45 -0.47 
+ 1.1515  125.061 -0.47 
+ 1.1364  123.709 -0.47 
+ 1.13542  123.64 -0.47 
+ 1.1212  122.663 -0.47 
+ 1.1061  121.925 -0.47 
+ 1.10232  121.82 -0.47 
+ 1.0909  121.511 -0.47 
+ 1.0758  121.429 -0.47 
+ 1.0606  121.693 -0.47 
+ 1.05756  121.82 -0.47 
+ 1.0455  122.323 -0.47 
+ 1.0303  123.337 -0.47 
+ 1.0271  123.64 -0.47 
+ 1.0152  124.762 -0.47 
+ 1.0096  125.45 -0.47 
+ 1  126.647 -0.47 
+
+ 2.28181  0 -0.47 
+ 2.28035  1.82 -0.47 
+ 2.27604  3.64 -0.47 
+ 2.2727  4.48923 -0.47 
+ 2.26875  5.45 -0.47 
+ 2.25861  7.27 -0.47 
+ 2.2576  7.41338 -0.47 
+ 2.24524  9.09 -0.47 
+ 2.2424  9.41166 -0.47 
+ 2.22891  10.91 -0.47 
+ 2.2273  11.0635 -0.47 
+ 2.2121  12.4664 -0.47 
+ 2.2092  12.73 -0.47 
+ 2.197  13.6991 -0.47 
+ 2.18618  14.55 -0.47 
+ 2.1818  14.853 -0.47 
+ 2.1667  15.8836 -0.47 
+ 2.15963  16.36 -0.47 
+ 2.1515  16.8502 -0.47 
+ 2.1364  17.7607 -0.47 
+ 2.12936  18.18 -0.47 
+ 2.1212  18.6134 -0.47 
+ 2.1061  19.4138 -0.47 
+ 2.09516  20 -0.47 
+ 2.0909  20.2025 -0.47 
+ 2.0758  20.9012 -0.47 
+ 2.0606  21.6294 -0.47 
+ 2.05656  21.82 -0.47 
+ 2.0455  22.2738 -0.47 
+ 2.0303  22.8956 -0.47 
+ 2.0152  23.5553 -0.47 
+ 2.01316  23.64 -0.47 
+ 2  24.0966 -0.47 
+ 1.9848  24.629 -0.47 
+ 1.9697  25.1974 -0.47 
+ 1.96292  25.45 -0.47 
+ 1.9545  25.7014 -0.47 
+ 1.9394  26.1195 -0.47 
+ 1.9242  26.536 -0.47 
+ 1.9091  26.9723 -0.47 
+ 1.89863  27.27 -0.47 
+ 1.8939  27.3558 -0.47 
+ 1.8788  27.4532 -0.47 
+ 1.86897  27.27 -0.47 
+ 1.87725  25.45 -0.47 
+ 1.8788  25.3425 -0.47 
+ 1.8939  23.8905 -0.47 
+ 1.89558  23.64 -0.47 
+ 1.9091  22.5545 -0.47 
+ 1.91554  21.82 -0.47 
+ 1.9242  21.1147 -0.47 
+ 1.93492  20 -0.47 
+ 1.9394  19.6179 -0.47 
+ 1.95327  18.18 -0.47 
+ 1.9545  18.0659 -0.47 
+ 1.9697  16.4845 -0.47 
+ 1.97074  16.36 -0.47 
+ 1.9848  14.7987 -0.47 
+ 1.98682  14.55 -0.47 
+ 2  12.9017 -0.47 
+ 2.00128  12.73 -0.47 
+ 2.01408  10.91 -0.47 
+ 2.0152  10.7286 -0.47 
+ 2.02524  9.09 -0.47 
+ 2.0303  8.05141 -0.47 
+ 2.03427  7.27 -0.47 
+ 2.04144  5.45 -0.47 
+ 2.0455  3.93286 -0.47 
+ 2.04637  3.64 -0.47 
+ 2.04966  1.82 -0.47 
+ 2.05072  0 -0.47 
+
+
+# Contour 28, label:    -0.48
+ 1.26014  180 -0.48 
+ 1.25998  178.18 -0.48 
+ 1.2595  176.36 -0.48 
+ 1.2587  174.55 -0.48 
+ 1.2576  172.768 -0.48 
+ 1.25758  172.73 -0.48 
+ 1.25607  170.91 -0.48 
+ 1.25422  169.09 -0.48 
+ 1.25203  167.27 -0.48 
+ 1.2495  165.45 -0.48 
+ 1.24663  163.64 -0.48 
+ 1.24341  161.82 -0.48 
+ 1.2424  161.302 -0.48 
+ 1.23975  160 -0.48 
+ 1.23568  158.18 -0.48 
+ 1.23124  156.36 -0.48 
+ 1.2273  154.873 -0.48 
+ 1.22638  154.55 -0.48 
+ 1.22088  152.73 -0.48 
+ 1.21498  150.91 -0.48 
+ 1.2121  150.078 -0.48 
+ 1.20846  149.09 -0.48 
+ 1.20134  147.27 -0.48 
+ 1.197  146.223 -0.48 
+ 1.19349  145.45 -0.48 
+ 1.18478  143.64 -0.48 
+ 1.1818  143.049 -0.48 
+ 1.17498  141.82 -0.48 
+ 1.1667  140.401 -0.48 
+ 1.16403  140 -0.48 
+ 1.1515  138.207 -0.48 
+ 1.15128  138.18 -0.48 
+ 1.1364  136.432 -0.48 
+ 1.13563  136.36 -0.48 
+ 1.1212  135.058 -0.48 
+ 1.11371  134.55 -0.48 
+ 1.1061  134.052 -0.48 
+ 1.0909  133.422 -0.48 
+ 1.0758  133.174 -0.48 
+ 1.0606  133.327 -0.48 
+ 1.0455  133.904 -0.48 
+ 1.03592  134.55 -0.48 
+ 1.0303  134.936 -0.48 
+ 1.01625  136.36 -0.48 
+ 1.0152  136.47 -0.48 
+ 1.003  138.18 -0.48 
+ 1  138.612 -0.48 
+
+ 2.19757  0 -0.48 
+ 2.197  0.589209 -0.48 
+ 2.19542  1.82 -0.48 
+ 2.18887  3.64 -0.48 
+ 2.1818  4.94148 -0.48 
+ 2.17831  5.45 -0.48 
+ 2.1667  6.81384 -0.48 
+ 2.16172  7.27 -0.48 
+ 2.1515  8.07183 -0.48 
+ 2.1364  9.01895 -0.48 
+ 2.13308  9.09 -0.48 
+ 2.1212  9.31904 -0.48 
+ 2.1162  9.09 -0.48 
+ 2.10889  7.27 -0.48 
+ 2.10999  5.45 -0.48 
+ 2.1118  3.64 -0.48 
+ 2.11311  1.82 -0.48 
+ 2.11358  0 -0.48 
+
+
+# Contour 29, label:    -0.49
+ 1.19339  180 -0.49 
+ 1.19317  178.18 -0.49 
+ 1.19251  176.36 -0.49 
+ 1.19141  174.55 -0.49 
+ 1.18985  172.73 -0.49 
+ 1.18786  170.91 -0.49 
+ 1.18542  169.09 -0.49 
+ 1.18253  167.27 -0.49 
+ 1.1818  166.873 -0.49 
+ 1.17896  165.45 -0.49 
+ 1.17481  163.64 -0.49 
+ 1.17017  161.82 -0.49 
+ 1.1667  160.591 -0.49 
+ 1.16481  160 -0.49 
+ 1.15843  158.18 -0.49 
+ 1.1515  156.37 -0.49 
+ 1.15145  156.36 -0.49 
+ 1.14278  154.55 -0.49 
+ 1.1364  153.31 -0.49 
+ 1.13277  152.73 -0.49 
+ 1.1212  151.008 -0.49 
+ 1.12035  150.91 -0.49 
+ 1.1061  149.367 -0.49 
+ 1.10232  149.09 -0.49 
+ 1.0909  148.305 -0.49 
+ 1.0758  147.788 -0.49 
+ 1.0606  147.832 -0.49 
+ 1.0455  148.469 -0.49 
+ 1.03807  149.09 -0.49 
+ 1.0303  149.771 -0.49 
+ 1.02191  150.91 -0.49 
+ 1.0152  151.868 -0.49 
+ 1.0108  152.73 -0.49 
+ 1.00203  154.55 -0.49 
+ 1  154.997 -0.49 
+
Index: examples/Test/Zmat/list
===================================================================
--- examples/Test/Zmat/list	(revision 0)
+++ examples/Test/Zmat/list	(revision 1)
@@ -0,0 +1,3 @@
+b 1 2
+b 2 3
+a 1 2 3
Index: examples/Test/Zmat/Dep_tscan_m
===================================================================
--- examples/Test/Zmat/Dep_tscan_m	(revision 0)
+++ examples/Test/Zmat/Dep_tscan_m	(revision 1)
@@ -0,0 +1,102 @@
+#!/bin/bash
+export LANG=C
+if [ $# -lt 3 ]; then
+ echo "Use: $0 File.out MaxCyc PathName [PES] [T]"
+ exit
+fi
+Fout=$1
+ItMax=$2
+Nom=$3
+PES=$4
+Tgt=$5
+
+NomGplot=${Nom}_m.gplot
+yr="[-0.50:-0.42]"
+
+if [ ! -s list ]; then
+ echo "File list is missing"
+ exit
+fi
+awk -f Dep_tgt.awk $Fout 
+cat <<EOF > $NomGplot
+#!/usr/bin/gnuplot -persist
+ set pointsize 2
+ unset key
+EOF
+let ItM=ItMax-1
+for i in `seq 0 $ItM`
+  do
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ set multiplot
+ set origin 0.,0.
+ set size 0.5
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ if [ "$Tgt" != "" ]; then
+  echo "replot \"${Nom}_tgt_${i}.dat\" u 1:3 w l" >> $NomGplot
+ fi
+ cat <<EOF >>  $NomGplot
+ set origin .505,0.
+# set size 0.5
+ clear
+ set yrange $yr
+ set xrange [-10:190]
+EOF
+ echo "plot \"${Nom}_${i}.dat\" u 3:4 t \"E\" w lp" >> $NomGplot
+ echo "unset multiplot" >> $NomGplot
+ echo "pause -1" >> $NomGplot
+ done
+let i=ItMax
+ xyz2scan ${Nom}_cart.${i} > /dev/null
+ mv Scan.dat ${Nom}_${i}.dat
+ cat <<EOF >>  $NomGplot
+ set multiplot
+ set origin 0.,0.
+# set size 0.5
+ clear
+ set xrange [1.:2.5]
+ set yrange [-10:190]
+ plot "HCN_irc.dat" u 1:3 w l
+EOF
+ if [ "$PES" != "" ]; then
+  echo "replot \"HCN_PES_2D.dat\" u 1:2 w l 2, \"HCN_PES_2D.dat\" u 1:(-\$2) w l 2,\"HCN_PES_2D.dat\" u 1:(360-\$2) w l 2" >> $NomGplot
+ fi
+ if [ -s ${Nom}_spline.${i} ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_spline.${i}\" u 2:4 w l" >> $NomGplot
+ elif [  -s ${Nom}_dbgtgt_${i}.dat ]; then
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w p 5" >> $NomGplot
+ echo "replot \"${Nom}_dbgtgt_${i}.dat\" u 2:(\$4*180./pi) w l" >> $NomGplot
+ else
+ echo "replot \"${Nom}_${i}.dat\" u 1:3 w lp 5" >> $NomGplot
+fi
+ cat <<EOF >>  $NomGplot
+ set origin .505,0.
+# set size  0.5
+ clear
+ set yrange $yr
+ set xrange [-10:190]
+EOF
+ echo "plot \"${Nom}_${i}.dat\" u 3:4 t \"E\" w lp" >> $NomGplot
+ echo "unset multiplot" >> $NomGplot
+ echo "pause -1" >> $NomGplot
+
+chmod u+x ./$NomGplot
+echo "./$NomGplot      to see the path"
\ No newline at end of file

Property changes on: examples/Test/Zmat/Dep_tscan_m
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/HCN_irc.dat
===================================================================
--- examples/Test/Zmat/HCN_irc.dat	(revision 0)
+++ examples/Test/Zmat/HCN_irc.dat	(revision 1)
@@ -0,0 +1,69 @@
+ # Bonds
+# b H    1C    2
+# b C    2N    3
+ # Angles
+# a H    1C    2N    3
+      1.06590      1.15332    180.00000       -0.499465
+      1.06561      1.15325    176.88982       -0.499377
+      1.06570      1.15335    174.02210       -0.499138
+      1.06586      1.15353    170.95078       -0.498714
+      1.06607      1.15376    168.09455       -0.498165
+      1.06637      1.15408    164.91385       -0.497379
+      1.06670      1.15442    162.09619       -0.496530
+      1.06714      1.15486    158.94735       -0.495413
+      1.06763      1.15531    156.05955       -0.494234
+      1.06822      1.15583    153.01007       -0.492830
+      1.06885      1.15633    150.21956       -0.491404
+      1.06959      1.15689    147.27079       -0.489756
+      1.07049      1.15749    144.14787       -0.487855
+      1.07149      1.15809    141.07378       -0.485834
+      1.07256      1.15864    138.16412       -0.483790
+      1.07376      1.15916    135.19476       -0.481580
+      1.07510      1.15964    132.23023       -0.479258
+      1.07663      1.16005    129.15683       -0.476740
+      1.07837      1.16037    126.00973       -0.474060
+      1.08009      1.16053    123.16044       -0.471559
+      1.08221      1.16056    119.93872       -0.468667
+      1.08425      1.16040    117.07933       -0.466064
+      1.08659      1.16002    114.00521       -0.463255
+      1.08919      1.15936    110.84904       -0.460391
+      1.09171      1.15850    107.95560       -0.457817
+      1.09460      1.15726    104.83870       -0.455142
+      1.09764      1.15570    101.71142       -0.452608
+      1.10087      1.15379     98.58844       -0.450284
+      1.10436      1.15147     95.37560       -0.448173
+      1.10814      1.14875     92.10563       -0.446391
+      1.11191      1.14591     89.05102       -0.445128
+      1.11634      1.14255     85.74263       -0.444275
+      1.12089      1.13921     82.65131       -0.444025
+      1.12632      1.13547     79.32859       -0.444402
+      1.13282      1.13174     76.01436       -0.445481
+      1.14001      1.12794     72.65259       -0.447284
+      1.15042      1.12452     69.21033       -0.449817
+      1.16221      1.12113     65.62870       -0.453019
+      1.17874      1.11851     61.97104       -0.456622
+      1.20665      1.11732     58.03673       -0.460489
+      1.24855      1.11843     54.19020       -0.463775
+      1.30087      1.12180     51.01851       -0.465829
+      1.35220      1.12591     48.59419       -0.466846
+      1.40621      1.13051     46.34878       -0.467343
+      1.46207      1.13540     44.19528       -0.467501
+      1.51564      1.13990     42.15661       -0.467476
+      1.56560      1.14386     40.25979       -0.467399
+      1.61723      1.14759     38.27077       -0.467350
+      1.66953      1.15090     36.20206       -0.467413
+      1.71398      1.15329     34.38207       -0.467614
+      1.76142      1.15539     32.35915       -0.468037
+      1.80922      1.15705     30.21518       -0.468728
+      1.85273      1.15822     28.14818       -0.469623
+      1.89899      1.15917     25.80184       -0.470867
+      1.93870      1.15980     23.62924       -0.472173
+      1.97864      1.16037     21.25716       -0.473687
+      2.01539      1.16088     18.84780       -0.475227
+      2.04708      1.16138     16.52920       -0.476638
+      2.07748      1.16195     13.99286       -0.478032
+      2.10448      1.16259     11.32940       -0.479278
+      2.12706      1.16325      8.55209       -0.480304
+      2.14483      1.16392      5.56119       -0.481083
+      2.15481      1.16435      2.76003       -0.481508
+      2.15904      1.16463      0.00000       -0.481645

Property changes on: examples/Test/Zmat/HCN_irc.dat
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Test/Zmat/README
===================================================================
--- examples/Test/Zmat/README	(revision 0)
+++ examples/Test/Zmat/README	(revision 1)
@@ -0,0 +1,39 @@
+As HCN can almost be considered as a 2D case because the CN bond does not
+ change much during the HCN -> CNH path, one can visualize the path 
+by projecting it on a 2D PES.
+This is done by analyzing a path.
+So, first, you have to launch run_Paht.
+Then you can analyse it either using:
+**)  AnaPath (as usual)
+../../../utils/AnaPath HCN_zmat.out 50 Path 12 
+**) Dep_tscan_p 
+./Dep_tscan_p HCN_zmat.out 50 Path PES
+This will create a Path_p.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red.
+To go to the next iteration, you have to press a key.
+
+**) Dep_tscan_m
+./Dep_tscan_m HCN_zmat.out 50 Path PES
+This will create a Path_m.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red, as with Dep_tscan_p.
+What is new is that you have 2 windows: the second one shows the energy
+ along the path.
+To go to the next iteration, you have to press a key.
+
+**) Dep_tscan_movie
+./Dep_tscan_movie HCN_zmat.out 50 Path PES
+This will create a Path_movie.gplot file that can be ran to visualizd the
+ evolution of the Path projected on the 2D PES (in green). The actual
+ IRC is also plotted in red, as with Dep_tscan_p.
+Here the evolution is shown as a movie, there is no need to press a key to go
+to the next iteration.
+
+** Remarks:
+For all Dep_tscan_XX scripts, 
+The "PES" argument can be omitted if you do not want to plot the 2D PES contours in green.
+If you have asked (using Path.valid, see manual) to print the tangents, then you can add
+ "T" as a last  argument, this will print the path and its tangents.
+All three scripts use the files HCN_irc.dat to plot the actual IRC, as well as HCN_PES_2D.dat
+ to plot the 2D PES.
Index: examples/Test_NEB_example.vmd
===================================================================
--- examples/Test_NEB_example.vmd	(revision 0)
+++ examples/Test_NEB_example.vmd	(revision 1)
@@ -0,0 +1,396 @@
+#!/usr/local/bin/vmd
+# VMD script written by save_state $Revision: 1.1 $
+# VMD version: 1.8.5
+set viewplist {}
+set fixedlist {}
+proc vmdrestoremymaterials {} {
+  set mlist { Opaque Transparent BrushedMetal Diffuse Ghost Glass1 Glass2 Glossy HardPlastic MetallicPastel Steel }
+  set mymlist [material list]
+  foreach mat $mlist {
+    if { [lsearch $mymlist $mat] == -1 } { 
+      material add $mat
+    }
+  }
+  material change ambient Opaque 0.000000
+  material change specular Opaque 0.500000
+  material change diffuse Opaque 0.650000
+  material change shininess Opaque 0.534020
+  material change opacity Opaque 1.000000
+  material change ambient Transparent 0.000000
+  material change specular Transparent 0.500000
+  material change diffuse Transparent 0.650000
+  material change shininess Transparent 0.534020
+  material change opacity Transparent 0.300000
+  material change ambient BrushedMetal 0.080000
+  material change specular BrushedMetal 0.340000
+  material change diffuse BrushedMetal 0.390000
+  material change shininess BrushedMetal 0.150000
+  material change opacity BrushedMetal 1.000000
+  material change ambient Diffuse 0.000000
+  material change specular Diffuse 0.000000
+  material change diffuse Diffuse 0.700000
+  material change shininess Diffuse 0.530000
+  material change opacity Diffuse 1.000000
+  material change ambient Ghost 0.000000
+  material change specular Ghost 1.000000
+  material change diffuse Ghost 0.000000
+  material change shininess Ghost 0.230000
+  material change opacity Ghost 0.100000
+  material change ambient Glass1 0.000000
+  material change specular Glass1 0.650000
+  material change diffuse Glass1 0.500000
+  material change shininess Glass1 0.530000
+  material change opacity Glass1 0.150000
+  material change ambient Glass2 0.520000
+  material change specular Glass2 0.220000
+  material change diffuse Glass2 0.760000
+  material change shininess Glass2 0.590000
+  material change opacity Glass2 0.680000
+  material change ambient Glossy 0.000000
+  material change specular Glossy 1.000000
+  material change diffuse Glossy 0.650000
+  material change shininess Glossy 0.880000
+  material change opacity Glossy 1.000000
+  material change ambient HardPlastic 0.000000
+  material change specular HardPlastic 0.280000
+  material change diffuse HardPlastic 0.560000
+  material change shininess HardPlastic 0.690000
+  material change opacity HardPlastic 1.000000
+  material change ambient MetallicPastel 0.000000
+  material change specular MetallicPastel 0.550000
+  material change diffuse MetallicPastel 0.260000
+  material change shininess MetallicPastel 0.190000
+  material change opacity MetallicPastel 1.000000
+  material change ambient Steel 0.250000
+  material change specular Steel 0.380000
+  material change diffuse Steel 0.000000
+  material change shininess Steel 0.320000
+  material change opacity Steel 1.000000
+}
+vmdrestoremymaterials
+# Atom selection macros
+atomselect macro at {resname ADE A THY T}
+atomselect macro acidic {resname ASP GLU}
+atomselect macro cyclic {resname HIS PHE PRO TRP TYR}
+atomselect macro acyclic {protein and not cyclic}
+atomselect macro aliphatic {resname ALA GLY ILE LEU VAL}
+atomselect macro alpha {protein and name CA}
+atomselect macro amino protein
+atomselect macro aromatic {resname HIS PHE TRP TYR}
+atomselect macro basic {resname ARG HIS LYS HSP}
+atomselect macro bonded {numbonds > 0}
+atomselect macro buried {resname ALA LEU VAL ILE PHE CYS MET TRP}
+atomselect macro cg {resname CYT C GUA G}
+atomselect macro charged {basic or acidic}
+atomselect macro hetero {not (protein or nucleic)}
+atomselect macro hydrophobic {resname ALA LEU VAL ILE PRO PHE MET TRP}
+atomselect macro small {resname ALA GLY SER}
+atomselect macro medium {resname VAL THR ASP ASN PRO CYS ASX PCA HYP}
+atomselect macro large {protein and not (small or medium)}
+atomselect macro neutral {resname VAL PHE GLN TYR HIS CYS MET TRP ASX GLX PCA HYP}
+atomselect macro polar {protein and not hydrophobic}
+atomselect macro purine {resname ADE A GUA G}
+atomselect macro pyrimidine {resname CYT C THY T URA U}
+atomselect macro surface {protein and not buried}
+atomselect macro lipid {resname DLPE DMPC DPPC GPC LPPC PALM PC PGCL POPC POPE}
+atomselect macro lipids lipid
+atomselect macro ion {resname AL BA CA CAL CD CES CLA CL CO CS CU CU1 CUA HG IN IOD K MG MN3 MO3 MO4 MO5 MO6 NA NAW OC7 PB POT PT RB SOD TB TL WO4 YB ZN ZN1 ZN2}
+atomselect macro ions ion
+atomselect macro sugar {resname AGLC}
+atomselect macro solvent {not (protein or sugar or nucleic or lipid)}
+atomselect macro carbon {name "C.*" and not ion}
+atomselect macro hydrogen {name "[0-9]?H.*"}
+atomselect macro nitrogen {name "N.*"}
+atomselect macro oxygen {name "O.*"}
+atomselect macro sulfur {name "S.*" and not ion}
+atomselect macro noh {not hydrogen}
+atomselect macro heme {resname HEM HEME}
+atomselect macro conformationall {altloc ""}
+atomselect macro conformationA {altloc "" or altloc "A"}
+atomselect macro conformationB {altloc "" or altloc "B"}
+atomselect macro conformationC {altloc "" or altloc "C"}
+atomselect macro conformationD {altloc "" or altloc "D"}
+atomselect macro conformationE {altloc "" or altloc "E"}
+atomselect macro conformationF {altloc "" or altloc "F"}
+atomselect macro unparametrized beta<1
+atomselect macro addedmolefacture {occupancy 0.8}
+# Display settings
+display eyesep       0.065000
+display focallength  2.000000
+display height       6.000000
+display distance     -2.000000
+display projection   Orthographic
+display nearclip set 0.500000
+display farclip  set 10.000000
+display depthcue   off
+display cuestart   0.500000
+display cueend     10.000000
+display cuedensity 0.400000
+display cuemode    Exp2
+#############################################################
+#
+# Insert LIST From PATH here
+#
+#############################################################
+mol new Test_frozen_00 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_01 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_02 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_03 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_04 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_05 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_06 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_07 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_08 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol addfile Test_frozen_09 type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all
+mol delrep 0 top
+mol representation DynamicBonds 1.600000 0.100000 6.000000
+mol color Name
+mol selection {all}
+mol material Opaque
+mol addrep top
+mol showperiodic top 0 xyXY
+mol numperiodic top 0 1
+mol selupdate 0 top 0
+mol colupdate 0 top 0
+mol scaleminmax top 0 0.000000 0.000000
+mol smoothrep top 0 0
+mol drawframes top 0 {now}
+mol clipplane center 0 0 top {0.0 0.0 0.0}
+mol clipplane color  0 0 top {0.5 0.5 0.5 }
+mol clipplane normal 0 0 top {0.0 0.0 1.0}
+mol clipplane status 0 0 top {0}
+mol clipplane center 1 0 top {0.0 0.0 0.0}
+mol clipplane color  1 0 top {0.5 0.5 0.5 }
+mol clipplane normal 1 0 top {0.0 0.0 1.0}
+mol clipplane status 1 0 top {0}
+mol clipplane center 2 0 top {0.0 0.0 0.0}
+mol clipplane color  2 0 top {0.5 0.5 0.5 }
+mol clipplane normal 2 0 top {0.0 0.0 1.0}
+mol clipplane status 2 0 top {0}
+mol clipplane center 3 0 top {0.0 0.0 0.0}
+mol clipplane color  3 0 top {0.5 0.5 0.5 }
+mol clipplane normal 3 0 top {0.0 0.0 1.0}
+mol clipplane status 3 0 top {0}
+mol clipplane center 4 0 top {0.0 0.0 0.0}
+mol clipplane color  4 0 top {0.5 0.5 0.5 }
+mol clipplane normal 4 0 top {0.0 0.0 1.0}
+mol clipplane status 4 0 top {0}
+mol clipplane center 5 0 top {0.0 0.0 0.0}
+mol clipplane color  5 0 top {0.5 0.5 0.5 }
+mol clipplane normal 5 0 top {0.0 0.0 1.0}
+mol clipplane status 5 0 top {0}
+mol representation CPK 1.000000 0.300000 8.000000 6.000000
+mol color Name
+mol selection {all}
+mol material Opaque
+mol addrep top
+mol showperiodic top 1 xyXY
+mol numperiodic top 1 1
+mol selupdate 1 top 0
+mol colupdate 1 top 0
+mol scaleminmax top 1 0.000000 0.000000
+mol smoothrep top 1 0
+mol drawframes top 1 {now}
+mol clipplane center 0 1 top {0.0 0.0 0.0}
+mol clipplane color  0 1 top {0.5 0.5 0.5 }
+mol clipplane normal 0 1 top {0.0 0.0 1.0}
+mol clipplane status 0 1 top {0}
+mol clipplane center 1 1 top {0.0 0.0 0.0}
+mol clipplane color  1 1 top {0.5 0.5 0.5 }
+mol clipplane normal 1 1 top {0.0 0.0 1.0}
+mol clipplane status 1 1 top {0}
+mol clipplane center 2 1 top {0.0 0.0 0.0}
+mol clipplane color  2 1 top {0.5 0.5 0.5 }
+mol clipplane normal 2 1 top {0.0 0.0 1.0}
+mol clipplane status 2 1 top {0}
+mol clipplane center 3 1 top {0.0 0.0 0.0}
+mol clipplane color  3 1 top {0.5 0.5 0.5 }
+mol clipplane normal 3 1 top {0.0 0.0 1.0}
+mol clipplane status 3 1 top {0}
+mol clipplane center 4 1 top {0.0 0.0 0.0}
+mol clipplane color  4 1 top {0.5 0.5 0.5 }
+mol clipplane normal 4 1 top {0.0 0.0 1.0}
+mol clipplane status 4 1 top {0}
+mol clipplane center 5 1 top {0.0 0.0 0.0}
+mol clipplane color  5 1 top {0.5 0.5 0.5 }
+mol clipplane normal 5 1 top {0.0 0.0 1.0}
+mol clipplane status 5 1 top {0}
+mol rename top Test_frozen_00
+set viewpoints([molinfo top]) {{{1.000000 0.000000 0.000000 -1.485553} {0.000000 1.000000 0.000000 -2.166452} {0.000000 0.000000 1.000000 -5.591770} {0.000000 0.000000 0.000000 1.000000}} {{0.882606 0.469283 0.027947 0.000000} {-0.465827 0.864997 0.186501 0.000000} {0.063348 -0.177625 0.982055 0.000000} {0.000000 0.000000 0.000000 1.000000}} {{0.121690 0.000000 0.000000 0.000000} {0.000000 0.121690 0.000000 0.000000} {0.000000 0.000000 0.121690 0.000000} {0.000000 0.000000 0.000000 1.000000}} {{1.000000 0.000000 0.000000 0.000000} {0.000000 1.000000 0.000000 0.000000} {0.000000 0.000000 1.000000 0.000000} {0.000000 0.000000 0.000000 1.000000}}}
+lappend viewplist [molinfo top]
+set topmol [molinfo top]
+# done with molecule 0
+foreach v $viewplist {
+  molinfo $v set {center_matrix rotate_matrix scale_matrix global_matrix} $viewpoints($v)
+}
+foreach v $fixedlist {
+  molinfo $v set fixed 1
+}
+unset viewplist
+unset fixedlist
+mol top $topmol
+unset topmol
+proc vmdrestoremycolors {} {
+color scale colors RWB {1.0 0.0 0.0} {1.0 1.0 1.0} {0.0 0.0 1.0}
+color scale colors BWR {0.0 0.0 1.0} {1.0 1.0 1.0} {1.0 0.0 0.0}
+color scale colors RGryB {1.0 0.0 0.0} {0.5 0.5 0.5} {0.0 0.0 1.0}
+color scale colors BGryR {0.0 0.0 1.0} {0.5 0.5 0.5} {1.0 0.0 0.0}
+color scale colors RGB {1.0 0.0 0.0} {0.0 1.0 0.0} {0.0 0.0 1.0}
+color scale colors BGR {0.0 0.0 1.0} {0.0 1.0 0.0} {1.0 0.0 0.0}
+color scale colors RWG {1.0 0.0 0.0} {1.0 1.0 1.0} {0.0 1.0 0.0}
+color scale colors GWR {0.0 1.0 0.0} {1.0 1.0 1.0} {1.0 0.0 0.0}
+color scale colors GWB {0.0 1.0 0.0} {1.0 1.0 1.0} {0.0 0.0 1.0}
+color scale colors BWG {0.0 0.0 1.0} {1.0 1.0 1.0} {0.0 1.0 0.0}
+color scale colors BlkW {0.0 0.0 0.0} {0.5 0.5 0.5} {1.0 1.0 1.0}
+color scale colors WBlk {1.0 1.0 1.0} {0.5 0.5 0.5} {0.0 0.0 0.0}
+  color scale method RWB
+  set colorcmds {
+    {color Display {FPS} white}
+    {color Element {X} cyan}
+    {color Element {Ac} ochre}
+    {color Element {Ag} ochre}
+    {color Element {Al} ochre}
+    {color Element {Am} ochre}
+    {color Element {Ar} ochre}
+    {color Element {As} ochre}
+    {color Element {At} ochre}
+    {color Element {Au} ochre}
+    {color Element {B} ochre}
+    {color Element {Ba} ochre}
+    {color Element {Be} ochre}
+    {color Element {Bh} ochre}
+    {color Element {Bi} ochre}
+    {color Element {Bk} ochre}
+    {color Element {Br} ochre}
+    {color Element {Ca} ochre}
+    {color Element {Cd} ochre}
+    {color Element {Ce} ochre}
+    {color Element {Cf} ochre}
+    {color Element {Cl} ochre}
+    {color Element {Cm} ochre}
+    {color Element {Co} ochre}
+    {color Element {Cr} ochre}
+    {color Element {Cs} ochre}
+    {color Element {Cu} ochre}
+    {color Element {Db} ochre}
+    {color Element {Ds} ochre}
+    {color Element {Dy} ochre}
+    {color Element {Er} ochre}
+    {color Element {Es} ochre}
+    {color Element {Eu} ochre}
+    {color Element {F} ochre}
+    {color Element {Fe} ochre}
+    {color Element {Fm} ochre}
+    {color Element {Fr} ochre}
+    {color Element {Ga} ochre}
+    {color Element {Gd} ochre}
+    {color Element {Ge} ochre}
+    {color Element {He} ochre}
+    {color Element {Hf} ochre}
+    {color Element {Hg} ochre}
+    {color Element {Ho} ochre}
+    {color Element {Hs} ochre}
+    {color Element {I} ochre}
+    {color Element {In} ochre}
+    {color Element {Ir} ochre}
+    {color Element {K} ochre}
+    {color Element {Kr} ochre}
+    {color Element {La} ochre}
+    {color Element {Li} ochre}
+    {color Element {Lr} ochre}
+    {color Element {Lu} ochre}
+    {color Element {Md} ochre}
+    {color Element {Mg} ochre}
+    {color Element {Mn} ochre}
+    {color Element {Mo} ochre}
+    {color Element {Mt} ochre}
+    {color Element {Na} ochre}
+    {color Element {Nb} ochre}
+    {color Element {Nd} ochre}
+    {color Element {Ne} ochre}
+    {color Element {Ni} ochre}
+    {color Element {No} ochre}
+    {color Element {Np} ochre}
+    {color Element {Os} ochre}
+    {color Element {Pa} ochre}
+    {color Element {Pb} ochre}
+    {color Element {Pd} ochre}
+    {color Element {Pm} ochre}
+    {color Element {Po} ochre}
+    {color Element {Pr} ochre}
+    {color Element {Pt} ochre}
+    {color Element {Pu} ochre}
+    {color Element {Ra} ochre}
+    {color Element {Rb} ochre}
+    {color Element {Re} ochre}
+    {color Element {Rf} ochre}
+    {color Element {Rg} ochre}
+    {color Element {Rh} ochre}
+    {color Element {Rn} ochre}
+    {color Element {Ru} ochre}
+    {color Element {Sb} ochre}
+    {color Element {Sc} ochre}
+    {color Element {Se} ochre}
+    {color Element {Sg} ochre}
+    {color Element {Si} ochre}
+    {color Element {Sm} ochre}
+    {color Element {Sn} ochre}
+    {color Element {Sr} ochre}
+    {color Element {Ta} ochre}
+    {color Element {Tb} ochre}
+    {color Element {Tc} ochre}
+    {color Element {Te} ochre}
+    {color Element {Th} ochre}
+    {color Element {Ti} ochre}
+    {color Element {Tl} ochre}
+    {color Element {Tm} ochre}
+    {color Element {U} ochre}
+    {color Element {V} ochre}
+    {color Element {W} ochre}
+    {color Element {Xe} ochre}
+    {color Element {Y} ochre}
+    {color Element {Yb} ochre}
+    {color Element {Zr} ochre}
+    {color Resname {} silver}
+    {color Chain {X} blue}
+    {color Segname {} blue}
+    {color Conformation {all} blue}
+    {color Molecule {0} blue}
+    {color Surface {Grasp} gray}
+    {color Labels {Springs} orange}
+  }
+  foreach colcmd $colorcmds {
+    set val [catch {eval $colcmd}]
+  }
+  color change rgb 0 0.0 0.0 1.0
+  color change rgb 2 0.34999999404 0.34999999404 0.34999999404
+  color change rgb 3 1.0 0.5 0.0
+  color change rgb 4 1.0 1.0 0.0
+  color change rgb 5 0.5 0.5 0.20000000298
+  color change rgb 6 0.600000023842 0.600000023842 0.600000023842
+  color change rgb 7 0.0 1.0 0.0
+  color change rgb 9 1.0 0.600000023842 0.600000023842
+  color change rgb 11 0.649999976158 0.0 0.649999976158
+  color change rgb 12 0.5 0.899999976158 0.40000000596
+  color change rgb 13 0.899999976158 0.40000000596 0.699999988079
+  color change rgb 14 0.5 0.300000011921 0.0
+  color change rgb 15 0.5 0.5 0.75
+  color change rgb 17 0.879999995232 0.97000002861 0.019999999553
+  color change rgb 18 0.550000011921 0.899999976158 0.019999999553
+  color change rgb 19 0.0 0.899999976158 0.0399999991059
+  color change rgb 20 0.0 0.899999976158 0.5
+  color change rgb 21 0.0 0.879999995232 1.0
+  color change rgb 22 0.0 0.759999990463 1.0
+  color change rgb 23 0.019999999553 0.379999995232 0.670000016689
+  color change rgb 24 0.00999999977648 0.0399999991059 0.930000007153
+  color change rgb 25 0.270000010729 0.0 0.980000019073
+  color change rgb 26 0.449999988079 0.0 0.899999976158
+  color change rgb 27 0.899999976158 0.0 0.899999976158
+  color change rgb 28 1.0 0.0 0.660000026226
+  color change rgb 29 0.980000019073 0.0 0.230000004172
+  color change rgb 30 0.810000002384 0.0 0.0
+  color change rgb 31 0.889999985695 0.34999999404 0.0
+  color change rgb 32 0.959999978542 0.72000002861 0.0
+}
+vmdrestoremycolors
+label textsize 1.0

Property changes on: examples/Test_NEB_example.vmd
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Serial/Test_Vasp_Serial.path
===================================================================
--- examples/Vasp/Serial/Test_Vasp_Serial.path	(revision 0)
+++ examples/Vasp/Serial/Test_Vasp_Serial.path	(revision 1)
@@ -0,0 +1,83 @@
+ &path
+  nat=23,  ! Number of atoms
+  ngeomi=2,! Number of initial geometries
+  ngeomf=10, !Number of geometries along the path
+  OptReac=F, ! Do you want to optimize the reactants ?
+  OptProd=F, ! Don't optimize the products
+  EProd= -139.258087, ! As we don't optimize products, we can give their energy
+  EReac= -139.578314,! Energy of the reactant, because it is not calculated
+  PathOnly=F,  ! do NOT stop after generating the first path
+  Fcart=T,  ! Some atoms  described in cartesian coordinates. See CartList.
+  AtTypes="Pt" "C" "O" ,! Type of the atoms
+  coord='mixed', !  ! we use mixed coordinates
+  maxcyc=30,! Launch 30 iterations
+  IReparam=1,! re-distribution of points along the path every 1 iteration
+  SMax=0.1, ! Max displacement will be 0.1 a.u.
+  ISpline=5, ! Start using spline interpolation at iteration  
+  prog='VaSP',! we use the VASP program to get energy and gradients
+  RunMode='Serial',  ! we compute E and Forces  sequentially
+  progexe='./RunVasp' ! we use the scrip RunVasp to actually launch VASP
+  /
+ &CartList List=1 -20 /
+Pt(111) 5c met. 6 c vides + (2x2) + CO+O
+   1.00000000000000     
+     5.6241399999999997    0.0000000000000000    0.0000000000000000
+    -2.8120699999999998    4.8706481144402121    0.0000000000000000
+     0.0000000000000000    0.0000000000000000   22.9993025279694656
+  20   1   2
+Selective dynamics
+Direct
+  0.0000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.0000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.1666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.1666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.3312494678895713  0.1656247339447821  0.2000650221512907   T   T   T
+  0.8343752660552178  0.1656247339447821  0.2000650221512907   T   T   T
+  0.8343752660552178  0.6687505321104290  0.2000650221512907   T   T   T
+  0.3333333333333357  0.6666666666666643  0.1989322786478102   T   T   T
+  0.0000000000000000  0.0000000000000000  0.3049797611957177   T   T   T
+  0.5012215770853086  0.0024431541706242  0.2988640527255405   T   T   T
+  0.9975568458293755  0.4987784229146913  0.2988640527255405   T   T   T
+  0.5012215770853086  0.4987784229146913  0.2988640527255405   T   T   T
+  0.1636261803593769  0.3272523607187537  0.4016023552577619   T   T   T
+  0.6666666666666643  0.3333333333333357  0.4039432223561479   T   T   T
+  0.1636261803593769  0.8363738196406233  0.4016023552577619   T   T   T
+  0.6727476392812467  0.8363738196406233  0.4016023552577619   T   T   T
+  0.6666666666666643  0.3333333333333357  0.4851233567089529   T   T   T
+  0.6666666666666643  0.3333333333333357  0.5353693274205206   T   T   T
+  0.3333333333333286  0.6666666666666714  0.4552485250372680   T   T   T
+Pt(111) 5c met. 6 c vides + (2x2) + CO+O
+   1.00000000000000     
+     5.6241399999999997    0.0000000000000000    0.0000000000000000
+    -2.8120699999999998    4.8706481144402121    0.0000000000000000
+     0.0000000000000000    0.0000000000000000   22.9993025279694656
+  20   1   2
+Selective dynamics
+Direct
+  0.0000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.0000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.1666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.1666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.3333353975168575  0.1666438715374017  0.1986002597140218   T   T   T
+  0.8333403210548475  0.1666509691792946  0.1985951454848725   T   T   T
+  0.8333409037841187  0.6666472796414442  0.1985964980703305   T   T   T
+  0.3333238335130192  0.6666392268365445  0.1985886239182766   T   T   T
+  0.9999617034511911  0.9998888282191930  0.2974795871350692   T   T   T
+  0.4999473247002513  0.9998693862713626  0.2974682028687743   T   T   T
+  0.9999863206811004  0.4999301882185511  0.2974642227650535   T   T   T
+  0.4999658150793101  0.4999168754294835  0.2974680428614041   T   T   T
+  0.1665405010219072  0.3330823961827170  0.3974964450182662   T   T   T
+  0.6665975225309845  0.3330642960797304  0.3975177029878819   T   T   T
+  0.1665996677662783  0.8330538544691352  0.3975167863229472   T   T   T
+  0.6665572450291234  0.8331019445865336  0.3974969275775631   T   T   T
+  0.5929747344527317  0.4140358994090573  0.5812350180389987   T   T   T
+  0.6943114107032239  0.2794239342435746  0.5915072062646071   T   T   T
+  0.4917024505660316  0.5487034897377517  0.5709635073040794   T   T   T
Index: examples/Vasp/Serial/run_Path_PBS
===================================================================
--- examples/Vasp/Serial/run_Path_PBS	(revision 0)
+++ examples/Vasp/Serial/run_Path_PBS	(revision 1)
@@ -0,0 +1,92 @@
+#PBS -S /bin/sh
+#PBS -N PathSer0.02
+#PBS -l nodes=1:Other
+#PBS -q OneL
+#PBS -o PathSer0.02.batch-log
+#PBS -j oe
+#PBS -M Paul.Fleurat-Lessard@ens-lyon.fr
+#PBS -m aeb
+
+
+#!/bin/bash
+
+home_dir=$PBS_O_WORKDIR
+work_dir=$PBS_O_WORKDIR
+Job=Test_Vasp_Serial
+numb=run1
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Carte/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASP=/home/dloffred/VASP_SOURCES/Intel_P4/VASP46_CINEB
+#
+# Whre is mpirun ?
+#
+export MPIRUN=/usr/local/mpich-intel-090404/bin/mpirun
+#
+# Some libraries... 
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+
+
+
+#################################
+#
+# We create the machinefile
+#
+# even if it is not really needed for SERIAL calculations
+#
+#################################
+nodes=`cat $PBS_NODEFILE`
+nnodes=`wc $PBS_NODEFILE | awk '{print $1}'` 
+
+confile=$home_dir/ip.$PBS_JOBID.conf
+touch $confile
+j="init"
+for i in $nodes
+do
+if [ $j != $i ]
+then echo "$i:1" >> $confile
+else
+	echo "vous calculez sur des noeuds smp"
+fi
+j=$i
+done
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+cd $work_dir
+echo "$MPIRUN -nolocal -machinefile $confile -np $nnodes $VASP > out_$numb" >  ./RunVasp
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -s ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+ 

Property changes on: examples/Vasp/Serial/run_Path_PBS
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Serial/run_Path_SGE_scratch
===================================================================
--- examples/Vasp/Serial/run_Path_SGE_scratch	(revision 0)
+++ examples/Vasp/Serial/run_Path_SGE_scratch	(revision 1)
@@ -0,0 +1,243 @@
+#!/bin/bash
+#$ -S /bin/bash
+#$ -N Vasp_S_U1
+#$ -cwd 
+#$ -V
+#$ -o Vasp_para.batch-log
+#$ -j y
+#$ -q dl165adf
+#$ -pe mpi8 8
+
+
+echo "============================================================================================="
+echo "=                                                                                           ="
+echo "=                        Path with Serial Vasp  with unique machine                         ="
+echo "=                                                                                           ="
+echo "=                           `date`                                          ="
+echo "=                                                                                           ="
+echo "============================================================================================="
+
+HOMEDIR=$SGE_O_WORKDIR
+SCRATCHDIR=`echo $HOMEDIR | awk -F "/" '{$2="scratch"; for(j=2;j<=NF;j++) {printf("/%s",$j);} print ""} ' `
+
+#Iter is the index for storing files as POSCAR_runXX
+Iter=1
+echo $Iter > Path.iter
+
+
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the Path Input file
+#
+Job=Test_Vasp_Serial
+#
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASPDIR=~/Programs/VASP
+export VASPEXEC=VASP4635_R410_STD
+#
+# Whre is mpirun ?
+#
+export MPIDIR=/softs/openmpi-1.4.1-intel/
+export MPIRUN=$MPIDIR/bin/mpirun
+#
+#
+# Machine where the files are
+#
+RUNNINGMACHINE=r410comp1-pub
+
+# Some libraries... 
+#
+#For intel 11.1.069
+source /softs/intel/v11.1.069/bin/intel64/ifortvars_intel64.sh
+export LD_LIBRARY_PATH=/softs/fftw/2.1.5/ps-gb/lib:$LD_LIBRARY_PATH:/usr/lib
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/softs/intel/v11.1.069/mkl/lib/em64t/:$MPIDIR/lib/:/softs/intel/v11.1.069/lib/intel64
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+#
+# Machinefile
+#
+HOSTFILE=$TMPDIR/machines
+cp $HOSTFILE $HOMEDIR/local_machines
+
+
+#################################
+#
+# We go to the Work Directory
+cd $HOMEDIR
+
+
+#################################
+#
+#
+# We check that the INCAR file is not a NEB
+#
+NbIm=`grep -i IMAGES INCAR  `
+if [ "$NbIm" != "" ]; then
+  mv INCAR INCAR.ori
+  grep -v IMAGES INCAR.ori > INCAR
+
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+ echo "IMAGES was in INCAR "
+ echo "I copied INCAR to INCAR.ori and deleted this line"
+ echo "Check it !!!"
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+fi
+
+##############################
+#
+# As we work in the scratchdir
+#
+# We will create directories there
+Master="`head -1 $HOSTFILE`"
+echo $Master > $HOMEDIR/Master
+
+FUniq=`which uniq`
+Uniq=${FUniq:-"sort -u"}
+$Uniq $HOSTFILE > $HOMEDIR/machines_unique
+grep -v $Master $HOMEDIR/machines_unique > $HOMEDIR/machines_other
+
+
+#### We create the directories and copy files to other machines
+for server in `cat $HOMEDIR/machines_other`
+do
+  ssh $server mkdir -p ${SCRATCHDIR}
+#### we copy the Vasp executable to all nodes
+  scp ${RUNNINGMACHINE}:${VASPDIR}/${VASPEXEC} $server:${SCRATCHDIR}/${VASPEXEC}
+
+#### we copy the files to all nodes
+  for FILE in INCAR KPOINTS POTCAR 
+  do
+    scp $RUNNINGMACHINE:$HOMEDIR/$FILE $server:${SCRATCHDIR}/.
+  done
+done
+
+#### We create the directories and copy files on Master
+mkdir -p ${SCRATCHDIR}
+
+#### we copy the Vasp executable to Scratch
+cp ${VASPDIR}/${VASPEXEC} ${SCRATCHDIR}/${VASPEXEC}
+
+#### we copy the files to SCRATCHDIR
+for FILE in INCAR KPOINTS POTCAR
+do
+  cp $HOMEDIR/$FILE ${SCRATCHDIR}/.
+done
+
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+NOther=`wc -l  $HOMEDIR/machines_other | awk '{print $1}'`
+if [ $NOther -ge 1 ]; then
+cat << EOF > ./RunVasp
+#!/bin/bash
+
+#set -x
+HOMEDIR=$HOMEDIR
+SCRATCHDIR=$SCRATCHDIR
+
+
+Iter=\`cat \$HOMEDIR/Path.iter\`
+RUNNEW=run\${Iter}
+
+#### We copy the POSCAR file to other machines
+for server in \`cat \$HOMEDIR/machines_other\`
+do
+  scp \$HOMEDIR/POSCAR \$server:\${SCRATCHDIR}/.
+done
+
+#### We copy files on Master
+cp \$HOMEDIR/POSCAR \${SCRATCHDIR}/.
+
+
+cd \$SCRATCHDIR
+
+$MPIRUN -v -prefix $MPIDIR  -mca btl openib,self -np $NSLOTS \${SCRATCHDIR}/${VASPEXEC} > \${HOMEDIR}/out_\${RUNNEW}
+
+for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+do
+ cp \${SCRATCHDIR}/\$FILE \$HOMEDIR/\${FILE}_\${RUNNEW}
+ cp \$HOMEDIR/\${FILE}_\${RUNNEW}  \$HOMEDIR/\${FILE}
+done
+
+cp \${SCRATCHDIR}/out  \$HOMEDIR/out_\${RUNNEW}
+
+let Iter=Iter+1
+echo \$Iter > \$HOMEDIR/Path.iter
+
+cd \$HOMEDIR
+
+EOF
+else
+cat << EOF > ./RunVasp
+#!/bin/bash
+
+#set -x
+HOMEDIR=$HOMEDIR
+SCRATCHDIR=$SCRATCHDIR
+
+Iter=\`cat \$HOMEDIR/Path.iter\`
+RUNNEW=run\${Iter}
+
+#### We copy the POSCAR file
+cp \$HOMEDIR/POSCAR \${SCRATCHDIR}/.
+
+cd \$SCRATCHDIR
+
+$MPIRUN -v -prefix $MPIDIR  -mca btl openib,self -np $NSLOTS \${SCRATCHDIR}/${VASPEXEC} > \${HOMEDIR}/out_\${RUNNEW}
+
+
+for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+do
+ cp \${SCRATCHDIR}/\$FILE \$HOMEDIR/\${FILE}_\${RUNNEW}
+ cp \$HOMEDIR/\${FILE}_\${RUNNEW}  \$HOMEDIR/\${FILE}
+done
+
+cp \${SCRATCHDIR}/out  \$HOMEDIR/out_\${RUNNEW}
+
+let Iter=Iter+1
+echo \$Iter > \$HOMEDIR/Path.iter
+
+cd \$HOMEDIR
+
+EOF
+fi
+
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+ 
+#######################""
+#
+# We delete the SCRATCHDIRs
+for server in \`cat \$HOMEDIR/machines_other\`
+do
+  ssh $server rm -rf $SCRATCHDIR
+done
+
+rm -rf $SCRATCHDIR

Property changes on: examples/Vasp/Serial/run_Path_SGE_scratch
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Serial/run_Path_SGE_home
===================================================================
--- examples/Vasp/Serial/run_Path_SGE_home	(revision 0)
+++ examples/Vasp/Serial/run_Path_SGE_home	(revision 1)
@@ -0,0 +1,107 @@
+#!/bin/bash
+#$ -S /bin/bash
+#$ -N Vasp_Serial
+#$ -cwd 
+#$ -V
+#$ -o Vasp_para.batch-log
+#$ -j y
+#$ -q dl165adf
+#$ -pe mpi8 8
+
+
+HOMEDIR=$SGE_O_WORKDIR
+# No need for SCRATCHDIR
+
+RUNNEW=run1
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the Path Input file
+#
+Job=Test_Vasp_Serial
+#
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASPDIR=~/Programs/VASP
+export VASPEXEC=VASP4635_R410_STD
+#
+# Whre is mpirun ?
+#
+export MPIDIR=/softs/openmpi-1.4.1-intel/
+export MPIRUN=$MPIDIR/bin/mpirun
+#
+#
+# Machine where the files are
+#
+RUNNINGMACHINE=r410comp1-pub
+
+# Some libraries... 
+#
+#For intel 11.1.069
+source /softs/intel/v11.1.069/bin/intel64/ifortvars_intel64.sh
+export LD_LIBRARY_PATH=/softs/fftw/2.1.5/ps-gb/lib:$LD_LIBRARY_PATH:/usr/lib
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/softs/intel/v11.1.069/mkl/lib/em64t/:$MPIDIR/lib/:/softs/intel/v11.1.069/lib/intel64
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+#
+# Machinefile
+#
+HOSTFILE=$TMPDIR/machines
+
+#################################
+#
+# We go to the Work Directory
+cd $HOMEDIR
+
+
+#################################
+#
+#
+# We check that the INCAR file is not a NEB
+#
+NbIm=`grep -i IMAGES INCAR  `
+if [ "$NbIm" != "" ]; then
+  mv INCAR INCAR.ori
+  grep -v IMAGES INCAR.ori > INCAR
+
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+ echo "IMAGES was in INCAR "
+ echo "I copied INCAR to INCAR.ori and deleted this line"
+ echo "Check it !!!"
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+fi
+
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+cat << EOF > ./RunVasp
+$MPIRUN -v -prefix $MPIDIR -mca pls_rsh_agent "ssh" -mca btl openib,self -np $NSLOTS ${VASPDIR}/${VASPEXEC} > ${HOMEDIR}/out_${RUNNEW}
+EOF
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+ 

Property changes on: examples/Vasp/Serial/run_Path_SGE_home
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Serial/KPOINTS
===================================================================
--- examples/Vasp/Serial/KPOINTS	(revision 0)
+++ examples/Vasp/Serial/KPOINTS	(revision 1)
@@ -0,0 +1,5 @@
+grille de points k utilisee
+0
+Monkhorst
+  3  3  1
+  0  0  0
Index: examples/Vasp/Serial/POTCAR
===================================================================
--- examples/Vasp/Serial/POTCAR	(revision 0)
+++ examples/Vasp/Serial/POTCAR	(revision 1)
@@ -0,0 +1,5228 @@
+ PAW_PBE Pt 05Jan2001
+ 10.0000000000000000
+ parameters from PSCTR are:
+   VRHFIN =Pt: s1d9
+   LEXCH  = PE
+   EATOM  =   729.1171 eV,   53.5886 Ry
+
+   TITEL  = PAW_PBE Pt 05Jan2001
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        1    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =    2.330    partial core radius
+   POMASS =  195.080; ZVAL   =   10.000    mass and valenz
+   RCORE  =    2.500    outmost cutoff radius
+   RWIGS  =    2.750; RWIGS  =    1.455    wigner-seitz radius (au A)
+   ENMAX  =  230.283; ENMIN  =  172.712 eV
+   RCLOC  =    1.896    cutoff for local pot
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  358.966
+   DEXC   =    -.039
+   RMAX   =    3.038    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    2.590    radius for radial grids
+   QCUT   =   -4.114; QGAM   =    8.228    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     2   .000     23  2.500
+     2   .000     23  2.500
+     0   .000     23  2.500
+     0   .000     23  2.500
+     1  -.200     23  2.500
+     1  1.500     23  2.500
+     3   .000      7   .000
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  199.      196.      194.      190.      188.      184.      180.      178.
+  173.      168.      166.      161.      155.      150.      144.      138.
+  133.      127.      121.      112.      107.      101.      92.5      87.0
+  81.6      73.8      66.3      61.6      54.8      48.4      42.5      37.1
+  32.1      27.6      23.5      19.9      15.7      13.0      9.97      8.06
+  5.97      4.33      3.06      2.11      1.41      .913      .573      .307
+  .183      .101      .659E-01  .561E-01  .534E-01  .532E-01  .504E-01  .450E-01
+  .376E-01  .279E-01  .191E-01  .124E-01  .819E-02  .607E-02  .532E-02  .519E-02
+  .511E-02  .469E-02  .391E-02  .296E-02  .199E-02  .141E-02  .110E-02  .102E-02
+  .101E-02  .948E-03  .781E-03  .594E-03  .418E-03  .321E-03  .292E-03  .288E-03
+  .263E-03  .211E-03  .155E-03  .116E-03  .105E-03  .103E-03  .922E-04  .706E-04
+  .522E-04  .450E-04  .438E-04  .398E-04  .302E-04  .233E-04  .212E-04  .204E-04
+  .167E-04  .128E-04  .112E-04  .108E-04
+END of PSCTR-controll parameters
+ local part
+ 75.5890395431569289
+   .14549528E+03   .14546936E+03   .14539157E+03   .14526204E+03   .14508094E+03
+   .14484850E+03   .14456503E+03   .14423087E+03   .14384644E+03   .14341220E+03
+   .14292868E+03   .14239643E+03   .14181606E+03   .14118822E+03   .14051359E+03
+   .13979291E+03   .13902696E+03   .13821655E+03   .13736254E+03   .13646583E+03
+   .13552738E+03   .13454817E+03   .13352924E+03   .13247168E+03   .13137660E+03
+   .13024517E+03   .12907858E+03   .12787807E+03   .12664491E+03   .12538039E+03
+   .12408584E+03   .12276259E+03   .12141201E+03   .12003550E+03   .11863444E+03
+   .11721025E+03   .11576435E+03   .11429819E+03   .11281319E+03   .11131082E+03
+   .10979253E+03   .10825976E+03   .10671398E+03   .10515663E+03   .10358917E+03
+   .10201304E+03   .10042966E+03   .98840448E+02   .97246816E+02   .95650144E+02
+   .94051797E+02   .92453121E+02   .90855435E+02   .89260033E+02   .87668184E+02
+   .86081128E+02   .84500071E+02   .82926193E+02   .81360637E+02   .79804514E+02
+   .78258898E+02   .76724826E+02   .75203297E+02   .73695271E+02   .72201667E+02
+   .70723363E+02   .69261194E+02   .67815953E+02   .66388388E+02   .64979206E+02
+   .63589068E+02   .62218591E+02   .60868349E+02   .59538871E+02   .58230644E+02
+   .56944111E+02   .55679672E+02   .54437683E+02   .53218462E+02   .52022280E+02
+   .50849372E+02   .49699929E+02   .48574104E+02   .47472012E+02   .46393728E+02
+   .45339293E+02   .44308709E+02   .43301946E+02   .42318940E+02   .41359594E+02
+   .40423783E+02   .39511351E+02   .38622113E+02   .37755860E+02   .36912355E+02
+   .36091339E+02   .35292531E+02   .34515628E+02   .33760306E+02   .33026224E+02
+   .32313023E+02   .31620330E+02   .30947756E+02   .30294899E+02   .29661347E+02
+   .29046676E+02   .28450455E+02   .27872244E+02   .27311598E+02   .26768066E+02
+   .26241195E+02   .25730527E+02   .25235603E+02   .24755966E+02   .24291156E+02
+   .23840716E+02   .23404190E+02   .22981127E+02   .22571078E+02   .22173600E+02
+   .21788254E+02   .21414610E+02   .21052241E+02   .20700730E+02   .20359669E+02
+   .20028655E+02   .19707298E+02   .19395215E+02   .19092034E+02   .18797392E+02
+   .18510937E+02   .18232328E+02   .17961234E+02   .17697334E+02   .17440321E+02
+   .17189895E+02   .16945770E+02   .16707671E+02   .16475331E+02   .16248498E+02
+   .16026928E+02   .15810391E+02   .15598665E+02   .15391540E+02   .15188816E+02
+   .14990304E+02   .14795823E+02   .14605205E+02   .14418288E+02   .14234922E+02
+   .14054963E+02   .13878279E+02   .13704742E+02   .13534236E+02   .13366650E+02
+   .13201882E+02   .13039836E+02   .12880423E+02   .12723561E+02   .12569172E+02
+   .12417188E+02   .12267541E+02   .12120174E+02   .11975029E+02   .11832056E+02
+   .11691209E+02   .11552444E+02   .11415722E+02   .11281007E+02   .11148265E+02
+   .11017465E+02   .10888579E+02   .10761582E+02   .10636448E+02   .10513155E+02
+   .10391684E+02   .10272013E+02   .10154126E+02   .10038005E+02   .99236328E+01
+   .98109941E+01   .97000734E+01   .95908554E+01   .94833251E+01   .93774675E+01
+   .92732675E+01   .91707098E+01   .90697790E+01   .89704594E+01   .88727347E+01
+   .87765885E+01   .86820040E+01   .85889638E+01   .84974501E+01   .84074446E+01
+   .83189284E+01   .82318822E+01   .81462859E+01   .80621191E+01   .79793607E+01
+   .78979889E+01   .78179815E+01   .77393159E+01   .76619687E+01   .75859164E+01
+   .75111349E+01   .74375999E+01   .73652869E+01   .72941709E+01   .72242270E+01
+   .71554301E+01   .70877549E+01   .70211762E+01   .69556686E+01   .68912069E+01
+   .68277659E+01   .67653203E+01   .67038453E+01   .66433160E+01   .65837077E+01
+   .65249962E+01   .64671573E+01   .64101676E+01   .63540039E+01   .62986433E+01
+   .62440637E+01   .61902433E+01   .61371611E+01   .60847964E+01   .60331292E+01
+   .59821402E+01   .59318105E+01   .58821218E+01   .58330566E+01   .57845978E+01
+   .57367291E+01   .56894347E+01   .56426993E+01   .55965087E+01   .55508488E+01
+   .55057067E+01   .54610697E+01   .54169261E+01   .53732646E+01   .53300746E+01
+   .52873462E+01   .52450700E+01   .52032371E+01   .51618391E+01   .51208684E+01
+   .50803175E+01   .50401795E+01   .50004481E+01   .49611171E+01   .49221812E+01
+   .48836349E+01   .48454737E+01   .48076930E+01   .47702889E+01   .47332576E+01
+   .46965957E+01   .46603001E+01   .46243681E+01   .45887969E+01   .45535842E+01
+   .45187277E+01   .44842252E+01   .44500750E+01   .44162750E+01   .43828235E+01
+   .43497189E+01   .43169595E+01   .42845439E+01   .42524705E+01   .42207381E+01
+   .41893451E+01   .41582903E+01   .41275724E+01   .40971900E+01   .40671417E+01
+   .40374261E+01   .40080418E+01   .39789871E+01   .39502605E+01   .39218602E+01
+   .38937842E+01   .38660308E+01   .38385977E+01   .38114828E+01   .37846837E+01
+   .37581982E+01   .37320237E+01   .37061576E+01   .36805971E+01   .36553394E+01
+   .36303815E+01   .36057203E+01   .35813525E+01   .35572746E+01   .35334831E+01
+   .35099742E+01   .34867440E+01   .34637885E+01   .34411034E+01   .34186844E+01
+   .33965271E+01   .33746269E+01   .33529792E+01   .33315791E+01   .33104218E+01
+   .32895024E+01   .32688159E+01   .32483572E+01   .32281211E+01   .32081025E+01
+   .31882961E+01   .31686964E+01   .31492982E+01   .31300960E+01   .31110845E+01
+   .30922582E+01   .30736118E+01   .30551400E+01   .30368374E+01   .30186990E+01
+   .30007196E+01   .29828943E+01   .29652183E+01   .29476868E+01   .29302953E+01
+   .29130394E+01   .28959148E+01   .28789175E+01   .28620434E+01   .28452889E+01
+   .28286504E+01   .28121246E+01   .27957084E+01   .27793989E+01   .27631937E+01
+   .27470902E+01   .27310865E+01   .27151808E+01   .26993714E+01   .26836573E+01
+   .26680372E+01   .26525106E+01   .26370769E+01   .26217359E+01   .26064874E+01
+   .25913318E+01   .25762694E+01   .25613009E+01   .25464270E+01   .25316488E+01
+   .25169674E+01   .25023843E+01   .24879009E+01   .24735189E+01   .24592402E+01
+   .24450665E+01   .24310000E+01   .24170426E+01   .24031964E+01   .23894635E+01
+   .23758460E+01   .23623459E+01   .23489652E+01   .23357058E+01   .23225696E+01
+   .23095582E+01   .22966733E+01   .22839163E+01   .22712885E+01   .22587911E+01
+   .22464252E+01   .22341914E+01   .22220904E+01   .22101226E+01   .21982882E+01
+   .21865870E+01   .21750186E+01   .21635825E+01   .21522778E+01   .21411034E+01
+   .21300578E+01   .21191394E+01   .21083463E+01   .20976763E+01   .20871272E+01
+   .20766962E+01   .20663806E+01   .20561775E+01   .20460836E+01   .20360957E+01
+   .20262102E+01   .20164236E+01   .20067320E+01   .19971317E+01   .19876187E+01
+   .19781889E+01   .19688384E+01   .19595629E+01   .19503585E+01   .19412210E+01
+   .19321465E+01   .19231311E+01   .19141709E+01   .19052622E+01   .18964015E+01
+   .18875853E+01   .18788106E+01   .18700742E+01   .18613732E+01   .18527052E+01
+   .18440676E+01   .18354584E+01   .18268755E+01   .18183174E+01   .18097827E+01
+   .18012701E+01   .17927789E+01   .17843085E+01   .17758586E+01   .17674292E+01
+   .17590206E+01   .17506333E+01   .17422681E+01   .17339260E+01   .17256084E+01
+   .17173167E+01   .17090526E+01   .17008180E+01   .16926148E+01   .16844453E+01
+   .16763117E+01   .16682165E+01   .16601622E+01   .16521512E+01   .16441863E+01
+   .16362702E+01   .16284054E+01   .16205946E+01   .16128405E+01   .16051457E+01
+   .15975126E+01   .15899437E+01   .15824411E+01   .15750071E+01   .15676434E+01
+   .15603520E+01   .15531344E+01   .15459919E+01   .15389258E+01   .15319369E+01
+   .15250260E+01   .15181934E+01   .15114396E+01   .15047645E+01   .14981678E+01
+   .14916491E+01   .14852076E+01   .14788425E+01   .14725525E+01   .14663361E+01
+   .14601918E+01   .14541177E+01   .14481116E+01   .14421715E+01   .14362947E+01
+   .14304789E+01   .14247212E+01   .14190189E+01   .14133691E+01   .14077688E+01
+   .14022150E+01   .13967047E+01   .13912347E+01   .13858022E+01   .13804039E+01
+   .13750370E+01   .13696984E+01   .13643854E+01   .13590951E+01   .13538249E+01
+   .13485723E+01   .13433348E+01   .13381103E+01   .13328967E+01   .13276922E+01
+   .13224950E+01   .13173038E+01   .13121174E+01   .13069346E+01   .13017548E+01
+   .12965774E+01   .12914020E+01   .12862285E+01   .12810570E+01   .12758877E+01
+   .12707212E+01   .12655581E+01   .12603993E+01   .12552459E+01   .12500990E+01
+   .12449600E+01   .12398304E+01   .12347120E+01   .12296064E+01   .12245156E+01
+   .12194415E+01   .12143862E+01   .12093516E+01   .12043399E+01   .11993532E+01
+   .11943936E+01   .11894630E+01   .11845636E+01   .11796972E+01   .11748657E+01
+   .11700710E+01   .11653146E+01   .11605981E+01   .11559231E+01   .11512907E+01
+   .11467023E+01   .11421588E+01   .11376611E+01   .11332099E+01   .11288057E+01
+   .11244489E+01   .11201395E+01   .11158776E+01   .11116630E+01   .11074953E+01
+   .11033739E+01   .10992981E+01   .10952669E+01   .10912794E+01   .10873344E+01
+   .10834306E+01   .10795666E+01   .10757407E+01   .10719515E+01   .10681972E+01
+   .10644759E+01   .10607859E+01   .10571252E+01   .10534920E+01   .10498842E+01
+   .10462998E+01   .10427369E+01   .10391936E+01   .10356679E+01   .10321580E+01
+   .10286621E+01   .10251785E+01   .10217056E+01   .10182418E+01   .10147857E+01
+   .10113361E+01   .10078917E+01   .10044516E+01   .10010148E+01   .99758056E+00
+   .99414815E+00   .99071710E+00   .98728703E+00   .98385770E+00   .98042901E+00
+   .97700100E+00   .97357386E+00   .97014788E+00   .96672353E+00   .96330134E+00
+   .95988202E+00   .95646633E+00   .95305516E+00   .94964947E+00   .94625029E+00
+   .94285871E+00   .93947588E+00   .93610296E+00   .93274118E+00   .92939175E+00
+   .92605589E+00   .92273484E+00   .91942980E+00   .91614198E+00   .91287255E+00
+   .90962261E+00   .90639327E+00   .90318553E+00   .90000035E+00   .89683862E+00
+   .89370111E+00   .89058854E+00   .88750150E+00   .88444051E+00   .88140594E+00
+   .87839810E+00   .87541715E+00   .87246319E+00   .86953618E+00   .86663598E+00
+   .86376237E+00   .86091504E+00   .85809356E+00   .85529745E+00   .85252612E+00
+   .84977891E+00   .84705509E+00   .84435387E+00   .84167438E+00   .83901570E+00
+   .83637687E+00   .83375689E+00   .83115471E+00   .82856930E+00   .82599957E+00
+   .82344447E+00   .82090294E+00   .81837395E+00   .81585649E+00   .81334959E+00
+   .81085230E+00   .80836375E+00   .80588310E+00   .80340956E+00   .80094242E+00
+   .79848101E+00   .79602474E+00   .79357308E+00   .79112557E+00   .78868183E+00
+   .78624156E+00   .78380453E+00   .78137059E+00   .77893968E+00   .77651182E+00
+   .77408709E+00   .77166566E+00   .76924777E+00   .76683371E+00   .76442386E+00
+   .76201861E+00   .75961843E+00   .75722381E+00   .75483529E+00   .75245342E+00
+   .75007878E+00   .74771198E+00   .74535361E+00   .74300431E+00   .74066467E+00
+   .73833533E+00   .73601688E+00   .73370991E+00   .73141500E+00   .72913269E+00
+   .72686348E+00   .72460785E+00   .72236622E+00   .72013896E+00   .71792639E+00
+   .71572877E+00   .71354632E+00   .71137917E+00   .70922741E+00   .70709108E+00
+   .70497014E+00   .70286451E+00   .70077406E+00   .69869861E+00   .69663792E+00
+   .69459171E+00   .69255965E+00   .69054138E+00   .68853647E+00   .68654448E+00
+   .68456493E+00   .68259729E+00   .68064103E+00   .67869558E+00   .67676037E+00
+   .67483481E+00   .67291831E+00   .67101030E+00   .66911020E+00   .66721745E+00
+   .66533154E+00   .66345194E+00   .66157818E+00   .65970980E+00   .65784640E+00
+   .65598759E+00   .65413301E+00   .65228238E+00   .65043542E+00   .64859191E+00
+   .64675166E+00   .64491456E+00   .64308051E+00   .64124949E+00   .63942150E+00
+   .63759661E+00   .63577493E+00   .63395663E+00   .63214191E+00   .63033101E+00
+   .62852421E+00   .62672183E+00   .62492419E+00   .62313166E+00   .62134461E+00
+   .61956345E+00   .61778855E+00   .61602035E+00   .61425924E+00   .61250564E+00
+   .61075995E+00   .60902259E+00   .60729393E+00   .60557438E+00   .60386427E+00
+   .60216397E+00   .60047378E+00   .59879398E+00   .59712482E+00   .59546651E+00
+   .59381923E+00   .59218310E+00   .59055819E+00   .58894456E+00   .58734218E+00
+   .58575101E+00   .58417097E+00   .58260191E+00   .58104367E+00   .57949604E+00
+   .57795877E+00   .57643160E+00   .57491421E+00   .57340627E+00   .57190739E+00
+   .57041720E+00   .56893526E+00   .56746113E+00   .56599436E+00   .56453446E+00
+   .56308095E+00   .56163335E+00   .56019117E+00   .55875392E+00   .55732114E+00
+   .55589237E+00   .55446717E+00   .55304513E+00   .55162586E+00   .55020899E+00
+   .54879421E+00   .54738119E+00   .54596967E+00   .54455942E+00   .54315022E+00
+   .54174192E+00   .54033438E+00   .53892751E+00   .53752127E+00   .53611565E+00
+   .53471068E+00   .53330645E+00   .53190307E+00   .53050072E+00   .52909958E+00
+   .52769991E+00   .52630196E+00   .52490605E+00   .52351250E+00   .52212165E+00
+   .52073387E+00   .51934954E+00   .51796906E+00   .51659282E+00   .51522124E+00
+   .51385471E+00   .51249366E+00   .51113849E+00   .50978960E+00   .50844740E+00
+   .50711226E+00   .50578456E+00   .50446464E+00   .50315283E+00   .50184942E+00
+   .50055468E+00   .49926885E+00   .49799211E+00   .49672463E+00   .49546652E+00
+   .49421787E+00   .49297872E+00   .49174906E+00   .49052887E+00   .48931806E+00
+   .48811655E+00   .48692417E+00   .48574077E+00   .48456612E+00   .48339999E+00
+   .48224210E+00   .48109214E+00   .47994979E+00   .47881469E+00   .47768644E+00
+   .47656465E+00   .47544890E+00   .47433874E+00   .47323373E+00   .47213343E+00
+   .47103738E+00   .46994513E+00   .46885626E+00   .46777033E+00   .46668693E+00
+   .46560565E+00   .46452611E+00   .46344796E+00   .46237084E+00   .46129445E+00
+   .46021848E+00   .45914266E+00   .45806677E+00   .45699059E+00   .45591394E+00
+   .45483669E+00   .45375873E+00   .45268000E+00   .45160048E+00   .45052017E+00
+   .44943912E+00   .44835744E+00   .44727522E+00   .44619264E+00   .44510986E+00
+   .44402711E+00   .44294463E+00   .44186266E+00   .44078149E+00   .43970143E+00
+   .43862278E+00   .43754587E+00   .43647106E+00   .43539869E+00   .43432913E+00
+   .43326275E+00   .43219992E+00   .43114102E+00   .43008640E+00   .42903644E+00
+   .42799148E+00   .42695185E+00   .42591788E+00   .42488985E+00   .42386804E+00
+   .42285270E+00   .42184404E+00   .42084225E+00   .41984752E+00   .41885996E+00
+   .41787969E+00   .41690679E+00   .41594132E+00   .41498329E+00   .41403271E+00
+   .41308952E+00   .41215366E+00   .41122504E+00   .41030352E+00   .40938895E+00
+   .40848113E+00   .40757985E+00   .40668486E+00   .40579591E+00   .40491270E+00
+   .40403494E+00   .40316231E+00   .40229448E+00   .40143112E+00   .40057189E+00
+   .39971645E+00   .39886446E+00   .39801557E+00   .39716943E+00   .39632572E+00
+   .39548409E+00   .39464423E+00   .39380582E+00   .39296856E+00   .39213215E+00
+   .39129633E+00   .39046084E+00   .38962546E+00   .38878998E+00   .38795422E+00
+   .38711802E+00   .38628126E+00   .38544385E+00   .38460571E+00   .38376681E+00
+   .38292712E+00   .38208666E+00   .38124546E+00   .38040358E+00   .37956109E+00
+   .37871810E+00   .37787474E+00   .37703114E+00   .37618747E+00   .37534392E+00
+   .37450070E+00   .37365801E+00   .37281611E+00   .37197523E+00   .37113563E+00
+   .37029759E+00   .36946138E+00   .36862727E+00   .36779554E+00   .36696645E+00
+   .36614028E+00   .36531727E+00   .36449768E+00   .36368174E+00   .36286969E+00
+   .36206173E+00   .36125808E+00   .36045891E+00   .35966440E+00   .35887471E+00
+   .35808998E+00   .35731032E+00   .35653585E+00   .35576662E+00   .35500271E+00
+   .35424414E+00   .35349091E+00   .35274302E+00   .35200041E+00   .35126303E+00
+   .35053080E+00   .34980360E+00   .34908132E+00   .34836381E+00   .34765093E+00
+   .34694251E+00   .34623836E+00   .34553830E+00   .34484213E+00   .34414963E+00
+   .34346058E+00   .34277476E+00   .34209194E+00   .34141186E+00   .34073430E+00
+   .34005901E+00   .33938574E+00   .33871427E+00   .33804435E+00   .33737577E+00
+   .33670831E+00   .33604177E+00   .33537596E+00   .33471072E+00   .33404587E+00
+   .33338128E+00   .33271682E+00   .33205238E+00   .33138786E+00   .33072317E+00
+   .33005826E+00   .32939307E+00   .32872757E+00   .32806175E+00   .32739560E+00
+   .32672915E+00   .32606245E+00   .32539553E+00   .32472849E+00   .32406141E+00
+   .32339440E+00   .32272759E+00   .32206110E+00   .32139508E+00   .32072968E+00
+   .32006506E+00   .31940139E+00   .31873883E+00   .31807755E+00   .31741773E+00
+ gradient corrections used for XC
+ 5
+ core charge-density (partial)
+   .23304368E+01   .23293201E+01   .23259732E+01   .23204049E+01   .23126305E+01
+   .23026710E+01   .22905531E+01   .22763094E+01   .22599782E+01   .22416029E+01
+   .22212323E+01   .21989203E+01   .21747254E+01   .21487106E+01   .21209435E+01
+   .20914951E+01   .20604407E+01   .20278585E+01   .19938299E+01   .19584392E+01
+   .19217727E+01   .18839190E+01   .18449683E+01   .18050123E+01   .17641436E+01
+   .17224552E+01   .16800409E+01   .16369943E+01   .15934084E+01   .15493760E+01
+   .15049886E+01   .14603366E+01   .14155089E+01   .13705926E+01   .13256726E+01
+   .12808318E+01   .12361503E+01   .11917056E+01   .11475724E+01   .11038223E+01
+   .10605235E+01   .10177412E+01   .97553688E+00   .93396849E+00   .89309041E+00
+   .85295331E+00   .81360412E+00   .77508601E+00   .73743836E+00   .70069679E+00
+   .66489317E+00   .63005566E+00   .59620875E+00   .56337331E+00   .53156672E+00
+   .50080286E+00   .47109230E+00   .44244234E+00   .41485716E+00   .38833792E+00
+   .36288288E+00   .33848755E+00   .31514485E+00   .29284519E+00   .27157666E+00
+   .25132520E+00   .23207467E+00   .21380708E+00   .19650272E+00   .18014027E+00
+   .16469700E+00   .15014889E+00   .13647080E+00   .12363658E+00   .11161923E+00
+   .10039103E+00   .89923683E-01   .80188417E-01   .71156134E-01   .62797511E-01
+   .55083117E-01   .47983519E-01   .41469382E-01   .35511562E-01   .30081199E-01
+   .25149796E-01   .20689298E-01   .16672160E-01   .13071413E-01   .98607243E-02
+   .70144480E-02   .45076723E-02   .23162617E-02   .41689200E-03  -.12129190E-02
+  -.25947862E-02  -.37494372E-02  -.46966967E-02  -.54554756E-02  -.60437648E-02
+  -.64786326E-02  -.67762263E-02  -.69517776E-02  -.70196111E-02  -.69931560E-02
+  -.68849611E-02  -.67067121E-02  -.64692513E-02  -.61826002E-02  -.58559828E-02
+  -.54978523E-02  -.51159176E-02  -.47171723E-02  -.43079243E-02  -.38938266E-02
+  -.34799081E-02  -.30706058E-02  -.26697966E-02  -.22808298E-02  -.19065589E-02
+  -.15493743E-02  -.12112344E-02  -.89369736E-03  -.59795196E-03  -.32484747E-03
+  -.74923249E-04   .15156275E-03   .35460631E-03   .53443034E-03   .69145924E-03
+   .82629443E-03   .93969097E-03   .10325354E-02   .11058249E-02   .11606473E-02
+   .11981628E-02   .12195867E-02   .12261732E-02   .12192008E-02   .11999587E-02
+   .11697344E-02   .11298025E-02   .10814146E-02   .10257904E-02   .96410991E-03
+   .89750636E-03   .82706064E-03   .75379623E-03   .67867523E-03   .60259520E-03
+   .52638683E-03   .45081228E-03   .37656432E-03   .30426603E-03   .23447116E-03
+   .16766494E-03   .10426550E-03   .44625618E-04  -.10965055E-04  -.62277499E-04
+  -.10914048E-03  -.15143748E-03  -.18910343E-03  -.22212121E-03  -.25051814E-03
+  -.27436228E-03  -.29375870E-03  -.30884575E-03  -.31979136E-03  -.32678928E-03
+  -.33005549E-03  -.32982466E-03  -.32634667E-03  -.31988337E-03  -.31070531E-03
+  -.29908884E-03  -.28531317E-03  -.26965778E-03  -.25239992E-03  -.23381231E-03
+  -.21416110E-03  -.19370396E-03  -.17268840E-03  -.15135032E-03  -.12991272E-03
+  -.10858460E-03  -.87560067E-04  -.67017675E-04  -.47119842E-04  -.28012521E-04
+  -.98249937E-05   .73301671E-05   .23357000E-04   .38175920E-04   .51723364E-04
+   .63951324E-04   .74826772E-04   .84331012E-04   .92458932E-04   .99218206E-04
+   .10462843E-03   .10872021E-03   .11153421E-03   .11312020E-03   .11353606E-03
+   .11284676E-03   .11112339E-03   .10844216E-03   .10488343E-03   .10053078E-03
+   .95470056E-04   .89788497E-04   .83573909E-04   .76913851E-04   .69894883E-04
+   .62601872E-04   .55117348E-04   .47520913E-04   .39888714E-04   .32292973E-04
+   .24801577E-04   .17477727E-04   .10379646E-04   .35603507E-05  -.29325299E-05
+  -.90568714E-05  -.14776122E-04  -.20059320E-04  -.24881058E-04  -.29221412E-04
+  -.33065816E-04  -.36404904E-04  -.39234321E-04  -.41554491E-04  -.43370362E-04
+  -.44691131E-04  -.45529938E-04  -.45903551E-04  -.45832027E-04  -.45338375E-04
+  -.44448200E-04  -.43189350E-04  -.41591557E-04  -.39686087E-04  -.37505390E-04
+  -.35082753E-04  -.32451976E-04  -.29647049E-04  -.26701844E-04  -.23649833E-04
+  -.20523810E-04  -.17355641E-04  -.14176032E-04  -.11014321E-04  -.78982827E-05
+  -.48539668E-05  -.19055520E-05   .92477448E-06   .36169158E-05   .61529415E-05
+   .85171410E-05   .10696057E-04   .12678496E-04   .14455523E-04   .16020431E-04
+   .17368700E-04   .18497933E-04   .19407782E-04   .20099856E-04   .20577621E-04
+   .20846281E-04   .20912660E-04   .20785065E-04   .20473154E-04   .19987785E-04
+   .19340871E-04   .18545235E-04   .17614450E-04   .16562694E-04   .15404599E-04
+   .14155106E-04   .12829317E-04   .11442362E-04   .10009266E-04   .85448185E-05
+   .70634612E-05   .55791739E-05   .41053735E-05   .26548220E-05   .12395425E-05
+  -.12925334E-06  -.14412292E-05  -.26869768E-05  -.38580596E-05  -.49470451E-05
+  -.59475284E-05  -.68541453E-05  -.76625765E-05  -.83695420E-05  -.89727877E-05
+  -.94710631E-05  -.98640917E-05  -.10152535E-04  -.10337946E-04  -.10422727E-04
+  -.10410066E-04  -.10303884E-04  -.10108772E-04  -.98299213E-05  -.94730568E-05
+  -.90443672E-05  -.85504326E-05  -.79981518E-05  -.73946709E-05  -.67473112E-05
+  -.60634995E-05  -.53506995E-05  -.46163455E-05  -.38677795E-05  -.31121908E-05
+  -.23565597E-05  -.16076047E-05  -.87173441E-06  -.15500346E-06   .53692665E-06
+   .11988219E-05   .18259052E-05   .24138810E-05   .29589543E-05   .34578455E-05
+   .39077997E-05   .43065915E-05   .46525247E-05   .49444280E-05   .51816457E-05
+   .53640255E-05   .54919009E-05   .55660712E-05   .55877780E-05   .55586784E-05
+   .54808159E-05   .53565894E-05   .51887191E-05   .49802123E-05   .47343270E-05
+   .44545347E-05   .41444834E-05   .38079592E-05   .34488492E-05   .30711044E-05
+   .26787028E-05   .22756145E-05   .18657675E-05   .14530150E-05   .10411046E-05
+   .63364981E-06   .23410279E-06  -.15426965E-06  -.52840821E-06  -.88548061E-06
+  -.12228984E-05  -.15383315E-05  -.18297190E-05  -.20952791E-05  -.23335143E-05
+  -.25432154E-05  -.27234626E-05  -.28736234E-05  -.29933493E-05  -.30825689E-05
+  -.31414799E-05  -.31705385E-05  -.31704468E-05  -.31421393E-05  -.30867669E-05
+  -.30056800E-05  -.29004106E-05  -.27726531E-05  -.26242444E-05  -.24571436E-05
+  -.22734112E-05  -.20751878E-05  -.18646732E-05  -.16441058E-05  -.14157414E-05
+  -.11818338E-05  -.94461476E-06  -.70627584E-06  -.46895046E-06  -.23469733E-06
+  -.54849251E-08   .21682277E-06   .43047913E-06   .63386644E-06   .82550591E-06
+   .10040662E-05   .11683706E-05   .13174022E-05   .14503083E-05   .15664022E-05
+   .16651647E-05   .17462435E-05   .18094507E-05   .18547602E-05   .18823026E-05
+   .18923598E-05   .18853577E-05   .18618583E-05   .18225512E-05   .17682434E-05
+   .16998492E-05   .16183790E-05   .15249275E-05   .14206625E-05   .13068119E-05
+   .11846516E-05   .10554933E-05   .92067201E-06   .78153347E-06   .63942272E-06
+   .49567220E-06   .35159066E-06   .20845250E-06   .67487760E-07  -.70127289E-07
+  -.20327878E-06  -.33092312E-06  -.45209402E-06  -.56590870E-06  -.67157317E-06
+  -.76838657E-06  -.85574470E-06  -.93314249E-06  -.10001756E-05  -.10565413E-05
+  -.11020378E-05  -.11365640E-05  -.11601167E-05  -.11727885E-05  -.11747644E-05
+  -.11663173E-05  -.11478035E-05  -.11196572E-05  -.10823849E-05  -.10365589E-05
+  -.98281020E-06  -.92182220E-06  -.85432280E-06  -.78107713E-06  -.70287991E-06
+  -.62054778E-06  -.53491166E-06  -.44680917E-06  -.35707723E-06  -.26654483E-06
+  -.17602606E-06  -.86313511E-07   .18280737E-08   .87667637E-07   .17051326E-06
+   .24971712E-06   .32467994E-06   .39485490E-06   .45975101E-06   .51893591E-06
+   .57203808E-06   .61874850E-06   .65882166E-06   .69207614E-06   .71839446E-06
+   .73772246E-06   .75006822E-06   .75550031E-06   .75414575E-06   .74618735E-06
+   .73186078E-06   .71145113E-06   .68528928E-06   .65374782E-06   .61723680E-06
+   .57619927E-06   .53110660E-06   .48245369E-06   .43075414E-06   .37653531E-06
+   .32033343E-06   .26268877E-06   .20414083E-06   .14522371E-06   .86461636E-07
+   .28364650E-07  -.28575431E-07  -.83888838E-07  -.13713137E-06  -.18788759E-06
+  -.23577378E-06  -.28044041E-06  -.32157438E-06  -.35890085E-06  -.39218468E-06
+  -.42123149E-06  -.44588842E-06  -.46604439E-06  -.48163010E-06  -.49261765E-06
+  -.49901974E-06  -.50088864E-06  -.49831479E-06  -.49142511E-06  -.48038105E-06
+  -.46537636E-06  -.44663468E-06  -.42440689E-06  -.39896831E-06  -.37061575E-06
+  -.33966443E-06  -.30644483E-06  -.27129949E-06  -.23457975E-06  -.19664255E-06
+  -.15784715E-06  -.11855201E-06  -.79111711E-07  -.39873975E-07  -.11768050E-08
+   .36654207E-07   .73308410E-07   .10849244E-06   .14193238E-06   .17337564E-06
+   .20259271E-06   .22937860E-06   .25355406E-06   .27496653E-06   .29349090E-06
+   .30902994E-06   .32151454E-06   .33090364E-06   .33718401E-06   .34036972E-06
+   .34050140E-06   .33764530E-06   .33189219E-06   .32335597E-06   .31217222E-06
+   .29849654E-06   .28250276E-06   .26438102E-06   .24433581E-06   .22258386E-06
+   .19935199E-06   .17487494E-06   .14939320E-06   .12315073E-06   .96392873E-07
+   .69364109E-07   .42306026E-07   .15455264E-07  -.10958415E-07  -.36713971E-07
+  -.61600805E-07  -.85420362E-07  -.10798758E-06  -.12913223E-06  -.14870002E-06
+  -.16655364E-06  -.18257358E-06  -.19665877E-06  -.20872705E-06  -.21871553E-06
+  -.22658070E-06  -.23229838E-06  -.23586355E-06  -.23729001E-06  -.23660979E-06
+  -.23387259E-06  -.22914492E-06  -.22250919E-06  -.21406266E-06  -.20391632E-06
+  -.19219361E-06  -.17902912E-06  -.16456717E-06  -.14896040E-06  -.13236825E-06
+  -.11495545E-06  -.96890487E-07  -.78344077E-07  -.59487632E-07  -.40491772E-07
+  -.21524866E-07  -.27516156E-08   .15668287E-07   .33581443E-07   .50841947E-07
+   .67312494E-07   .82865395E-07   .97383488E-07   .11076094E-06   .12290394E-06
+   .13373125E-06   .14317469E-06   .15117943E-06   .15770424E-06   .16272152E-06
+   .16621732E-06   .16819119E-06   .16865586E-06   .16763693E-06   .16517238E-06
+   .16131197E-06   .15611662E-06   .14965762E-06   .14201587E-06   .13328092E-06
+   .12355009E-06   .11292744E-06   .10152275E-06   .89450460E-07   .76828596E-07
+   .63777667E-07   .50419586E-07   .36876582E-07   .23270141E-07   .97199680E-08
+  -.36570146E-08  -.16747623E-07  -.29443320E-07  -.41641064E-07  -.53244099E-07
+  -.64162665E-07  -.74314648E-07  -.83626139E-07  -.92031922E-07  -.99475872E-07
+  -.10591127E-06  -.11130102E-06  -.11561781E-06  -.11884414E-06  -.12097230E-06
+  -.12200426E-06  -.12195147E-06  -.12083455E-06  -.11868301E-06  -.11553475E-06
+  -.11143564E-06  -.10643895E-06  -.10060474E-06  -.93999222E-07  -.86694100E-07
+  -.78765811E-07  -.70294799E-07  -.61364738E-07  -.52061750E-07  -.42473618E-07
+  -.32688994E-07  -.22796614E-07  -.12884535E-07  -.30393823E-08   .66543747E-08
+   .16115111E-07   .25264703E-07   .34029138E-07   .42339082E-07   .50130394E-07
+   .57344587E-07   .63929232E-07   .69838304E-07   .75032461E-07   .79479269E-07
+   .83153358E-07   .86036513E-07   .88117703E-07   .89393055E-07   .89865751E-07
+   .89545882E-07   .88450235E-07   .86602031E-07   .84030608E-07   .80771061E-07
+   .76863837E-07   .72354289E-07   .67292201E-07   .61731277E-07   .55728605E-07
+   .49344112E-07   .42639989E-07   .35680116E-07   .28529479E-07   .21253592E-07
+   .13917918E-07   .65873031E-08  -.67457097E-09  -.78057191E-08  -.14746359E-07
+  -.21439392E-07  -.27830847E-07  -.33870297E-07  -.39511234E-07  -.44711401E-07
+  -.49433089E-07  -.53643381E-07  -.57314360E-07  -.60423260E-07  -.62952578E-07
+  -.64890135E-07  -.66229092E-07  -.66967917E-07  -.67110310E-07  -.66665082E-07
+  -.65645991E-07  -.64071541E-07  -.61964743E-07  -.59352837E-07  -.56266990E-07
+  -.52741954E-07  -.48815714E-07  -.44529096E-07  -.39925375E-07  -.35049852E-07
+  -.29949436E-07  -.24672205E-07  -.19266974E-07  -.13782862E-07  -.82688564E-08
+  -.27733981E-08   .26560326E-08   .79733100E-08   .13134039E-07   .18095912E-07
+   .22819039E-07   .27266253E-07   .31403391E-07   .35199532E-07   .38627222E-07
+   .41662645E-07   .44285777E-07   .46480495E-07   .48234651E-07   .49540117E-07
+   .50392785E-07   .50792542E-07   .50743205E-07   .50252424E-07   .49331553E-07
+   .47995495E-07   .46262514E-07   .44154023E-07   .41694350E-07   .38910480E-07
+   .35831778E-07   .32489697E-07   .28917475E-07   .25149817E-07   .21222572E-07
+   .17172404E-07   .13036464E-07   .88520584E-08   .46563239E-08   .48591144E-09
+  -.36233256E-08  -.76366282E-08  -.11520615E-07  -.15243550E-07  -.18775592E-07
+  -.22089019E-07  -.25158441E-07  -.27960980E-07  -.30476427E-07  -.32687378E-07
+  -.34579342E-07  -.36140815E-07  -.37363342E-07  -.38241535E-07  -.38773075E-07
+  -.38958688E-07  -.38802085E-07  -.38309891E-07  -.37491535E-07  -.36359132E-07
+  -.34927336E-07  -.33213168E-07  -.31235842E-07  -.29016557E-07  -.26578288E-07
+  -.23945557E-07  -.21144202E-07  -.18201127E-07  -.15144058E-07  -.12001289E-07
+  -.88014270E-08  -.55731429E-08  -.23449199E-08   .85518884E-09   .39997971E-08
+   .70624121E-08   .10017650E-07   .12841440E-07   .15511212E-07   .18006069E-07
+   .20306944E-07   .22396735E-07   .24260429E-07   .25885194E-07   .27260464E-07
+   .28377989E-07   .29231882E-07   .29818625E-07   .30137069E-07   .30188412E-07
+   .29976146E-07   .29505999E-07   .28785851E-07   .27825634E-07   .26637215E-07
+   .25234264E-07   .23632114E-07   .21847599E-07   .19898886E-07   .17805304E-07
+   .15587153E-07   .13265518E-07   .10862076E-07   .83988960E-08   .58982453E-08
+   .33823929E-08   .87341716E-09  -.16069829E-08  -.40376697E-08  -.63982416E-08
+  -.86691993E-08  -.10832101E-07  -.12869709E-07  -.14766115E-07  -.16506870E-07
+  -.18079075E-07  -.19471482E-07  -.20674560E-07  -.21680557E-07  -.22483541E-07
+  -.23079423E-07  -.23465968E-07  -.23642791E-07  -.23611326E-07  -.23374796E-07
+  -.22938157E-07  -.22308027E-07  -.21492609E-07  -.20501600E-07  -.19346078E-07
+  -.18038394E-07  -.16592045E-07  -.15021541E-07  -.13342262E-07  -.11570318E-07
+  -.97223975E-08  -.78156128E-08  -.58673483E-08  -.38951057E-08  -.19163504E-08
+   .51638444E-10   .19919154E-08   .38880104E-08   .57240650E-08   .74849610E-08
+   .91564410E-08   .10725220E-07   .12179086E-07   .13506993E-07   .14699139E-07
+   .15747033E-07   .16643553E-07   .17382984E-07   .17961056E-07   .18374953E-07
+   .18623322E-07   .18706264E-07   .18625312E-07   .18383400E-07   .17984818E-07
+   .17435155E-07   .16741234E-07   .15911038E-07   .14953620E-07   .13879017E-07
+   .12698144E-07   .11422691E-07   .10065010E-07   .86379991E-08   .71549846E-08
+   .56295989E-08   .40756584E-08   .25070421E-08   .93756996E-09  -.61911552E-09
+  -.21496651E-08  -.36411346E-08  -.50810912E-08  -.64577143E-08  -.77598902E-08
+  -.89772979E-08  -.10100489E-07  -.11120957E-07  -.12031198E-07  -.12824765E-07
+  -.13496307E-07  -.14041600E-07  -.14457573E-07  -.14742315E-07  -.14895079E-07
+  -.14916271E-07  -.14807432E-07  -.14571213E-07  -.14211332E-07  -.13732531E-07
+  -.13140521E-07  -.12441921E-07  -.11644186E-07  -.10755536E-07  -.97848685E-08
+  -.87416795E-08  -.76359690E-08  -.64781496E-08  -.52789505E-08  -.40493209E-08
+  -.28003321E-08  -.15430801E-08  -.28858937E-09   .95228174E-09   .21689328E-08
+   .33511099E-08   .44889898E-08   .55732592E-08   .65951894E-08   .75467040E-08
+   .84204402E-08   .92098039E-08   .99090168E-08   .10513156E-07   .11018185E-07
+   .11420979E-07   .11719338E-07   .11911997E-07   .11998622E-07   .11979804E-07
+   .11857039E-07   .11632708E-07   .11310038E-07   .10893073E-07   .10386621E-07
+   .97962035E-08   .91280042E-08   .83888013E-08   .75859037E-08   .67270812E-08
+   .58204909E-08   .48746020E-08   .38981185E-08   .28999009E-08   .18888876E-08
+   .87401653E-09  -.13585227E-09  -.11320123E-08  -.21059843E-08  -.30495862E-08
+  -.39550013E-08  -.48148404E-08  -.56222010E-08  -.63707209E-08  -.70546268E-08
+  -.76687766E-08  -.82086964E-08  -.86706112E-08  -.90514685E-08  -.93489562E-08
+  -.95615132E-08  -.96883342E-08  -.97293668E-08  -.96853033E-08  -.95575651E-08
+  -.93482819E-08  -.90602643E-08  -.86969713E-08  -.82624724E-08  -.77614051E-08
+  -.71989276E-08  -.65806679E-08  -.59126694E-08  -.52013337E-08  -.44533605E-08
+  -.36756862E-08  -.28754209E-08  -.20597849E-08  -.12360448E-08  -.41144973E-09
+   .40683075E-09   .12117680E-08   .19965336E-08   .27545557E-08   .34795730E-08
+ atomic pseudo charge-density
+   .10000000E+02   .99890372E+01   .99562530E+01   .99019569E+01   .98266570E+01
+   .97310482E+01   .96159969E+01   .94825221E+01   .93317741E+01   .91650117E+01
+   .89835779E+01   .87888765E+01   .85823483E+01   .83654494E+01   .81396305E+01
+   .79063186E+01   .76669018E+01   .74227149E+01   .71750295E+01   .69250448E+01
+   .66738820E+01   .64225799E+01   .61720928E+01   .59232900E+01   .56769568E+01
+   .54337959E+01   .51944311E+01   .49594100E+01   .47292085E+01   .45042351E+01
+   .42848354E+01   .40712969E+01   .38638531E+01   .36626888E+01   .34679437E+01
+   .32797173E+01   .30980722E+01   .29230383E+01   .27546161E+01   .25927800E+01
+   .24374811E+01   .22886505E+01   .21462010E+01   .20100303E+01   .18800226E+01
+   .17560505E+01   .16379770E+01   .15256572E+01   .14189392E+01   .13176659E+01
+   .12216760E+01   .11308050E+01   .10448862E+01   .96375155E+00   .88723242E+00
+   .81516016E+00   .74736681E+00   .68368555E+00   .62395121E+00   .56800066E+00
+   .51567315E+00   .46681063E+00   .42125802E+00   .37886341E+00   .33947828E+00
+   .30295762E+00   .26916013E+00   .23794825E+00   .20918829E+00   .18275048E+00
+   .15850902E+00   .13634211E+00   .11613196E+00   .97764785E-01   .81130813E-01
+   .66124254E-01   .52643274E-01   .40589956E-01   .29870261E-01   .20393973E-01
+   .12074648E-01   .48295493E-02  -.14204149E-02  -.67507596E-02  -.11233496E-01
+  -.14937205E-01  -.17927114E-01  -.20265179E-01  -.22010159E-01  -.23217706E-01
+  -.23940443E-01  -.24228051E-01  -.24127356E-01  -.23682410E-01  -.22934584E-01
+  -.21922649E-01  -.20682866E-01  -.19249072E-01  -.17652767E-01  -.15923198E-01
+  -.14087448E-01  -.12170517E-01  -.10195410E-01  -.81832199E-02  -.61532087E-02
+  -.41228896E-02  -.21081084E-02  -.12312228E-03   .18193221E-02   .37079115E-02
+   .55326910E-02   .72849899E-02   .89573494E-02   .10543452E-01   .12038051E-01
+   .13436907E-01   .14736716E-01   .15935051E-01   .17030296E-01   .18021590E-01
+   .18908763E-01   .19692286E-01   .20373210E-01   .20953117E-01   .21434070E-01
+   .21818563E-01   .22109474E-01   .22310019E-01   .22423714E-01   .22454330E-01
+   .22405855E-01   .22282457E-01   .22088452E-01   .21828266E-01   .21506409E-01
+   .21127443E-01   .20695955E-01   .20216532E-01   .19693736E-01   .19132085E-01
+   .18536030E-01   .17909937E-01   .17258074E-01   .16584587E-01   .15893497E-01
+   .15188679E-01   .14473856E-01   .13752590E-01   .13028271E-01   .12304112E-01
+   .11583144E-01   .10868213E-01   .10161972E-01   .94668846E-02   .87852225E-02
+   .81190639E-02   .74702956E-02   .68406149E-02   .62315321E-02   .56443737E-02
+   .50802866E-02   .45402425E-02   .40250436E-02   .35353278E-02   .30715755E-02
+   .26341155E-02   .22231327E-02   .18386749E-02   .14806604E-02   .11488860E-02
+   .84303473E-03   .56268369E-03   .30731248E-03   .76311157E-04  -.13101162E-03
+  -.31542050E-03  -.47774544E-03  -.61887383E-03  -.73974269E-03  -.84133116E-03
+  -.92465311E-03  -.99074996E-03  -.10406838E-02  -.10755307E-02  -.10963744E-02
+  -.11043004E-02  -.11003898E-02  -.10857145E-02  -.10613317E-02  -.10282790E-02
+  -.98757076E-03  -.94019333E-03  -.88710180E-03  -.82921659E-03  -.76742052E-03
+  -.70255622E-03  -.63542391E-03  -.56677949E-03  -.49733298E-03  -.42774733E-03
+  -.35863750E-03  -.29056984E-03  -.22406181E-03  -.15958199E-03  -.97550261E-04
+  -.38338389E-04   .17729274E-04   .70374798E-04   .11936550E-03   .16451255E-03
+   .20566947E-03   .24273035E-03   .27562806E-03   .30433227E-03   .32884730E-03
+   .34921002E-03   .36548758E-03   .37777507E-03   .38619319E-03   .39088586E-03
+   .39201784E-03   .38977233E-03   .38434857E-03   .37595952E-03   .36482953E-03
+   .35119208E-03   .33528760E-03   .31736131E-03   .29766123E-03   .27643614E-03
+   .25393383E-03   .23039924E-03   .20607290E-03   .18118933E-03   .15597569E-03
+   .13065042E-03   .10542214E-03   .80488552E-04   .56035562E-04   .32236461E-04
+   .92512703E-05  -.12773800E-04  -.33706778E-04  -.53430228E-04  -.71841442E-04
+  -.88852514E-04  -.10439031E-03  -.11839633E-03  -.13082650E-03  -.14165082E-03
+  -.15085297E-03  -.15842985E-03  -.16439100E-03  -.16875798E-03  -.17156369E-03
+  -.17285166E-03  -.17267525E-03  -.17109685E-03  -.16818704E-03  -.16402371E-03
+  -.15869121E-03  -.15227940E-03  -.14488283E-03  -.13659977E-03  -.12753138E-03
+  -.11778083E-03  -.10745244E-03  -.96650856E-04  -.85480256E-04  -.74043600E-04
+  -.62441899E-04  -.50773536E-04  -.39133631E-04  -.27613449E-04  -.16299871E-04
+  -.52748956E-05   .53847825E-05   .15608158E-04   .25330234E-04   .34492292E-04
+   .43042103E-04   .50934085E-04   .58129403E-04   .64596023E-04   .70308707E-04
+   .75248966E-04   .79404955E-04   .82771332E-04   .85349072E-04   .87145234E-04
+   .88172706E-04   .88449898E-04   .88000418E-04   .86852713E-04   .85039693E-04
+   .82598326E-04   .79569225E-04   .75996212E-04   .71925886E-04   .67407169E-04
+   .62490860E-04   .57229188E-04   .51675365E-04   .45883146E-04   .39906407E-04
+   .33798724E-04   .27612974E-04   .21400954E-04   .15213018E-04   .90977377E-05
+   .31015825E-05  -.27313676E-05  -.83596884E-05  -.13744847E-04  -.18851408E-04
+  -.23647214E-04  -.28103530E-04  -.32195165E-04  -.35900553E-04  -.39201818E-04
+  -.42084794E-04  -.44539031E-04  -.46557761E-04  -.48137841E-04  -.49279676E-04
+  -.49987108E-04  -.50267286E-04  -.50130519E-04  -.49590099E-04  -.48662117E-04
+  -.47365259E-04  -.45720580E-04  -.43751282E-04  -.41482467E-04  -.38940891E-04
+  -.36154710E-04  -.33153221E-04  -.29966601E-04  -.26625650E-04  -.23161532E-04
+  -.19605521E-04  -.15988759E-04  -.12342010E-04  -.86954328E-05  -.50783628E-05
+  -.15191029E-05   .19552697E-05   .53190827E-05   .85482325E-05   .11620331E-04
+   .14514838E-04   .17213171E-04   .19698799E-04   .21957326E-04   .23976537E-04
+   .25746449E-04   .27259325E-04   .28509677E-04   .29494257E-04   .30212019E-04
+   .30664076E-04   .30853634E-04   .30785915E-04   .30468063E-04   .29909042E-04
+   .29119519E-04   .28111736E-04   .26899375E-04   .25497415E-04   .23921979E-04
+   .22190180E-04   .20319961E-04   .18329933E-04   .16239208E-04   .14067241E-04
+   .11833661E-04   .95581150E-05   .72601091E-05   .49588586E-05   .26731409E-05
+   .42115707E-06  -.17795999E-05  -.39124672E-05  -.59617260E-05  -.79127041E-05
+  -.97518687E-05  -.11466908E-04  -.13046800E-04  -.14481873E-04  -.15763849E-04
+  -.16885879E-04  -.17842565E-04  -.18629971E-04  -.19245617E-04  -.19688471E-04
+  -.19958922E-04  -.20058743E-04  -.19991049E-04  -.19760239E-04  -.19371932E-04
+  -.18832899E-04  -.18150975E-04  -.17334980E-04  -.16394621E-04  -.15340398E-04
+  -.14183499E-04  -.12935698E-04  -.11609243E-04  -.10216752E-04  -.87710986E-05
+  -.72853075E-05  -.57724417E-05  -.42454988E-05  -.27173069E-05  -.12004248E-05
+   .29295348E-06   .17510898E-05   .31627867E-05   .45174663E-05   .58052430E-05
+   .70169886E-05   .81443899E-05   .91799992E-05   .10117276E-04   .10950622E-04
+   .11675405E-04   .12287977E-04   .12785684E-04   .13166866E-04   .13430850E-04
+   .13577936E-04   .13609373E-04   .13527330E-04   .13334858E-04   .13035852E-04
+   .12634996E-04   .12137711E-04   .11550097E-04   .10878870E-04   .10131293E-04
+   .93151047E-05   .84384509E-05   .75098063E-05   .65379007E-05   .55316418E-05
+   .45000393E-05   .34521293E-05   .23969003E-05   .13432200E-05   .29976609E-06
+  -.72504132E-06  -.17231034E-05  -.26867024E-05  -.36085573E-05  -.44818748E-05
+  -.53003953E-05  -.60584339E-05  -.67509155E-05  -.73734046E-05  -.79221292E-05
+  -.83939988E-05  -.87866167E-05  -.90982862E-05  -.93280108E-05  -.94754891E-05
+  -.95411042E-05  -.95259069E-05  -.94315946E-05  -.92604852E-05  -.90154856E-05
+  -.87000577E-05  -.83181781E-05  -.78742969E-05  -.73732913E-05  -.68204177E-05
+  -.62212615E-05  -.55816847E-05  -.49077725E-05  -.42057792E-05  -.34820734E-05
+  -.27430833E-05  -.19952428E-05  -.12449382E-05  -.49845692E-06   .23806330E-06
+   .95868157E-06   .16576995E-05   .23297038E-05   .29696054E-05   .35726759E-05
+   .41345797E-05   .46514028E-05   .51196771E-05   .55364014E-05   .58990573E-05
+   .62056212E-05   .64545724E-05   .66448962E-05   .67760834E-05   .68481250E-05
+   .68615037E-05   .68171806E-05   .67165791E-05   .65615643E-05   .63544199E-05
+   .60978218E-05   .57948091E-05   .54487517E-05   .50633174E-05   .46424356E-05
+   .41902603E-05   .37111314E-05   .32095357E-05   .26900671E-05   .21573864E-05
+   .16161813E-05   .10711276E-05   .52684998E-06  -.12115283E-07  -.54135631E-06
+  -.10566202E-05  -.15538456E-05  -.20291931E-05  -.24790730E-05  -.29001713E-05
+  -.32894720E-05  -.36442771E-05  -.39622238E-05  -.42412978E-05  -.44798446E-05
+  -.46765764E-05  -.48305771E-05  -.49413032E-05  -.50085819E-05  -.50326061E-05
+  -.50139267E-05  -.49534417E-05  -.48523829E-05  -.47122997E-05  -.45350409E-05
+  -.43227344E-05  -.40777641E-05  -.38027463E-05  -.35005036E-05  -.31740379E-05
+  -.28265022E-05  -.24611721E-05  -.20814162E-05  -.16906660E-05  -.12923871E-05
+  -.89004901E-06  -.48709622E-06  -.86920136E-07   .30716855E-06   .69196605E-06
+   .10644005E-05   .14215553E-05   .17606909E-05   .20792650E-05   .23749499E-05
+   .26456488E-05   .28895095E-05   .31049355E-05   .32905952E-05   .34454287E-05
+   .35686523E-05   .36597600E-05   .37185234E-05   .37449891E-05   .37394736E-05
+   .37025563E-05   .36350700E-05   .35380903E-05   .34129221E-05   .32610850E-05
+   .30842975E-05   .28844585E-05   .26636292E-05   .24240130E-05   .21679342E-05
+   .18978175E-05   .16161652E-05   .13255353E-05   .10285194E-05   .72772006E-06
+   .42572905E-06   .12510573E-06  -.17164382E-06  -.46208694E-06  -.74388362E-06
+  -.10148045E-05  -.12727479E-05  -.15157553E-05  -.17420252E-05  -.19499262E-05
+  -.21380075E-05  -.23050081E-05  -.24498648E-05  -.25717173E-05  -.26699126E-05
+  -.27440069E-05  -.27937661E-05  -.28191641E-05  -.28203802E-05  -.27977938E-05
+  -.27519782E-05  -.26836927E-05  -.25938733E-05  -.24836219E-05  -.23541944E-05
+  -.22069877E-05  -.20435259E-05  -.18654454E-05  -.16744791E-05  -.14724408E-05
+  -.12612082E-05  -.10427065E-05  -.81889147E-06  -.59173215E-06  -.36319456E-06
+  -.13522503E-06   .90265796E-07   .31141843E-06   .52643932E-06   .73361490E-06
+   .93132471E-06   .11180535E-05   .12924023E-05   .14530983E-05   .15990038E-05
+   .17291231E-05   .18426092E-05   .19387683E-05   .20170631E-05   .20771150E-05
+   .21187051E-05   .21417727E-05   .21464142E-05   .21328794E-05   .21015669E-05
+   .20530189E-05   .19879136E-05   .19070583E-05   .18113799E-05   .17019156E-05
+   .15798024E-05   .14462657E-05   .13026082E-05   .11501973E-05   .99045256E-06
+   .82483342E-06   .65482584E-06   .48192967E-06   .30764573E-06   .13346322E-06
+  -.39152622E-07  -.20877244E-06  -.37401424E-06  -.53355425E-06  -.68613714E-06
+  -.83058551E-06  -.96580857E-06  -.10908100E-05  -.12046948E-05  -.13066752E-05
+  -.13960759E-05  -.14723376E-05  -.15350202E-05  -.15838045E-05  -.16184932E-05
+  -.16390105E-05  -.16454009E-05  -.16378270E-05  -.16165664E-05  -.15820075E-05
+  -.15346444E-05  -.14750716E-05  -.14039767E-05  -.13221342E-05  -.12303965E-05
+  -.11296866E-05  -.10209887E-05  -.90533895E-06  -.78381630E-06  -.65753252E-06
+  -.52762245E-06  -.39523412E-06  -.26151888E-06  -.12762170E-06   .53283234E-08
+   .13622726E-06   .26400518E-06   .38763464E-06   .50613867E-06   .61859816E-06
+   .72415877E-06   .82203703E-06   .91152591E-06   .99199954E-06   .10629173E-05
+   .11238269E-05   .11743670E-05   .12142689E-05   .12433572E-05   .12615499E-05
+   .12688579E-05   .12653830E-05   .12513165E-05   .12269352E-05   .11925986E-05
+   .11487444E-05   .10958834E-05   .10345944E-05   .96551827E-06   .88935158E-06
+   .80683989E-06   .71877082E-06   .62596683E-06   .52927772E-06   .42957318E-06
+   .32773515E-06   .22465026E-06   .12120232E-06   .18264981E-07  -.83305468E-07
+  -.18267698E-06  -.27904839E-06  -.37165562E-06  -.45977755E-06  -.54274143E-06
+  -.61992775E-06  -.69077464E-06  -.75478173E-06  -.81151341E-06  -.86060149E-06
+  -.90174730E-06  -.93472312E-06  -.95937306E-06  -.97561326E-06  -.98343152E-06
+  -.98288637E-06  -.97410546E-06  -.95728352E-06  -.93267968E-06  -.90061441E-06
+  -.86146584E-06  -.81566581E-06  -.76369543E-06  -.70608032E-06  -.64338557E-06
+  -.57621042E-06  -.50518275E-06  -.43095339E-06  -.35419036E-06  -.27557305E-06
+  -.19578632E-06  -.11551475E-06  -.35436910E-07   .43780222E-07   .12148666E-06
+   .19705457E-06   .26988321E-06   .33940350E-06   .40508238E-06   .46642662E-06
+   .52298646E-06   .57435862E-06   .62018906E-06   .66017516E-06   .69406748E-06
+   .72167112E-06   .74284644E-06   .75750953E-06   .76563197E-06   .76724035E-06
+   .76241517E-06   .75128945E-06   .73404675E-06   .71091899E-06   .68218379E-06
+   .64816144E-06   .60921167E-06   .56573002E-06   .51814409E-06   .46690945E-06
+   .41250548E-06   .35543100E-06   .29619988E-06   .23533650E-06   .17337126E-06
+   .11083610E-06   .48259996E-07  -.13835327E-07  -.74939668E-07  -.13455841E-06
+  -.19221640E-06  -.24746163E-06  -.29986863E-06  -.34904162E-06  -.39461741E-06
+  -.43626787E-06  -.47370221E-06  -.50666881E-06  -.53495677E-06  -.55839707E-06
+  -.57686331E-06  -.59027225E-06  -.59858378E-06  -.60180066E-06  -.59996791E-06
+  -.59317179E-06  -.58153851E-06  -.56523260E-06  -.54445500E-06  -.51944089E-06
+  -.49045720E-06  -.45780002E-06  -.42179166E-06  -.38277765E-06  -.34112351E-06
+  -.29721150E-06  -.25143716E-06  -.20420588E-06  -.15592938E-06  -.10702227E-06
+  -.57898509E-07  -.89680541E-08   .39366504E-07   .86713151E-07   .13269353E-06
+   .17694590E-06   .21912784E-06   .25891885E-06   .29602265E-06   .33016931E-06
+   .36111708E-06   .38865399E-06   .41259922E-06   .43280407E-06   .44915281E-06
+   .46156312E-06   .46998635E-06   .47440738E-06   .47484433E-06   .47134792E-06
+   .46400060E-06   .45291543E-06   .43823471E-06   .42012843E-06   .39879244E-06
+   .37444653E-06   .34733224E-06   .31771061E-06   .28585974E-06   .25207228E-06
+   .21665282E-06   .17991523E-06   .14217991E-06   .10377116E-06   .65014363E-07
+   .26233367E-07  -.12252182E-07  -.50129393E-07  -.87094611E-07  -.12285577E-06
+  -.15713465E-06  -.18966894E-06  -.22021420E-06  -.24854558E-06  -.27445945E-06
+  -.29777474E-06  -.31833410E-06  -.33600493E-06  -.35068007E-06  -.36227835E-06
+  -.37074492E-06  -.37605131E-06  -.37819535E-06  -.37720080E-06  -.37311680E-06
+  -.36601717E-06  -.35599943E-06  -.34318371E-06  -.32771148E-06  -.30974405E-06
+  -.28946107E-06  -.26705876E-06  -.24274810E-06  -.21675294E-06  -.18930795E-06
+  -.16065662E-06  -.13104913E-06  -.10074021E-06  -.69987027E-07  -.39047039E-07
+  -.81759050E-08   .22374577E-07   .52358477E-07   .81537649E-07   .10968358E-06
+   .13657912E-06   .16202009E-06   .18581680E-06   .20779538E-06   .22779901E-06
+   .24568896E-06   .26134550E-06   .27466861E-06   .28557855E-06   .29401626E-06
+   .29994356E-06   .30334318E-06   .30421867E-06   .30259409E-06   .29851354E-06
+   .29204056E-06   .28325738E-06   .27226400E-06   .25917715E-06   .24412915E-06
+   .22726664E-06   .20874919E-06   .18874789E-06   .16744374E-06   .14502616E-06
+   .12169127E-06   .97640253E-07   .73077659E-07   .48209706E-07   .23242584E-07
+  -.16192054E-08  -.26174492E-07  -.50227020E-07  -.73586976E-07  -.96072450E-07
+  -.11751081E-06  -.13773997E-06  -.15660961E-06  -.17398222E-06  -.18973406E-06
+  -.20375600E-06  -.21595423E-06  -.22625084E-06  -.23458423E-06  -.24090945E-06
+  -.24519836E-06  -.24743963E-06  -.24763866E-06  -.24581733E-06  -.24201364E-06
+  -.23628119E-06  -.22868858E-06  -.21931870E-06  -.20826786E-06  -.19564487E-06
+  -.18157003E-06  -.16617401E-06  -.14959670E-06  -.13198594E-06  -.11349627E-06
+  -.94287586E-07  -.74523803E-07  -.54371484E-07  -.33998464E-07  -.13572488E-07
+   .67401425E-08   .26775892E-07   .46375279E-07   .65384115E-07   .83654685E-07
+   .10104687E-06   .11742918E-06   .13267975E-06   .14668716E-06   .15935126E-06
+   .17058387E-06   .18030928E-06   .18846481E-06   .19500113E-06   .19988252E-06
+   .20308701E-06   .20460641E-06   .20444622E-06   .20262546E-06   .19917636E-06
+   .19414395E-06   .18758557E-06   .17957030E-06   .17017824E-06   .15949980E-06
+   .14763480E-06   .13469163E-06   .12078627E-06   .10604125E-06   .90584633E-07
+   .74548919E-07   .58069923E-07   .41285656E-07   .24335193E-07   .73575421E-08
+ 15.1178079086313861 T
+ Non local Part
+ 2 2 1.60783796536775347
+ 10.9995361597666310 -2.62145997968654187 -2.62145997968654187 0.509270725655861844
+ Reciprocal Space Part
+   .00000000E+00   .14861775E-01   .59196749E-01   .13225845E+00   .23281794E+00
+   .35918630E+00   .50924537E+00   .68048638E+00   .87005535E+00   .10748047E+01
+   .12913498E+01   .15161293E+01   .17454685E+01   .19756440E+01   .22029482E+01
+   .24237537E+01   .26345741E+01   .28321230E+01   .30133671E+01   .31755745E+01
+   .33163567E+01   .34337036E+01   .35260107E+01   .35920984E+01   .36312234E+01
+   .36430815E+01   .36278026E+01   .35859374E+01   .35184374E+01   .34266272E+01
+   .33121714E+01   .31770353E+01   .30234427E+01   .28538281E+01   .26707884E+01
+   .24770321E+01   .22753281E+01   .20684561E+01   .18591573E+01   .16500887E+01
+   .14437803E+01   .12425961E+01   .10487007E+01   .86403021E+00   .69026937E+00
+   .52883413E+00   .38086047E+00   .24719903E+00   .12841556E+00   .24796917E-01
+  -.63637788E-01  -.13712134E+00  -.19611841E+00  -.24130208E+00  -.27352739E+00
+  -.29380287E+00  -.30326050E+00  -.30312506E+00  -.29468335E+00  -.27925415E+00
+  -.25815934E+00  -.23269690E+00  -.20411628E+00  -.17359632E+00  -.14222643E+00
+  -.11099093E+00  -.80756876E-01  -.52265432E-01  -.26126690E-01  -.28178995E-02
+   .17315100E-01   .34053483E-01   .47298383E-01   .57061516E-01   .63453890E-01
+   .66672990E-01   .66988865E-01   .64729545E-01   .60266207E-01   .53998468E-01
+   .46340186E-01   .37706099E-01   .28499585E-01   .19101779E-01   .98622473E-02
+   .10913473E-02  -.69456460E-02  -.14032617E-01  -.20004909E-01  -.24749924E-01
+  -.28206117E-01  -.30360557E-01  -.31245206E-01  -.30932144E-01  -.29527935E-01
+  -.27167385E-01  -.24006902E-01  -.20217702E-01  -.15979063E-01  -.11471837E-01
+ Real Space Part
+   .00000000E+00   .76044216E-02   .30245439E-01   .67412219E-01   .11827285E+00
+   .18170281E+00   .25632327E+00   .34054787E+00   .43263619E+00   .53075194E+00
+   .63302361E+00   .73760552E+00   .84273685E+00   .94679654E+00   .10483521E+01
+   .11462007E+01   .12394006E+01   .13272924E+01   .14095095E+01   .14859765E+01
+   .15568971E+01   .16227312E+01   .16841621E+01   .17420558E+01   .17974136E+01
+   .18513196E+01   .19048858E+01   .19591962E+01   .20152529E+01   .20739250E+01
+   .21359034E+01   .22016624E+01   .22714299E+01   .23451668E+01   .24225568E+01
+   .25030070E+01   .25856579E+01   .26694044E+01   .27529257E+01   .28347230E+01
+   .29131636E+01   .29865310E+01   .30530770E+01   .31110762E+01   .31588796E+01
+   .31949656E+01   .32179879E+01   .32268169E+01   .32205752E+01   .31986643E+01
+   .31607839E+01   .31069407E+01   .30374497E+01   .29529253E+01   .28542644E+01
+   .27426222E+01   .26193806E+01   .24861118E+01   .23445369E+01   .21964828E+01
+   .20438368E+01   .18885013E+01   .17323508E+01   .15771909E+01   .14247206E+01
+   .12765005E+01   .11339257E+01   .99820439E+00   .87034299E+00   .75113777E+00
+   .64117213E+00   .54081990E+00   .45025394E+00   .36945930E+00   .29825042E+00
+   .23629132E+00   .18311803E+00   .13816245E+00   .10077669E+00   .70257121E-01
+   .45867528E-01   .26860581E-01   .12497260E-01   .20637587E-02  -.51143592E-02
+  -.96609218E-02  -.12140841E-01  -.13054671E-01  -.12835862E-01  -.11850460E-01
+  -.10398956E-01  -.87199302E-02  -.69951156E-02  -.53555130E-02  -.38881737E-02
+  -.26433075E-02  -.16413967E-02  -.88004571E-03  -.34033831E-03   .74684857E-05
+ Reciprocal Space Part
+   .00000000E+00   .71116440E-01   .28336969E+00   .63346732E+00   .11159089E+01
+   .17229697E+01   .24446845E+01   .32688376E+01   .41809658E+01   .51643837E+01
+   .62002390E+01   .72676057E+01   .83436246E+01   .94036966E+01   .10421735E+02
+   .11370481E+02   .12221878E+02   .12947517E+02   .13519130E+02   .13909140E+02
+   .14091257E+02   .14041094E+02   .13736808E+02   .13159735E+02   .12295011E+02
+   .11132150E+02   .96655748E+01   .78950621E+01   .58261036E+01   .34701532E+01
+   .84475161E+00  -.20264837E+01  -.51140121E+01  -.83826708E+01  -.11792123E+02
+  -.15297454E+02  -.18849893E+02  -.22397676E+02  -.25886996E+02  -.29263054E+02
+  -.32471169E+02  -.35457926E+02  -.38172333E+02  -.40566958E+02  -.42599021E+02
+  -.44231406E+02  -.45433563E+02  -.46182284E+02  -.46462326E+02  -.46266857E+02
+  -.45597714E+02  -.44465470E+02  -.42889294E+02  -.40896607E+02  -.38522549E+02
+  -.35809256E+02  -.32804975E+02  -.29563023E+02  -.26140637E+02  -.22597719E+02
+  -.18995527E+02  -.15395334E+02  -.11857095E+02  -.84381485E+01  -.51919963E+01
+  -.21671800E+01   .59370742E+00   .30548564E+01   .51878996E+01   .69723799E+01
+   .83960181E+01   .94547742E+01   .10152705E+02   .10501625E+02   .10520578E+02
+   .10235145E+02   .96766006E+01   .88809480E+01   .78878596E+01   .67395538E+01
+   .54796378E+01   .41519509E+01   .27994367E+01   .14630765E+01   .18091015E+00
+  -.10128310E+01  -.20884584E+01  -.30214099E+01  -.37926737E+01  -.43890416E+01
+  -.48031934E+01  -.50336130E+01  -.50843442E+01  -.49645995E+01  -.46882365E+01
+  -.42731223E+01  -.37404085E+01  -.31137394E+01  -.24184212E+01  -.16805761E+01
+ Real Space Part
+   .00000000E+00   .26267779E+00   .10336297E+01   .22623044E+01   .38667344E+01
+   .57368711E+01   .77390758E+01   .97215947E+01   .11520811E+02   .12968037E+02
+   .13896585E+02   .14148855E+02   .13583167E+02   .12080073E+02   .95479287E+01
+   .59274838E+01   .11953486E+01  -.46338199E+01  -.11506484E+02  -.19330785E+02
+  -.27978471E+02  -.37288145E+02  -.47069691E+02  -.57109751E+02  -.67178040E+02
+  -.77034285E+02  -.86435546E+02  -.95143662E+02  -.10293256E+03  -.10959522E+03
+  -.11494995E+03  -.11884594E+03  -.12116776E+03  -.12183873E+03  -.12082307E+03
+  -.11812676E+03  -.11379710E+03  -.10792102E+03  -.10062220E+03  -.92057157E+02
+  -.82410394E+02  -.71888821E+02  -.60715656E+02  -.49123986E+02  -.37350233E+02
+  -.25627708E+02  -.14180481E+02  -.32177363E+01   .70712290E+01   .16521217E+02
+   .24994461E+02   .32383006E+02   .38610101E+02   .43630616E+02   .47430504E+02
+   .50025380E+02   .51458316E+02   .51796945E+02   .51130024E+02   .49563588E+02
+   .47216847E+02   .44217959E+02   .40699848E+02   .36796173E+02   .32637584E+02
+   .28348353E+02   .24043478E+02   .19826300E+02   .15786686E+02   .11999785E+02
+   .85253518E+01   .54076191E+01   .26756638E+01   .34422249E+00  -.15851191E+01
+  -.31224363E+01  -.42877542E+01  -.51091980E+01  -.56210809E+01  -.58620054E+01
+  -.58730416E+01  -.56960425E+01  -.53721387E+01  -.49404502E+01  -.44370358E+01
+  -.38940935E+01  -.33394093E+01  -.27960482E+01  -.22822661E+01  -.18116204E+01
+  -.13932475E+01  -.10322744E+01  -.73032938E+00  -.48611763E+00  -.29602674E+00
+  -.15473353E+00  -.55784477E-01   .78718306E-02   .43417289E-01   .57773521E-01
+ Non local Part
+ 0 2 1.60783796536775347
+ 4.55068527853635008 -0.166977273103439572 -0.166977273103439572 0.292510511024706536E-01
+ Reciprocal Space Part
+   .13796039E+02   .13764623E+02   .13670727E+02   .13515407E+02   .13300402E+02
+   .13028110E+02   .12701546E+02   .12324298E+02   .11900468E+02   .11434610E+02
+   .10931659E+02   .10396854E+02   .98356619E+01   .92536966E+01   .86566346E+01
+   .80501357E+01   .74397644E+01   .68309148E+01   .62287401E+01   .56380887E+01
+   .50634473E+01   .45088913E+01   .39780442E+01   .34740460E+01   .29995305E+01
+   .25566126E+01   .21468839E+01   .17714182E+01   .14307850E+01   .11250709E+01
+   .85390848E+00   .61651113E+00   .41171330E+00   .23801507E+00   .93629950E-01
+  -.23465254E-01  -.11547945E+00  -.18475638E+00  -.23372464E+00  -.26484981E+00
+  -.28058922E+00  -.28335032E+00  -.27545326E+00  -.25909798E+00  -.23633644E+00
+  -.20905002E+00  -.17893230E+00  -.14747717E+00  -.11597208E+00  -.85496292E-01
+  -.56923642E-01  -.30929510E-01  -.80014181E-02   .11547253E-01   .27561027E-01
+   .40024168E-01   .49041200E-01   .54816689E-01   .57634868E-01   .57839600E-01
+   .55815183E-01   .51968378E-01   .46712029E-01   .40450541E-01   .33567418E-01
+   .26414995E-01   .19306422E-01   .12509884E-01   .62450068E-02   .68129067E-03
+  -.40615681E-02  -.79117039E-02  -.10841687E-01  -.12863975E-01  -.14025479E-01
+  -.14401521E-01  -.14089457E-01  -.13202209E-01  -.11861945E-01  -.10194117E-01
+  -.83220218E-02  -.63620394E-02  -.44196449E-02  -.25862665E-02  -.93702477E-03
+   .47064882E-03   .15975449E-02   .24224199E-02   .29410322E-02   .31645734E-02
+   .31176083E-02   .28356475E-02   .23624803E-02   .17473940E-02   .10423985E-02
+   .29956886E-03  -.43139739E-03  -.11053257E-02  -.16833483E-02  -.21342795E-02
+ Real Space Part
+   .51966267E+01   .52000788E+01   .52103164E+01   .52269867E+01   .52495133E+01
+   .52771126E+01   .53088162E+01   .53434991E+01   .53799113E+01   .54167133E+01
+   .54525138E+01   .54859077E+01   .55155151E+01   .55400176E+01   .55581933E+01
+   .55689477E+01   .55713401E+01   .55646055E+01   .55481706E+01   .55216631E+01
+   .54849160E+01   .54379651E+01   .53810407E+01   .53145536E+01   .52390772E+01
+   .51553241E+01   .50641209E+01   .49663796E+01   .48630682E+01   .47551807E+01
+   .46437084E+01   .45296116E+01   .44137950E+01   .42970856E+01   .41802142E+01
+   .40638014E+01   .39483484E+01   .38342313E+01   .37217016E+01   .36108893E+01
+   .35018118E+01   .33943848E+01   .32884374E+01   .31837290E+01   .30799677E+01
+   .29768305E+01   .28739823E+01   .27710958E+01   .26678692E+01   .25640429E+01
+   .24594132E+01   .23538435E+01   .22472733E+01   .21397230E+01   .20312960E+01
+   .19221776E+01   .18126311E+01   .17029909E+01   .15936535E+01   .14850662E+01
+   .13777148E+01   .12721098E+01   .11687725E+01   .10682206E+01   .97095509E+00
+   .87744703E+00   .78812623E+00   .70337134E+00   .62350167E+00   .54877111E+00
+   .47936405E+00   .41539338E+00   .35690054E+00   .30385752E+00   .25617052E+00
+   .21368519E+00   .17619308E+00   .14343912E+00   .11512978E+00   .90941548E-01
+   .70529633E-01   .53536423E-01   .39599584E-01   .28359550E-01   .19466236E-01
+   .12584854E-01   .74007349E-02   .36231230E-02   .98791858E-03  -.74058734E-03
+  -.17689365E-02  -.22745956E-02  -.24068127E-02  -.22881165E-02  -.20163290E-02
+  -.16669620E-02  -.12958644E-02  -.94200201E-03  -.63025388E-03  -.37413154E-03
+ Reciprocal Space Part
+  -.15515252E+02  -.15170383E+02  -.14142539E+02  -.12451864E+02  -.10131446E+02
+  -.72266077E+01  -.37939229E+01   .99991646E-01   .43799035E+01   .89635653E+01
+   .13763455E+02   .18688616E+02   .23646549E+02   .28545123E+02   .33294448E+02
+   .37808680E+02   .42007711E+02   .45818708E+02   .49177467E+02   .52029566E+02
+   .54331267E+02   .56050187E+02   .57165697E+02   .57669056E+02   .57563293E+02
+   .56862821E+02   .55592830E+02   .53788444E+02   .51493693E+02   .48760325E+02
+   .45646469E+02   .42215218E+02   .38533137E+02   .34668750E+02   .30691037E+02
+   .26667979E+02   .22665173E+02   .18744566E+02   .14963313E+02   .11372796E+02
+   .80178182E+01   .49359775E+01   .21572398E+01  -.29629525E+00  -.24104350E+01
+  -.41787489E+01  -.56022496E+01  -.66889165E+01  -.74530803E+01  -.79146903E+01
+  -.80984893E+01  -.80331197E+01  -.77501887E+01  -.72833167E+01  -.66671956E+01
+  -.59366788E+01  -.51259258E+01  -.42676201E+01  -.33922772E+01  -.25276543E+01
+  -.16982727E+01  -.92505829E+00  -.22510272E+00   .38845606E+00   .90643747E+00
+   .13235140E+01   .16380082E+01   .18516039E+01   .19689839E+01   .19974115E+01
+   .19462689E+01   .18265718E+01   .16504730E+01   .14307724E+01   .11804470E+01
+   .91221307E+00   .63813203E+00   .36926894E+00   .11541019E+00  -.11515471E+00
+  -.31578520E+00  -.48157525E+00  -.60937451E+00  -.69774889E+00  -.74688609E+00
+  -.75845307E+00  -.73541344E+00  -.68181379E+00  -.60254812E+00  -.50310996E+00
+  -.38934138E+00  -.26718774E+00  -.14246626E+00  -.20655489E-01   .93288210E-01
+   .19508268E+00   .28123695E+00   .34913134E+00   .39706016E+00   .42423768E+00
+ Real Space Part
+   .16746359E+03   .16704432E+03   .16579443E+03   .16373748E+03   .16091209E+03
+   .15737086E+03   .15317910E+03   .14841307E+03   .14315810E+03   .13750634E+03
+   .13155450E+03   .12540143E+03   .11914565E+03   .11288302E+03   .10670444E+03
+   .10069379E+03   .94926032E+02   .89465657E+02   .84365429E+02   .79665462E+02
+   .75392683E+02   .71560663E+02   .68169819E+02   .65207980E+02   .62651274E+02
+   .60465322E+02   .58606689E+02   .57024539E+02   .55662449E+02   .54460319E+02
+   .53356324E+02   .52288851E+02   .51198357E+02   .50029108E+02   .48730746E+02
+   .47259644E+02   .45580016E+02   .43664764E+02   .41496038E+02   .39065505E+02
+   .36374338E+02   .33432917E+02   .30260290E+02   .26883384E+02   .23336028E+02
+   .19657813E+02   .15892820E+02   .12088276E+02   .82931720E+01   .45568731E+01
+   .92778691E+00  -.25478964E+01  -.58273472E+01  -.88720990E+01  -.11648886E+02
+  -.14130303E+02  -.16295271E+02  -.18129313E+02  -.19624636E+02  -.20780029E+02
+  -.21600591E+02  -.22097304E+02  -.22286478E+02  -.22189081E+02  -.21829991E+02
+  -.21237188E+02  -.20440926E+02  -.19472883E+02  -.18365354E+02  -.17150468E+02
+  -.15859473E+02  -.14522107E+02  -.13166043E+02  -.11816447E+02  -.10495630E+02
+  -.92228138E+01  -.80139899E+01  -.68818870E+01  -.58360219E+01  -.48828340E+01
+  -.40258887E+01  -.32661372E+01  -.26022195E+01  -.20307969E+01  -.15469014E+01
+  -.11442891E+01  -.81578603E+00  -.55361747E+00  -.34971122E+00  -.19596927E+00
+  -.84502293E-01  -.78244379E-02   .40993116E-01   .68209507E-01   .79340754E-01
+   .79122675E-01   .71506339E-01   .59681529E-01   .46123225E-01   .32655932E-01
+ Non local Part
+ 1 2 1.60783796536775347
+ 8.58730342702083149 -3.20137177333169598 -3.20137177333169598 0.931568281602889847
+ Reciprocal Space Part
+   .00000000E+00   .77227658E+00   .15357215E+01   .22816455E+01   .30016410E+01
+   .36877162E+01   .43324209E+01   .49289621E+01   .54713061E+01   .59542673E+01
+   .63735791E+01   .67259490E+01   .70090943E+01   .72217596E+01   .73637150E+01
+   .74357363E+01   .74395672E+01   .73778649E+01   .72541304E+01   .70726251E+01
+   .68382758E+01   .65565710E+01   .62334487E+01   .58751810E+01   .54882554E+01
+   .50792568E+01   .46547518E+01   .42211784E+01   .37847417E+01   .33513188E+01
+   .29263748E+01   .25148887E+01   .21212942E+01   .17494319E+01   .14025172E+01
+   .10831204E+01   .79316188E+00   .53391940E+00   .30604848E+00   .10961353E+00
+  -.55870631E-01  -.19138885E+00  -.29836856E+00  -.37861726E+00  -.43425635E+00
+  -.46765282E+00  -.48135059E+00  -.47800300E+00  -.46030791E+00  -.43094671E+00
+  -.39252851E+00  -.34754024E+00  -.29830364E+00  -.24693954E+00  -.19533982E+00
+  -.14514721E+00  -.97742728E-01  -.54240634E-01  -.15490341E-01   .17915227E-01
+   .45625590E-01   .67513768E-01   .83653350E-01   .94292475E-01   .99825698E-01
+   .10076466E+00   .97708444E-01   .91314548E-01   .82271071E-01   .71270959E-01
+   .58988762E-01   .46060388E-01   .33066178E-01   .20517502E-01   .88469661E-02
+  -.15978042E-02  -.10556930E-01  -.17857826E-01  -.23411841E-01  -.27208358E-01
+  -.29306776E-01  -.29826842E-01  -.28937790E-01  -.26846767E-01  -.23787007E-01
+  -.20006178E-01  -.15755295E-01  -.11278536E-01  -.68042482E-02  -.25373655E-02
+   .13466133E-02   .47059911E-02   .74355627E-02   .94676624E-02   .10771664E-01
+   .11352069E-01   .11245369E-01   .10515888E-01   .92508450E-02   .75548723E-02
+ Real Space Part
+   .00000000E+00   .12071756E+00   .24225583E+00   .36539902E+00   .49085965E+00
+   .61924628E+00   .75103508E+00   .88654664E+00   .10259286E+01   .11691449E+01
+   .13159723E+01   .14660032E+01   .16186564E+01   .17731933E+01   .19287407E+01
+   .20843174E+01   .22388654E+01   .23912829E+01   .25404591E+01   .26853078E+01
+   .28248003E+01   .29579950E+01   .30840632E+01   .32023099E+01   .33121893E+01
+   .34133137E+01   .35054567E+01   .35885489E+01   .36626693E+01   .37280294E+01
+   .37849535E+01   .38338552E+01   .38752106E+01   .39095302E+01   .39373302E+01
+   .39591050E+01   .39753014E+01   .39862959E+01   .39923758E+01   .39937257E+01
+   .39904185E+01   .39824126E+01   .39695541E+01   .39515859E+01   .39281600E+01
+   .38988562E+01   .38632040E+01   .38207068E+01   .37708689E+01   .37132231E+01
+   .36473579E+01   .35729430E+01   .34897536E+01   .33976898E+01   .32967935E+01
+   .31872594E+01   .30694419E+01   .29438558E+01   .28111722E+01   .26722092E+01
+   .25279177E+01   .23793625E+01   .22277006E+01   .20741559E+01   .19199926E+01
+   .17664867E+01   .16148985E+01   .14664450E+01   .13222741E+01   .11834417E+01
+   .10508915E+01   .92543827E+00   .80775528E+00   .69836614E+00   .59764059E+00
+   .50579467E+00   .42289493E+00   .34886626E+00   .28350294E+00   .22648252E+00
+   .17738162E+00   .13569348E+00   .10084614E+00   .72221068E-01   .49171293E-01
+   .31038781E-01   .17170414E-01   .69322715E-02  -.27809218E-03  -.50215843E-02
+  -.78098174E-02  -.90996801E-02  -.92901640E-02  -.87213059E-02  -.76750390E-02
+  -.63777027E-02  -.50039211E-02  -.36815469E-02  -.24973552E-02  -.15031837E-02
+ Reciprocal Space Part
+   .00000000E+00   .93692991E-01   .19503478E+00   .31144629E+00   .44989871E+00
+   .61670363E+00   .81732059E+00   .10561873E+01   .13365767E+01   .16604855E+01
+   .20285556E+01   .24400317E+01   .28927567E+01   .33832020E+01   .39065366E+01
+   .44567282E+01   .50266771E+01   .56083783E+01   .61931067E+01   .67716217E+01
+   .73343857E+01   .78717897E+01   .83743824E+01   .88330945E+01   .92394542E+01
+   .95857881E+01   .98654021E+01   .10072739E+02   .10203506E+02   .10254775E+02
+   .10225048E+02   .10114287E+02   .99239118E+01   .96567626E+01   .93170295E+01
+   .89101532E+01   .84426961E+01   .79221910E+01   .73569698E+01   .67559763E+01
+   .61285699E+01   .54843227E+01   .48328174E+01   .41834499E+01   .35452403E+01
+   .29266592E+01   .23354708E+01   .17785968E+01   .12620049E+01   .79062237E+00
+   .36827693E+00  -.23348789E-02  -.31965183E+00  -.58322562E+00  -.79367351E+00
+  -.95260799E+00  -.10625464E+01  -.11268030E+01  -.11493684E+01  -.11347770E+01
+  -.10879706E+01  -.10141573E+01  -.91867315E+00  -.80684754E+00  -.68387738E+00
+  -.55471149E+00  -.42394865E+00  -.29575080E+00  -.17377316E+00  -.61111950E-01
+   .39729644E-01   .12685752E+00   .19898523E+00   .25541621E+00   .29601107E+00
+   .32114180E+00   .33163499E+00   .32870627E+00   .31388858E+00   .28895652E+00
+   .25584936E+00   .21659505E+00   .17323740E+00   .12776835E+00   .82067171E-01
+   .37847812E-01  -.33843801E-02  -.40365951E-01  -.72098220E-01  -.97859761E-01
+  -.11720876E+00  -.12997589E+00  -.13624850E+00  -.13634734E+00  -.13079696E+00
+  -.12029122E+00  -.10565547E+00  -.87806753E-01  -.67713621E-01  -.46356904E-01
+ Real Space Part
+   .00000000E+00   .16353531E+01   .32489859E+01   .48197584E+01   .63276727E+01
+   .77543961E+01   .90837291E+01   .10302004E+02   .11398399E+02   .12365160E+02
+   .13197725E+02   .13894742E+02   .14457990E+02   .14892199E+02   .15204784E+02
+   .15405497E+02   .15506011E+02   .15519460E+02   .15459943E+02   .15342006E+02
+   .15180135E+02   .14988266E+02   .14779329E+02   .14564847E+02   .14354595E+02
+   .14156342E+02   .13975665E+02   .13815855E+02   .13677909E+02   .13560609E+02
+   .13460675E+02   .13373001E+02   .13290939E+02   .13206646E+02   .13111459E+02
+   .12996290E+02   .12852037E+02   .12669973E+02   .12442123E+02   .12161600E+02
+   .11822898E+02   .11422124E+02   .10957170E+02   .10427819E+02   .98357819E+01
+   .91846606E+01   .84798527E+01   .77283925E+01   .69387401E+01   .61205269E+01
+   .52842678E+01   .44410502E+01   .36022122E+01   .27790211E+01   .19823628E+01
+   .12224515E+01   .50857062E+00  -.15115030E+00  -.74991449E+00  -.12823903E+01
+  -.17447941E+01  -.21349230E+01  -.24521399E+01  -.26973124E+01  -.28727114E+01
+  -.29818731E+01  -.30294338E+01  -.30209405E+01  -.29626494E+01  -.28613151E+01
+  -.27239820E+01  -.25577810E+01  -.23697403E+01  -.21666137E+01  -.19547318E+01
+  -.17398778E+01  -.15271912E+01  -.13210998E+01  -.11252794E+01  -.94264027E+00
+  -.77533840E+00  -.62480912E+00  -.49181898E+00  -.37653290E+00  -.27859257E+00
+  -.19720204E+00  -.13121684E+00  -.79233160E-01  -.39673727E-01  -.10867846E-01
+   .88766723E-02   .21211315E-01   .27695477E-01   .29756402E-01   .28660470E-01
+   .25495368E-01   .21162335E-01   .16377305E-01   .11679600E-01   .74466403E-02
+ PAW radial sets
+ 311 1.20588293416284009
+(5E20.12)                                
+ augmentation charges (non sperical)
+   .378637605164E+00  -.486077197361E-01  -.164680904670E+00   .742017217161E-02  -.247503338040E+00
+   .113438694657E+00  -.486077197361E-01   .575257143956E-02   .142820857345E-01  -.561393271961E-03
+   .243965099956E-01  -.124375285059E-01  -.164680904670E+00   .142820857345E-01  -.138717223370E+00
+  -.306285883422E-02  -.615122950370E-01  -.351119861273E-01   .742017217161E-02  -.561393271961E-03
+  -.306285883422E-02  -.138005263691E-03  -.298465668133E-02   .951621313499E-03  -.247503338040E+00
+   .243965099956E-01  -.615122950370E-01  -.298465668133E-02   .138605920817E-01  -.557718621219E-01
+   .113438694657E+00  -.124375285059E-01  -.351119861273E-01   .951621313499E-03  -.557718621219E-01
+   .277120201159E-01
+ uccopancies in atom
+   .180000000752E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .999999999625E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .674052280246E-04   .695970778845E-04   .718602012338E-04   .741969157087E-04   .766096143089E-04
+   .791007678486E-04   .816729274867E-04   .843287273396E-04   .870708871782E-04   .899022152139E-04
+   .928256109741E-04   .958440682714E-04   .989606782699E-04   .102178632651E-03   .105501226880E-03
+   .108931863585E-03   .112474056037E-03   .116131431750E-03   .119907736198E-03   .123806836646E-03
+   .127832726114E-03   .131989527463E-03   .136281497623E-03   .140713031945E-03   .145288668708E-03
+   .150013093763E-03   .154891145335E-03   .159927818976E-03   .165128272678E-03   .170497832160E-03
+   .176041996322E-03   .181766442872E-03   .187677034142E-03   .193779823095E-03   .200081059521E-03
+   .206587196435E-03   .213304896691E-03   .220241039801E-03   .227402728981E-03   .234797298427E-03
+   .242432320824E-03   .250315615103E-03   .258455254445E-03   .266859574553E-03   .275537182184E-03
+   .284496963967E-03   .293748095502E-03   .303300050756E-03   .313162611766E-03   .323345878655E-03
+   .333860279980E-03   .344716583405E-03   .355925906735E-03   .367499729295E-03   .379449903692E-03
+   .391788667949E-03   .404528658037E-03   .417682920821E-03   .431264927414E-03   .445288586980E-03
+   .459768260969E-03   .474718777834E-03   .490155448211E-03   .506094080598E-03   .522550997549E-03
+   .539543052384E-03   .557087646452E-03   .575202746951E-03   .593906905327E-03   .613219276272E-03
+   .633159637341E-03   .653748409207E-03   .675006676572E-03   .696956209758E-03   .719619487006E-03
+   .743019717493E-03   .767180865098E-03   .792127672949E-03   .817885688756E-03   .844481290980E-03
+   .871941715839E-03   .900295085210E-03   .929570435419E-03   .959797746984E-03   .991007975314E-03
+   .102323308241E-02   .105650606959E-02   .109086101132E-02   .112633309004E-02   .116295863227E-02
+   .120077514576E-02   .123982135794E-02   .128013725552E-02   .132176412552E-02   .136474459748E-02
+   .140912268717E-02   .145494384163E-02   .150225498572E-02   .155110457018E-02   .160154262127E-02
+   .165362079196E-02   .170739241483E-02   .176291255674E-02   .182023807516E-02   .187942767642E-02
+   .194054197586E-02   .200364355985E-02   .206879704994E-02   .213606916899E-02   .220552880952E-02
+   .227724710429E-02   .235129749908E-02   .242775582798E-02   .250670039100E-02   .258821203426E-02
+   .267237423282E-02   .275927317611E-02   .284899785625E-02   .294164015916E-02   .303729495864E-02
+   .313606021357E-02   .323803706820E-02   .334332995574E-02   .345204670532E-02   .356429865237E-02
+   .368020075271E-02   .379987170021E-02   .392343404838E-02   .405101433586E-02   .418274321602E-02
+   .431875559073E-02   .445919074857E-02   .460419250739E-02   .475390936167E-02   .490849463456E-02
+   .506810663488E-02   .523290881927E-02   .540306995956E-02   .557876431563E-02   .576017181386E-02
+   .594747823138E-02   .614087538632E-02   .634056133427E-02   .654674057110E-02   .675962424235E-02
+   .697943035951E-02   .720638402325E-02   .744071765396E-02   .768267122975E-02   .793249253222E-02
+   .819043740022E-02   .845676999183E-02   .873176305490E-02   .901569820636E-02   .930886622062E-02
+   .961156732733E-02   .992411151889E-02   .102468188679E-01   .105800198548E-01   .109240557065E-01
+   .112792787459E-01   .116460527524E-01   .120247533345E-01   .124157683149E-01   .128194981269E-01
+   .132363562253E-01   .136667695090E-01   .141111787590E-01   .145700390892E-01   .150438204126E-01
+   .155330079227E-01   .160381025902E-01   .165596216762E-01   .170980992620E-01   .176540867954E-01
+   .182281536564E-01   .188208877397E-01   .194328960566E-01   .200648053572E-01   .207172627718E-01
+   .213909364739E-01   .220865163642E-01   .228047147773E-01   .235462672110E-01   .243119330800E-01
+   .251024964929E-01   .259187670557E-01   .267615807010E-01   .276318005434E-01   .285303177642E-01
+   .294580525234E-01   .304159549026E-01   .314050058775E-01   .324262183228E-01   .334806380491E-01
+   .345693448745E-01   .356934537298E-01   .368541158008E-01   .380525197069E-01   .392898927183E-01
+   .405675020133E-01   .418866559752E-01   .432487055331E-01   .446550455447E-01   .461071162251E-01
+   .476064046215E-01   .491544461364E-01   .507528260994E-01   .524031813913E-01   .541072021202E-01
+   .558666333522E-01   .576832768986E-01   .595589931612E-01   .614957030373E-01   .634953898870E-01
+   .655601015645E-01   .676919525150E-01   .698931259400E-01   .721658760335E-01   .745125302903E-01
+   .769354918893E-01   .794372421550E-01   .820203430982E-01   .846874400400E-01   .874412643208E-01
+   .902846360972E-01   .932204672305E-01   .962517642682E-01   .993816315234E-01   .102613274254E+00
+   .105950001944E+00   .109395231694E+00   .112952491721E+00   .116625424970E+00   .120417792845E+00
+   .124333479062E+00   .128376493627E+00   .132550976940E+00   .136861204036E+00   .141311588964E+00
+   .145906689308E+00   .150651210852E+00   .155550012400E+00   .160608110753E+00   .165830685847E+00
+   .171223086053E+00   .176790833662E+00   .182539630534E+00   .188475363938E+00   .194604112585E+00
+   .200932152848E+00   .207465965195E+00   .214212240818E+00   .221177888496E+00   .228370041658E+00
+   .235796065699E+00   .243463565517E+00   .251380393300E+00   .259554656573E+00   .267994726495E+00
+   .276709246435E+00   .285707140824E+00   .294997624292E+00   .304590211105E+00   .314494724910E+00
+   .324721308796E+00   .335280435677E+00   .346182919023E+00   .357439923929E+00   .369062978552E+00
+   .381063985915E+00   .393455236098E+00   .406249418825E+00   .419459636457E+00   .433099417411E+00
+   .447182730014E+00   .461723996810E+00   .476738109326E+00   .492240443325E+00   .508246874552E+00
+   .524773794991E+00   .541838129654E+00   .559457353910E+00   .577649511383E+00   .596433232434E+00
+   .615827753234E+00   .635852935467E+00   .656529286669E+00   .677877981231E+00   .699920882082E+00
+   .722680563079E+00   .746180332122E+00   .770444255031E+00   .795497180181E+00   .821364763958E+00
+   .848073497027E+00   .875650731466E+00   .904124708772E+00   .933524588786E+00   .963880479554E+00
+   .995223468161E+00   .102758565257E+01   .106100017448E+01   .109550125328E+01   .113112422109E+01
+   .116790555895E+01   .120588293416E+01   .124509523887E+01   .128558262991E+01   .132738656990E+01
+   .137054986972E+01
+ aepotential
+   .108488371557E+05   .108913437060E+05   .109268576104E+05   .109548996083E+05   .109750159174E+05
+   .109867831331E+05   .109898140283E+05   .109837627229E+05   .109683296916E+05   .109432664025E+05
+   .109083794885E+05   .108635343534E+05   .108086581231E+05   .107437418608E+05   .106688419828E+05
+   .105840808188E+05   .104896462883E+05   .103857906760E+05   .102728285124E+05   .101511335885E+05
+   .100211351505E+05   .988331333965E+04   .973819396454E+04   .958634270255E+04   .942835884190E+04
+   .926486868667E+04   .909651874885E+04   .892396885617E+04   .874788530167E+04   .856893415487E+04
+   .838777484791E+04   .820505413593E+04   .802140052123E+04   .783741921152E+04   .765368767031E+04
+   .747075179744E+04   .728912276447E+04   .710927451048E+04   .693164189268E+04   .675661946899E+04
+   .658456088169E+04   .641577879961E+04   .625054536911E+04   .608909311888E+04   .593161626002E+04
+   .577827232083E+04   .562918405572E+04   .548444156982E+04   .534410460253E+04   .520820491778E+04
+   .507674875269E+04   .494971928168E+04   .482707905804E+04   .470877240057E+04   .459472769823E+04
+   .448485961091E+04   .437907114928E+04   .427725562121E+04   .417929843650E+04   .408507876507E+04
+   .399447104698E+04   .390734635557E+04   .382357361683E+04   .374302069029E+04   .366555531787E+04
+   .359104594837E+04   .351936244571E+04   .345037668991E+04   .338396307948E+04   .331999894435E+04
+   .325836487809E+04   .319894499781E+04   .314162714005E+04   .308630300017E+04   .303286822244E+04
+   .298122244754E+04   .293126932345E+04   .288291648532E+04   .283607550937E+04   .279066184527E+04
+   .274659473096E+04   .270379709357E+04   .266219543951E+04   .262171973636E+04   .258230328910E+04
+   .254388261248E+04   .250639730156E+04   .246978990154E+04   .243400577841E+04   .239899299128E+04
+   .236470216731E+04   .233108637981E+04   .229810103018E+04   .226570373406E+04   .223385421200E+04
+   .220251418481E+04   .217164727394E+04   .214121890680E+04   .211119622717E+04   .208154801063E+04
+   .205224458510E+04   .202325775634E+04   .199456073833E+04   .196612808858E+04   .193793564810E+04
+   .190996048609E+04   .188218084914E+04   .185457611491E+04   .182712675019E+04   .179981427324E+04
+   .177262122034E+04   .174553111653E+04   .171852845046E+04   .169159865328E+04   .166472808166E+04
+   .163790400487E+04   .161111459595E+04   .158434892706E+04   .155759696905E+04   .153084959535E+04
+   .150409859033E+04   .147733666221E+04   .145055746076E+04   .142375559988E+04   .139692668538E+04
+   .137006734801E+04   .134317528205E+04   .131624928956E+04   .128928933034E+04   .126229657784E+04
+   .123527348057E+04   .120822382908E+04   .118115282772E+04   .115406717030E+04   .112697511850E+04
+   .109988658085E+04   .107281318974E+04   .104576837297E+04   .101876741508E+04   .991827502834E+03
+   .964967747775E+03   .938209177461E+03   .911574686099E+03   .885088934576E+03   .858778190203E+03
+   .832670098285E+03   .806793381600E+03   .781177471166E+03   .755852083285E+03   .730846775009E+03
+   .706190533678E+03   .681911485967E+03   .658036846111E+03   .634593256540E+03   .611607697180E+03
+   .589109135713E+03   .567131037091E+03   .545714719486E+03   .524913313373E+03   .504795750094E+03
+   .485449820431E+03   .466983013455E+03   .449519748532E+03   .433193958949E+03   .418136762163E+03
+   .404460633503E+03   .392242181113E+03   .381507397300E+03   .372222416821E+03   .364291929210E+03
+   .357565375693E+03   .351849281085E+03   .346923072255E+03   .342555690971E+03   .338520866554E+03
+   .334609590638E+03   .330638919121E+03   .326456791480E+03   .321943172310E+03   .317008350998E+03
+   .311589482714E+03   .305646373220E+03   .299157237390E+03   .292114868350E+03   .284523432129E+03
+   .276395959787E+03   .267752520667E+03   .258619005773E+03   .249026418878E+03   .239010558901E+03
+   .228611974700E+03   .217876077176E+03   .206853299594E+03   .195599205206E+03   .184174456404E+03
+   .172644591378E+03   .161079616160E+03   .149553523560E+03   .138143994094E+03   .126932681446E+03
+   .116006540223E+03   .105460449841E+03   .954007337351E+02   .859480109246E+02   .772364879250E+02
+   .694062052829E+02   .625860094158E+02   .568684190896E+02   .522817310031E+02   .487676147262E+02
+   .461734885565E+02   .442679622934E+02   .427808529838E+02   .414540856617E+02   .400787469251E+02
+   .385032391990E+02   .366201806992E+02   .343505072145E+02   .316355172567E+02   .284358270377E+02
+   .247318123856E+02   .205222988029E+02   .158215211370E+02   .106557540206E+02   .506074169311E+01
+  -.919700434822E+00  -.723409852089E+01  -.138231954995E+02  -.206198267913E+02  -.275493404787E+02
+  -.345309876325E+02  -.414802922620E+02  -.483114667030E+02  -.549374427770E+02  -.612637819205E+02
+  -.671737491030E+02  -.725082027619E+02  -.770559081981E+02  -.805796990002E+02  -.828986901942E+02
+  -.840164637813E+02  -.842176367177E+02  -.839920317740E+02  -.837759301728E+02  -.837656070293E+02
+  -.839675319426E+02  -.843411972388E+02  -.848786983650E+02  -.856106697333E+02  -.865814504765E+02
+  -.878251061392E+02  -.893545830218E+02  -.911626742872E+02  -.932282709804E+02  -.955226725876E+02
+  -.980138595493E+02  -.100668703894E+03  -.103453800001E+03  -.106335581330E+03  -.109280179956E+03
+  -.112253305157E+03  -.115220303948E+03  -.118146470209E+03  -.120997643250E+03  -.123740899512E+03
+  -.126345177410E+03  -.128781432673E+03  -.131022369997E+03  -.133041807323E+03  -.134815001160E+03
+  -.136321124412E+03  -.137548454538E+03  -.138500586571E+03  -.139199411673E+03  -.139682680930E+03
+  -.139994568506E+03  -.140175756162E+03  -.140256679129E+03  -.140255985756E+03  -.140182498623E+03
+  -.140038198508E+03  -.139820740745E+03  -.139525168799E+03  -.139145039135E+03  -.138673226002E+03
+  -.138102557704E+03  -.137426344171E+03  -.136638735509E+03  -.135735116038E+03  -.134712197461E+03
+  -.133568227887E+03  -.132302758935E+03  -.130917148265E+03  -.129413991552E+03  -.127797225869E+03
+  -.126072072439E+03  -.124244802888E+03  -.122322633435E+03  -.120313558433E+03  -.118226185478E+03
+  -.116069568686E+03  -.113853043867E+03  -.111586068813E+03  -.109278071985E+03  -.106938312864E+03
+  -.104575756905E+03  -.102198967559E+03  -.998160169231E+02  -.974344153277E+02  -.950610587249E+02
+  -.927021914437E+02
+ core charge-density
+   .206024078210E+00   .217017086542E+00   .228591448094E+00   .240777472553E+00   .253607011704E+00
+   .267113534544E+00   .281332205750E+00   .296299967643E+00   .312055625752E+00   .328639938131E+00
+   .346095708524E+00   .364467883544E+00   .383803653967E+00   .404152560279E+00   .425566602617E+00
+   .448100355209E+00   .471811085460E+00   .496758877796E+00   .523006762381E+00   .550620848835E+00
+   .579670465049E+00   .610228301205E+00   .642370559095E+00   .676177106814E+00   .711731638917E+00
+   .749121842076E+00   .788439566301E+00   .829781001737E+00   .873246861056E+00   .918942567420E+00
+   .966978447978E+00   .101746993283E+01   .107053775937E+01   .112630818183E+01   .118491318595E+01
+   .124649070842E+01   .131118486096E+01   .137914615869E+01   .145053175236E+01   .152550566407E+01
+   .160423902600E+01   .168691032151E+01   .177370562797E+01   .186481886066E+01   .196045201676E+01
+   .206081541861E+01   .216612795514E+01   .227661732026E+01   .239252024693E+01   .251408273552E+01
+   .264156027474E+01   .277521805347E+01   .291533116151E+01   .306218477717E+01   .321607433933E+01
+   .337730570142E+01   .354619526471E+01   .372307008772E+01   .390826796867E+01   .410213749735E+01
+   .430503807273E+01   .451733988219E+01   .473942383801E+01   .497168146644E+01   .521451474430E+01
+   .546833587791E+01   .573356701847E+01   .601063990795E+01   .629999544916E+01   .660208319312E+01
+   .691736073667E+01   .724629302288E+01   .758935153636E+01   .794701338543E+01   .831976026247E+01
+   .870807727391E+01   .911245163058E+01   .953337118922E+01   .997132283573E+01   .104267907004E+02
+   .109002541954E+02   .113921858652E+02   .119030490395E+02   .124332952805E+02   .129833616138E+02
+   .135536675359E+02   .141446117887E+02   .147565688953E+02   .153898854488E+02   .160448761508E+02
+   .167218195943E+02   .174209537898E+02   .181424714339E+02   .188865149225E+02   .196531711133E+02
+   .204424658450E+02   .212543582241E+02   .220887346941E+02   .229454029053E+02   .238240854093E+02
+   .247244132060E+02   .256459191778E+02   .265880314505E+02   .275500667280E+02   .285312236550E+02
+   .295305762682E+02   .305470676066E+02   .315795035576E+02   .326265470280E+02   .336867125331E+02
+   .347583613125E+02   .358396970861E+02   .369287625763E+02   .380234369305E+02   .391214341887E+02
+   .402203029483E+02   .413174273880E+02   .424100298189E+02   .434951749370E+02   .445697759554E+02
+   .456306027995E+02   .466742925439E+02   .476973622713E+02   .486962245270E+02   .496672055308E+02
+   .506065662980E+02   .515105267994E+02   .523752932692E+02   .531970887397E+02   .539721868439E+02
+   .546969488902E+02   .553678641572E+02   .559815933074E+02   .565350147483E+02   .570252737017E+02
+   .574498336614E+02   .578065298327E+02   .580936240542E+02   .583098606051E+02   .584545221925E+02
+   .585274853110E+02   .585292740542E+02   .584611113492E+02   .583249664795E+02   .581235976618E+02
+   .578605883496E+02   .575403758591E+02   .571682708532E+02   .567504661759E+02   .562940335216E+02
+   .558069064367E+02   .552978482084E+02   .547764032904E+02   .542528310550E+02   .537380208533E+02
+   .532433876110E+02   .527807474843E+02   .523621734626E+02   .519998312184E+02   .517057959798E+02
+   .514918517245E+02   .513692745764E+02   .513486029017E+02   .514393972609E+02   .516499940476E+02
+   .519872573808E+02   .524563343529E+02   .530604196474E+02   .538005358379E+02   .546753363550E+02
+   .556809384028E+02   .568107933213E+02   .580556019124E+02   .594032820484E+02   .608389954466E+02
+   .623452397884E+02   .639020113656E+02   .654870421438E+02   .670761135363E+02   .686434472818E+02
+   .701621716412E+02   .716048586814E+02   .729441257545E+02   .741532914491E+02   .752070733713E+02
+   .760823121923E+02   .767587035766E+02   .772195170135E+02   .774522783286E+02   .774493909162E+02
+   .772086696313E+02   .767337609869E+02   .760344239336E+02   .751266472083E+02   .740325821036E+02
+   .727802736259E+02   .714031783719E+02   .699394640537E+02   .684310933118E+02   .669227031087E+02
+   .654603003232E+02   .640898038214E+02   .628554728549E+02   .617982706836E+02   .609542203546E+02
+   .603528161509E+02   .600155588984E+02   .599546856527E+02   .601721638273E+02   .606590160253E+02
+   .613950346044E+02   .623489333995E+02   .634789678698E+02   .647340346650E+02   .660552381627E+02
+   .673778872061E+02   .686338633919E+02   .697542807793E+02   .706723365593E+02   .713262338088E+02
+   .716620434035E+02   .716363646298E+02   .712186441426E+02   .703930209089E+02   .691595804822E+02
+   .675349249735E+02   .655519947561E+02   .632591132078E+02   .607182652022E+02   .580026617088E+02
+   .551936845171E+02   .523773441968E+02   .496404181760E+02   .470664613525E+02   .447318961858E+02
+   .427023905023E+02   .410297183168E+02   .397492731074E+02   .388783678411E+02   .384154186844E+02
+   .383400748346E+02   .386143268364E+02   .391845825384E+02   .399846081228E+02   .409391013386E+02
+   .419676121523E+02   .429885688693E+02   .439232220496E+02   .446993185601E+02   .452543207256E+02
+   .455379968435E+02   .455142477538E+02   .451620905153E+02   .444757844020E+02   .434641454288E+02
+   .421491464544E+02   .405639377366E+02   .387504470650E+02   .367567296885E+02   .346342372474E+02
+   .324351633976E+02   .302100038866E+02   .280054426605E+02   .258626452947E+02   .238160110480E+02
+   .218924010905E+02   .201108330032E+02   .184826037401E+02   .170117873135E+02   .156960300998E+02
+   .145275657403E+02   .134943676886E+02   .125813628325E+02   .117716388331E+02   .110475783861E+02
+   .103918812979E+02   .978841769215E+01   .922288957930E+01   .868328594048E+01   .816013455903E+01
+   .764656734235E+01   .713822507356E+01   .663303294946E+01   .613088082619E+01   .563324240294E+01
+   .514276591171E+01   .466286549473E+01   .419733791148E+01   .375002231244E+01   .332451808647E+01
+   .292396554662E+01   .255089457754E+01   .220712732263E+01   .189374944254E+01   .161112357044E+01
+   .135893967825E+01   .113629641495E+01   .941798677241E+00   .773664681413E+00   .629834293014E+00
+   .508072407071E+00   .406062765146E+00   .321489134285E+00   .252102165401E+00   .195771434568E+00
+   .150523118470E+00   .114564457727E+00   .862966309037E-01   .643179231629E-01   .474191606013E-01
+   .345733315839E-01
+ kinetic energy-density
+   .555970637665E+07   .551371318806E+07   .546855115447E+07   .542422079122E+07   .538072261331E+07
+   .533805715068E+07   .529622496876E+07   .525522668683E+07   .521506299682E+07   .517573468216E+07
+   .513724263695E+07   .509958788498E+07   .506277159896E+07   .502679511952E+07   .499165997417E+07
+   .495736789590E+07   .492392084143E+07   .489132100895E+07   .485957085530E+07   .482867311234E+07
+   .479863080257E+07   .476944725386E+07   .474112611310E+07   .471367135888E+07   .468708731310E+07
+   .466137865142E+07   .463655041262E+07   .461260800694E+07   .458955722326E+07   .456740423536E+07
+   .454615560725E+07   .452581829762E+07   .450639966356E+07   .448790746359E+07   .447034986015E+07
+   .445373542155E+07   .443807312357E+07   .442337235074E+07   .440964289734E+07   .439689496822E+07
+   .438513917943E+07   .437438655878E+07   .436464854613E+07   .435593699368E+07   .434826416591E+07
+   .434164273940E+07   .433608580228E+07   .433160685325E+07   .432821980012E+07   .432593895769E+07
+   .432477904485E+07   .432475518074E+07   .432588287978E+07   .432817804542E+07   .433165696239E+07
+   .433633628722E+07   .434223303679E+07   .434936457474E+07   .435774859540E+07   .436740310498E+07
+   .437834639982E+07   .439059704123E+07   .440417382680E+07   .441909575763E+07   .443538200137E+07
+   .445305185048E+07   .447212467541E+07   .449261987238E+07   .451455680514E+07   .453795474047E+07
+   .456283277681E+07   .458920976557E+07   .461710422473E+07   .464653424400E+07   .467751738124E+07
+   .471007054938E+07   .474420989342E+07   .477995065690E+07   .481730703721E+07   .485629202919E+07
+   .489691725647E+07   .493919278987E+07   .498312695238E+07   .502872611013E+07   .507599444875E+07
+   .512493373474E+07   .517554306130E+07   .522781857817E+07   .528175320534E+07   .533733632999E+07
+   .539455348688E+07   .545338602186E+07   .551381073854E+07   .557579952846E+07   .563931898500E+07
+   .570433000154E+07   .577078735469E+07   .583863927342E+07   .590782699553E+07   .597828431269E+07
+   .604993710611E+07   .612270287481E+07   .619649025913E+07   .627119856238E+07   .634671727397E+07
+   .642292559780E+07   .649969199032E+07   .657687371298E+07   .665431640446E+07   .673185367867E+07
+   .680930675486E+07   .688648412710E+07   .696318128076E+07   .703918046415E+07   .711425052442E+07
+   .718814681689E+07   .726061119795E+07   .733137211185E+07   .740014478229E+07   .746663151999E+07
+   .753052215758E+07   .759149462360E+07   .764921566684E+07   .770334174265E+07   .775352007210E+07
+   .779938988437E+07   .784058385209E+07   .787672972813E+07   .790745219092E+07   .793237490391E+07
+   .795112279259E+07   .796332454015E+07   .796861530025E+07   .796663962213E+07   .795705457977E+07
+   .793953309315E+07   .791376742516E+07   .787947283337E+07   .783639135073E+07   .778429566448E+07
+   .772299305675E+07   .765232936544E+07   .757219291800E+07   .748251838558E+07   .738329050013E+07
+   .727454757177E+07   .715638474017E+07   .702895688971E+07   .689248115620E+07   .674723895119E+07
+   .659357743007E+07   .643191033142E+07   .626271811827E+07   .608654735611E+07   .590400926912E+07
+   .571577742328E+07   .552258449424E+07   .532521808763E+07   .512451559110E+07   .492135804968E+07
+   .471666307141E+07   .451137678877E+07   .430646492443E+07   .410290303908E+07   .390166606671E+07
+   .370371731462E+07   .350999701936E+07   .332141076761E+07   .313881789767E+07   .296302011862E+07
+   .279475053492E+07   .263466326446E+07   .248332383685E+07   .234120056136E+07   .220865705746E+07
+   .208594614038E+07   .197320524824E+07   .187045358278E+07   .177759111450E+07   .169439957263E+07
+   .162054550384E+07   .155558544072E+07   .149897317461E+07   .145006907806E+07   .140815137173E+07
+   .137242918020E+07   .134205717150E+07   .131615152776E+07   .129380695018E+07   .127411436127E+07
+   .125617893243E+07   .123913803626E+07   .122217870197E+07   .120455413980E+07   .118559889831E+07
+   .116474222724E+07   .114151924119E+07   .111557951573E+07   .108669279887E+07   .105475158835E+07
+   .101977040549E+07   .981881689582E+06   .941328336318E+06   .898453009109E+06   .853684460829E+06
+   .807521220018E+06   .760513122615E+06   .713241303098E+06   .666297372034E+06   .620262605455E+06
+   .575687909694E+06   .533075375406E+06   .492862089048E+06   .455406631545E+06   .420978869685E+06
+   .389753243769E+06   .361805860505E+06   .337115515966E+06   .315568617964E+06   .296967785391E+06
+   .281043708559E+06   .267469679617E+06   .255878062093E+06   .245877874801E+06   .237072622657E+06
+   .229077514497E+06   .221535261783E+06   .214129746051E+06   .206596970052E+06   .198732860218E+06
+   .190397659213E+06   .181516830677E+06   .172078588043E+06   .162128347205E+06   .151760573963E+06
+   .141108627344E+06   .130333263674E+06   .119610460422E+06   .109119209831E+06   .990299196190E+05
+   .894942024958E+05   .806368465268E+05   .725504854944E+05   .652932264852E+05   .588885843532E+05
+   .533272271614E+05   .485701047070E+05   .445531154524E+05   .411928147889E+05   .383927919461E+05
+   .360502018038E+05   .340619929810E+05   .323304345994E+05   .307676313768E+05   .292988287989E+05
+   .278644326694E+05   .264207819497E+05   .249398071792E+05   .234077724309E+05   .218233354342E+05
+   .201951705220E+05   .185393860995E+05   .168769473013E+05   .152312549900E+05   .136260271783E+05
+   .120835451745E+05   .106233316404E+05   .926122341763E+04   .800887778087E+04   .687361825713E+04
+   .585858042462E+04   .496308468416E+04   .418316731219E+04   .351222074709E+04   .294166407999E+04
+   .246161920644E+04   .206154286643E+04   .173077268673E+04   .145897333579E+04   .123647470516E+04
+   .105450609222E+04   .905336505288E+03   .782334211766E+03   .679959969220E+03   .593708799185E+03
+   .520014897157E+03   .456133270895E+03   .400010580879E+03   .350154841328E+03   .305511709062E+03
+   .265354273866E+03   .229183772370E+03   .196666332803E+03   .167550651585E+03   .141639873907E+03
+   .118754334371E+03   .987146599090E+02   .813313225797E+02   .664015195635E+02   .537105778601E+02
+   .430361059146E+02   .341534591145E+02   .268414557200E+02   .208876167627E+02   .160924907840E+02
+   .122728542662E+02   .926375063601E+01   .691944918946E+01   .511347769614E+01   .373791778748E+01
+   .270215976633E+01
+ pspotential
+  -.175704312535E+03  -.175704423606E+03  -.175704531176E+03  -.175704635355E+03  -.175704736250E+03
+  -.175704833964E+03  -.175704928597E+03  -.175705020246E+03  -.175705109004E+03  -.175705194962E+03
+  -.175705278209E+03  -.175705358828E+03  -.175705436903E+03  -.175705512513E+03  -.175705585735E+03
+  -.175705656645E+03  -.175705725314E+03  -.175705791814E+03  -.175705856211E+03  -.175705918571E+03
+  -.175705978958E+03  -.175706037433E+03  -.175706094057E+03  -.175706148886E+03  -.175706201976E+03
+  -.175706253382E+03  -.175706303155E+03  -.175706351346E+03  -.175706398004E+03  -.175706443177E+03
+  -.175706486909E+03  -.175706529246E+03  -.175706570229E+03  -.175706609901E+03  -.175706648300E+03
+  -.175706685467E+03  -.175706721437E+03  -.175706756247E+03  -.175706789931E+03  -.175706822524E+03
+  -.175706854057E+03  -.175706884562E+03  -.175706914068E+03  -.175706942606E+03  -.175706970201E+03
+  -.175706996882E+03  -.175707022674E+03  -.175707047603E+03  -.175707071690E+03  -.175707094961E+03
+  -.175707117435E+03  -.175707139135E+03  -.175707160081E+03  -.175707180290E+03  -.175707199783E+03
+  -.175707218574E+03  -.175707236682E+03  -.175707254121E+03  -.175707270907E+03  -.175707287052E+03
+  -.175707302570E+03  -.175707317472E+03  -.175707331769E+03  -.175707345472E+03  -.175707358590E+03
+  -.175707371131E+03  -.175707383102E+03  -.175707394510E+03  -.175707405360E+03  -.175707415656E+03
+  -.175707425403E+03  -.175707434602E+03  -.175707443255E+03  -.175707451362E+03  -.175707458922E+03
+  -.175707465933E+03  -.175707472392E+03  -.175707478294E+03  -.175707483634E+03  -.175707488404E+03
+  -.175707492596E+03  -.175707496199E+03  -.175707499203E+03  -.175707501593E+03  -.175707503355E+03
+  -.175707504472E+03  -.175707504926E+03  -.175707504695E+03  -.175707503758E+03  -.175707502088E+03
+  -.175707499660E+03  -.175707496442E+03  -.175707492403E+03  -.175707487508E+03  -.175707481719E+03
+  -.175707474994E+03  -.175707467289E+03  -.175707458556E+03  -.175707448743E+03  -.175707437796E+03
+  -.175707425654E+03  -.175707412253E+03  -.175707397524E+03  -.175707381395E+03  -.175707363784E+03
+  -.175707344608E+03  -.175707323776E+03  -.175707301190E+03  -.175707276747E+03  -.175707250336E+03
+  -.175707221836E+03  -.175707191122E+03  -.175707158056E+03  -.175707122495E+03  -.175707084282E+03
+  -.175707043252E+03  -.175706999228E+03  -.175706952021E+03  -.175706901429E+03  -.175706847237E+03
+  -.175706789215E+03  -.175706727118E+03  -.175706660683E+03  -.175706589632E+03  -.175706513667E+03
+  -.175706432469E+03  -.175706345700E+03  -.175706252997E+03  -.175706153976E+03  -.175706048224E+03
+  -.175705935302E+03  -.175705814742E+03  -.175705686046E+03  -.175705548680E+03  -.175705402077E+03
+  -.175705245631E+03  -.175705078697E+03  -.175704900586E+03  -.175704710564E+03  -.175704507849E+03
+  -.175704291605E+03  -.175704060943E+03  -.175703814915E+03  -.175703552508E+03  -.175703272644E+03
+  -.175702974173E+03  -.175702655868E+03  -.175702316424E+03  -.175701954445E+03  -.175701568446E+03
+  -.175701156844E+03  -.175700717948E+03  -.175700249960E+03  -.175699750958E+03  -.175699218897E+03
+  -.175698651595E+03  -.175698046726E+03  -.175697401810E+03  -.175696714205E+03  -.175695981091E+03
+  -.175695199464E+03  -.175694366123E+03  -.175693477651E+03  -.175692530410E+03  -.175691520520E+03
+  -.175690443842E+03  -.175689295969E+03  -.175688072199E+03  -.175686767521E+03  -.175685376592E+03
+  -.175683893719E+03  -.175682312831E+03  -.175680627456E+03  -.175678830698E+03  -.175676915201E+03
+  -.175674873129E+03  -.175672696126E+03  -.175670375286E+03  -.175667901116E+03  -.175665263495E+03
+  -.175662451637E+03  -.175659454046E+03  -.175656258466E+03  -.175652851835E+03  -.175649220230E+03
+  -.175645348813E+03  -.175641221767E+03  -.175636822235E+03  -.175632132250E+03  -.175627132666E+03
+  -.175621803074E+03  -.175616121728E+03  -.175610065448E+03  -.175603609537E+03  -.175596727671E+03
+  -.175589391803E+03  -.175581572045E+03  -.175573236547E+03  -.175564351375E+03  -.175554880371E+03
+  -.175544785011E+03  -.175534024252E+03  -.175522554365E+03  -.175510328769E+03  -.175497297839E+03
+  -.175483408717E+03  -.175468605098E+03  -.175452827014E+03  -.175436010595E+03  -.175418087824E+03
+  -.175398986269E+03  -.175378628803E+03  -.175356933307E+03  -.175333812355E+03  -.175309172874E+03
+  -.175282915796E+03  -.175254935675E+03  -.175225120293E+03  -.175193350236E+03  -.175159498448E+03
+  -.175123429759E+03  -.175085000386E+03  -.175044057402E+03  -.175000438186E+03  -.174953969827E+03
+  -.174904468509E+03  -.174851738855E+03  -.174795573240E+03  -.174735751063E+03  -.174672037989E+03
+  -.174604185143E+03  -.174531928271E+03  -.174454986857E+03  -.174373063200E+03  -.174285841440E+03
+  -.174192986551E+03  -.174094143276E+03  -.173988935029E+03  -.173876962737E+03  -.173757803645E+03
+  -.173631010069E+03  -.173496108099E+03  -.173352596261E+03  -.173199944125E+03  -.173037590869E+03
+  -.172864943798E+03  -.172681376820E+03  -.172486228873E+03  -.172278802316E+03  -.172058361283E+03
+  -.171824129998E+03  -.171575291062E+03  -.171310983712E+03  -.171030302063E+03  -.170732293333E+03
+  -.170415956071E+03  -.170080238390E+03  -.169724036226E+03  -.169346191637E+03  -.168945491169E+03
+  -.168520664316E+03  -.168070382108E+03  -.167593255873E+03  -.167087836228E+03  -.166552612357E+03
+  -.165986011662E+03  -.165386399878E+03  -.164752081756E+03  -.164081302446E+03  -.163372249715E+03
+  -.162623057177E+03  -.161831808693E+03  -.160996544157E+03  -.160115266876E+03  -.159185952782E+03
+  -.158206561753E+03  -.157175051347E+03  -.156089393351E+03  -.154947593618E+03  -.153747715902E+03
+  -.152487910579E+03  -.151166449599E+03  -.149781769410E+03  -.148332524271E+03  -.146817652964E+03
+  -.145236462503E+03  -.143588732649E+03  -.141874844456E+03  -.140095934177E+03  -.138254069802E+03
+  -.136352440738E+03  -.134395541012E+03  -.132389313067E+03  -.130341203285E+03  -.128260063269E+03
+  -.126155814905E+03  -.124038786992E+03  -.121918638487E+03  -.119802835640E+03  -.117694794341E+03
+  -.115592068676E+03  -.113485262476E+03  -.111358254181E+03  -.109189247020E+03  -.106950358027E+03
+  -.104604240578E+03  -.102120616769E+03  -.997980674422E+02  -.974484939215E+02  -.950638794150E+02
+  -.927021914437E+02
+ core charge-density (pseudized)
+   .285751904920E-07   .304637933567E-07   .324772185123E-07   .346237157630E-07   .369120801625E-07
+   .393516880503E-07   .419525354710E-07   .447252791313E-07   .476812800653E-07   .508326501852E-07
+   .541923019080E-07   .577740010636E-07   .615924232982E-07   .656632142066E-07   .700030534383E-07
+   .746297230406E-07   .795621803189E-07   .848206355118E-07   .904266346011E-07   .964031475935E-07
+   .102774662639E-06   .109567286365E-06   .116808850853E-06   .124529027668E-06   .132759449443E-06
+   .141533839483E-06   .150888149950E-06   .160860709167E-06   .171492378668E-06   .182826720624E-06
+   .194910176329E-06   .207792256495E-06   .221525744113E-06   .236166910727E-06   .251775746999E-06
+   .268416208515E-06   .286156477838E-06   .305069243874E-06   .325231999711E-06   .346727360135E-06
+   .369643400138E-06   .394074015793E-06   .420119308983E-06   .447885997556E-06   .477487852593E-06
+   .509046164567E-06   .542690240316E-06   .578557932870E-06   .616796206278E-06   .657561737780E-06
+   .701021559773E-06   .747353744206E-06   .796748132204E-06   .849407111922E-06   .905546447803E-06
+   .965396164644E-06   .102920149009E-05   .109722385944E-05   .116974198680E-05   .124705300713E-05
+   .132947369366E-05   .141734175588E-05   .151101722319E-05   .161088392012E-05   .171735103897E-05
+   .183085481641E-05   .195186032092E-05   .208086335826E-05   .221839250305E-05   .236501126444E-05
+   .252132039501E-05   .268796035227E-05   .286561392276E-05   .305500901972E-05   .325692166548E-05
+   .347217917113E-05   .370166352620E-05   .394631501245E-05   .420713605646E-05   .448519533683E-05
+   .478163216285E-05   .509766114249E-05   .543457715901E-05   .579376067633E-05   .617668339512E-05
+   .658491428268E-05   .702012600124E-05   .748410176123E-05   .797874262734E-05   .850607530749E-05
+   .906826045650E-05   .966760152857E-05   .103065542147E-04   .109877365041E-04   .117139394096E-04
+   .124881384033E-04   .133135056068E-04   .141934227870E-04   .151314952115E-04   .161315664191E-04
+   .171977339659E-04   .183343662130E-04   .195461202226E-04   .208379608372E-04   .222151810191E-04
+   .236834235342E-04   .252487040684E-04   .269174358720E-04   .286964560312E-04   .305930534769E-04
+   .326149988432E-04   .347705762985E-04   .370686174810E-04   .395185376741E-04   .421303743739E-04
+   .449148284031E-04   .478833077419E-04   .510479742539E-04   .544217934985E-04   .580185878344E-04
+   .618530930302E-04   .659410186142E-04   .702991122104E-04   .749452281236E-04   .798984004537E-04
+   .851789210389E-04   .908084225454E-04   .968099670440E-04   .103208140435E-03   .110029153107E-03
+   .117300947242E-03   .125053311204E-03   .133318001477E-03   .142128872650E-03   .151522015989E-03
+   .161535907139E-03   .172211563588E-03   .183592712506E-03   .195725969665E-03   .208661030159E-03
+   .222450871700E-03   .237151971322E-03   .252824536374E-03   .269532750736E-03   .287345037270E-03
+   .306334337562E-03   .326578410098E-03   .348160148075E-03   .371167918155E-03   .395695921511E-03
+   .421844578649E-03   .449720939548E-03   .479439120785E-03   .511120771415E-03   .544895569472E-03
+   .580901751116E-03   .619286674529E-03   .660207420863E-03   .703831434628E-03   .750337206102E-03
+   .799914998504E-03   .852767622830E-03   .909111263456E-03   .969176357801E-03   .103320853356E-02
+   .110146960720E-02   .117423864777E-02   .125181311008E-02   .133451004191E-02   .142266736986E-02
+   .151664526896E-02   .161682762140E-02   .172362357005E-02   .183746917289E-02   .195882916463E-02
+   .208819883251E-02   .222610601335E-02   .237311321956E-02   .252981990228E-02   .269686486009E-02
+   .287492880252E-02   .306473707801E-02   .326706257627E-02   .348272881610E-02   .371261322980E-02
+   .395765065627E-02   .421883705541E-02   .449723345716E-02   .479397015925E-02   .511025118826E-02
+   .544735903981E-02   .580665971376E-02   .618960806181E-02   .659775346518E-02   .703274586110E-02
+   .749634213746E-02   .799041291611E-02   .851694974554E-02   .907807272513E-02   .967603858321E-02
+   .103132492324E-01   .109922608258E-01   .117157933391E-01   .124867407026E-01   .133081815091E-01
+   .141833903224E-01   .151158496123E-01   .161092623412E-01   .171675652261E-01   .182949427005E-01
+   .194958415989E-01   .207749865844E-01   .221373963378E-01   .235884005251E-01   .251336575551E-01
+   .267791731360E-01   .285313196330E-01   .303968562249E-01   .323829498474E-01   .344971969053E-01
+   .367476457204E-01   .391428196749E-01   .416917409916E-01   .444039550761E-01   .472895553287E-01
+   .503592083065E-01   .536241790950E-01   .570963567147E-01   .607882793544E-01   .647131591850E-01
+   .688849064595E-01   .733181525566E-01   .780282715653E-01   .830313999418E-01   .883444536976E-01
+   .939851424916E-01   .999719799070E-01   .106324289087E+00   .113062202788E+00   .120206656776E+00
+   .127779375347E+00   .135802847597E+00   .144300292881E+00   .153295613718E+00   .162813334184E+00
+   .172878521593E+00   .183516689054E+00   .194753676176E+00   .206615504967E+00   .219128207634E+00
+   .232317622701E+00   .246209155549E+00   .260827499159E+00   .276196310512E+00   .292337837833E+00
+   .309272493550E+00   .327018367657E+00   .345590675953E+00   .365001137601E+00   .385257276435E+00
+   .406361640667E+00   .428310936031E+00   .451095068002E+00   .474696089708E+00   .499087053436E+00
+   .524230765454E+00   .550078446158E+00   .576568300580E+00   .603624008041E+00   .631153144405E+00
+   .659045556079E+00   .687171711779E+00   .715381066248E+00   .743500479733E+00   .771332748147E+00
+   .798655311595E+00   .825219223284E+00   .850748476717E+00   .874939806254E+00   .897463094281E+00
+   .917962536777E+00   .936058737081E+00   .951351914027E+00   .963426423585E+00   .971856800584E+00
+   .976215526197E+00   .976082714080E+00   .971057879139E+00   .960773902603E+00   .944913229577E+00
+   .923226223678E+00   .895551450668E+00   .861837461806E+00   .822165391200E+00   .776771364604E+00
+   .726067337554E+00   .670658541076E+00   .611355223291E+00   .549175855441E+00   .485338455764E+00
+   .421236227243E+00   .358393381811E+00   .298396937689E+00   .242800562569E+00   .192997359642E+00
+   .150060050995E+00   .114549518116E+00   .862966309037E-01   .643179231629E-01   .474191606013E-01
+   .345733315839E-01
+ pseudo wavefunction
+   .162798829420E-11   .179202286997E-11   .197258541589E-11   .217134127474E-11   .239012358766E-11
+   .263095020138E-11   .289604227897E-11   .318784478581E-11   .350904903968E-11   .386261753301E-11
+   .425181125620E-11   .468021977395E-11   .515179433214E-11   .567088430046E-11   .624227728699E-11
+   .687124329470E-11   .756358332708E-11   .832568289128E-11   .916457089210E-11   .100879844602E-10
+   .111044403121E-10   .122233133009E-10   .134549228806E-10   .148106282841E-10   .163029332896E-10
+   .179456015440E-10   .197537835065E-10   .217441561822E-10   .239350769351E-10   .263467527999E-10
+   .290014268530E-10   .319235833618E-10   .351401736053E-10   .386808644475E-10   .425783119573E-10
+   .468684625978E-10   .515908847632E-10   .567891337213E-10   .625111533265E-10   .688097182099E-10
+   .757429205236E-10   .833747057283E-10   .917754623677E-10   .101022671267E-09   .111201620142E-09
+   .122406190219E-09   .134739722101E-09   .148315968890E-09   .163260145340E-09   .179710082716E-09
+   .197817500030E-09   .217749403344E-09   .239689626089E-09   .263840524566E-09   .290424844291E-09
+   .319687774395E-09   .351899209015E-09   .387356236544E-09   .426385879697E-09   .469348111657E-09
+   .516639176129E-09   .568695241921E-09   .625996425746E-09   .689071220363E-09   .758501368899E-09
+   .834927230284E-09   .919053685314E-09   .101165663780E-08   .111359017074E-08   .122579442360E-08
+   .134930426321E-08   .148525882839E-08   .163491203625E-08   .179964414712E-08   .198097449470E-08
+   .218057549891E-08   .240028809064E-08   .264213869064E-08   .290835789926E-08   .320140106924E-08
+   .352397095140E-08   .387904262212E-08   .426989092237E-08   .470012066149E-08   .517369986426E-08
+   .569499636780E-08   .626881810594E-08   .690045745252E-08   .759574003261E-08   .836107845181E-08
+   .920353143917E-08   .101308689491E-07   .111516438231E-07   .122752706711E-07   .135121127016E-07
+   .148735772998E-07   .163722212360E-07   .180218664749E-07   .198377276520E-07   .218365523960E-07
+   .240367757873E-07   .264586903808E-07   .291246333579E-07   .320591925363E-07   .352894331350E-07
+   .388451473872E-07   .427591293033E-07   .470674771161E-07   .518099261988E-07   .570302155259E-07
+   .627764910546E-07   .691017497489E-07   .760643283386E-07   .837284413218E-07   .921647731712E-07
+   .101451130204E-06   .111673158131E-06   .122925131887E-06   .135310825053E-06   .148944466848E-06
+   .163951795553E-06   .180471218051E-06   .198655086188E-06   .218671101718E-06   .240703862785E-06
+   .264956566201E-06   .291652881212E-06   .321039012016E-06   .353385968070E-06   .388992063083E-06
+   .428185665748E-06   .471328227571E-06   .518817615683E-06   .571091781372E-06   .628632798133E-06
+   .691971306455E-06   .761691406288E-06   .838436042297E-06   .922912931492E-06   .101590108788E-05
+   .111825800418E-05   .123092755691E-05   .135494870741E-05   .149146507920E-05   .164173549972E-05
+   .180714560359E-05   .198922060412E-05   .218963935085E-05   .241024980235E-05   .265308605673E-05
+   .292038709671E-05   .321461742149E-05   .353848975559E-05   .389499004317E-05   .428740495804E-05
+   .471935218204E-05   .519481373045E-05   .571817263043E-05   .629425328984E-05   .692836592716E-05
+   .762635547055E-05   .839465537528E-05   .924034685333E-05   .101712240588E-04   .111958658274E-04
+   .123237146270E-04   .135651634444E-04   .149316514034E-04   .164357689902E-04   .180913738498E-04
+   .199137182128E-04   .219195891182E-04   .241274627135E-04   .265576740425E-04   .292326038703E-04
+   .321768842498E-04   .354176247045E-04   .389846610878E-04   .429108293835E-04   .472322669382E-04
+   .519887438619E-04   .572240276057E-04   .629862840205E-04   .693285185310E-04   .763090614136E-04
+   .839921015637E-04   .924482735653E-04   .101755303354E-03   .111998718277E-03   .123272627927E-03
+   .135680582743E-03   .149336518069E-03   .164365792079E-03   .180906326829E-03   .199109862559E-03
+   .219143336374E-03   .241190397474E-03   .265453072300E-03   .292153594206E-03   .321536413692E-03
+   .353870406721E-03   .389451300315E-03   .428604336424E-03   .471687197012E-03   .519093215439E-03
+   .571254901549E-03   .628647810356E-03   .691794786951E-03   .761270623227E-03   .837707165154E-03
+   .921798912809E-03   .101430915906E-02   .111607671678E-02   .122802328875E-02   .135116153899E-02
+   .148660392912E-02   .163557238866E-02   .179940889356E-02   .197958703323E-02   .217772465254E-02
+   .239559766154E-02   .263515511266E-02   .289853565194E-02   .318808545824E-02   .350637779146E-02
+   .385623427850E-02   .424074807277E-02   .466330903051E-02   .512763105371E-02   .563778175597E-02
+   .619821461305E-02   .681380376420E-02   .748988163348E-02   .823227954112E-02   .904737147393E-02
+   .994212117901E-02   .109241327372E-01   .120017047596E-01   .131838883327E-01   .144805488113E-01
+   .159024315265E-01   .174612314311E-01   .191696666516E-01   .210415558466E-01   .230918991872E-01
+   .253369626702E-01   .277943653540E-01   .304831689502E-01   .334239690316E-01   .366389868985E-01
+   .401521608997E-01   .439892357085E-01   .481778477145E-01   .527476042984E-01   .577301543011E-01
+   .631592464849E-01   .690707721923E-01   .755027877511E-01   .824955114298E-01   .900912889295E-01
+   .983345204982E-01   .107271541774E+00   .116950449418E+00   .127420861491E+00   .138733601396E+00
+   .150940293036E+00   .164092853753E+00   .178242870546E+00   .193440844224E+00   .209735285484E+00
+   .227171646670E+00   .245791073183E+00   .265628959420E+00   .286713295930E+00   .309062797352E+00
+   .332684805071E+00   .357572964523E+00   .383704685246E+00   .411038402298E+00   .439510671112E+00
+   .469033144429E+00   .499489500088E+00   .530732412287E+00   .562580686610E+00   .594816710302E+00
+   .627184403563E+00   .659387893867E+00   .691091171789E+00   .721919021065E+00   .751459543940E+00
+   .779268620561E+00   .804876641923E+00   .827797832050E+00   .847542417314E+00   .863631798551E+00
+   .875616723357E+00   .883098230204E+00   .885750832710E+00   .883347024772E+00   .875781715320E+00
+   .863094655027E+00   .845488321709E+00   .823338132203E+00   .797191318827E+00   .767750453213E+00
+   .735837560414E+00   .702335219380E+00   .668102199258E+00   .633863254851E+00   .600075238444E+00
+   .566858031425E+00
+ ae wavefunction
+   .433255977986E-07   .471967885458E-07   .513946221778E-07   .559482402994E-07   .608892701227E-07
+   .662520468318E-07   .720738551915E-07   .783951921205E-07   .852600521186E-07   .927162376007E-07
+   .100815696375E-06   .109614888701E-06   .119175186579E-06   .129563308159E-06   .140851790420E-06
+   .153119503546E-06   .166452210728E-06   .180943177486E-06   .196693834916E-06   .213814501734E-06
+   .232425170360E-06   .252656362809E-06   .274650062651E-06   .298560729868E-06   .324556406067E-06
+   .352819918158E-06   .383550189377E-06   .416963667299E-06   .453295879380E-06   .492803127527E-06
+   .535764334226E-06   .582483053895E-06   .633289664386E-06   .688543754897E-06   .748636728040E-06
+   .813994635429E-06   .885081267909E-06   .962401523466E-06   .104650507796E-05   .113799038610E-05
+   .123750904261E-05   .134577053621E-05   .146354743204E-05   .159168102143E-05   .173108748132E-05
+   .188276458980E-05   .204779904795E-05   .222737446342E-05   .242278005548E-05   .263542014736E-05
+   .286682451725E-05   .311865968609E-05   .339274122708E-05   .369104718993E-05   .401573274099E-05
+   .436914612972E-05   .475384610194E-05   .517262089112E-05   .562850893108E-05   .612482144599E-05
+   .666516708815E-05   .725347880880E-05   .789404316446E-05   .859153227900E-05   .935103870165E-05
+   .101781134226E-04   .110788073309E-04   .120597164262E-04   .131280311198E-04   .142915899967E-04
+   .155589384356E-04   .169393925252E-04   .184431087508E-04   .200811599654E-04   .218656182100E-04
+   .238096449894E-04   .259275896700E-04   .282350967180E-04   .307492225629E-04   .334885629351E-04
+   .364733916017E-04   .397258115029E-04   .432699193739E-04   .471319850339E-04   .513406466182E-04
+   .559271231386E-04   .609254458721E-04   .663727102012E-04   .723093496637E-04   .787794341106E-04
+   .858309940278E-04   .935163732403E-04   .101892612394E-03   .111021865801E-03   .120971854437E-03
+   .131816358097E-03   .143635749935E-03   .156517576883E-03   .170557189677E-03   .185858426525E-03
+   .202534354718E-03   .220708074816E-03   .240513592363E-03   .262096762444E-03   .285616312728E-03
+   .311244951068E-03   .339170564099E-03   .369597513706E-03   .402748038649E-03   .438863769117E-03
+   .478207362404E-03   .521064268409E-03   .567744634115E-03   .618585356726E-03   .673952295614E-03
+   .734242653719E-03   .799887539545E-03   .871354721358E-03   .949151585661E-03   .103382831242E-02
+   .112598127995E-02   .122625671264E-02   .133535458505E-02   .145403279611E-02   .158311162718E-02
+   .172347849778E-02   .187609303275E-02   .204199245420E-02   .222229731113E-02   .241821755902E-02
+   .263105900068E-02   .286223009857E-02   .311324916693E-02   .338575195081E-02   .368149959600E-02
+   .400238701177E-02   .435045162470E-02   .472788251806E-02   .513702994676E-02   .558041521269E-02
+   .606074087914E-02   .658090129626E-02   .714399340161E-02   .775332775105E-02   .841243972525E-02
+   .912510084598E-02   .989533012379E-02   .107274053451E-01   .116258741910E-01   .125955650646E-01
+   .136415974825E-01   .147693918710E-01   .159846785795E-01   .172935059073E-01   .187022469077E-01
+   .202176047132E-01   .218466160898E-01   .235966529016E-01   .254754211308E-01   .274909570587E-01
+   .296516201759E-01   .319660823421E-01   .344433126716E-01   .370925575740E-01   .399233153355E-01
+   .429453045935E-01   .461684260333E-01   .496027166267E-01   .532582957318E-01   .571453023865E-01
+   .612738231329E-01   .656538097211E-01   .702949860423E-01   .752067436496E-01   .803980252340E-01
+   .858771954457E-01   .916518984882E-01   .977289019685E-01   .104113926576E+00   .110811461275E+00
+   .117824563859E+00   .125154646890E+00   .132801249292E+00   .140761794092E+00   .149031333148E+00
+   .157602279994E+00   .166464132324E+00   .175603186074E+00   .185002243466E+00   .194640317916E+00
+   .204492339201E+00   .214528862837E+00   .224715788187E+00   .235014090398E+00   .245379571847E+00
+   .255762639342E+00   .266108113858E+00   .276355080109E+00   .286436783628E+00   .296280583353E+00
+   .305807967803E+00   .314934642721E+00   .323570697613E+00   .331620857794E+00   .338984827757E+00
+   .345557731273E+00   .351230654266E+00   .355891298410E+00   .359424756333E+00   .361714422046E+00
+   .362643051150E+00   .362093982419E+00   .359952524249E+00   .356107496888E+00   .350452909801E+00
+   .342889749204E+00   .333327853985E+00   .321687862470E+00   .307903211902E+00   .291922167703E+00
+   .273709854132E+00   .253250254300E+00   .230548145257E+00   .205630931830E+00   .178550340310E+00
+   .149383930032E+00   .118236377826E+00   .852404879910E-01   .505578792851E-01   .143793010398E-01
+  -.230754669176E-01  -.615581712029E-01  -.100793132790E+00  -.140478811356E+00  -.180289899018E+00
+  -.219879935561E+00  -.258884401856E+00  -.296924198206E+00  -.333609370899E+00  -.368542963349E+00
+  -.401324995874E+00  -.431556818247E+00  -.458846247013E+00  -.482813637617E+00  -.503098383065E+00
+  -.519365046274E+00  -.531308764341E+00  -.538660037333E+00  -.541189077410E+00  -.538709735385E+00
+  -.531082885764E+00  -.518219114600E+00  -.500080599733E+00  -.476682148186E+00  -.448091416541E+00
+  -.414428371996E+00  -.375864060396E+00  -.332618743819E+00  -.284959462048E+00  -.233197063549E+00
+  -.177682744941E+00  -.118804134693E+00  -.569809580714E-01   .733967400358E-02   .736883001825E-01
+   .141578404327E+00   .210511894042E+00   .279984666583E+00   .349492141438E+00   .418534609142E+00
+   .486622228819E+00   .553279539590E+00   .618049463913E+00   .680496954564E+00   .740212566442E+00
+   .796816212038E+00   .849961136235E+00   .899337897832E+00   .944678004565E+00   .985756886178E+00
+   .102239601749E+01   .105446412118E+01   .108187744914E+01   .110459917404E+01   .112263794391E+01
+   .113604567306E+01   .114491466417E+01   .114937417459E+01   .114958654839E+01   .114574304586E+01
+   .113805948749E+01   .112677183648E+01   .111213180947E+01   .109440262458E+01   .107385495727E+01
+   .105076316182E+01   .102540181264E+01   .998042607073E+00   .968951647935E+00   .938387121779E+00
+   .906597374693E+00   .873819377501E+00   .840277563572E+00   .806183014560E+00   .771732962824E+00
+   .737110574317E+00   .702484972318E+00   .668011460814E+00   .633831906337E+00   .600075238444E+00
+   .566858031425E+00
+ pseudo wavefunction
+  -.265011285443E-12  -.291713574280E-12  -.321106360705E-12  -.353460736732E-12  -.389075109348E-12
+  -.428277952748E-12  -.471430837878E-12  -.518931767233E-12  -.571218845663E-12  -.628774321051E-12
+  -.692129032121E-12  -.761867304408E-12  -.838632339536E-12  -.923132147515E-12  -.101614607678E-11
+  -.111853200217E-11  -.123123423719E-11  -.135529224348E-11  -.149185021784E-11  -.164216764526E-11
+  -.180763091526E-11  -.198976610862E-11  -.219025307259E-11  -.241094091423E-11  -.265386505487E-11
+  -.292126600294E-11  -.321561001837E-11  -.353961185908E-11  -.389625981941E-11  -.428884329137E-11
+  -.472098310293E-11  -.519666491324E-11  -.572027597261E-11  -.629664558646E-11  -.693108965637E-11
+  -.762945970898E-11  -.839819686512E-11  -.924439124665E-11  -.101758473692E-10  -.112011561238E-10
+  -.123297740111E-10  -.135721103597E-10  -.149396233317E-10  -.164449256022E-10  -.181019006870E-10
+  -.199258309911E-10  -.219335387595E-10  -.241435412292E-10  -.265762214158E-10  -.292540161065E-10
+  -.322016227965E-10  -.354462274749E-10  -.390177553635E-10  -.429491469179E-10  -.472766616398E-10
+  -.520402125001E-10  -.572837340580E-10  -.630555876724E-10  -.694090075401E-10  -.764025916780E-10
+  -.841008423748E-10  -.925747610983E-10  -.101902503345E-09  -.112170099469E-09  -.123472248148E-09
+  -.135913189786E-09  -.149607667928E-09  -.164681987542E-09  -.181275179935E-09  -.199540285035E-09
+  -.219645762885E-09  -.241777047348E-09  -.266138256366E-09  -.292954074539E-09  -.322471825384E-09
+  -.354963752405E-09  -.390729529981E-09  -.430099027258E-09  -.473435350520E-09  -.521138192103E-09
+  -.573647516734E-09  -.631447619306E-09  -.695071591488E-09  -.765106238395E-09  -.842197490633E-09
+  -.927056361657E-09  -.102046550537E-08  -.112328643442E-08  -.123646746585E-08  -.136105246725E-08
+  -.149819048419E-08  -.164914633764E-08  -.181531228915E-08  -.199822088141E-08  -.219955907249E-08
+  -.242118379419E-08  -.266513907805E-08  -.293367490677E-08  -.322926796509E-08  -.355464448131E-08
+  -.391280537025E-08  -.430705390942E-08  -.474102620364E-08  -.521872471905E-08  -.574455519572E-08
+  -.632336727929E-08  -.696049924629E-08  -.766182723554E-08  -.843381943964E-08  -.928359575616E-08
+  -.102189934487E-07  -.112486394231E-07  -.123820297853E-07  -.136296174144E-07  -.150029083584E-07
+  -.165145679410E-07  -.181785375585E-07  -.200101632428E-07  -.220263371762E-07  -.242456534623E-07
+  -.266885795896E-07  -.293776451675E-07  -.323376496756E-07  -.355958911398E-07  -.391824178448E-07
+  -.431303054013E-07  -.474759617229E-07  -.522594627222E-07  -.575249218208E-07  -.633208966777E-07
+  -.697008368844E-07  -.767235767512E-07  -.844538777255E-07  -.929630254393E-07  -.102329486886E-06
+  -.112639633780E-06  -.123988538763E-06  -.136480851783E-06  -.150231764735E-06  -.165368073217E-06
+  -.182029345210E-06  -.200369207409E-06  -.220556761074E-06  -.242778140413E-06  -.267238227841E-06
+  -.294162541908E-06  -.323799315256E-06  -.356421781710E-06  -.392330693557E-06  -.431857092143E-06
+  -.475365357257E-06  -.523256563342E-06  -.575972173356E-06  -.633998104226E-06  -.697869201235E-06
+  -.768174162411E-06  -.845560958129E-06  -.930742795651E-06  -.102450468331E-05  -.112771065453E-05
+  -.124131171792E-05  -.136635460620E-05  -.150399140420E-05  -.165549014395E-05  -.182224646387E-05
+  -.200579643862E-05  -.220783069694E-05  -.243020995624E-05  -.267498211602E-05  -.294440106568E-05
+  -.324094737847E-05  -.356735107974E-05  -.392661669689E-05  -.432205081863E-05  -.475729241383E-05
+  -.523634618511E-05  -.576361925938E-05  -.634396154750E-05  -.698271013790E-05  -.768573812496E-05
+  -.845950831245E-05  -.931113227531E-05  -.102484353107E-04  -.112800278608E-04  -.124153840474E-04
+  -.136649280193E-04  -.150401288834E-04  -.165536050629E-04  -.182192390109E-04  -.200523032914E-04
+  -.220695991449E-04  -.242896087537E-04  -.267326625458E-04  -.294211229982E-04  -.323795865405E-04
+  -.356351053115E-04  -.392174306812E-04  -.431592806362E-04  -.474966333113E-04  -.522690491696E-04
+  -.575200245539E-04  -.632973795850E-04  -.696536836456E-04  -.766467219807E-04  -.843400072541E-04
+  -.928033402373E-04  -.102113424166E-03  -.112354537690E-03  -.123619271741E-03  -.136009336110E-03
+  -.149636441963E-03  -.164623267044E-03  -.181104510821E-03  -.199228047403E-03  -.219156184599E-03
+  -.241067038118E-03  -.265156030518E-03  -.291637525117E-03  -.320746605758E-03  -.352741013922E-03
+  -.387903255317E-03  -.426542888681E-03  -.468999010063E-03  -.515642946370E-03  -.566881172352E-03
+  -.623158465470E-03  -.684961313252E-03  -.752821587608E-03  -.827320500315E-03  -.909092853153E-03
+  -.998831595176E-03  -.109729269806E-02  -.120530035833E-02  -.132375253238E-02  -.145362680671E-02
+  -.159598660076E-02  -.175198769401E-02  -.192288506164E-02  -.211003999373E-02  -.231492746224E-02
+  -.253914368613E-02  -.278441382928E-02  -.305259974632E-02  -.334570766855E-02  -.366589569501E-02
+  -.401548092201E-02  -.439694600679E-02  -.481294491778E-02  -.526630757310E-02  -.576004301115E-02
+  -.629734066987E-02  -.688156927531E-02  -.751627275311E-02  -.820516247897E-02  -.895210507404E-02
+  -.976110482920E-02  -.106362797070E-01  -.115818297222E-01  -.126019963411E-01  -.137010113694E-01
+  -.148830336167E-01  -.161520714382E-01  -.175118890673E-01  -.189658944644E-01  -.205170062373E-01
+  -.221674970366E-01  -.239188107165E-01  -.257713504872E-01  -.277242353028E-01  -.297750218336E-01
+  -.319193896157E-01  -.341507873740E-01  -.364600391186E-01  -.388349094716E-01  -.412596288316E-01
+  -.437143804748E-01  -.461747535844E-01  -.486111685264E-01  -.509882834828E-01  -.532643948421E-01
+  -.553908474888E-01  -.573114752987E-01  -.589620965973E-01  -.602700938825E-01  -.611541114558E-01
+  -.615239083195E-01  -.612804061994E-01  -.603159731098E-01  -.585149805504E-01  -.557546661028E-01
+  -.519063216343E-01  -.468368091653E-01  -.404103804530E-01  -.324907414555E-01  -.229432586463E-01
+  -.116371512291E-01   .155254611864E-02   .167435266648E-01   .340455932139E-01   .535612469749E-01
+   .753878541592E-01   .996217027365E-01   .126364114402E+00   .155729504541E+00   .187854847163E+00
+   .222909365657E+00   .261102407484E+00   .302686368793E+00   .347950252737E+00   .397200307980E+00
+   .450749675616E+00
+ ae wavefunction
+  -.634329222382E-08  -.691007308071E-08  -.752467767356E-08  -.819137262423E-08  -.891478847205E-08
+  -.969995223036E-08  -.105523227604E-07  -.114778292147E-07  -.124829128265E-07  -.135745723455E-07
+  -.147604134486E-07  -.160487024803E-07  -.174484249129E-07  -.189693489485E-07  -.206220947239E-07
+  -.224182096199E-07  -.243702502231E-07  -.264918715353E-07  -.287979240807E-07  -.313045596196E-07
+  -.340293462397E-07  -.369913936665E-07  -.402114897120E-07  -.437122488597E-07  -.475182740789E-07
+  -.516563330556E-07  -.561555501391E-07  -.610476154175E-07  -.663670124646E-07  -.721512664424E-07
+  -.784412143921E-07  -.852812997170E-07  -.927198930401E-07  -.100809641818E-06  -.109607851312E-06
+  -.119176899742E-06  -.129584690732E-06  -.140905146404E-06  -.153218744809E-06  -.166613105711E-06
+  -.181183629105E-06  -.197034191249E-06  -.214277903420E-06  -.233037939098E-06  -.253448435769E-06
+  -.275655478141E-06  -.299818170145E-06  -.326109803796E-06  -.354719133712E-06  -.385851766880E-06
+  -.419731678152E-06  -.456602862877E-06  -.496731139145E-06  -.540406113230E-06  -.587943323045E-06
+  -.639686575792E-06  -.696010497429E-06  -.757323313192E-06  -.824069880123E-06  -.896734994475E-06
+  -.975846998917E-06  -.106198171669E-05  -.115576674231E-05  -.125788612118E-05  -.136908545306E-05
+  -.149017745798E-05  -.162204804605E-05  -.176566293682E-05  -.192207487757E-05  -.209243151439E-05
+  -.227798397484E-05  -.248009622584E-05  -.270025527635E-05  -.294008230038E-05  -.320134476250E-05
+  -.348596963509E-05  -.379605780463E-05  -.413389977234E-05  -.450199276397E-05  -.490305937317E-05
+  -.534006787359E-05  -.581625434644E-05  -.633514678263E-05  -.690059133203E-05  -.751678088712E-05
+  -.818828620343E-05  -.892008977668E-05  -.971762271418E-05  -.105868048576E-04  -.115340884358E-04
+  -.125665055473E-04  -.136917197992E-04  -.149180824511E-04  -.162546934442E-04  -.177114677229E-04
+  -.192992072889E-04  -.210296794619E-04  -.229157018552E-04  -.249712346155E-04  -.272114805150E-04
+  -.296529935259E-04  -.323137965579E-04  -.352135090802E-04  -.383734854072E-04  -.418169644759E-04
+  -.455692320012E-04  -.496577959531E-04  -.541125763614E-04  -.589661105153E-04  -.642537746948E-04
+  -.700140236331E-04  -.762886489837E-04  -.831230581338E-04  -.905665747784E-04  -.986727627418E-04
+  -.107499774604E-03  -.117110726765E-03  -.127574102640E-03  -.138964185762E-03  -.151361524602E-03
+  -.164853431016E-03  -.179534514225E-03  -.195507252330E-03  -.212882603351E-03  -.231780657805E-03
+  -.252331334872E-03  -.274675124113E-03  -.298963874726E-03  -.325361634216E-03  -.354045538276E-03
+  -.385206753521E-03  -.419051474566E-03  -.455801976685E-03  -.495697725036E-03  -.538996541090E-03
+  -.585975826484E-03  -.636933844065E-03  -.692191055293E-03  -.752091512537E-03  -.817004304022E-03
+  -.887325048289E-03  -.963477434050E-03  -.104591480016E-02  -.113512174913E-02  -.123161578610E-02
+  -.133594897373E-02  -.144870959131E-02  -.157052378475E-02  -.170205719163E-02  -.184401652300E-02
+  -.199715108123E-02  -.216225418981E-02  -.234016450840E-02  -.253176720241E-02  -.273799493314E-02
+  -.295982863044E-02  -.319829800522E-02  -.345448175512E-02  -.372950741095E-02  -.402455076639E-02
+  -.434083482738E-02  -.467962821083E-02  -.504224291595E-02  -.543003138416E-02  -.584438275784E-02
+  -.628671824254E-02  -.675848547449E-02  -.726115179320E-02  -.779619631977E-02  -.836510074230E-02
+  -.896933871173E-02  -.961036375180E-02  -.102895955883E-01  -.110084048028E-01  -.117680957185E-01
+  -.125698874283E-01  -.134148928810E-01  -.143040959500E-01  -.152383264219E-01  -.162182328579E-01
+  -.172442533072E-01  -.183165838742E-01  -.194351451798E-01  -.205995467913E-01  -.218090497398E-01
+  -.230625272955E-01  -.243584242237E-01  -.256947148069E-01  -.270688599845E-01  -.284777640350E-01
+  -.299177312998E-01  -.313844235304E-01  -.328728185251E-01  -.343771708044E-01  -.358909751616E-01
+  -.374069340093E-01  -.389169295206E-01  -.404120016387E-01  -.418823330899E-01  -.433172425776E-01
+  -.447051873492E-01  -.460337763055E-01  -.472897947460E-01  -.484592417369E-01  -.495273809637E-01
+  -.504788058814E-01  -.512975200596E-01  -.519670339068E-01  -.524704793819E-01  -.527907447048E-01
+  -.529106312025E-01  -.528130340036E-01  -.524811470922E-01  -.518986914023E-01  -.510501629354E-01
+  -.499210972552E-01  -.484983471774E-01  -.467703710750E-01  -.447275291357E-01  -.423623841869E-01
+  -.396700029067E-01  -.366482526876E-01  -.332980890836E-01  -.296238284582E-01  -.256334000572E-01
+  -.213385712675E-01  -.167551393607E-01  -.119030826639E-01  -.680666391989E-02  -.149447867508E-02
+   .400055809717E-02   .964129325744E-02   .153864898113E-01   .211910581684E-01   .270063664082E-01
+   .327806285361E-01   .384593644960E-01   .439859183787E-01   .493020149608E-01   .543483367884E-01
+   .590651229297E-01   .633928257334E-01   .672728861086E-01   .706486486983E-01   .734663415470E-01
+   .756760038418E-01   .772323091664E-01   .780953011480E-01   .782310671891E-01   .776123524791E-01
+   .762190965883E-01   .740388697383E-01   .710671925903E-01   .673077344109E-01   .627723933164E-01
+   .574812668231E-01   .514625220561E-01   .447521743106E-01   .373937813606E-01   .294380595883E-01
+   .209424270155E-01   .119704778763E-01   .259139362723E-02  -.712070377687E-02  -.170874490148E-01
+  -.272269717542E-01  -.374546648225E-01  -.476839679132E-01  -.578271485941E-01  -.677960579155E-01
+  -.775028356890E-01  -.868605462297E-01  -.957837431656E-01  -.104188988012E+00  -.111995364933E+00
+  -.119125027670E+00  -.125503778222E+00  -.131061638648E+00  -.135733357426E+00  -.139458799136E+00
+  -.142183186524E+00  -.143857181850E+00  -.144436804619E+00  -.143883187627E+00  -.142162176299E+00
+  -.139243779460E+00  -.135101482764E+00  -.129711438420E+00  -.123051545819E+00  -.115100438384E+00
+  -.105836389380E+00  -.952361491595E-01  -.832737211467E-01  -.699190839867E-01  -.551368608705E-01
+  -.388849340538E-01  -.211129979868E-01  -.176104043967E-02   .192422659544E-01   .419812848685E-01
+   .665552806880E-01   .930804651344E-01   .121692274663E+00   .152547938314E+00   .185829408576E+00
+   .221746742756E+00   .260542039905E+00   .302494058971E+00   .347923668529E+00   .397200307980E+00
+   .450749675616E+00
+ pseudo wavefunction
+   .663972351511E-04   .685563075965E-04   .707855876916E-04   .730873584138E-04   .754639769777E-04
+   .779178772481E-04   .804515722335E-04   .830676566589E-04   .857688096233E-04   .885577973434E-04
+   .914374759863E-04   .944107945946E-04   .974807981062E-04   .100650630473E-03   .103923537880E-03
+   .107302872072E-03   .110792093780E-03   .114394776273E-03   .118114609013E-03   .121955401433E-03
+   .125921086841E-03   .130015726445E-03   .134243513513E-03   .138608777669E-03   .143115989324E-03
+   .147769764258E-03   .152574868341E-03   .157536222422E-03   .162658907359E-03   .167948169229E-03
+   .173409424699E-03   .179048266572E-03   .184870469513E-03   .190881995968E-03   .197089002264E-03
+   .203497844918E-03   .210115087146E-03   .216947505579E-03   .224002097213E-03   .231286086565E-03
+   .238806933076E-03   .246572338749E-03   .254590256039E-03   .262868895992E-03   .271416736659E-03
+   .280242531775E-03   .289355319725E-03   .298764432799E-03   .308479506749E-03   .318510490661E-03
+   .328867657137E-03   .339561612819E-03   .350603309251E-03   .362004054094E-03   .373775522705E-03
+   .385929770095E-03   .398479243274E-03   .411436793997E-03   .424815691925E-03   .438629638218E-03
+   .452892779560E-03   .467619722651E-03   .482825549165E-03   .498525831193E-03   .514736647193E-03
+   .531474598451E-03   .548756826088E-03   .566601028610E-03   .585025480034E-03   .604049048601E-03
+   .623691216101E-03   .643972097822E-03   .664912463151E-03   .686533756842E-03   .708858120980E-03
+   .731908417651E-03   .755708252362E-03   .780281998210E-03   .805654820842E-03   .831852704228E-03
+   .858902477274E-03   .886831841288E-03   .915669398359E-03   .945444680641E-03   .976188180596E-03
+   .100793138223E-02   .104070679331E-02   .107454797870E-02   .110948959468E-02   .114556742448E-02
+   .118281841490E-02   .122128071416E-02   .126099371095E-02   .130199807480E-02   .134433579767E-02
+   .138805023702E-02   .143318616017E-02   .147978979016E-02   .152790885307E-02   .157759262691E-02
+   .162889199208E-02   .168185948348E-02   .173654934429E-02   .179301758154E-02   .185132202346E-02
+   .191152237869E-02   .197368029742E-02   .203785943455E-02   .210412551486E-02   .217254640030E-02
+   .224319215952E-02   .231613513957E-02   .239145004004E-02   .246921398954E-02   .254950662467E-02
+   .263241017156E-02   .271800953012E-02   .280639236091E-02   .289764917497E-02   .299187342648E-02
+   .308916160844E-02   .318961335151E-02   .329333152601E-02   .340042234727E-02   .351099548439E-02
+   .362516417253E-02   .374304532888E-02   .386475967237E-02   .399043184727E-02   .412019055082E-02
+   .425416866505E-02   .439250339277E-02   .453533639811E-02   .468281395158E-02   .483508707977E-02
+   .499231172005E-02   .515464888020E-02   .532226480327E-02   .549533113777E-02   .567402511344E-02
+   .585852972266E-02   .604903390782E-02   .624573275476E-02   .644882769247E-02   .665852669932E-02
+   .687504451593E-02   .709860286506E-02   .732943067851E-02   .756776433150E-02   .781384788462E-02
+   .806793333361E-02   .833028086733E-02   .860115913403E-02   .888084551630E-02   .916962641496E-02
+   .946779754213E-02   .977566422386E-02   .100935417125E-01   .104217555095E-01   .107606416979E-01
+   .111105472870E-01   .114718305664E-01   .118448614734E-01   .122300219709E-01   .126277064379E-01
+   .130383220736E-01   .134622893128E-01   .139000422567E-01   .143520291161E-01   .148187126701E-01
+   .153005707386E-01   .157980966711E-01   .163117998507E-01   .168422062147E-01   .173898587916E-01
+   .179553182560E-01   .185391635014E-01   .191419922307E-01   .197644215670E-01   .204070886833E-01
+   .210706514523E-01   .217557891184E-01   .224632029894E-01   .231936171525E-01   .239477792120E-01
+   .247264610512E-01   .255304596185E-01   .263605977393E-01   .272177249535E-01   .281027183795E-01
+   .290164836067E-01   .299599556162E-01   .309340997302E-01   .319399125928E-01   .329784231813E-01
+   .340506938500E-01   .351578214068E-01   .363009382240E-01   .374812133849E-01   .386998538651E-01
+   .399581057530E-01   .412572555066E-01   .425986312511E-01   .439836041165E-01   .454135896170E-01
+   .468900490727E-01   .484144910762E-01   .499884730036E-01   .516136025719E-01   .532915394445E-01
+   .550239968844E-01   .568127434585E-01   .586596047920E-01   .605664653754E-01   .625352704248E-01
+   .645680277971E-01   .666668099598E-01   .688337560186E-01   .710710738010E-01   .733810419996E-01
+   .757660123736E-01   .782284120103E-01   .807707456472E-01   .833955980533E-01   .861056364728E-01
+   .889036131274E-01   .917923677798E-01   .947748303558E-01   .978540236246E-01   .101033065935E+00
+   .104315174005E+00   .107703665766E+00   .111201963250E+00   .114813595520E+00   .118542201644E+00
+   .122391533694E+00   .126365459767E+00   .130467967028E+00   .134703164744E+00   .139075287311E+00
+   .143588697258E+00   .148247888199E+00   .153057487717E+00   .158022260155E+00   .163147109286E+00
+   .168437080816E+00   .173897364694E+00   .179533297167E+00   .185350362536E+00   .191354194542E+00
+   .197550577302E+00   .203945445729E+00   .210544885303E+00   .217355131108E+00   .224382565978E+00
+   .231633717615E+00   .239115254473E+00   .246833980234E+00   .254796826609E+00   .263010844201E+00
+   .271483191116E+00   .280221118948E+00   .289231955732E+00   .298523085373E+00   .308101923018E+00
+   .317975885725E+00   .328152357731E+00   .338638649492E+00   .349441949567E+00   .360569268298E+00
+   .372027372087E+00   .383822706919E+00   .395961309627E+00   .408448705169E+00   .421289788039E+00
+   .434488685651E+00   .448048601378E+00   .461971634606E+00   .476258574976E+00   .490908667691E+00
+   .505919346537E+00   .521285931020E+00   .537001283822E+00   .553055424604E+00   .569435096110E+00
+   .586123278501E+00   .603098647998E+00   .620334976177E+00   .637800466815E+00   .655457027942E+00
+   .673259477906E+00   .691154685819E+00   .709080648820E+00   .726965511287E+00   .744726534506E+00
+   .762269029552E+00   .779485271246E+00   .796253417256E+00   .812436463599E+00   .827881276214E+00
+   .842417747689E+00   .855858138618E+00   .867996674229E+00   .878609478332E+00   .887454937835E+00
+   .894274601109E+00   .898794721238E+00   .900728559178E+00   .899779560163E+00   .895641685835E+00
+   .888099081715E+00
+ ae wavefunction
+  -.624992279524E-02  -.641428796845E-02  -.658288650903E-02  -.675582275626E-02  -.693320332034E-02
+  -.711513711367E-02  -.730173538111E-02  -.749311172932E-02  -.768938215489E-02  -.789066507128E-02
+  -.809708133431E-02  -.830875426607E-02  -.852580967704E-02  -.874837588632E-02  -.897658373963E-02
+  -.921056662500E-02  -.945046048583E-02  -.969640383108E-02  -.994853774244E-02  -.102070058780E-01
+  -.104719544722E-01  -.107435323320E-01  -.110218908288E-01  -.113071838848E-01  -.115995679557E-01
+  -.118992020069E-01  -.122062474842E-01  -.125208682781E-01  -.128432306817E-01  -.131735033407E-01
+  -.135118571964E-01  -.138584654193E-01  -.142135033352E-01  -.145771483405E-01  -.149495798082E-01
+  -.153309789824E-01  -.157215288619E-01  -.161214140711E-01  -.165308207175E-01  -.169499362362E-01
+  -.173789492183E-01  -.178180492246E-01  -.182674265818E-01  -.187272721613E-01  -.191977771391E-01
+  -.196791327352E-01  -.201715299326E-01  -.206751591728E-01  -.211902100283E-01  -.217168708497E-01
+  -.222553283855E-01  -.228057673747E-01  -.233683701091E-01  -.239433159640E-01  -.245307808962E-01
+  -.251309369066E-01  -.257439514665E-01  -.263699869043E-01  -.270091997521E-01  -.276617400490E-01
+  -.283277505995E-01  -.290073661839E-01  -.297007127195E-01  -.304079063698E-01  -.311290525982E-01
+  -.318642451652E-01  -.326135650651E-01  -.333770794010E-01  -.341548401931E-01  -.349468831198E-01
+  -.357532261874E-01  -.365738683255E-01  -.374087879056E-01  -.382579411794E-01  -.391212606344E-01
+  -.399986532632E-01  -.408899987435E-01  -.417951475263E-01  -.427139188289E-01  -.436460985296E-01
+  -.445914369627E-01  -.455496466086E-01  -.465203996789E-01  -.475033255934E-01  -.484980083453E-01
+  -.495039837554E-01  -.505207366118E-01  -.515476976935E-01  -.525842406793E-01  -.536296789390E-01
+  -.546832622086E-01  -.557441731494E-01  -.568115237928E-01  -.578843518729E-01  -.589616170488E-01
+  -.600421970222E-01  -.611248835534E-01  -.622083783826E-01  -.632912890639E-01  -.643721247198E-01
+  -.654492917267E-01  -.665210893442E-01  -.675857052995E-01  -.686412113449E-01  -.696855588050E-01
+  -.707165741328E-01  -.717319544997E-01  -.727292634424E-01  -.737059265956E-01  -.746592275435E-01
+  -.755863038219E-01  -.764841431125E-01  -.773495796697E-01  -.781792910269E-01  -.789697950333E-01
+  -.797174472760E-01  -.804184389491E-01  -.810687952325E-01  -.816643742544E-01  -.822008667110E-01
+  -.826737962271E-01  -.830785205444E-01  -.834102336335E-01  -.836639688272E-01  -.838346030850E-01
+  -.839168624994E-01  -.839053291647E-01  -.837944495347E-01  -.835785443997E-01  -.832518206221E-01
+  -.828083847731E-01  -.822422588205E-01  -.815473980181E-01  -.807177111560E-01  -.797470833298E-01
+  -.786294013906E-01  -.773585822372E-01  -.759286041114E-01  -.743335410533E-01  -.725676006713E-01
+  -.706251653693E-01  -.685008371698E-01  -.661894862541E-01  -.636863033267E-01  -.609868558912E-01
+  -.580871485002E-01  -.549836870149E-01  -.516735468753E-01  -.481544453439E-01  -.444248176429E-01
+  -.404838968502E-01  -.363317973668E-01  -.319696017003E-01  -.273994502372E-01  -.226246335983E-01
+  -.176496870821E-01  -.124804866085E-01  -.712434547298E-02  -.159011111788E-02   .411173897912E-02
+   .996900330816E-02   .159676653375E-01   .220918067568E-01   .283235262955E-01   .346428655910E-01
+   .410277437315E-01   .474539022852E-01   .538948628205E-01   .603218991429E-01   .667040266644E-01
+   .730080114885E-01   .791984019067E-01   .852375850627E-01   .910858715513E-01   .967016106879E-01
+   .102041339105E+00   .107059965226E+00   .111710992006E+00   .115946780153E+00   .119718853791E+00
+   .122978250272E+00   .125675915450E+00   .127763145337E+00   .129192074513E+00   .129916211071E+00
+   .129891017145E+00   .129074533272E+00   .127428043904E+00   .124916780382E+00   .121510656545E+00
+   .117185030934E+00   .111921488267E+00   .105708631455E+00   .985428740581E-01   .904292215879E-01
+   .813820286615E-01   .714257175818E-01   .605954426125E-01   .489376830014E-01   .365107467745E-01
+   .233851665261E-01   .964396795251E-02  -.461720816713E-02  -.192901493329E-01  -.342542977026E-01
+  -.493771755008E-01  -.645150235655E-01  -.795136654273E-01  -.942096081710E-01  -.108431390696E+00
+  -.122001189221E+00  -.134736687676E+00  -.146453215401E+00  -.156966145244E+00  -.166093533394E+00
+  -.173658971796E+00  -.179494617516E+00  -.183444359239E+00  -.185367076119E+00  -.185139937302E+00
+  -.182661683243E+00  -.177855823935E+00  -.170673684860E+00  -.161097228353E+00  -.149141575677E+00
+  -.134857153494E+00  -.118331387870E+00  -.996898700293E-01  -.790969212432E-01  -.567554900384E-01
+  -.329063236460E-01  -.782636737468E-02   .181736397515E-01   .447523873920E-01   .715420279865E-01
+   .981529900186E-01   .124179502642E+00   .149205719346E+00   .172812287217E+00   .194583201826E+00
+   .214112852091E+00   .231013293004E+00   .244921875525E+00   .255509203640E+00   .262487003787E+00
+   .265615331374E+00   .264708795184E+00   .259641761174E+00   .250352543664E+00   .236846517626E+00
+   .219198032812E+00   .197551019697E+00   .172118232248E+00   .143179138775E+00   .111076524364E+00
+   .762119000160E-01   .390398301725E-01   .612989728750E-04  -.401837588008E-01  -.811246309431E-01
+  -.122168567930E+00  -.162709945080E+00  -.202139693118E+00  -.239854834463E+00  -.275267954796E+00
+  -.307816434102E+00  -.336971258315E+00  -.362245231053E+00  -.383200404451E+00  -.399454556066E+00
+  -.410686569014E+00  -.416640644646E+00  -.417129384892E+00  -.412035880312E+00  -.401314952966E+00
+  -.384993605593E+00  -.363170562154E+00  -.336014696144E+00  -.303762176926E+00  -.266712291930E+00
+  -.225222034639E+00  -.179699632666E+00  -.130597228696E+00  -.784029407743E-01  -.236325322673E-01
+   .331790804865E-01   .914862643488E-01   .150740848492E+00   .210399869975E+00   .269932739225E+00
+   .328827709489E+00   .386597568285E+00   .442784494822E+00   .496964063957E+00   .548748397940E+00
+   .597788489366E+00   .643775740123E+00   .686442781409E+00   .725563645399E+00   .760953372499E+00
+   .792467142480E+00   .819999018415E+00   .843480390364E+00   .862878200035E+00   .878193018915E+00
+   .889457041526E+00   .896732043037E+00   .900107337513E+00   .899697760281E+00   .895641685835E+00
+   .888099081715E+00
+ pseudo wavefunction
+   .292991384431E-05   .302518733494E-05   .312355888197E-05   .322512922650E-05   .333000238544E-05
+   .343828575811E-05   .355009023616E-05   .366553031720E-05   .378472422198E-05   .390779401552E-05
+   .403486573208E-05   .416606950426E-05   .430153969623E-05   .444141504136E-05   .458583878430E-05
+   .473495882765E-05   .488892788345E-05   .504790362953E-05   .521204887106E-05   .538153170720E-05
+   .555652570331E-05   .573721006864E-05   .592376983993E-05   .611639607082E-05   .631528602757E-05
+   .652064339107E-05   .673267846540E-05   .695160839322E-05   .717765737816E-05   .741105691439E-05
+   .765204602373E-05   .790087150042E-05   .815778816384E-05   .842305911951E-05   .869695602848E-05
+   .897975938561E-05   .927175880677E-05   .957325332547E-05   .988455169907E-05   .102059727250E-04
+   .105378455673E-04   .108805100935E-04   .112343172230E-04   .115996292863E-04   .119768203960E-04
+   .123662768300E-04   .127683974270E-04   .131835939952E-04   .136122917338E-04   .140549296686E-04
+   .145119611016E-04   .149838540751E-04   .154710918511E-04   .159741734064E-04   .164936139434E-04
+   .170299454179E-04   .175837170837E-04   .181554960554E-04   .187458678890E-04   .193554371815E-04
+   .199848281904E-04   .206346854730E-04   .213056745461E-04   .219984825683E-04   .227138190433E-04
+   .234524165465E-04   .242150314757E-04   .250024448256E-04   .258154629875E-04   .266549185756E-04
+   .275216712794E-04   .284166087445E-04   .293406474818E-04   .302947338059E-04   .312798448048E-04
+   .322969893404E-04   .333472090820E-04   .344315795732E-04   .355512113338E-04   .367072509970E-04
+   .379008824844E-04   .391333282183E-04   .404058503743E-04   .417197521741E-04   .430763792204E-04
+   .444771208760E-04   .459234116863E-04   .474167328497E-04   .489586137349E-04   .505506334476E-04
+   .521944224486E-04   .538916642247E-04   .556440970131E-04   .574535155828E-04   .593217730741E-04
+   .612507828971E-04   .632425206929E-04   .652990263584E-04   .674224061367E-04   .696148347763E-04
+   .718785577602E-04   .742158936075E-04   .766292362506E-04   .791210574892E-04   .816939095248E-04
+   .843504275777E-04   .870933325894E-04   .899254340128E-04   .928496326940E-04   .958689238481E-04
+   .989864001312E-04   .102205254814E-03   .105528785059E-03   .108960395302E-03   .112503600749E-03
+   .116162030984E-03   .119939433695E-03   .123839678522E-03   .127866761031E-03   .132024806823E-03
+   .136318075766E-03   .140750966377E-03   .145328020344E-03   .150053927194E-03   .154933529114E-03
+   .159971825938E-03   .165173980287E-03   .170545322885E-03   .176091358049E-03   .181817769359E-03
+   .187730425513E-03   .193835386379E-03   .200138909244E-03   .206647455273E-03   .213367696175E-03
+   .220306521099E-03   .227471043749E-03   .234868609746E-03   .242506804224E-03   .250393459687E-03
+   .258536664125E-03   .266944769402E-03   .275626399922E-03   .284590461590E-03   .293846151074E-03
+   .303402965370E-03   .313270711705E-03   .323459517763E-03   .333979842258E-03   .344842485878E-03
+   .356058602586E-03   .367639711322E-03   .379597708096E-03   .391944878502E-03   .404693910666E-03
+   .417857908638E-03   .431450406251E-03   .445485381471E-03   .459977271241E-03   .474940986855E-03
+   .490391929875E-03   .506346008614E-03   .522819655211E-03   .539829843321E-03   .557394106443E-03
+   .575530556919E-03   .594257905632E-03   .613595482426E-03   .633563257294E-03   .654181862351E-03
+   .675472614650E-03   .697457539854E-03   .720159396831E-03   .743601703193E-03   .767808761842E-03
+   .792805688563E-03   .818618440718E-03   .845273847101E-03   .872799639009E-03   .901224482596E-03
+   .930578012581E-03   .960890867371E-03   .992194725694E-03   .102452234482E-02   .105790760044E-02
+   .109238552837E-02   .112799236803E-02   .116476560804E-02   .120274403384E-02   .124196777753E-02
+   .128247837020E-02   .132431879665E-02   .136753355288E-02   .141216870642E-02   .145827195971E-02
+   .150589271673E-02   .155508215306E-02   .160589328971E-02   .165838107083E-02   .171260244569E-02
+   .176861645515E-02   .182648432296E-02   .188626955223E-02   .194803802744E-02   .201185812234E-02
+   .207780081420E-02   .214593980490E-02   .221635164918E-02   .228911589080E-02   .236431520691E-02
+   .244203556146E-02   .252236636807E-02   .260540066311E-02   .269123528973E-02   .277997109349E-02
+   .287171313041E-02   .296657088829E-02   .306465852197E-02   .316609510368E-02   .327100488914E-02
+   .337951760032E-02   .349176872599E-02   .360789984065E-02   .372805894296E-02   .385240081435E-02
+   .398108739857E-02   .411428820288E-02   .425218072126E-02   .439495087999E-02   .454279350553E-02
+   .469591281451E-02   .485452292486E-02   .501884838707E-02   .518912473330E-02   .536559904186E-02
+   .554853051306E-02   .573819105160E-02   .593486584886E-02   .613885395701E-02   .635046884433E-02
+   .657003891893E-02   .679790800470E-02   .703443574972E-02   .727999794326E-02   .753498671173E-02
+   .779981055858E-02   .807489420527E-02   .836067818227E-02   .865761810898E-02   .896618358961E-02
+   .928685663846E-02   .962012953179E-02   .996650196489E-02   .103264773709E-01   .107005582329E-01
+   .110892401909E-01   .114930047123E-01   .119123100531E-01   .123475801956E-01   .127991913918E-01
+   .132674558872E-01   .137526023274E-01   .142547522771E-01   .147738921911E-01   .153098400780E-01
+   .158622059901E-01   .164303453449E-01   .170133039485E-01   .176097534396E-01   .182179157040E-01
+   .188354746307E-01   .194594733851E-01   .200861951673E-01   .207110252101E-01   .213282915465E-01
+   .219310818608E-01   .225110335212E-01   .230580937060E-01   .235602463754E-01   .240032027406E-01
+   .243700518597E-01   .246408680714E-01   .247922722155E-01   .247969440092E-01   .246230836317E-01
+   .242338215616E-01   .235865771077E-01   .226323679637E-01   .213150756032E-01   .195706745451E-01
+   .173264375795E-01   .145001341099E-01   .109992449659E-01   .672022453185E-02   .154784993340E-02
+  -.464529257226E-02  -.119991219099E-01  -.206661016641E-01  -.308109144052E-01  -.426096647735E-01
+  -.562484890293E-01  -.719214329968E-01  -.898274461995E-01  -.110166329176E+00  -.133133465664E+00
+  -.158913174340E+00  -.187670529487E+00  -.219541530379E+00  -.254621549820E+00  -.292946549488E+00
+  -.334529061939E+00
+ ae wavefunction
+   .722286842597E-04   .741282296313E-04   .760767020703E-04   .780753076077E-04   .801252785334E-04
+   .822278737576E-04   .843843791624E-04   .865961079412E-04   .888644009251E-04   .911906268954E-04
+   .935761828793E-04   .960224944272E-04   .985310158700E-04   .101103230554E-03   .103740651052E-03
+   .106444819342E-03   .109217306965E-03   .112059715141E-03   .114973674856E-03   .117960846905E-03
+   .121022921893E-03   .124161620196E-03   .127378691864E-03   .130675916476E-03   .134055102931E-03
+   .137518089184E-03   .141066741909E-03   .144702956088E-03   .148428654527E-03   .152245787287E-03
+   .156156331021E-03   .160162288221E-03   .164265686359E-03   .168468576918E-03   .172773034307E-03
+   .177181154656E-03   .181695054463E-03   .186316869117E-03   .191048751258E-03   .195892868981E-03
+   .200851403865E-03   .205926548824E-03   .211120505763E-03   .216435483029E-03   .221873692644E-03
+   .227437347305E-03   .233128657146E-03   .238949826230E-03   .244903048777E-03   .250990505094E-03
+   .257214357199E-03   .263576744126E-03   .270079776877E-03   .276725533020E-03   .283516050901E-03
+   .290453323452E-03   .297539291577E-03   .304775837090E-03   .312164775182E-03   .319707846389E-03
+   .327406708050E-03   .335262925205E-03   .343277960931E-03   .351453166069E-03   .359789768325E-03
+   .368288860712E-03   .376951389296E-03   .385778140224E-03   .394769726001E-03   .403926570976E-03
+   .413248896010E-03   .422736702293E-03   .432389754269E-03   .442207561642E-03   .452189360425E-03
+   .462334092993E-03   .472640387117E-03   .483106533928E-03   .493730464793E-03   .504509727059E-03
+   .515441458638E-03   .526522361399E-03   .537748673344E-03   .549116139531E-03   .560619981726E-03
+   .572254866766E-03   .584014873599E-03   .595893459009E-03   .607883421992E-03   .619976866801E-03
+   .632165164639E-03   .644438914030E-03   .656787899864E-03   .669201051150E-03   .681666397516E-03
+   .694171024481E-03   .706701027575E-03   .719241465369E-03   .731776311486E-03   .744288405714E-03
+   .756759404323E-03   .769169729723E-03   .781498519622E-03   .793723575862E-03   .805821313142E-03
+   .817766707847E-03   .829533247255E-03   .841092879403E-03   .852415963946E-03   .863471224358E-03
+   .874225701889E-03   .884644711705E-03   .894691801709E-03   .904328714558E-03   .913515353482E-03
+   .922209752518E-03   .930368051858E-03   .937944479064E-03   .944891336947E-03   .951158998991E-03
+   .956695913264E-03   .961448615807E-03   .965361754596E-03   .968378125200E-03   .970438719382E-03
+   .971482787908E-03   .971447918940E-03   .970270133445E-03   .967883999127E-03   .964222764436E-03
+   .959218514309E-03   .952802349306E-03   .944904589898E-03   .935455007672E-03   .924383085268E-03
+   .911618306866E-03   .897090481065E-03   .880730097942E-03   .862468722099E-03   .842239423385E-03
+   .819977246950E-03   .795619724133E-03   .769107425557E-03   .740384557618E-03   .709399603304E-03
+   .676106008048E-03   .640462910950E-03   .602435921338E-03   .561997940227E-03   .519130025668E-03
+   .473822300462E-03   .426074900025E-03   .375898957461E-03   .323317622101E-03   .268367106836E-03
+   .211097758605E-03   .151575145345E-03   .898811515478E-04   .261150734478E-04  -.396052963542E-04
+  -.107142606212E-03  -.176338917259E-03  -.247014723494E-03  -.318968035169E-03  -.391973541929E-03
+  -.465781873819E-03  -.540118980300E-03  -.614685649536E-03  -.689157192621E-03  -.763183319503E-03
+  -.836388235146E-03  -.908370985608E-03  -.978706084317E-03  -.104694444878E-02  -.111261467742E-02
+  -.117522469527E-02  -.123426379573E-02  -.128920510394E-02  -.133950848462E-02  -.138462391499E-02
+  -.142399533963E-02  -.145706502029E-02  -.148327838870E-02  -.150208940450E-02  -.151296641380E-02
+  -.151539849561E-02  -.150890227493E-02  -.149302917073E-02  -.146737303660E-02  -.143157813927E-02
+  -.138534740771E-02  -.132845087155E-02  -.126073419354E-02  -.118212718602E-02  -.109265218684E-02
+  -.992432155682E-03  -.881698338308E-03  -.760797333527E-03  -.630197386728E-03  -.490493725091E-03
+  -.342412743501E-03  -.186814847928E-03  -.246957657313E-04   .142813858835E-03   .314450749789E-03
+   .488823309202E-03   .664418070748E-03   .839608393842E-03   .101266547990E-02   .118177178429E-02
+   .134503689010E-02   .150051588957E-02   .164623026656E-02   .178019117806E-02   .190042490827E-02
+   .200500016080E-02   .209205679207E-02   .215983555824E-02   .220670841194E-02   .223120883111E-02
+   .223206160670E-02   .220821147712E-02   .215884998025E-02   .208343989330E-02   .198173664086E-02
+   .185380607075E-02   .170003802795E-02   .152115520338E-02   .131821680015E-02   .109261664915E-02
+   .846075520576E-03   .580627517543E-03   .298600598561E-03   .259145268025E-05  -.304564854690E-03
+  -.619829814491E-03  -.940000019377E-03  -.126174793039E-02  -.158166303056E-02  -.189629138781E-02
+  -.220217227617E-02  -.249587209671E-02  -.277401742246E-02  -.303332810422E-02  -.327064745369E-02
+  -.348296415491E-02  -.366742287758E-02  -.382132395929E-02  -.394211361681E-02  -.402736563823E-02
+  -.407475493082E-02  -.408202329311E-02  -.404693833816E-02  -.396724730553E-02  -.384062823321E-02
+  -.366464146996E-02  -.343668480013E-02  -.315395558531E-02  -.281342334740E-02  -.241181613386E-02
+  -.194562387834E-02  -.141112171505E-02  -.804415952738E-03  -.121515075235E-03   .641572241279E-03
+   .148871051314E-02   .242348108781E-02   .344899528036E-02   .456767651643E-02   .578101107777E-02
+   .708926713049E-02   .849118234302E-02   .998362232301E-02   .115612155336E-01   .132159740165E-01
+   .149369110875E-01   .167096652334E-01   .185161356145E-01   .203341310414E-01   .221370332623E-01
+   .238934761000E-01   .255670429427E-01   .271159854355E-01   .284929659639E-01   .296448261290E-01
+   .305123832025E-01   .310302566061E-01   .311267267546E-01   .307236289689E-01   .297362858793E-01
+   .280734820389E-01   .256374856179E-01   .223241222738E-01   .180229081144E-01   .126172489166E-01
+   .598471442572E-02  -.200260299111E-02  -.114776340912E-01  -.225777717511E-01  -.354441914234E-01
+  -.502210411722E-01  -.670544903457E-01  -.860916273469E-01  -.107479199193E+00  -.131362188635E+00
+  -.157882228456E+00  -.187175857055E+00  -.219372624576E+00  -.254593064275E+00  -.292946549488E+00
+  -.334529061939E+00
+ pseudo wavefunction
+   .227533763851E-08   .242572016231E-08   .258604182800E-08   .275695953736E-08   .293917360834E-08
+   .313343064461E-08   .334052659468E-08   .356131001319E-08   .379668553781E-08   .404761759589E-08
+   .431513435610E-08   .460033194125E-08   .490437891954E-08   .522852109268E-08   .557408660039E-08
+   .594249136235E-08   .633524487978E-08   .675395642049E-08   .720034161266E-08   .767622947448E-08
+   .818356990838E-08   .872444169051E-08   .930106098839E-08   .991579044140E-08   .105711488415E-07
+   .112698214535E-07   .120146710182E-07   .128087494816E-07   .136553105003E-07   .145578227729E-07
+   .155199842528E-07   .165457373000E-07   .176392848347E-07   .188051075583E-07   .200479823127E-07
+   .213730016528E-07   .227855947130E-07   .242915494524E-07   .258970363704E-07   .276086337897E-07
+   .294333548107E-07   .313786760466E-07   .334525682584E-07   .356635290144E-07   .380206175078E-07
+   .405334916765E-07   .432124477753E-07   .460684625639E-07   .491132382836E-07   .523592506054E-07
+   .558197997489E-07   .595090649784E-07   .634421627010E-07   .676352084056E-07   .721053826940E-07
+   .768710016774E-07   .819515920255E-07   .873679709751E-07   .931423316275E-07   .992983338828E-07
+   .105861201385E-06   .112857824874E-06   .120316872369E-06   .128268906633E-06   .136746510401E-06
+   .145784419891E-06   .155419667126E-06   .165691731677E-06   .176642702425E-06   .188317450019E-06
+   .200763810734E-06   .214032782474E-06   .228178733738E-06   .243259626391E-06   .259337253162E-06
+   .276477490839E-06   .294750570195E-06   .314231363764E-06   .334999692625E-06   .357140653472E-06
+   .380744967298E-06   .405909351125E-06   .432736914307E-06   .461337581022E-06   .491828540689E-06
+   .524334728163E-06   .558989335659E-06   .595934358517E-06   .635321177043E-06   .677311176802E-06
+   .722076409912E-06   .769800300053E-06   .820678394067E-06   .874919163243E-06   .932744857564E-06
+   .994392416419E-06   .106011443951E-05   .113018022194E-05   .120487685770E-05   .128451041617E-05
+   .136940719625E-05   .145991506353E-05   .155640487580E-05   .165927200273E-05   .176893794611E-05
+   .188585206714E-05   .201049342787E-05   .214337275445E-05   .228503453010E-05   .243605922646E-05
+   .259706568248E-05   .276871364051E-05   .295170645015E-05   .314679395074E-05   .335477554456E-05
+   .357650347308E-05   .381288630989E-05   .406489268461E-05   .433355525295E-05   .461997492929E-05
+   .492532539922E-05   .525085793034E-05   .559790650127E-05   .596789326984E-05   .636233440288E-05
+   .678284629158E-05   .723115217789E-05   .770908921925E-05   .821861602054E-05   .876182066436E-05
+   .934092927238E-05   .995831513317E-05   .106165084339E-04   .113182066359E-04   .120662855368E-04
+   .128638110646E-04   .137140518523E-04   .146204926450E-04   .155868485937E-04   .166170804966E-04
+   .177154110479E-04   .188863421635E-04   .201346734538E-04   .214655219196E-04   .228843429529E-04
+   .243969527288E-04   .260095520808E-04   .277287519585E-04   .295616005727E-04   .315156123396E-04
+   .335987987440E-04   .358197012500E-04   .381874263940E-04   .407116832063E-04   .434028231160E-04
+   .462718825054E-04   .493306280895E-04   .525916053098E-04   .560681899438E-04   .597746431449E-04
+   .637261701413E-04   .679389828398E-04   .724303665962E-04   .772187514294E-04   .823237879806E-04
+   .877664285330E-04   .935690134342E-04   .997553632840E-04   .106350877277E-03   .113382638111E-03
+   .120879523914E-03   .128872327652E-03   .137393884535E-03   .146479207954E-03   .156165634542E-03
+   .166492978964E-03   .177503699110E-03   .189243072400E-03   .201759383961E-03   .215104127486E-03
+   .229332219652E-03   .244502229038E-03   .260676620527E-03   .277922016287E-03   .296309474458E-03
+   .315914786810E-03   .336818796670E-03   .359107738558E-03   .382873601052E-03   .408214514536E-03
+   .435235165572E-03   .464047239827E-03   .494769895568E-03   .527530269946E-03   .562464020413E-03
+   .599715903856E-03   .639440396161E-03   .681802355211E-03   .726977730497E-03   .775154322810E-03
+   .826532597764E-03   .881326557181E-03   .939764672726E-03   .100209088654E-02   .106856568398E-02
+   .113946724411E-02   .121509267393E-02   .129575933290E-02   .138180625504E-02   .147359567622E-02
+   .157151467522E-02   .167597693773E-02   .178742465342E-02   .190633055703E-02   .203320012545E-02
+   .216857394401E-02   .231303025633E-02   .246718771334E-02   .263170833888E-02   .280730073076E-02
+   .299472351790E-02   .319478909656E-02   .340836767063E-02   .363639162353E-02   .387986025216E-02
+   .413984489628E-02   .441749450020E-02   .471404164734E-02   .503080911265E-02   .536921698208E-02
+   .573079039397E-02   .611716796250E-02   .653011094982E-02   .697151326054E-02   .744341233969E-02
+   .794800106417E-02   .848764072675E-02   .906487522231E-02   .968244655731E-02   .103433118159E-01
+   .110506617306E-01   .118079410187E-01   .126188706653E-01   .134874723475E-01   .144180952188E-01
+   .154154452889E-01   .164846176609E-01   .176311319101E-01   .188609709161E-01   .201806234864E-01
+   .215971311394E-01   .231181394461E-01   .247519543597E-01   .265076039945E-01   .283949063484E-01
+   .304245434924E-01   .326081427809E-01   .349583656614E-01   .374890046830E-01   .402150893179E-01
+   .431530012117E-01   .463205994733E-01   .497373565848E-01   .534245054709E-01   .574051981872E-01
+   .617046765834E-01   .663504551453E-01   .713725160190E-01   .768035159572E-01   .826790045885E-01
+   .890376529834E-01   .959214909553E-01   .103376150877E+00   .111451114987E+00   .120199962194E+00
+   .129680609215E+00   .139955539528E+00   .151092011960E+00   .163162238921E+00   .176243522049E+00
+   .190418330651E+00   .205774305520E+00   .222404167669E+00   .240405508212E+00   .259880432091E+00
+   .280935024671E+00   .303678606600E+00   .328222738802E+00   .354679936492E+00   .383162048747E+00
+   .413778259142E+00   .446632663542E+00   .481821384186E+00   .519429185380E+00   .559525566374E+00
+   .602160322402E+00   .647358586454E+00   .695115393374E+00   .745389845285E+00   .798099004150E+00
+   .853111693905E+00   .910242460882E+00   .969246016115E+00   .102981256403E+01   .109156450449E+01
+   .115405507257E+01   .121676954274E+01   .127912965826E+01   .134050193560E+01   .140021041642E+01
+   .145767836256E+01
+ ae wavefunction
+   .465681878388E-04   .491295660944E-04   .518265866133E-04   .546667149933E-04   .576578152313E-04
+   .608081717563E-04   .641265126545E-04   .676220341508E-04   .713044264143E-04   .751839007648E-04
+   .792712183553E-04   .835777204148E-04   .881153601361E-04   .928967363016E-04   .979351287422E-04
+   .103244535732E-03   .108839713425E-03   .114736217445E-03   .120950446753E-03   .127499689913E-03
+   .134402173886E-03   .141677115497E-03   .149344775722E-03   .157426516942E-03   .165944863334E-03
+   .174923564566E-03   .184387662978E-03   .194363564440E-03   .204879113082E-03   .215963670110E-03
+   .227648196927E-03   .239965342792E-03   .252949537262E-03   .266637087669E-03   .281066281908E-03
+   .296277496811E-03   .312313312417E-03   .329218632433E-03   .347040811226E-03   .365829787690E-03
+   .385638226335E-03   .406521665989E-03   .428538676504E-03   .451751023870E-03   .476223844188E-03
+   .502025826936E-03   .529229408009E-03   .557910973030E-03   .588151071431E-03   .620034641864E-03
+   .653651249474E-03   .689095335639E-03   .726466480757E-03   .765869680733E-03   .807415637789E-03
+   .851221066295E-03   .897409014297E-03   .946109201475E-03   .997458374262E-03   .105160067890E-02
+   .110868805320E-02   .116888063784E-02   .123234720796E-02   .129926562601E-02   .136982331653E-02
+   .144421776396E-02   .152265703410E-02   .160536032034E-02   .169255851537E-02   .178449480936E-02
+   .188142531543E-02   .198361972336E-02   .209136198221E-02   .220495101294E-02   .232470145160E-02
+   .245094442384E-02   .258402835167E-02   .272431979279E-02   .287220431324E-02   .302808739376E-02
+   .319239537026E-02   .336557640856E-02   .354810151354E-02   .374046557258E-02   .394318843310E-02
+   .415681601360E-02   .438192144759E-02   .461910625934E-02   .486900157017E-02   .513226933369E-02
+   .540960359788E-02   .570173179163E-02   .600941603275E-02   .633345445414E-02   .667468254395E-02
+   .703397449518E-02   .741224455932E-02   .781044839798E-02   .822958442547E-02   .867069513453E-02
+   .913486839631E-02   .962323872466E-02   .101369884936E-01   .106773490953E-01   .112456020256E-01
+   .118430798804E-01   .124711672472E-01   .131313014729E-01   .138249732863E-01   .145537272548E-01
+   .153191620488E-01   .161229304874E-01   .169667393372E-01   .178523488305E-01   .187815718700E-01
+   .197562728813E-01   .207783662742E-01   .218498144678E-01   .229726254338E-01   .241488497075E-01
+   .253805768127E-01   .266699310440E-01   .280190665447E-01   .294301616172E-01   .309054121960E-01
+   .324470244132E-01   .340572061797E-01   .357381577036E-01   .374920608632E-01   .393210673496E-01
+   .412272854891E-01   .432127656568E-01   .452794841860E-01   .474293256811E-01   .496640636387E-01
+   .519853392805E-01   .543946385072E-01   .568932668790E-01   .594823225368E-01   .621626669807E-01
+   .649348936289E-01   .677992940919E-01   .707558221023E-01   .738040550608E-01   .769431531682E-01
+   .801718161380E-01   .834882375018E-01   .868900565505E-01   .903743079796E-01   .939373693453E-01
+   .975749064743E-01   .101281817014E+00   .105052172360E+00   .108879158252E+00   .112755014376E+00
+   .116670973398E+00   .120617199881E+00   .124582729649E+00   .128555410191E+00   .132521842794E+00
+   .136467327160E+00   .140375809345E+00   .144229833942E+00   .148010501562E+00   .151697432779E+00
+   .155268739884E+00   .158701007981E+00   .161969287126E+00   .165047097398E+00   .167906448922E+00
+   .170517878943E+00   .172850508103E+00   .174872118038E+00   .176549252419E+00   .177847343481E+00
+   .178730866017E+00   .179163520745E+00   .179108448834E+00   .178528479285E+00   .177386410688E+00
+   .175645328699E+00   .173268960336E+00   .170222065853E+00   .166470868580E+00   .161983522604E+00
+   .156730617624E+00   .150685719652E+00   .143825945458E+00   .136132567850E+00   .127591647906E+00
+   .118194689282E+00   .107939308596E+00   .968299147296E-01   .848783886353E-01   .721047540127E-01
+   .585378278983E-01   .442158389790E-01   .291870002113E-01   .135100211977E-01  -.274545523255E-02
+  -.194985085982E-01  -.366567053813E-01  -.541159896908E-01  -.717607166131E-01  -.894638439967E-01
+  -.107087297181E+00  -.124482520000E+00  -.141491224794E+00  -.157946354484E+00  -.173673270714E+00
+  -.188491182736E+00  -.202214830347E+00  -.214656428911E+00  -.225627874362E+00  -.234943193441E+00
+  -.242421214515E+00  -.247888429642E+00  -.251182016511E+00  -.252152985029E+00  -.250669406546E+00
+  -.246619676159E+00  -.239915752191E+00  -.230496312287E+00  -.218329761674E+00  -.203417025598E+00
+  -.185794054472E+00  -.165533967451E+00  -.142748758423E+00  -.117590488487E+00  -.902518914106E-01
+  -.609663238312E-01  -.300070002108E-01   .231453624548E-02   .356507414718E-01   .696212143521E-01
+   .103816649340E+00   .137803554941E+00   .171129646013E+00   .203329768930E+00   .233932207643E+00
+   .262465294098E+00   .288464416037E+00   .311479650198E+00   .331084079378E+00   .346882371027E+00
+   .358518952496E+00   .365685402111E+00   .368127024844E+00   .365648647704E+00   .358119571496E+00
+   .345477530522E+00   .327731500985E+00   .304963249858E+00   .277327588632E+00   .245051356570E+00
+   .208431194407E+00   .167830187008E+00   .123673460569E+00   .764428230990E-01   .266705393359E-01
+  -.250676646994E-01  -.781602657695E-01  -.131968164740E+00  -.185833341800E+00  -.239087809208E+00
+  -.291062712423E+00  -.341097418087E+00  -.388548413922E+00  -.432797829891E+00  -.473261378886E+00
+  -.509395526555E+00  -.540703764307E+00  -.566741984980E+00  -.587123104449E+00  -.601521133526E+00
+  -.609674811588E+00  -.611390695651E+00  -.606545417805E+00  -.595086793852E+00  -.577033579062E+00
+  -.552473822906E+00  -.521561891560E+00  -.484514290113E+00  -.441604447148E+00  -.393156643507E+00
+  -.339539281751E+00  -.281157701837E+00  -.218446749208E+00  -.151863292329E+00  -.818788719048E-01
+  -.897263925134E-02   .663752810308E-01   .143689898151E+00   .222506850836E+00   .302377239872E+00
+   .382871767677E+00   .463584180186E+00   .544134029344E+00   .624168791576E+00   .703365396380E+00
+   .781431233295E+00   .858104716523E+00   .933155494635E+00   .100638439729E+01   .107762321171E+01
+   .114673437936E+01   .121361069741E+01   .127817510230E+01   .134038060236E+01   .140021041642E+01
+   .145767836256E+01
+ pseudo wavefunction
+   .331147670034E-08   .353034013832E-08   .376366878585E-08   .401241868329E-08   .427760905805E-08
+   .456032650069E-08   .486172941715E-08   .518305277520E-08   .552561316459E-08   .589081419164E-08
+   .628015223038E-08   .669522255377E-08   .713772587021E-08   .760947529197E-08   .811240376425E-08
+   .864857198525E-08   .922017684964E-08   .982956045011E-08   .104792196739E-07   .111718164334E-07
+   .119101885734E-07   .126973614984E-07   .135365605692E-07   .144312243184E-07   .153850185396E-07
+   .164018513073E-07   .174858889900E-07   .186415733216E-07   .198736396006E-07   .211871360929E-07
+   .225874447163E-07   .240803030924E-07   .256718280558E-07   .273685407175E-07   .291773931843E-07
+   .311057970442E-07   .331616537348E-07   .353533869185E-07   .376899769978E-07   .401809979113E-07
+   .428366563620E-07   .456678336382E-07   .486861301987E-07   .519039132038E-07   .553343671893E-07
+   .589915480879E-07   .628904408225E-07   .670470207053E-07   .714783188944E-07   .762024921777E-07
+   .812388973685E-07   .866081706172E-07   .923323119666E-07   .984347754942E-07   .104940565413E-06
+   .111876338522E-06   .119270513434E-06   .127153387012E-06   .135557258510E-06   .144516561917E-06
+   .154068007044E-06   .164250729939E-06   .175106453244E-06   .186679657146E-06   .199017761633E-06
+   .212171320788E-06   .226194229933E-06   .241143946454E-06   .257081725228E-06   .274072869610E-06
+   .292186999002E-06   .311498334112E-06   .332086001062E-06   .354034355600E-06   .377433328738E-06
+   .402378795229E-06   .428972966404E-06   .457324808968E-06   .487550491480E-06   .519773860334E-06
+   .554126947205E-06   .590750510030E-06   .629794609742E-06   .671419225127E-06   .715794908309E-06
+   .763103483564E-06   .813538792318E-06   .867307487380E-06   .924629879669E-06   .985740840902E-06
+   .105089076594E-05   .112034659875E-05   .119439292614E-05   .127333314380E-05   .135749069944E-05
+   .144721041803E-05   .154285991466E-05   .164483110074E-05   .175354178982E-05   .186943740946E-05
+   .199299282627E-05   .212471429157E-05   .226514151563E-05   .241484987898E-05   .257445278991E-05
+   .274460419771E-05   .292600127206E-05   .311938725945E-05   .332555452845E-05   .354534781611E-05
+   .377966768904E-05   .402947423315E-05   .429579098720E-05   .457970913640E-05   .488239198308E-05
+   .520507971280E-05   .554909447545E-05   .591584580215E-05   .630683638009E-05   .672366820897E-05
+   .716804916434E-05   .764179999459E-05   .814686178035E-05   .868530388681E-05   .925933244149E-05
+   .987129937228E-05   .105237120426E-04   .112192435234E-04   .119607435436E-04   .127512501643E-04
+   .135940022244E-04   .144924526084E-04   .154502823909E-04   .164714159153E-04   .175600368694E-04
+   .187206054224E-04   .199578764946E-04   .212769192335E-04   .226831377769E-04   .241822933875E-04
+   .257805280499E-04   .274843896257E-04   .293008586705E-04   .312373770225E-04   .333018782788E-04
+   .355028202843E-04   .378492197669E-04   .403506892595E-04   .430174764599E-04   .458605061898E-04
+   .488914251245E-04   .521226494752E-04   .555674158191E-04   .592398352856E-04   .631549513179E-04
+   .673288012483E-04   .717784819356E-04   .765222197350E-04   .815794450839E-04   .869708720089E-04
+   .927185828767E-04   .988461187359E-04   .105378575616E-03   .112342707175E-03   .119767034119E-03
+   .127681960827E-03   .136119899668E-03   .145115403507E-03   .154705306941E-03   .164928876838E-03
+   .175827972789E-03   .187447218118E-03   .199834182158E-03   .213039574510E-03   .227117452086E-03
+   .242125439764E-03   .258124965546E-03   .275181511176E-03   .293364879209E-03   .312749477619E-03
+   .333414623095E-03   .355444864213E-03   .378930325811E-03   .403967075929E-03   .430657516767E-03
+   .459110801245E-03   .489443276800E-03   .521778958186E-03   .556250031154E-03   .592997389003E-03
+   .632171204097E-03   .673931536619E-03   .718448982930E-03   .765905366066E-03   .816494471062E-03
+   .870422827955E-03   .927910545478E-03   .989192198663E-03   .105451777374E-02   .112415367392E-02
+   .119838378989E-02   .127751063904E-02   .136185657763E-02   .145176509050E-02   .154760216297E-02
+   .164975773999E-02   .175864727782E-02   .187471339379E-02   .199842761993E-02   .213029226677E-02
+   .227084240357E-02   .242064796179E-02   .258031596889E-02   .275049291978E-02   .293186729356E-02
+   .312517222349E-02   .333118832846E-02   .355074671441E-02   .378473215441E-02   .403408645633E-02
+   .429981202712E-02   .458297564294E-02   .488471243421E-02   .520623009471E-02   .554881332368E-02
+   .591382850940E-02   .630272866248E-02   .671705860601E-02   .715846042928E-02   .762867920997E-02
+   .812956900857E-02   .866309913644E-02   .923136069661E-02   .983657339296E-02   .104810925999E-01
+   .111674166795E-01   .118981945277E-01   .126762333235E-01   .135045064478E-01   .143861615263E-01
+   .153245285419E-01   .163231279426E-01   .173856786593E-01   .185161059218E-01   .197185487394E-01
+   .209973668817E-01   .223571471619E-01   .238027087797E-01   .253391074365E-01   .269716378719E-01
+   .287058344069E-01   .305474689928E-01   .325025461724E-01   .345772942455E-01   .367781517967E-01
+   .391117485888E-01   .415848796395E-01   .442044710855E-01   .469775361839E-01   .499111195095E-01
+   .530122270593E-01   .562877395806E-01   .597443059716E-01   .633882130701E-01   .672252275238E-01
+   .712604047267E-01   .754978589851E-01   .799404881518E-01   .845896449027E-01   .894447456417E-01
+   .945028066786E-01   .997578958365E-01   .105200486002E+00   .110816695343E+00   .116587396995E+00
+   .122487178978E+00   .128483133024E+00   .134533448854E+00   .140585788480E+00   .146575413263E+00
+   .152423035061E+00   .158032362024E+00   .163287309685E+00   .168048849420E+00   .172151469537E+00
+   .175399229791E+00   .177561398725E+00   .178367675800E+00   .177503017760E+00   .174602112202E+00
+   .169243572283E+00   .160943966100E+00   .149151844077E+00   .133241988958E+00   .112510186821E+00
+   .861689047238E-01   .533443609875E-01   .130755866890E-01  -.356838010120E-01  -.940602664982E-01
+  -.163250493546E+00  -.244505913599E+00  -.339110465606E+00  -.448350400173E+00  -.573474989044E+00
+  -.715647157054E+00  -.875883353486E+00  -.105498246092E+01  -.125344423883E+01  -.147137874513E+01
+  -.170855080006E+01
+ ae wavefunction
+  -.167527481276E-04  -.176741929867E-04  -.186444346902E-04  -.196661589572E-04  -.207421948293E-04
+  -.218755225976E-04  -.230692821574E-04  -.243267818155E-04  -.256515075739E-04  -.270471329168E-04
+  -.285175291294E-04  -.300667761775E-04  -.316991741793E-04  -.334192555019E-04  -.352317975180E-04
+  -.371418360579E-04  -.391546795975E-04  -.412759242199E-04  -.435114693968E-04  -.458675346318E-04
+  -.483506770150E-04  -.509678097382E-04  -.537262216237E-04  -.566335977222E-04  -.596980410381E-04
+  -.629280954439E-04  -.663327698488E-04  -.699215636895E-04  -.737044938142E-04  -.776921228376E-04
+  -.818955890432E-04  -.863266379191E-04  -.909976554134E-04  -.959217030029E-04  -.101112554670E-03
+  -.106584735894E-03  -.112353564753E-03  -.118435195270E-03  -.124846663090E-03  -.131605933644E-03
+  -.138731952906E-03  -.146244700889E-03  -.154165248020E-03  -.162515814544E-03  -.171319833109E-03
+  -.180602014697E-03  -.190388418077E-03  -.200706522942E-03  -.211585306931E-03  -.223055326722E-03
+  -.235148803396E-03  -.247899712277E-03  -.261343877486E-03  -.275519071398E-03  -.290465119277E-03
+  -.306224009298E-03  -.322840008223E-03  -.340359782992E-03  -.358832528482E-03  -.378310101725E-03
+  -.398847162851E-03  -.420501323063E-03  -.443333299923E-03  -.467407080266E-03  -.492790091034E-03
+  -.519553378361E-03  -.547771795208E-03  -.577524197875E-03  -.608893651707E-03  -.641967646315E-03
+  -.676838320621E-03  -.713602698051E-03  -.752362932176E-03  -.793226563088E-03  -.836306784818E-03
+  -.881722724040E-03  -.929599730331E-03  -.980069678202E-03  -.103327128110E-02  -.108935041758E-02
+  -.114846046967E-02  -.121076267369E-02  -.127642648337E-02  -.134562994539E-02  -.141856008713E-02
+  -.149541331651E-02  -.157639583372E-02  -.166172405437E-02  -.175162504367E-02  -.184633696103E-02
+  -.194610951434E-02  -.205120442313E-02  -.216189588940E-02  -.227847107509E-02  -.240123058457E-02
+  -.253048895060E-02  -.266657512181E-02  -.280983294943E-02  -.296062167090E-02  -.311931638745E-02
+  -.328630853249E-02  -.346200632722E-02  -.364683521951E-02  -.384123830151E-02  -.404567670112E-02
+  -.426062994174E-02  -.448659626434E-02  -.472409290498E-02  -.497365632062E-02  -.523584235494E-02
+  -.551122633554E-02  -.580040309262E-02  -.610398688881E-02  -.642261124865E-02  -.675692867528E-02
+  -.710761024091E-02  -.747534503672E-02  -.786083946630E-02  -.826481636614E-02  -.868801393501E-02
+  -.913118445302E-02  -.959509276987E-02  -.100805145405E-01  -.105882341849E-01  -.111190425476E-01
+  -.116737342313E-01  -.122531045772E-01  -.128579462637E-01  -.134890454941E-01  -.141471777425E-01
+  -.148331030262E-01  -.155475606715E-01  -.162912635409E-01  -.170648916862E-01  -.178690853947E-01
+  -.187044375937E-01  -.195714855805E-01  -.204707020442E-01  -.214024853485E-01  -.223671490449E-01
+  -.233649105905E-01  -.243958792446E-01  -.254600431251E-01  -.265572554085E-01  -.276872196644E-01
+  -.288494743211E-01  -.300433762678E-01  -.312680836082E-01  -.325225375907E-01  -.338054437514E-01
+  -.351152523245E-01  -.364501379836E-01  -.378079790018E-01  -.391863359305E-01  -.405824299254E-01
+  -.419931208617E-01  -.434148854114E-01  -.448437952745E-01  -.462754957829E-01  -.477051851218E-01
+  -.491275944367E-01  -.505369691272E-01  -.519270516581E-01  -.532910662611E-01  -.546217059476E-01
+  -.559111223112E-01  -.571509186666E-01  -.583321471344E-01  -.594453103477E-01  -.604803684984E-01
+  -.614267524786E-01  -.622733838771E-01  -.630087025965E-01  -.636207028389E-01  -.640969781924E-01
+  -.644247765212E-01  -.645910653366E-01  -.645826082845E-01  -.643860533464E-01  -.639880332961E-01
+  -.633752788855E-01  -.625347451443E-01  -.614537510617E-01  -.601201327776E-01  -.585224102385E-01
+  -.566499670703E-01  -.544932431868E-01  -.520439393837E-01  -.492952328706E-01  -.462420023571E-01
+  -.428810609496E-01  -.392113947228E-01  -.352344044126E-01  -.309541472465E-01  -.263775754793E-01
+  -.215147677520E-01  -.163791489513E-01  -.109876938195E-01  -.536110916813E-02   .476010793613E-03
+   .649506178713E-02   .126633453903E-01   .189440295351E-01   .252961594022E-01   .316747242028E-01
+   .380307848802E-01   .443116673177E-01   .504612254169E-01   .564201785009E-01   .621265278450E-01
+   .675160573710E-01   .725229230819E-01   .770803339480E-01   .811213233527E-01   .845796057180E-01
+   .873905093884E-01   .894919752229E-01   .908256096823E-01   .913377798931E-01   .909807358494E-01
+   .897137423056E-01   .875042007795E-01   .843287405358E-01   .801742562137E-01   .750388686444E-01
+   .689327843694E-01   .618790285272E-01   .539140253550E-01   .450880007448E-01   .354651823200E-01
+   .251237745054E-01   .141556891224E-01   .266601610547E-02  -.922777604342E-02  -.213969142167E-01
+  -.337026647727E-01  -.459979309024E-01  -.581290691766E-01  -.699378735493E-01  -.812636703993E-01
+  -.919454940877E-01  -.101824372991E+00  -.110745806961E+00  -.118562461933E+00  -.125136938595E+00
+  -.130344382034E+00  -.134074796703E+00  -.136235056520E+00  -.136750626880E+00  -.135566982298E+00
+  -.132650673434E+00  -.127989992816E+00  -.121595206669E+00  -.113498346667E+00  -.103752578134E+00
+  -.924311755562E-01  -.796261437840E-01  -.654465269117E-01  -.500164486322E-01  -.334729291566E-01
+  -.159635251955E-01   .235615854965E-02   .213250352811E-01   .407791250541E-01   .605541090473E-01
+   .804877882470E-01   .100422382695E+00   .120206604076E+00   .139697429774E+00   .158761502083E+00
+   .177276077777E+00   .195129472466E+00   .212220987960E+00   .228460369576E+00   .243766882496E+00
+   .258068077230E+00   .271298258717E+00   .283396592031E+00   .294304755923E+00   .303964080397E+00
+   .312312153674E+00   .319278925507E+00   .324782357416E+00   .328723681679E+00   .330982338203E+00
+   .331410665916E+00   .329828433504E+00   .326017302643E+00   .319715324070E+00   .310611576627E+00
+   .298341064767E+00   .282480004970E+00   .262541638431E+00   .237972733121E+00   .208150951582E+00
+   .172383287954E+00   .129905805594E+00   .798849419058E-01   .214206759132E-01  -.464481092030E-01
+  -.124735703553E+00  -.214498695448E+00  -.316821730393E+00  -.432799481798E+00  -.563514418396E+00
+  -.710009982166E+00  -.873258846739E+00  -.105412601665E+01  -.125332665962E+01  -.147137874513E+01
+  -.170855080006E+01
+ End of Dataset
+ PAW_PBE C 08Apr2002
+ 4.00000000000000000
+ parameters from PSCTR are:
+   VRHFIN =C: s2p2
+   LEXCH  = PE
+   EATOM  =   147.1560 eV,   10.8157 Ry
+
+   TITEL  = PAW_PBE C 08Apr2002
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        0    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =     .000    partial core radius
+   POMASS =   12.011; ZVAL   =    4.000    mass and valenz
+   RCORE  =    1.500    outmost cutoff radius
+   RWIGS  =    1.630; RWIGS  =     .863    wigner-seitz radius (au A)
+   ENMAX  =  400.000; ENMIN  =  300.000 eV
+   ICORE  =        2    local potential
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  644.873
+   DEXC   =     .000
+   RMAX   =    2.266    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    1.501    radius for radial grids
+   RDEPT  =    1.300    core radius for aug-charge
+   QCUT   =   -5.516; QGAM   =   11.032    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     0   .000     23  1.200
+     0   .000     23  1.200
+     1   .000     23  1.500
+     1  2.500     23  1.500
+     2   .000      7  1.500
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  51.3      49.5      48.6      46.8      45.9      44.1      42.4      41.6
+  39.9      38.2      37.4      35.8      34.3      32.8      31.4      30.0
+  28.6      27.3      26.1      24.3      23.2      22.1      20.5      19.6
+  18.6      17.3      16.0      15.2      14.1      13.1      12.1      11.1
+  10.3      9.47      8.72      8.02      7.15      6.55      5.82      5.31
+  4.69      4.13      3.63      3.17      2.76      2.40      2.07      1.72
+  1.47      1.20      .971      .815      .650      .512      .380      .292
+  .222      .158      .110      .748E-01  .504E-01  .337E-01  .227E-01  .149E-01
+  .111E-01  .869E-02  .756E-02  .700E-02  .657E-02  .614E-02  .551E-02  .474E-02
+  .392E-02  .314E-02  .237E-02  .184E-02  .143E-02  .118E-02  .104E-02  .993E-03
+  .959E-03  .910E-03  .829E-03  .707E-03  .570E-03  .442E-03  .343E-03  .275E-03
+  .245E-03  .238E-03  .236E-03  .227E-03  .202E-03  .169E-03  .131E-03  .102E-03
+  .851E-04  .796E-04  .787E-04  .761E-04
+END of PSCTR-controll parameters
+ local part
+ 124.721915246208937
+   .20370041E+02   .20367047E+02   .20363065E+02   .20356432E+02   .20347149E+02
+   .20335222E+02   .20320655E+02   .20303451E+02   .20283615E+02   .20261149E+02
+   .20236054E+02   .20208330E+02   .20177973E+02   .20144979E+02   .20109342E+02
+   .20071052E+02   .20030100E+02   .19986473E+02   .19940156E+02   .19891131E+02
+   .19839380E+02   .19784881E+02   .19727608E+02   .19667533E+02   .19604624E+02
+   .19538848E+02   .19470165E+02   .19398533E+02   .19323907E+02   .19246238E+02
+   .19165474E+02   .19081559E+02   .18994436E+02   .18904042E+02   .18810316E+02
+   .18713191E+02   .18612600E+02   .18508475E+02   .18400746E+02   .18289342E+02
+   .18174194E+02   .18055230E+02   .17932383E+02   .17805584E+02   .17674770E+02
+   .17539878E+02   .17400851E+02   .17257634E+02   .17110178E+02   .16958440E+02
+   .16802384E+02   .16641980E+02   .16477205E+02   .16308046E+02   .16134498E+02
+   .15956565E+02   .15774263E+02   .15587618E+02   .15396667E+02   .15201458E+02
+   .15002052E+02   .14798523E+02   .14590957E+02   .14379453E+02   .14164124E+02
+   .13945096E+02   .13722507E+02   .13496509E+02   .13267269E+02   .13034964E+02
+   .12799787E+02   .12561941E+02   .12321643E+02   .12079119E+02   .11834608E+02
+   .11588360E+02   .11340633E+02   .11091695E+02   .10841823E+02   .10591299E+02
+   .10340414E+02   .10089462E+02   .98387442E+01   .95885628E+01   .93392235E+01
+   .90910332E+01   .88442985E+01   .85993254E+01   .83564171E+01   .81158740E+01
+   .78779914E+01   .76430593E+01   .74113606E+01   .71831703E+01   .69587545E+01
+   .67383690E+01   .65222587E+01   .63106564E+01   .61037820E+01   .59018416E+01
+   .57050266E+01   .55135133E+01   .53274620E+01   .51470163E+01   .49723031E+01
+   .48034315E+01   .46404931E+01   .44835614E+01   .43326919E+01   .41879218E+01
+   .40492700E+01   .39167374E+01   .37903070E+01   .36699442E+01   .35555971E+01
+   .34471969E+01   .33446585E+01   .32478812E+01   .31567490E+01   .30711318E+01
+   .29908859E+01   .29158549E+01   .28458705E+01   .27807538E+01   .27203159E+01
+   .26643592E+01   .26126782E+01   .25650608E+01   .25212894E+01   .24811415E+01
+   .24443918E+01   .24108123E+01   .23801739E+01   .23522476E+01   .23268052E+01
+   .23036204E+01   .22824701E+01   .22631352E+01   .22454013E+01   .22290599E+01
+   .22139090E+01   .21997540E+01   .21864085E+01   .21736945E+01   .21614436E+01
+   .21494971E+01   .21377065E+01   .21259340E+01   .21140529E+01   .21019474E+01
+   .20895134E+01   .20766579E+01   .20632996E+01   .20493686E+01   .20348062E+01
+   .20195649E+01   .20036082E+01   .19869100E+01   .19694548E+01   .19512365E+01
+   .19322589E+01   .19125343E+01   .18920837E+01   .18709357E+01   .18491262E+01
+   .18266977E+01   .18036985E+01   .17801824E+01   .17562075E+01   .17318361E+01
+   .17071335E+01   .16821677E+01   .16570086E+01   .16317270E+01   .16063948E+01
+   .15810833E+01   .15558635E+01   .15308050E+01   .15059756E+01   .14814409E+01
+   .14572636E+01   .14335032E+01   .14102158E+01   .13874532E+01   .13652631E+01
+   .13436886E+01   .13227681E+01   .13025351E+01   .12830178E+01   .12642394E+01
+   .12462178E+01   .12289658E+01   .12124909E+01   .11967956E+01   .11818774E+01
+   .11677289E+01   .11543381E+01   .11416888E+01   .11297604E+01   .11185286E+01
+   .11079653E+01   .10980394E+01   .10887169E+01   .10799609E+01   .10717326E+01
+   .10639913E+01   .10566949E+01   .10498000E+01   .10432627E+01   .10370386E+01
+   .10310836E+01   .10253536E+01   .10198054E+01   .10143970E+01   .10090873E+01
+   .10038372E+01   .99860926E+00   .99336835E+00   .98808151E+00   .98271838E+00
+   .97725128E+00   .97165536E+00   .96590871E+00   .95999244E+00   .95389076E+00
+   .94759097E+00   .94108348E+00   .93436178E+00   .92742240E+00   .92026483E+00
+   .91289140E+00   .90530719E+00   .89751990E+00   .88953964E+00   .88137882E+00
+   .87305193E+00   .86457534E+00   .85596709E+00   .84724670E+00   .83843488E+00
+   .82955338E+00   .82062468E+00   .81167180E+00   .80271806E+00   .79378687E+00
+   .78490146E+00   .77608471E+00   .76735895E+00   .75874572E+00   .75026562E+00
+   .74193815E+00   .73378153E+00   .72581255E+00   .71804650E+00   .71049701E+00
+   .70317595E+00   .69609343E+00   .68925768E+00   .68267502E+00   .67634989E+00
+   .67028480E+00   .66448037E+00   .65893536E+00   .65364672E+00   .64860965E+00
+   .64381770E+00   .63926282E+00   .63493551E+00   .63082489E+00   .62691886E+00
+   .62320423E+00   .61966683E+00   .61629170E+00   .61306320E+00   .60996518E+00
+   .60698114E+00   .60409438E+00   .60128812E+00   .59854571E+00   .59585071E+00
+   .59318709E+00   .59053928E+00   .58789240E+00   .58523230E+00   .58254567E+00
+   .57982020E+00   .57704459E+00   .57420869E+00   .57130350E+00   .56832130E+00
+   .56525559E+00   .56210123E+00   .55885435E+00   .55551241E+00   .55207418E+00
+   .54853970E+00   .54491030E+00   .54118846E+00   .53737787E+00   .53348329E+00
+   .52951049E+00   .52546620E+00   .52135799E+00   .51719421E+00   .51298385E+00
+   .50873649E+00   .50446213E+00   .50017117E+00   .49587419E+00   .49158197E+00
+   .48730527E+00   .48305479E+00   .47884106E+00   .47467432E+00   .47056446E+00
+   .46652089E+00   .46255249E+00   .45866752E+00   .45487354E+00   .45117740E+00
+   .44758510E+00   .44410183E+00   .44073191E+00   .43747871E+00   .43434471E+00
+   .43133146E+00   .42843957E+00   .42566872E+00   .42301770E+00   .42048440E+00
+   .41806590E+00   .41575842E+00   .41355747E+00   .41145782E+00   .40945360E+00
+   .40753838E+00   .40570518E+00   .40394661E+00   .40225491E+00   .40062201E+00
+   .39903965E+00   .39749944E+00   .39599292E+00   .39451167E+00   .39304737E+00
+   .39159186E+00   .39013724E+00   .38867593E+00   .38720073E+00   .38570485E+00
+   .38418204E+00   .38262655E+00   .38103324E+00   .37939758E+00   .37771570E+00
+   .37598438E+00   .37420112E+00   .37236410E+00   .37047222E+00   .36852508E+00
+   .36652295E+00   .36446680E+00   .36235825E+00   .36019954E+00   .35799352E+00
+   .35574356E+00   .35345359E+00   .35112797E+00   .34877149E+00   .34638929E+00
+   .34398685E+00   .34156984E+00   .33914418E+00   .33671586E+00   .33429099E+00
+   .33187566E+00   .32947591E+00   .32709768E+00   .32474675E+00   .32242866E+00
+   .32014872E+00   .31791189E+00   .31572278E+00   .31358561E+00   .31150416E+00
+   .30948175E+00   .30752120E+00   .30562483E+00   .30379444E+00   .30203129E+00
+   .30033609E+00   .29870903E+00   .29714975E+00   .29565737E+00   .29423051E+00
+   .29286727E+00   .29156532E+00   .29032187E+00   .28913372E+00   .28799732E+00
+   .28690876E+00   .28586386E+00   .28485818E+00   .28388708E+00   .28294575E+00
+   .28202929E+00   .28113270E+00   .28025099E+00   .27937919E+00   .27851241E+00
+   .27764585E+00   .27677490E+00   .27589514E+00   .27500240E+00   .27409276E+00
+   .27316263E+00   .27220876E+00   .27122823E+00   .27021853E+00   .26917754E+00
+   .26810355E+00   .26699528E+00   .26585187E+00   .26467290E+00   .26345836E+00
+   .26220868E+00   .26092468E+00   .25960760E+00   .25825903E+00   .25688093E+00
+   .25547560E+00   .25404564E+00   .25259392E+00   .25112354E+00   .24963785E+00
+   .24814034E+00   .24663464E+00   .24512451E+00   .24361375E+00   .24210618E+00
+   .24060565E+00   .23911592E+00   .23764068E+00   .23618352E+00   .23474787E+00
+   .23333695E+00   .23195382E+00   .23060127E+00   .22928182E+00   .22799774E+00
+   .22675098E+00   .22554318E+00   .22437564E+00   .22324935E+00   .22216493E+00
+   .22112269E+00   .22012257E+00   .21916418E+00   .21824680E+00   .21736940E+00
+   .21653062E+00   .21572884E+00   .21496215E+00   .21422840E+00   .21352520E+00
+   .21284996E+00   .21219995E+00   .21157224E+00   .21096382E+00   .21037158E+00
+   .20979234E+00   .20922293E+00   .20866013E+00   .20810079E+00   .20754181E+00
+   .20698018E+00   .20641301E+00   .20583754E+00   .20525119E+00   .20465158E+00
+   .20403650E+00   .20340400E+00   .20275237E+00   .20208013E+00   .20138608E+00
+   .20066930E+00   .19992913E+00   .19916520E+00   .19837742E+00   .19756595E+00
+   .19673127E+00   .19587408E+00   .19499535E+00   .19409629E+00   .19317833E+00
+   .19224309E+00   .19129242E+00   .19032831E+00   .18935289E+00   .18836843E+00
+   .18737730E+00   .18638193E+00   .18538484E+00   .18438853E+00   .18339554E+00
+   .18240837E+00   .18142949E+00   .18046127E+00   .17950602E+00   .17856592E+00
+   .17764303E+00   .17673925E+00   .17585631E+00   .17499577E+00   .17415898E+00
+   .17334710E+00   .17256106E+00   .17180158E+00   .17106916E+00   .17036405E+00
+   .16968629E+00   .16903568E+00   .16841183E+00   .16781409E+00   .16724163E+00
+   .16669341E+00   .16616823E+00   .16566469E+00   .16518125E+00   .16471622E+00
+   .16426780E+00   .16383409E+00   .16341308E+00   .16300273E+00   .16260093E+00
+   .16220555E+00   .16181447E+00   .16142557E+00   .16103678E+00   .16064608E+00
+   .16025153E+00   .15985127E+00   .15944356E+00   .15902679E+00   .15859947E+00
+   .15816027E+00   .15770802E+00   .15724172E+00   .15676055E+00   .15626388E+00
+   .15575124E+00   .15522237E+00   .15467721E+00   .15411586E+00   .15353862E+00
+   .15294597E+00   .15233856E+00   .15171720E+00   .15108286E+00   .15043664E+00
+   .14977979E+00   .14911366E+00   .14843970E+00   .14775946E+00   .14707455E+00
+   .14638664E+00   .14569742E+00   .14500863E+00   .14432199E+00   .14363921E+00
+   .14296197E+00   .14229192E+00   .14163061E+00   .14097955E+00   .14034014E+00
+   .13971369E+00   .13910136E+00   .13850424E+00   .13792323E+00   .13735913E+00
+   .13681257E+00   .13628404E+00   .13577385E+00   .13528217E+00   .13480903E+00
+   .13435426E+00   .13391756E+00   .13349850E+00   .13309646E+00   .13271073E+00
+   .13234044E+00   .13198461E+00   .13164217E+00   .13131192E+00   .13099261E+00
+   .13068290E+00   .13038140E+00   .13008665E+00   .12979721E+00   .12951159E+00
+   .12922830E+00   .12894587E+00   .12866286E+00   .12837787E+00   .12808956E+00
+   .12779664E+00   .12749792E+00   .12719228E+00   .12687871E+00   .12655630E+00
+   .12622426E+00   .12588192E+00   .12552874E+00   .12516431E+00   .12478835E+00
+   .12440070E+00   .12400137E+00   .12359046E+00   .12316825E+00   .12273510E+00
+   .12229152E+00   .12183812E+00   .12137563E+00   .12090488E+00   .12042677E+00
+   .11994231E+00   .11945257E+00   .11895866E+00   .11846177E+00   .11796310E+00
+   .11746388E+00   .11696536E+00   .11646879E+00   .11597539E+00   .11548637E+00
+   .11500290E+00   .11452609E+00   .11405702E+00   .11359666E+00   .11314594E+00
+   .11270569E+00   .11227663E+00   .11185942E+00   .11145458E+00   .11106252E+00
+   .11068358E+00   .11031793E+00   .10996566E+00   .10962674E+00   .10930101E+00
+   .10898822E+00   .10868798E+00   .10839983E+00   .10812320E+00   .10785742E+00
+   .10760174E+00   .10735533E+00   .10711730E+00   .10688669E+00   .10666251E+00
+   .10644371E+00   .10622921E+00   .10601792E+00   .10580875E+00   .10560060E+00
+   .10539239E+00   .10518306E+00   .10497157E+00   .10475696E+00   .10453828E+00
+   .10431468E+00   .10408535E+00   .10384957E+00   .10360669E+00   .10335617E+00
+   .10309753E+00   .10283041E+00   .10255454E+00   .10226976E+00   .10197599E+00
+   .10167327E+00   .10136174E+00   .10104161E+00   .10071322E+00   .10037698E+00
+   .10003339E+00   .99683035E-01   .99326560E-01   .98964686E-01   .98598192E-01
+   .98227905E-01   .97854696E-01   .97479469E-01   .97103153E-01   .96726690E-01
+   .96351032E-01   .95977122E-01   .95605896E-01   .95238263E-01   .94875104E-01
+   .94517262E-01   .94165530E-01   .93820648E-01   .93483297E-01   .93154087E-01
+   .92833560E-01   .92522178E-01   .92220322E-01   .91928290E-01   .91646293E-01
+   .91374453E-01   .91112806E-01   .90861296E-01   .90619782E-01   .90388037E-01
+   .90165753E-01   .89952541E-01   .89747938E-01   .89551415E-01   .89362374E-01
+   .89180165E-01   .89004083E-01   .88833381E-01   .88667275E-01   .88504954E-01
+   .88345585E-01   .88188323E-01   .88032318E-01   .87876726E-01   .87720712E-01
+   .87563465E-01   .87404199E-01   .87242164E-01   .87076653E-01   .86907006E-01
+   .86732619E-01   .86552947E-01   .86367508E-01   .86175890E-01   .85977752E-01
+   .85772829E-01   .85560931E-01   .85341946E-01   .85115842E-01   .84882662E-01
+   .84642528E-01   .84395638E-01   .84142261E-01   .83882734E-01   .83617462E-01
+   .83346910E-01   .83071598E-01   .82792096E-01   .82509020E-01   .82223022E-01
+   .81934789E-01   .81645029E-01   .81354469E-01   .81063847E-01   .80773905E-01
+   .80485378E-01   .80198993E-01   .79915456E-01   .79635450E-01   .79359624E-01
+   .79088592E-01   .78822923E-01   .78563138E-01   .78309707E-01   .78063040E-01
+   .77823487E-01   .77591337E-01   .77366809E-01   .77150057E-01   .76941167E-01
+   .76740152E-01   .76546960E-01   .76361469E-01   .76183493E-01   .76012780E-01
+   .75849017E-01   .75691837E-01   .75540816E-01   .75395484E-01   .75255324E-01
+   .75119783E-01   .74988274E-01   .74860182E-01   .74734871E-01   .74611692E-01
+   .74489984E-01   .74369085E-01   .74248340E-01   .74127101E-01   .74004738E-01
+   .73880645E-01   .73754243E-01   .73624987E-01   .73492372E-01   .73355935E-01
+   .73215260E-01   .73069982E-01   .72919790E-01   .72764430E-01   .72603706E-01
+   .72437483E-01   .72265685E-01   .72088299E-01   .71905371E-01   .71717010E-01
+   .71523379E-01   .71324701E-01   .71121250E-01   .70913351E-01   .70701375E-01
+   .70485738E-01   .70266892E-01   .70045324E-01   .69821549E-01   .69596105E-01
+   .69369549E-01   .69142452E-01   .68915389E-01   .68688937E-01   .68463671E-01
+   .68240152E-01   .68018928E-01   .67800526E-01   .67585445E-01   .67374156E-01
+   .67167094E-01   .66964656E-01   .66767195E-01   .66575021E-01   .66388395E-01
+   .66207526E-01   .66032573E-01   .65863641E-01   .65700781E-01   .65543991E-01
+   .65393213E-01   .65248338E-01   .65109204E-01   .64975603E-01   .64847276E-01
+   .64723922E-01   .64605200E-01   .64490731E-01   .64380102E-01   .64272872E-01
+   .64168575E-01   .64066726E-01   .63966823E-01   .63868355E-01   .63770806E-01
+   .63673660E-01   .63576405E-01   .63478540E-01   .63379580E-01   .63279057E-01
+   .63176528E-01   .63071579E-01   .62963827E-01   .62852923E-01   .62738558E-01
+   .62620462E-01   .62498412E-01   .62372226E-01   .62241770E-01   .62106960E-01
+   .61967756E-01   .61824170E-01   .61676259E-01   .61524129E-01   .61367929E-01
+   .61207855E-01   .61044141E-01   .60877060E-01   .60706923E-01   .60534070E-01
+   .60358873E-01   .60181727E-01   .60003048E-01   .59823270E-01   .59642838E-01
+   .59462206E-01   .59281831E-01   .59102169E-01   .58923670E-01   .58746775E-01
+   .58571909E-01   .58399479E-01   .58229870E-01   .58063440E-01   .57900520E-01
+   .57741407E-01   .57586363E-01   .57435612E-01   .57289341E-01   .57147695E-01
+   .57010775E-01   .56878642E-01   .56751311E-01   .56628757E-01   .56510908E-01
+   .56397655E-01   .56288844E-01   .56184286E-01   .56083754E-01   .55986987E-01
+   .55893693E-01   .55803552E-01   .55716218E-01   .55631325E-01   .55548488E-01
+   .55467309E-01   .55387379E-01   .55308284E-01   .55229607E-01   .55150934E-01
+   .55071857E-01   .54991978E-01   .54910915E-01   .54828302E-01   .54743793E-01
+   .54657071E-01   .54567841E-01   .54475842E-01   .54380842E-01   .54282647E-01
+   .54181097E-01   .54076069E-01   .53967480E-01   .53855285E-01   .53739479E-01
+   .53620095E-01   .53497207E-01   .53370924E-01   .53241394E-01   .53108796E-01
+   .52973345E-01   .52835284E-01   .52694885E-01   .52552444E-01   .52408280E-01
+   .52262728E-01   .52116142E-01   .51968885E-01   .51821329E-01   .51673851E-01
+   .51526828E-01   .51380634E-01   .51235637E-01   .51092192E-01   .50950643E-01
+   .50811317E-01   .50674519E-01   .50540531E-01   .50409612E-01   .50281988E-01
+   .50157861E-01   .50037397E-01   .49920729E-01   .49807956E-01   .49699143E-01
+   .49594318E-01   .49493471E-01   .49396560E-01   .49303505E-01   .49214193E-01
+   .49128478E-01   .49046182E-01   .48967100E-01   .48890996E-01   .48817613E-01
+   .48746669E-01   .48677865E-01   .48610885E-01   .48545398E-01   .48481065E-01
+   .48417539E-01   .48354471E-01   .48291511E-01   .48228314E-01   .48164541E-01
+   .48099863E-01   .48033964E-01   .47966547E-01   .47897331E-01   .47826058E-01
+   .47752495E-01   .47676435E-01   .47597697E-01   .47516131E-01   .47431619E-01
+   .47344073E-01   .47253440E-01   .47159697E-01   .47062858E-01   .46962965E-01
+ gradient corrections used for XC
+ 5
+ atomic pseudo charge-density
+   .40000000E+01   .39894900E+01   .39582020E+01   .39068475E+01   .38365676E+01
+   .37488701E+01   .36455522E+01   .35286148E+01   .34001764E+01   .32623924E+01
+   .31173852E+01   .29671861E+01   .28136923E+01   .26586361E+01   .25035670E+01
+   .23498438E+01   .21986345E+01   .20509225E+01   .19075176E+01   .17690689E+01
+   .16360799E+01   .15089238E+01   .13878591E+01   .12730444E+01   .11645520E+01
+   .10623816E+01   .96647127E+00   .87670875E+00   .79294050E+00   .71498025E+00
+   .64261635E+00   .57561818E+00   .51374165E+00   .45673396E+00   .40433763E+00
+   .35629386E+00   .31234537E+00   .27223873E+00   .23572619E+00   .20256723E+00
+   .17252965E+00   .14539051E+00   .12093668E+00   .98965284E-01   .79283926E-01
+   .61710762E-01   .46074455E-01   .32214036E-01   .19978673E-01   .92273858E-02
+  -.17129911E-03  -.83397200E-02  -.15391484E-01  -.21431883E-01  -.26558326E-01
+  -.30860765E-01  -.34422125E-01  -.37318724E-01  -.39620689E-01  -.41392351E-01
+  -.42692632E-01  -.43575414E-01  -.44089892E-01  -.44280909E-01  -.44189275E-01
+  -.43852064E-01  -.43302903E-01  -.42572229E-01  -.41687545E-01  -.40673652E-01
+  -.39552862E-01  -.38345208E-01  -.37068625E-01  -.35739131E-01  -.34370987E-01
+  -.32976850E-01  -.31567908E-01  -.30154015E-01  -.28743807E-01  -.27344813E-01
+  -.25963554E-01  -.24605642E-01  -.23275859E-01  -.21978245E-01  -.20716161E-01
+  -.19492364E-01  -.18309064E-01  -.17167982E-01  -.16070400E-01  -.15017212E-01
+  -.14008960E-01  -.13045883E-01  -.12127944E-01  -.11254869E-01  -.10426176E-01
+  -.96411985E-02  -.88991161E-02  -.81989728E-02  -.75396992E-02  -.69201309E-02
+  -.63390252E-02  -.57950768E-02  -.52869306E-02  -.48131948E-02  -.43724520E-02
+  -.39632685E-02  -.35842039E-02  -.32338185E-02  -.29106807E-02  -.26133730E-02
+  -.23404975E-02  -.20906808E-02  -.18625779E-02  -.16548763E-02  -.14662983E-02
+  -.12956043E-02  -.11415948E-02  -.10031117E-02  -.87904038E-03  -.76831031E-03
+  -.66989594E-03  -.58281725E-03  -.50613997E-03  -.43897557E-03  -.38048116E-03
+  -.32985907E-03  -.28635640E-03  -.24926428E-03  -.21791713E-03  -.19169172E-03
+  -.17000618E-03  -.15231889E-03  -.13812728E-03  -.12696662E-03  -.11840868E-03
+  -.11206038E-03  -.10756243E-03  -.10458788E-03  -.10284067E-03  -.10205420E-03
+  -.10198983E-03  -.10243541E-03  -.10320382E-03  -.10413150E-03  -.10507701E-03
+  -.10591958E-03  -.10655770E-03  -.10690776E-03  -.10690264E-03  -.10649045E-03
+  -.10563321E-03  -.10430558E-03  -.10249368E-03  -.10019394E-03  -.97411903E-04
+  -.94161239E-04  -.90462658E-04  -.86342952E-04  -.81834062E-04  -.76972202E-04
+  -.71797027E-04  -.66350863E-04  -.60677976E-04  -.54823902E-04  -.48834824E-04
+  -.42757002E-04  -.36636248E-04  -.30517455E-04  -.24444170E-04  -.18458220E-04
+  -.12599377E-04  -.69050699E-05  -.14101411E-05   .38533596E-05   .88563384E-05
+   .13572784E-04   .17979862E-04   .22057967E-04   .25790753E-04   .29165127E-04
+   .32171219E-04   .34802321E-04   .37054812E-04   .38928050E-04   .40424254E-04
+   .41548366E-04   .42307895E-04   .42712753E-04   .42775078E-04   .42509044E-04
+   .41930672E-04   .41057628E-04   .39909024E-04   .38505210E-04   .36867574E-04
+   .35018335E-04   .32980347E-04   .30776900E-04   .28431531E-04   .25967839E-04
+   .23409308E-04   .20779141E-04   .18100099E-04   .15394352E-04   .12683343E-04
+   .99876602E-05   .73269199E-05   .47196652E-05   .21832738E-05  -.26612093E-06
+  -.26136966E-05  -.48459962E-05  -.69509705E-05  -.89180082E-05  -.10737955E-04
+  -.12403120E-04  -.13907274E-04  -.15245635E-04  -.16414842E-04  -.17412925E-04
+  -.18239262E-04  -.18894531E-04  -.19380647E-04  -.19700707E-04  -.19858913E-04
+  -.19860497E-04  -.19711649E-04  -.19419423E-04  -.18991661E-04  -.18436897E-04
+  -.17764271E-04  -.16983436E-04  -.16104469E-04  -.15137779E-04  -.14094018E-04
+  -.12983994E-04  -.11818584E-04  -.10608653E-04  -.93649753E-05  -.80981563E-05
+  -.68185635E-05  -.55362587E-05  -.42609358E-05  -.30018642E-05  -.17678364E-05
+  -.56712210E-06   .59257268E-06   .17041408E-05   .27611032E-05   .37576329E-05
+   .46885729E-05   .55494485E-05   .63364747E-05   .70465576E-05   .76772913E-05
+   .82269492E-05   .86944718E-05   .90794484E-05   .93820966E-05   .96032364E-05
+   .97442618E-05   .98071092E-05   .97942222E-05   .97085150E-05   .95533334E-05
+   .93324133E-05   .90498395E-05   .87100017E-05   .83175510E-05   .78773561E-05
+   .73944586E-05   .68740299E-05   .63213278E-05   .57416545E-05   .51403160E-05
+   .45225820E-05   .38936493E-05   .32586050E-05   .26223937E-05   .19897859E-05
+   .13653490E-05   .75342120E-06   .15808773E-06  -.41683995E-06  -.96784232E-06
+  -.14917071E-05  -.19855416E-05  -.24467826E-05  -.28732026E-05  -.32629148E-05
+  -.36143737E-05  -.39263743E-05  -.41980485E-05  -.44288590E-05  -.46185911E-05
+  -.47673421E-05  -.48755097E-05  -.49437772E-05  -.49730984E-05  -.49646802E-05
+  -.49199645E-05  -.48406086E-05  -.47284651E-05  -.45855609E-05  -.44140755E-05
+  -.42163195E-05  -.39947123E-05  -.37517602E-05  -.34900346E-05  -.32121506E-05
+  -.29207457E-05  -.26184596E-05  -.23079144E-05  -.19916960E-05  -.16723361E-05
+  -.13522955E-05  -.10339484E-05  -.71956822E-06  -.41131424E-06  -.11122015E-06
+   .17881646E-06   .45704305E-06   .72185964E-06   .97182491E-06   .12056609E-05
+   .14222565E-05   .16206688E-05   .18001243E-05   .19600182E-05   .20999118E-05
+   .22195301E-05   .23187575E-05   .23976321E-05   .24563400E-05   .24952081E-05
+   .25146961E-05   .25153883E-05   .24979843E-05   .24632891E-05   .24122036E-05
+   .23457138E-05   .22648803E-05   .21708277E-05   .20647336E-05   .19478179E-05
+   .18213320E-05   .16865487E-05   .15447516E-05   .13972253E-05   .12452459E-05
+   .10900719E-05   .93293577E-06   .77503581E-06   .61752862E-06   .46152239E-06
+   .30807066E-06   .15816677E-06   .12739005E-07  -.12735356E-06  -.26132457E-06
+  -.38846317E-06  -.50813609E-06  -.61978918E-06  -.72294809E-06  -.81721854E-06
+  -.90228580E-06  -.97791371E-06  -.10439431E-05  -.11002898E-05  -.11469419E-05
+  -.11839571E-05  -.12114589E-05  -.12296334E-05  -.12387248E-05  -.12390316E-05
+  -.12309018E-05  -.12147281E-05  -.11909435E-05  -.11600163E-05  -.11224449E-05
+  -.10787535E-05  -.10294863E-05  -.97520367E-06  -.91647663E-06  -.85388276E-06
+  -.78800156E-06  -.71941031E-06  -.64868001E-06  -.57637166E-06  -.50303265E-06
+  -.42919358E-06  -.35536526E-06  -.28203600E-06  -.20966924E-06  -.13870146E-06
+  -.69540363E-07  -.25634316E-08   .61883314E-07   .12348619E-06   .18196450E-06
+   .23707084E-06   .28859122E-06   .33634491E-06   .38018401E-06   .41999287E-06
+   .45568726E-06   .48721338E-06   .51454669E-06   .53769062E-06   .55667507E-06
+   .57155493E-06   .58240839E-06   .58933523E-06   .59245505E-06   .59190547E-06
+   .58784023E-06   .58042744E-06   .56984766E-06   .55629214E-06   .53996100E-06
+   .52106152E-06   .49980645E-06   .47641242E-06   .45109836E-06   .42408409E-06
+   .39558893E-06   .36583041E-06   .33502312E-06   .30337757E-06   .27109929E-06
+   .23838785E-06   .20543614E-06   .17242964E-06   .13954584E-06   .10695374E-06
+   .74813405E-07   .43275666E-07   .12481843E-07  -.17436428E-07  -.46357310E-07
+  -.74168811E-07  -.10076878E-06  -.12606483E-06  -.14997427E-06  -.17242391E-06
+  -.19334994E-06  -.21269766E-06  -.23042128E-06  -.24648367E-06  -.26085607E-06
+  -.27351786E-06  -.28445619E-06  -.29366577E-06  -.30114856E-06  -.30691344E-06
+  -.31097596E-06  -.31335807E-06  -.31408779E-06  -.31319900E-06  -.31073113E-06
+  -.30672891E-06  -.30124215E-06  -.29432545E-06  -.28603797E-06  -.27644321E-06
+  -.26560872E-06  -.25360594E-06  -.24050989E-06  -.22639893E-06  -.21135456E-06
+  -.19546112E-06  -.17880555E-06  -.16147710E-06  -.14356706E-06  -.12516847E-06
+  -.10637578E-06  -.87284562E-07  -.67991183E-07  -.48592423E-07  -.29185139E-07
+  -.98658847E-08   .92694738E-08   .28126154E-07   .46610864E-07   .64632213E-07
+   .82101130E-07   .98931289E-07   .11503953E-06   .13034627E-06   .14477595E-06
+   .15825741E-06   .17072429E-06   .18211544E-06   .19237526E-06   .20145407E-06
+   .20930840E-06   .21590130E-06   .22120261E-06   .22518921E-06   .22784515E-06
+   .22916188E-06   .22913831E-06   .22778091E-06   .22510374E-06   .22112841E-06
+   .21588403E-06   .20940707E-06   .20174125E-06   .19293726E-06   .18305256E-06
+   .17215102E-06   .16030261E-06   .14758298E-06   .13407304E-06   .11985844E-06
+   .10502911E-06   .89678674E-07   .73903880E-07   .57803998E-07   .41480189E-07
+   .25034862E-07   .85710175E-08  -.78084252E-08  -.24001293E-07  -.39906833E-07
+  -.55426374E-07  -.70463977E-07  -.84927079E-07  -.98727103E-07  -.11178005E-06
+  -.12400706E-06  -.13533495E-06  -.14569668E-06  -.15503180E-06  -.16328690E-06
+  -.17041589E-06  -.17638034E-06  -.18114974E-06  -.18470165E-06  -.18702187E-06
+  -.18810450E-06  -.18795193E-06  -.18657487E-06  -.18399215E-06  -.18023064E-06
+  -.17532500E-06  -.16931738E-06  -.16225716E-06  -.15420051E-06  -.14520998E-06
+  -.13535407E-06  -.12470665E-06  -.11334649E-06  -.10135660E-06  -.88823690E-07
+  -.75837495E-07  -.62490139E-07  -.48875466E-07  -.35088367E-07  -.21224102E-07
+  -.73776225E-08   .63570979E-08   .19887723E-07   .33124194E-07   .45979356E-07
+   .58369547E-07   .70215167E-07   .81441213E-07   .91977763E-07   .10176044E-06
+   .11073081E-06   .11883676E-06   .12603278E-06   .13228025E-06   .13754765E-06
+   .14181067E-06   .14505237E-06   .14726318E-06   .14844092E-06   .14859068E-06
+   .14772477E-06   .14586250E-06   .14303000E-06   .13925989E-06   .13459104E-06
+   .12906817E-06   .12274144E-06   .11566608E-06   .10790186E-06   .99512635E-07
+   .90565833E-07   .81131898E-07   .71283751E-07   .61096228E-07   .50645504E-07
+   .40008531E-07   .29262457E-07   .18484072E-07   .77492476E-08  -.28675974E-08
+  -.13294019E-07  -.23460046E-07  -.33298652E-07  -.42746200E-07  -.51742853E-07
+  -.60232950E-07  -.68165351E-07  -.75493733E-07  -.82176855E-07  -.88178773E-07
+  -.93469019E-07  -.98022732E-07  -.10182074E-06  -.10484962E-06  -.10710169E-06
+  -.10857493E-06  -.10927298E-06  -.10920494E-06  -.10838523E-06  -.10683340E-06
+  -.10457390E-06  -.10163577E-06  -.98052390E-07  -.93861130E-07  -.89103007E-07
+  -.83822319E-07  -.78066251E-07  -.71884480E-07  -.65328756E-07  -.58452488E-07
+  -.51310317E-07  -.43957688E-07  -.36450431E-07  -.28844344E-07  -.21194780E-07
+  -.13556254E-07  -.59820564E-08   .14761063E-08   .87684629E-08   .15847499E-07
+   .22668258E-07   .29188613E-07   .35369518E-07   .41175223E-07   .46573463E-07
+   .51535618E-07   .56036840E-07   .60056145E-07   .63576484E-07   .66584772E-07
+   .69071889E-07   .71032659E-07   .72465786E-07   .73373776E-07   .73762822E-07
+   .73642668E-07   .73026451E-07   .71930518E-07   .70374224E-07   .68379717E-07
+   .65971700E-07   .63177183E-07   .60025227E-07   .56546677E-07   .52773883E-07
+   .48740429E-07   .44480847E-07   .40030343E-07   .35424518E-07   .30699094E-07
+   .25889652E-07   .21031375E-07   .16158799E-07   .11305583E-07   .65042830E-08
+   .17861505E-08  -.28190595E-08  -.72832606E-08  -.11580190E-07  -.15685545E-07
+  -.19577099E-07  -.23234801E-07  -.26640852E-07  -.29779764E-07  -.32638398E-07
+  -.35205985E-07  -.37474124E-07  -.39436770E-07  -.41090193E-07  -.42432932E-07
+  -.43465724E-07  -.44191427E-07  -.44614921E-07  -.44743004E-07  -.44584271E-07
+  -.44148993E-07  -.43448973E-07  -.42497411E-07  -.41308752E-07  -.39898536E-07
+  -.38283245E-07  -.36480143E-07  -.34507126E-07  -.32382565E-07  -.30125155E-07
+  -.27753768E-07  -.25287308E-07  -.22744577E-07  -.20144140E-07  -.17504207E-07
+  -.14842515E-07  -.12176224E-07  -.95218170E-08  -.68950172E-08  -.43107085E-08
+  -.17828698E-08   .67548171E-09   .30523361E-08   .53367266E-08   .75187554E-08
+   .95896091E-08   .11541566E-07   .13367991E-07   .15063329E-07   .16623082E-07
+   .18043783E-07   .19322963E-07   .20459115E-07   .21451641E-07   .22300813E-07
+   .23007713E-07   .23574175E-07   .24002733E-07   .24296554E-07   .24459380E-07
+   .24495461E-07   .24409502E-07   .24206590E-07   .23892145E-07   .23471858E-07
+   .22951633E-07   .22337542E-07   .21635766E-07   .20852560E-07   .19994202E-07
+   .19066961E-07   .18077060E-07   .17030647E-07   .15933771E-07   .14792357E-07
+   .13612192E-07   .12398908E-07   .11157975E-07   .98946952E-08   .86141953E-08
+   .73214307E-08   .60211860E-08   .47180798E-08   .34165713E-08   .21209687E-08
+   .83543781E-09  -.43598720E-09  -.16893937E-08  -.29209799E-08  -.41270446E-08
+  -.53039777E-08  -.64482516E-08  -.75564137E-08  -.86250803E-08  -.96509327E-08
+  -.10630715E-07  -.11561233E-07  -.12439359E-07  -.13262030E-07  -.14026264E-07
+  -.14729158E-07  -.15367907E-07  -.15939815E-07  -.16442307E-07  -.16872954E-07
+  -.17229484E-07  -.17509805E-07  -.17712031E-07  -.17834498E-07  -.17875790E-07
+  -.17834765E-07  -.17710574E-07  -.17502687E-07  -.17210914E-07  -.16835429E-07
+  -.16376786E-07  -.15835939E-07  -.15214259E-07  -.14513545E-07  -.13736037E-07
+  -.12884424E-07  -.11961847E-07  -.10971900E-07  -.99186285E-08  -.88065248E-08
+  -.76405142E-08  -.64259427E-08  -.51685588E-08  -.38744910E-08  -.25502216E-08
+  -.12025568E-08   .16140726E-09   .15343218E-08   .29086260E-08   .42765908E-08
+   .56303649E-08   .69620244E-08   .82636232E-08   .95272464E-08   .10745064E-07
+   .11909386E-07   .13012718E-07   .14047815E-07   .15007739E-07   .15885909E-07
+   .16676160E-07   .17372786E-07   .17970592E-07   .18464940E-07   .18851790E-07
+   .19127737E-07   .19290048E-07   .19336692E-07   .19266363E-07   .19078501E-07
+   .18773310E-07   .18351763E-07   .17815610E-07   .17167373E-07   .16410342E-07
+   .15548559E-07   .14586799E-07   .13530548E-07   .12385969E-07   .11159868E-07
+   .98596519E-08   .84932852E-08   .70692366E-08   .55964254E-08   .40841624E-08
+   .25420881E-08   .98010759E-09  -.59167741E-09  -.21630380E-08  -.37236897E-08
+  -.52633642E-08  -.67718825E-08  -.82392266E-08  -.96556114E-08  -.11011555E-07
+  -.12297948E-07  -.13506118E-07  -.14627896E-07  -.15655673E-07  -.16582459E-07
+  -.17401931E-07  -.18108486E-07  -.18697277E-07  -.19164252E-07  -.19506188E-07
+  -.19720711E-07  -.19806318E-07  -.19762387E-07  -.19589185E-07  -.19287868E-07
+  -.18860471E-07  -.18309900E-07  -.17639907E-07  -.16855065E-07  -.15960739E-07
+  -.14963046E-07  -.13868811E-07  -.12685520E-07  -.11421268E-07  -.10084700E-07
+  -.86849467E-08  -.72315646E-08  -.57344642E-08  -.42038405E-08  -.26501008E-08
+  -.10837905E-08   .48448204E-09   .20441206E-08   .35846164E-08   .50956218E-08
+   .65670232E-08   .79890116E-08   .93521515E-08   .10647446E-07   .11866399E-07
+   .13001074E-07   .14044148E-07   .14988961E-07   .15829560E-07   .16560736E-07
+   .17178062E-07   .17677917E-07   .18057509E-07   .18314892E-07   .18448971E-07
+   .18459512E-07   .18347132E-07   .18113294E-07   .17760291E-07   .17291226E-07
+   .16709983E-07   .16021195E-07   .15230210E-07   .14343043E-07   .13366334E-07
+   .12307295E-07   .11173655E-07   .99736045E-08   .87157315E-08   .74089595E-08
+   .60624825E-08   .46856976E-08   .32881383E-08   .18794063E-08   .46910370E-09
+  -.93323375E-09  -.23182037E-08  -.36766016E-08  -.49994838E-08  -.62782273E-08
+  -.75045873E-08  -.86707511E-08  -.97693884E-08  -.10793699E-07  -.11737453E-07
+  -.12595033E-07  -.13361463E-07  -.14032440E-07  -.14604354E-07  -.15074308E-07
+  -.15440129E-07  -.15700380E-07  -.15854357E-07  -.15902089E-07  -.15844329E-07
+  -.15682542E-07  -.15418884E-07  -.15056181E-07  -.14597904E-07  -.14048132E-07
+  -.13411522E-07  -.12693269E-07  -.11899062E-07  -.11035039E-07  -.10107739E-07
+  -.91240519E-08  -.80911681E-08  -.70165238E-08  -.59077471E-08  -.47726033E-08
+  -.36189393E-08  -.24546283E-08  -.12875154E-08  -.12536420E-09   .10241948E-08
+   .21537149E-08   .32559810E-08   .43240565E-08   .53513264E-08   .63315385E-08
+   .72588407E-08   .81278148E-08   .89335067E-08   .96714534E-08   .10337705E-07
+   .10928847E-07   .11442010E-07   .11874887E-07   .12225737E-07   .12493388E-07
+   .12677236E-07   .12777240E-07   .12793915E-07   .12728316E-07   .12582026E-07
+   .12357137E-07   .12056223E-07   .11682320E-07   .11238896E-07   .10729818E-07
+   .10159324E-07   .95319832E-08   .88526655E-08   .81265011E-08   .73588426E-08
+   .65552249E-08   .57213260E-08   .48629257E-08   .39858667E-08   .30960146E-08
+ 25.1333556480996805 T
+ Non local Part
+ 0 2 1.19916030564286080
+ 6.64147139257665753 -0.902950942393947048E-01 -0.902950942393947048E-01 -0.494570754788003619E-02
+ Reciprocal Space Part
+   .55817778E+01   .55705292E+01   .55368742E+01   .54810842E+01   .54036090E+01
+   .53050722E+01   .51862655E+01   .50481413E+01   .48918033E+01   .47184965E+01
+   .45295951E+01   .43265891E+01   .41110702E+01   .38847161E+01   .36492746E+01
+   .34065459E+01   .31583653E+01   .29065851E+01   .26530561E+01   .23996093E+01
+   .21480380E+01   .19000796E+01   .16573990E+01   .14215722E+01   .11940710E+01
+   .97624910E+00   .76932962E+00   .57439430E+00   .39237433E+00   .22404317E+00
+   .70011403E-01  -.69276357E-01  -.19354238E+00  -.30267462E+00  -.39672330E+00
+  -.47589550E+00  -.54054769E+00  -.59117641E+00  -.62840720E+00  -.65298201E+00
+  -.66574526E+00  -.66762884E+00  -.65963619E+00  -.64282584E+00  -.61829466E+00
+  -.58716098E+00  -.55054809E+00  -.50956809E+00  -.46530668E+00  -.41880877E+00
+  -.37106549E+00  -.32300249E+00  -.27546984E+00  -.22923368E+00  -.18496959E+00
+  -.14325789E+00  -.10458070E+00  -.69320980E-01  -.37763250E-01  -.10096082E-01
+   .13583844E-01   .33266241E-01   .49020451E-01   .60987606E-01   .69371922E-01
+   .74431341E-01   .76467752E-01   .75816996E-01   .72838896E-01   .67907498E-01
+   .61401725E-01   .53696622E-01   .45155343E-01   .36122003E-01   .26915516E-01
+   .17824469E-01   .91031031E-02   .96841293E-03  -.64016513E-02  -.12868900E-01
+  -.18334607E-01  -.22738262E-01  -.26055498E-01  -.28295268E-01  -.29496423E-01
+  -.29723817E-01  -.29064057E-01  -.27621053E-01  -.25511488E-01  -.22860336E-01
+  -.19796541E-01  -.16448962E-01  -.12942675E-01  -.93957003E-02  -.59162147E-02
+  -.26002886E-02   .46983200E-03   .32268923E-02   .56192551E-02   .76110128E-02
+ Real Space Part
+  -.69534111E+01  -.69008643E+01  -.67439149E+01  -.64846258E+01  -.61264015E+01
+  -.56739369E+01  -.51331487E+01  -.45110871E+01  -.38158316E+01  -.30563714E+01
+  -.22424722E+01  -.13845316E+01  -.49342616E+00   .41964975E+00   .13433478E+01
+   .22663320E+01   .31774436E+01   .40658621E+01   .49212597E+01   .57339466E+01
+   .64950054E+01   .71964102E+01   .78311315E+01   .83932221E+01   .88778851E+01
+   .92815206E+01   .96017523E+01   .98374329E+01   .99886278E+01   .10056579E+02
+   .10043651E+02   .99532522E+01   .97897493E+01   .95583598E+01   .92650354E+01
+   .89163354E+01   .85192934E+01   .80812800E+01   .76098643E+01   .71126773E+01
+   .65972797E+01   .60710370E+01   .55410038E+01   .50138200E+01   .44956195E+01
+   .39919547E+01   .35077354E+01   .30471850E+01   .26138123E+01   .22103999E+01
+   .18390082E+01   .15009937E+01   .11970412E+01   .92720705E+00   .69097321E+00
+   .48730908E+00   .31473956E+00   .17141725E+00   .55196666E-01  -.36291350E-01
+  -.10556696E+00  -.15523202E+00  -.18790557E+00  -.20616537E+00  -.21249645E+00
+  -.20924726E+00  -.19859404E+00  -.18251343E+00  -.16276324E+00  -.14087115E+00
+  -.11813077E+00  -.95604363E-01  -.74131485E-01  -.54342573E-01  -.36676532E-01
+  -.21401321E-01  -.86365671E-02   .16227553E-02   .94824334E-02   .15125707E-01
+   .18791209E-01   .20752711E-01   .21301098E-01   .20728862E-01   .19317303E-01
+   .17326466E-01   .14987782E-01   .12499256E-01   .10022986E-01   .76847243E-02
+   .55751736E-02   .37526593E-02   .22468383E-02   .10630977E-02   .18732362E-03
+  -.40924829E-03  -.76534653E-03  -.92534563E-03  -.93546876E-03  -.84061581E-03
+ Reciprocal Space Part
+  -.18050704E+02  -.17834272E+02  -.17186760E+02  -.16113521E+02  -.14623482E+02
+  -.12729146E+02  -.10446591E+02  -.77954652E+01  -.47989573E+01  -.14837576E+01
+   .21200169E+01   .59789299E+01   .10056375E+02   .14312772E+02   .18705823E+02
+   .23190815E+02   .27720993E+02   .32247989E+02   .36722309E+02   .41093883E+02
+   .45312654E+02   .49329224E+02   .53095520E+02   .56565493E+02   .59695819E+02
+   .62446596E+02   .64782024E+02   .66671043E+02   .68087925E+02   .69012796E+02
+   .69432071E+02   .69338806E+02   .68732931E+02   .67621372E+02   .66018053E+02
+   .63943765E+02   .61425910E+02   .58498115E+02   .55199729E+02   .51575201E+02
+   .47673357E+02   .43546587E+02   .39249955E+02   .34840257E+02   .30375044E+02
+   .25911622E+02   .21506061E+02   .17212234E+02   .13080900E+02   .91588530E+01
+   .54881601E+01   .21055001E+01  -.95838227E+00  -.36790948E+01  -.60388808E+01
+  -.80267626E+01  -.96385435E+01  -.10876670E+02  -.11749959E+02  -.12273201E+02
+  -.12466648E+02  -.12355399E+02  -.11968702E+02  -.11339191E+02  -.10502073E+02
+  -.94942880E+01  -.83536641E+01  -.71180804E+01  -.58246663E+01  -.45090480E+01
+  -.32046618E+01  -.19421464E+01  -.74882792E+00   .35169526E+00   .13398601E+01
+   .22003369E+01   .29221161E+01   .34984875E+01   .39269162E+01   .42088235E+01
+   .43492818E+01   .43566365E+01   .42420665E+01   .40190991E+01   .37030930E+01
+   .33107050E+01   .28593554E+01   .23667065E+01   .18501663E+01   .13264317E+01
+   .81107916E+00   .31821257E+00  -.13982499E+00  -.55267182E+00  -.91209780E+00
+  -.12120841E+01  -.14488344E+01  -.16207210E+01  -.17281718E+01  -.17735043E+01
+ Real Space Part
+   .10651139E+04   .10644690E+04   .10625081E+04   .10591538E+04   .10542809E+04
+   .10477220E+04   .10392749E+04   .10287116E+04   .10157888E+04   .10002596E+04
+   .98188486E+03   .96044581E+03   .93575544E+03   .90766958E+03   .87609671E+03
+   .84100623E+03   .80243497E+03   .76049163E+03   .71535894E+03   .66729356E+03
+   .61662359E+03   .56374381E+03   .50910879E+03   .45322409E+03   .39663573E+03
+   .33991847E+03   .28366297E+03   .22846251E+03   .17489949E+03   .12353223E+03
+   .74882375E+02   .29423356E+02  -.12429823E+02  -.50329150E+02  -.84000326E+02
+  -.11324746E+03  -.13795569E+03  -.15809158E+03  -.17370155E+03  -.18490823E+03
+  -.19190502E+03  -.19494902E+03  -.19435265E+03  -.19047419E+03  -.18370756E+03
+  -.17447167E+03  -.16319972E+03  -.15032861E+03  -.13628891E+03  -.12149559E+03
+  -.10633967E+03  -.91181076E+02  -.76342788E+02  -.62106350E+02  -.48708813E+02
+  -.36341096E+02  -.25147706E+02  -.15227736E+02  -.66370019E+01   .60880866E+00
+   .65301792E+01   .11179163E+02   .14634341E+02   .16995528E+02   .18378415E+02
+   .18909313E+02   .18720165E+02   .17943940E+02   .16710533E+02   .15143243E+02
+   .13355885E+02   .11450557E+02   .95160752E+01   .76270408E+01   .58435107E+01
+   .42112018E+01   .27621624E+01   .15158297E+01   .48038513E+00  -.34567781E+00
+  -.97186072E+00  -.14139210E+01  -.16921593E+01  -.18297962E+01  -.18514895E+01
+  -.17820313E+01  -.16452525E+01  -.14631487E+01  -.12552329E+01  -.10381074E+01
+  -.82524120E+00  -.62692995E+00  -.45041348E+00  -.30011899E+00  -.17799937E+00
+  -.83934893E-01  -.16168161E-01   .28254623E-01   .53059773E-01   .62358715E-01
+ Non local Part
+ 1 2 1.19916030564286080
+ -1.25459306742451093 0.228100760454737587E-01 0.228100760454737587E-01 -0.700981276733592118
+ Reciprocal Space Part
+   .00000000E+00   .23510789E+00   .46836234E+00   .69793402E+00   .92204139E+00
+   .11389735E+01   .13471118E+01   .15449501E+01   .17311126E+01   .19043703E+01
+   .20636539E+01   .22080652E+01   .23368850E+01   .24495780E+01   .25457954E+01
+   .26253740E+01   .26883327E+01   .27348663E+01   .27653367E+01   .27802619E+01
+   .27803027E+01   .27662478E+01   .27389977E+01   .26995471E+01   .26489663E+01
+   .25883833E+01   .25189648E+01   .24418976E+01   .23583711E+01   .22695607E+01
+   .21766115E+01   .20806245E+01   .19826438E+01   .18836459E+01   .17845301E+01
+   .16861121E+01   .15891184E+01   .14941834E+01   .14018480E+01   .13125600E+01
+   .12266766E+01   .11444678E+01   .10661213E+01   .99174936E+00   .92139498E+00
+   .85504034E+00   .79261477E+00   .73400336E+00   .67905551E+00   .62759336E+00
+   .57941985E+00   .53432639E+00   .49209973E+00   .45252826E+00   .41540736E+00
+   .38054389E+00   .34775980E+00   .31689471E+00   .28780770E+00   .26037813E+00
+   .23450569E+00   .21010971E+00   .18712783E+00   .16551415E+00   .14523693E+00
+   .12627598E+00   .10861987E+00   .92263068E-01   .77203056E-01   .63437602E-01
+   .50962234E-01   .39767981E-01   .29839474E-01   .21153417E-01   .13677481E-01
+   .73696341E-02   .21778907E-02  -.19595132E-02  -.51135603E-02  -.73635388E-02
+  -.87958246E-02  -.95024151E-02  -.95792707E-02  -.91245303E-02  -.82366629E-02
+  -.70126172E-02  -.55460307E-02  -.39255516E-02  -.22333231E-02  -.54367111E-03
+   .10779713E-02   .25758793E-02   .39045755E-02   .50290887E-02   .59249343E-02
+   .65778287E-02   .69831577E-02   .71452240E-02   .70763059E-02   .67955637E-02
+ Real Space Part
+   .00000000E+00   .23584444E+01   .46905809E+01   .69705668E+01   .91734793E+01
+   .11275748E+02   .13255558E+02   .15093213E+02   .16771445E+02   .18275680E+02
+   .19594235E+02   .20718452E+02   .21642774E+02   .22364748E+02   .22884966E+02
+   .23206950E+02   .23336969E+02   .23283822E+02   .23058561E+02   .22674189E+02
+   .22145325E+02   .21487856E+02   .20718572E+02   .19854810E+02   .18914098E+02
+   .17913820E+02   .16870901E+02   .15801528E+02   .14720895E+02   .13643000E+02
+   .12580468E+02   .11544435E+02   .10544456E+02   .95884707E+01   .86828003E+01
+   .78321846E+01   .70398518E+01   .63076171E+01   .56360052E+01   .50243916E+01
+   .44711564E+01   .39738471E+01   .35293436E+01   .31340209E+01   .27839065E+01
+   .24748267E+01   .22025405E+01   .19628579E+01   .17517407E+01   .15653850E+01
+   .14002853E+01   .12532803E+01   .11215805E+01   .10027809E+01   .89485770E+00
+   .79615357E+00   .70535222E+00   .62144491E+00   .54369142E+00   .47157738E+00
+   .40477041E+00   .34307664E+00   .28639943E+00   .23470160E+00   .18797213E+00
+   .14619822E+00   .10934294E+00   .77328764E-01   .50026788E-01   .27251291E-01
+   .87591178E-02  -.57467833E-02  -.16610463E-01  -.24213511E-01  -.28963878E-01
+  -.31283785E-01  -.31597457E-01  -.30319360E-01  -.27843477E-01  -.24534068E-01
+  -.20718243E-01  -.16680503E-01  -.12659360E-01  -.88459612E-02  -.53846167E-02
+  -.23749991E-02   .12423795E-03   .20907329E-02   .35329050E-02   .44839862E-02
+   .49959065E-02   .51333191E-02   .49680098E-02   .45738887E-02   .40227146E-02
+   .33806453E-02   .27056586E-02   .20458418E-02   .14385027E-02   .91002329E-03
+ Reciprocal Space Part
+   .00000000E+00   .29272926E+00   .57843399E+00   .85023484E+00   .11015397E+01
+   .13261794E+01   .15185341E+01   .16736479E+01   .17873284E+01   .18562306E+01
+   .18779215E+01   .18509255E+01   .17747492E+01   .16498856E+01   .14777963E+01
+   .12608754E+01   .10023919E+01   .70641614E+00   .37772921E+00   .21718724E-01
+  -.35573657E+00  -.74839098E+00  -.11497619E+01  -.15532628E+01  -.19523357E+01
+  -.23405817E+01  -.27118843E+01  -.30605258E+01  -.33812917E+01  -.36695632E+01
+  -.39213948E+01  -.41335755E+01  -.43036740E+01  -.44300652E+01  -.45119403E+01
+  -.45492988E+01  -.45429232E+01  -.44943396E+01  -.44057620E+01  -.42800250E+01
+  -.41205058E+01  -.39310365E+01  -.37158106E+01  -.34792853E+01  -.32260817E+01
+  -.29608856E+01  -.26883505E+01  -.24130063E+01  -.21391741E+01  -.18708888E+01
+  -.16118327E+01  -.13652790E+01  -.11340470E+01  -.92047055E+00  -.72637731E+00
+  -.55308185E+00  -.40138970E+00  -.27161305E+00  -.16359660E+00  -.76752772E-01
+  -.10104639E-01   .37664549E-01   .68156995E-01   .83202612E-01   .84799534E-01
+   .75054428E-01   .56124091E-01   .30159711E-01  -.74497392E-03  -.34600541E-01
+  -.69562879E-01  -.10396763E+00  -.13635759E+00  -.16550280E+00  -.19041323E+00
+  -.21034427E+00  -.22479520E+00  -.23350134E+00  -.23642027E+00  -.23371303E+00
+  -.22572115E+00  -.21294033E+00  -.19599172E+00  -.17559194E+00  -.15252250E+00
+  -.12759976E+00  -.10164610E+00  -.75463148E-01  -.49807632E-01  -.25370407E-01
+  -.27590838E-02   .17515510E-01   .35048873E-01   .49548366E-01   .60834843E-01
+   .68840593E-01   .73603904E-01   .75260639E-01   .74033291E-01   .70218015E-01
+ Real Space Part
+   .00000000E+00  -.44565316E+01  -.88736793E+01  -.13212431E+02  -.17434518E+02
+  -.21502784E+02  -.25381550E+02  -.29036977E+02  -.32437420E+02  -.35553771E+02
+  -.38359789E+02  -.40832411E+02  -.42952041E+02  -.44702811E+02  -.46072803E+02
+  -.47054238E+02  -.47643617E+02  -.47841801E+02  -.47654050E+02  -.47089992E+02
+  -.46163524E+02  -.44892661E+02  -.43299301E+02  -.41408940E+02  -.39250314E+02
+  -.36854984E+02  -.34256876E+02  -.31491766E+02  -.28596733E+02  -.25609588E+02
+  -.22568287E+02  -.19510342E+02  -.16472240E+02  -.13488886E+02  -.10593077E+02
+  -.78150297E+01  -.51819498E+01  -.27176791E+01  -.44240695E+00   .16275384E+01
+   .34798180E+01   .51061276E+01   .65021612E+01   .76674960E+01   .86054018E+01
+   .93225838E+01   .98288640E+01   .10136814E+02   .10261344E+02   .10219273E+02
+   .10028865E+02   .97093782E+01   .92806093E+01   .87624554E+01   .81745059E+01
+   .75356666E+01   .68638280E+01   .61755803E+01   .54859812E+01   .48083782E+01
+   .41542863E+01   .35333200E+01   .29531777E+01   .24196742E+01   .19368174E+01
+   .15069225E+01   .11307583E+01   .80771818E+00   .53600812E+00   .31284662E+00
+   .13466788E+00  -.26769640E-02  -.10372651E+00  -.17322843E+00  -.21597563E+00
+  -.23666226E+00  -.23976167E+00  -.22942775E+00  -.20941978E+00  -.18305043E+00
+  -.15315567E+00  -.12208482E+00  -.91708380E-01  -.63441081E-01  -.38277137E-01
+  -.16834879E-01   .59226634E-03   .13981221E-01   .23523731E-01   .29572128E-01
+   .32588335E-01   .33097637E-01   .31648362E-01   .28778214E-01   .24987606E-01
+   .20720005E-01   .16348990E-01   .12171480E-01   .84063741E-02   .51977359E-02
+ PAW radial sets
+ 323 0.699084555240741423
+(5E20.12)                                
+ augmentation charges (non sperical)
+  -.610085085999E-01  -.186338196202E-02  -.286321339088E-01   .165933387291E-01  -.186338196202E-02
+  -.601132130549E-04   .464666195505E-04   .217264853682E-03  -.286321339088E-01   .464666195505E-04
+   .535065865316E-01   .383319399150E-03   .165933387291E-01   .217264853682E-03   .383319399150E-03
+   .119224496368E-02
+ uccopancies in atom
+   .200000000005E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .666666666439E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .266163843696E-04   .274818827895E-04   .283755250589E-04   .292982263456E-04   .302509315762E-04
+   .312346164042E-04   .322502882088E-04   .332989871268E-04   .343817871173E-04   .354997970623E-04
+   .366541619016E-04   .378460638057E-04   .390767233863E-04   .403474009463E-04   .416593977706E-04
+   .430140574586E-04   .444127673002E-04   .458569596965E-04   .473481136267E-04   .488877561628E-04
+   .504774640331E-04   .521188652376E-04   .538136407145E-04   .555635260619E-04   .573703133154E-04
+   .592358527830E-04   .611620549401E-04   .631508923861E-04   .652044018643E-04   .673246863478E-04
+   .695139171933E-04   .717743363644E-04   .741082587279E-04   .765180744243E-04   .790062513153E-04
+   .815753375116E-04   .842279639819E-04   .869668472475E-04   .897947921642E-04   .927146947948E-04
+   .957295453747E-04   .988424313742E-04   .102056540661E-03   .105375164763E-03   .108801702242E-03
+   .112339662172E-03   .115992667733E-03   .119764459921E-03   .123658901382E-03   .127679980364E-03
+   .131831814803E-03   .136118656540E-03   .140544895676E-03   .145115065067E-03   .149833844965E-03
+   .154706067814E-03   .159736723194E-03   .164930962938E-03   .170294106401E-03   .175831645909E-03
+   .181549252388E-03   .187452781165E-03   .193548277971E-03   .199841985127E-03   .206340347939E-03
+   .213050021297E-03   .219977876495E-03   .227131008261E-03   .234516742027E-03   .242142641430E-03
+   .250016516057E-03   .258146429445E-03   .266540707334E-03   .275207946198E-03   .284157022049E-03
+   .293397099521E-03   .302937641261E-03   .312788417618E-03   .322959516647E-03   .333461354443E-03
+   .344304685805E-03   .355500615252E-03   .367060608395E-03   .378996503676E-03   .391320524495E-03
+   .404045291726E-03   .417183836643E-03   .430749614264E-03   .444756517131E-03   .459218889537E-03
+   .474151542213E-03   .489569767503E-03   .505489355015E-03   .521926607798E-03   .538898359036E-03
+   .556421989285E-03   .574515444273E-03   .593197253280E-03   .612486548111E-03   .632403082688E-03
+   .652967253285E-03   .674200119407E-03   .696123425367E-03   .718759622544E-03   .742131892384E-03
+   .766264170131E-03   .791181169349E-03   .816908407220E-03   .843472230686E-03   .870899843422E-03
+   .899219333701E-03   .928459703155E-03   .958650896478E-03   .989823832089E-03   .102201043380E-02
+   .105524366350E-02   .108955755493E-02   .112498724850E-02   .116156902732E-02   .119934035433E-02
+   .123833991067E-02   .127860763528E-02   .132018476584E-02   .136311388097E-02   .140743894383E-02
+   .145320534715E-02   .150045995974E-02   .154925117444E-02   .159962895772E-02   .165164490084E-02
+   .170535227266E-02   .176080607424E-02   .181806309510E-02   .187718197144E-02   .193822324615E-02
+   .200124943084E-02   .206632506983E-02   .213351680625E-02   .220289345031E-02   .227452604977E-02
+   .234848796266E-02   .242485493244E-02   .250370516557E-02   .258511941158E-02   .266918104576E-02
+   .275597615457E-02   .284559362380E-02   .293812522956E-02   .303366573230E-02   .313231297384E-02
+   .323416797759E-02   .333933505196E-02   .344792189722E-02   .356003971581E-02   .367580332615E-02
+   .379533128031E-02   .391874598535E-02   .404617382872E-02   .417774530766E-02   .431359516287E-02
+   .445386251646E-02   .459869101447E-02   .474822897393E-02   .490262953478E-02   .506205081668E-02
+   .522665608097E-02   .539661389781E-02   .557209831886E-02   .575328905551E-02   .594037166289E-02
+   .613353772995E-02   .633298507563E-02   .653891795142E-02   .675154725060E-02   .697109072414E-02
+   .719777320374E-02   .743182683208E-02   .767349130052E-02   .792301409459E-02   .818065074744E-02
+   .844666510152E-02   .872132957877E-02   .900492545962E-02   .929774317102E-02   .960008258391E-02
+   .991225332026E-02   .102345750702E-01   .105673779193E-01   .109110026869E-01   .112658012746E-01
+   .116321370274E-01   .120103851049E-01   .124009328662E-01   .128041802665E-01   .132205402662E-01
+   .136504392545E-01   .140943174853E-01   .145526295289E-01   .150258447369E-01   .155144477228E-01
+   .160189388589E-01   .165398347883E-01   .170776689537E-01   .176329921445E-01   .182063730601E-01
+   .187983988927E-01   .194096759284E-01   .200408301684E-01   .206925079697E-01   .213653767074E-01
+   .220601254578E-01   .227774657044E-01   .235181320663E-01   .242828830506E-01   .250725018290E-01
+   .258877970402E-01   .267296036178E-01   .275987836452E-01   .284962272388E-01   .294228534593E-01
+   .303796112527E-01   .313674804228E-01   .323874726339E-01   .334406324470E-01   .345280383900E-01
+   .356508040616E-01   .368100792718E-01   .380070512198E-01   .392429457094E-01   .405190284047E-01
+   .418366061258E-01   .431970281875E-01   .446016877807E-01   .460520233998E-01   .475495203150E-01
+   .490957120941E-01   .506921821726E-01   .523405654753E-01   .540425500908E-01   .557998790001E-01
+   .576143518615E-01   .594878268538E-01   .614222225791E-01   .634195200277E-01   .654817646066E-01
+   .676110682346E-01   .698096115046E-01   .720796459171E-01   .744234961856E-01   .768435626176E-01
+   .793423235727E-01   .819223380004E-01   .845862480609E-01   .873367818310E-01   .901767560975E-01
+   .931090792423E-01   .961367542205E-01   .992628816359E-01   .102490662916E+00   .105823403591E+00
+   .109264516679E+00   .112817526180E+00   .116486070686E+00   .120273907107E+00   .124184914520E+00
+   .128223098136E+00   .132392593410E+00   .136697670269E+00   .141142737487E+00   .145732347202E+00
+   .150471199575E+00   .155364147606E+00   .160416202100E+00   .165632536802E+00   .171018493697E+00
+   .176579588473E+00   .182321516178E+00   .188250157047E+00   .194371582528E+00   .200692061494E+00
+   .207218066668E+00   .213956281250E+00   .220913605761E+00   .228097165108E+00   .235514315885E+00
+   .243172653901E+00   .251080021964E+00   .259244517910E+00   .267674502897E+00   .276378609965E+00
+   .285365752880E+00   .294645135264E+00   .304226260013E+00   .314118939037E+00   .324333303303E+00
+   .334879813214E+00   .345769269317E+00   .357012823366E+00   .368621989744E+00   .380608657251E+00
+   .392985101282E+00   .405763996398E+00   .418958429304E+00   .432581912251E+00   .446648396878E+00
+   .461172288493E+00   .476168460830E+00   .491652271281E+00   .507639576621E+00   .524146749247E+00
+   .541190693946E+00   .558788865208E+00   .576959285097E+00   .595720561711E+00   .615091908236E+00
+   .635093162626E+00   .655744807911E+00   .677067993181E+00   .699084555241E+00   .721817040975E+00
+   .745288730434E+00   .769523660679E+00   .794546650398E+00
+ aepotential
+   .383317401350E+05   .370760521630E+05   .358215427817E+05   .345723614372E+05   .333329235581E+05
+   .321072411919E+05   .308989386383E+05   .297112470463E+05   .285470076453E+05   .274086798574E+05
+   .262983535166E+05   .252177644407E+05   .241683130613E+05   .231510852278E+05   .221668746907E+05
+   .212162067494E+05   .202993625032E+05   .194164032472E+05   .185671946044E+05   .177514300587E+05
+   .169686535705E+05   .162182810557E+05   .154996205585E+05   .148118909766E+05   .141542392477E+05
+   .135257560060E+05   .129254896671E+05   .123524589625E+05   .118056640518E+05   .112840961958E+05
+   .107867460148E+05   .103126107938E+05   .986070033795E+04   .943004200499E+04   .901968485448E+04
+   .862870276244E+04   .825619708807E+04   .790129849413E+04   .756316831746E+04   .724099943751E+04
+   .693401678227E+04   .664147745305E+04   .636267057252E+04   .609691689646E+04   .584356827969E+04
+   .560200695715E+04   .537164466484E+04   .515192177660E+04   .494230629451E+04   .474229278168E+04
+   .455140136800E+04   .436917663011E+04   .419518652364E+04   .402902138329E+04   .387029279002E+04
+   .371863253072E+04   .357369179155E+04   .343513992726E+04   .330266368403E+04   .317596636331E+04
+   .305476672301E+04   .293879844635E+04   .282780911686E+04   .272155961227E+04   .261982329965E+04
+   .252238545902E+04   .242904250854E+04   .233960151475E+04   .225387951953E+04   .217170307075E+04
+   .209290762256E+04   .201733712284E+04   .194484348396E+04   .187528618728E+04   .180853185036E+04
+   .174445383460E+04   .168293188934E+04   .162385178535E+04   .156710500646E+04   .151258842233E+04
+   .146020400231E+04   .140985854502E+04   .136146340998E+04   .131493427670E+04   .127019091146E+04
+   .122715695065E+04   .118575969310E+04   .114592990721E+04   .110760164901E+04   .107071208076E+04
+   .103520132763E+04   .100101229465E+04   .968090551732E+03   .936384173502E+03   .905843624873E+03
+   .876421626702E+03   .848073052039E+03   .820754808212E+03   .794425739614E+03   .769046524597E+03
+   .744579591633E+03   .720989023054E+03   .698240480930E+03   .676301124330E+03   .655139537739E+03
+   .634725661561E+03   .615030725674E+03   .596027188030E+03   .577688674777E+03   .559989924704E+03
+   .542906737097E+03   .526415920536E+03   .510495246165E+03   .495123402472E+03   .480279952596E+03
+   .465945293766E+03   .452100619670E+03   .438727882504E+03   .425809760163E+03   .413329622066E+03
+   .401271498932E+03   .389620052484E+03   .378360547788E+03   .367478826286E+03   .356961280721E+03
+   .346794830362E+03   .336966898773E+03   .327465391112E+03   .318278674497E+03   .309395556619E+03
+   .300805268514E+03   .292497445394E+03   .284462110100E+03   .276689656664E+03   .269170834721E+03
+   .261896734731E+03   .254858773865E+03   .248048682373E+03   .241458490845E+03   .235080517842E+03
+   .228907358231E+03   .222931871878E+03   .217147172978E+03   .211546619837E+03   .206123805074E+03
+   .200872546185E+03   .195786876778E+03   .190861037791E+03   .186089469450E+03   .181466803375E+03
+   .176987855056E+03   .172647616682E+03   .168441250263E+03   .164364080974E+03   .160411590899E+03
+   .156579412924E+03   .152863324933E+03   .149259244204E+03   .145763222136E+03   .142371439012E+03
+   .139080199145E+03   .135885926133E+03   .132785158305E+03   .129774544362E+03   .126850839236E+03
+   .124010899974E+03   .121251681982E+03   .118570235228E+03   .115963700738E+03   .113429307103E+03
+   .110964367262E+03   .108566275250E+03   .106232503230E+03   .103960598509E+03   .101748180767E+03
+   .995929393180E+02   .974926305371E+02   .954450753531E+02   .934481568477E+02   .914998179451E+02
+   .895980592072E+02   .877409366956E+02   .859265599431E+02   .841530899713E+02   .824187374331E+02
+   .807217607940E+02   .790604646145E+02   .774331978845E+02   .758383524512E+02   .742743614975E+02
+   .727396980970E+02   .712328738357E+02   .697524374914E+02   .682969737885E+02   .668651022009E+02
+   .654554758266E+02   .640667803164E+02   .626977328633E+02   .613470812491E+02   .600136029490E+02
+   .586961042929E+02   .573934196797E+02   .561044108453E+02   .548279661925E+02   .535630001670E+02
+   .523084526805E+02   .510632886094E+02   .498264973080E+02   .485970922131E+02   .473741104651E+02
+   .461566125988E+02   .449436822753E+02   .437344260616E+02   .425279732599E+02   .413234757805E+02
+   .401201080623E+02   .389170670348E+02   .377135721249E+02   .365088653029E+02   .353022111734E+02
+   .340928970973E+02   .328802333592E+02   .316635533635E+02   .304422138675E+02   .292155952447E+02
+   .279831017783E+02   .267441619801E+02   .254982289382E+02   .242447806833E+02   .229833205798E+02
+   .217133777326E+02   .204345074131E+02   .191462914991E+02   .178483389287E+02   .165402861685E+02
+   .152217976926E+02   .138925664776E+02   .125523145105E+02   .112007933164E+02   .983778450878E+01
+   .846310036873E+01   .707658446486E+01   .567811232366E+01   .426759216912E+01   .284496575141E+01
+   .141020929284E+01  -.366654156141E-01  -.149560972345E+01  -.296653658322E+01  -.444931870035E+01
+  -.594378629039E+01  -.744972434548E+01  -.896686929182E+01  -.104949048950E+02  -.120334572435E+02
+  -.135820886085E+02  -.151402899440E+02  -.167074717553E+02  -.182829530266E+02  -.198659478663E+02
+  -.214555495031E+02  -.230507112591E+02  -.246502241472E+02  -.262526908046E+02  -.278564956091E+02
+  -.294597710474E+02  -.310603607592E+02  -.326557801918E+02  -.342431765070E+02  -.358192903045E+02
+  -.373804228649E+02  -.389224139265E+02  -.404406363995E+02  -.419300157173E+02  -.433850824888E+02
+  -.448000674747E+02  -.461690474478E+02  -.474861491702E+02  -.487458171466E+02  -.499431492767E+02
+  -.510743075199E+02  -.521370165321E+02  -.531311804649E+02  -.540596711832E+02  -.549293630873E+02
+  -.557524764820E+02  -.565481668190E+02  -.573439201000E+02  -.581754998773E+02  -.590828862883E+02
+  -.600984575072E+02  -.612246894042E+02  -.624054073495E+02  -.635079321979E+02  -.643429503546E+02
+  -.647341328244E+02  -.646074102868E+02  -.640374460998E+02  -.632091682825E+02  -.623198210793E+02
+  -.614972752813E+02  -.607833039180E+02  -.601643928333E+02  -.596083077577E+02  -.590852924460E+02
+  -.585747945374E+02  -.580649267477E+02  -.575497821306E+02  -.570268364802E+02  -.564950806221E+02
+  -.559539033021E+02  -.554025550570E+02  -.548399930324E+02  -.542649352801E+02  -.536760011707E+02
+  -.530718627739E+02  -.524513698695E+02  -.518136362967E+02  -.511580889113E+02  -.504844862598E+02
+  -.497929152047E+02  -.490837727492E+02  -.483577385574E+02
+ core charge-density
+   .210201471976E-05   .224075664592E-05   .238865458685E-05   .254631262205E-05   .271437467066E-05
+   .289352711738E-05   .308450161127E-05   .328807804893E-05   .350508775400E-05   .373641686609E-05
+   .398300995265E-05   .424587385875E-05   .452608181007E-05   .482477778602E-05   .514318118056E-05
+   .548259176971E-05   .584439500577E-05   .623006765990E-05   .664118383576E-05   .707942137855E-05
+   .754656870563E-05   .804453208605E-05   .857534339869E-05   .914116840034E-05   .974431553701E-05
+   .103872453343E-04   .110725804047E-04   .118031161120E-04   .125818319365E-04   .134119035859E-04
+   .142967159018E-04   .152398766133E-04   .162452309925E-04   .173168774727E-04   .184591842904E-04
+   .196768072185E-04   .209747084634E-04   .223581767995E-04   .238328490247E-04   .254047328205E-04
+   .270802311103E-04   .288661680134E-04   .307698164969E-04   .327989278389E-04   .349617630191E-04
+   .372671261631E-04   .397244001732E-04   .423435846899E-04   .451353365329E-04   .481110127855E-04
+   .512827166925E-04   .546633465537E-04   .582666478101E-04   .621072685268E-04   .662008184941E-04
+   .705639321818E-04   .752143357953E-04   .801709186982E-04   .854538094856E-04   .910844570067E-04
+   .970857166572E-04   .103481942281E-03   .110299084044E-03   .117564792660E-03   .125308530387E-03
+   .133561689217E-03   .142357716729E-03   .151732250102E-03   .161723258793E-03   .172371196456E-03
+   .183719162681E-03   .195813075181E-03   .208701853104E-03   .222437612158E-03   .237075872332E-03
+   .252675778986E-03   .269300338178E-03   .287016667117E-03   .305896260713E-03   .326015275242E-03
+   .347454830188E-03   .370301329441E-03   .394646803036E-03   .420589270757E-03   .448233128946E-03
+   .477689562001E-03   .509076980088E-03   .542521484709E-03   .578157363861E-03   .616127618631E-03
+   .656584523168E-03   .699690220109E-03   .745617353632E-03   .794549742481E-03   .846683095389E-03
+   .902225771526E-03   .961399588699E-03   .102444068224E-02   .109160041766E-02   .116314636027E-02
+   .123936330534E-02   .132055437229E-02   .140704216687E-02   .149917001532E-02   .159730327486E-02
+   .170183072500E-02   .181316604445E-02   .193174937867E-02   .205804900338E-02   .219256308964E-02
+   .233582157635E-02   .248838815641E-02   .265086238310E-02   .282388190341E-02   .300812482576E-02
+   .320431222944E-02   .341321082396E-02   .363563576644E-02   .387245364601E-02   .412458564415E-02
+   .439301088078E-02   .467876995601E-02   .498296869806E-02   .530678212831E-02   .565145865486E-02
+   .601832450658E-02   .640878841994E-02   .682434659150E-02   .726658790948E-02   .773719947818E-02
+   .823797244965E-02   .877080817735E-02   .933772470722E-02   .994086362171E-02   .105824972531E-01
+   .112650362829E-01   .119910377433E-01   .127632134399E-01   .135844388111E-01   .144577622441E-01
+   .153864148634E-01   .163738208122E-01   .174236080432E-01   .185396196377E-01   .197259256706E-01
+   .209868356391E-01   .223269114720E-01   .237509811369E-01   .252641528593E-01   .268718299708E-01
+   .285797263970E-01   .303938828004E-01   .323206833847E-01   .343668733724E-01   .365395771581E-01
+   .388463171429E-01   .412950332480E-01   .438941031033E-01   .466523629042E-01   .495791289213E-01
+   .526842196464E-01   .559779785495E-01   .594712974148E-01   .631756402191E-01   .671030675022E-01
+   .712662611768E-01   .756785497076E-01   .803539335844E-01   .853071109979E-01   .905535036149E-01
+   .961092823336E-01   .101991392886E+00   .108217581135E+00   .114806417891E+00   .121777323066E+00
+   .129150588943E+00   .136947402324E+00   .145189865301E+00   .153901014352E+00   .163104837444E+00
+   .172826288805E+00   .183091300959E+00   .193926793635E+00   .205360679071E+00   .217421863247E+00
+   .230140242492E+00   .243546694913E+00   .257673066026E+00   .272552147933E+00   .288217651336E+00
+   .304704169664E+00   .322047134505E+00   .340282761512E+00   .359447985923E+00   .379580386761E+00
+   .400718098759E+00   .422899711034E+00   .446164151471E+00   .470550555773E+00   .496098120117E+00
+   .522845936323E+00   .550832808460E+00   .580097049822E+00   .610676259202E+00   .642607075471E+00
+   .675924909479E+00   .710663652389E+00   .746855359642E+00   .784529909868E+00   .823714638198E+00
+   .864433943582E+00   .906708869968E+00   .950556661362E+00   .995990291124E+00   .104301796611E+01
+   .109164260662E+01   .114186130363E+01   .119366475488E+01   .124703668237E+01   .130195323380E+01
+   .135838237157E+01   .141628325299E+01   .147560560672E+01   .153628911031E+01   .159826277524E+01
+   .166144434602E+01   .172573972093E+01   .179104240281E+01   .185723298887E+01   .192417870953E+01
+   .199173302679E+01   .205973530355E+01   .212801055564E+01   .219636929928E+01   .226460750671E+01
+   .233250668330E+01   .239983407940E+01   .246634305053E+01   .253177357856E+01   .259585296684E+01
+   .265829672076E+01   .271880962463E+01   .277708702399E+01   .283281632099E+01   .288567868813E+01
+   .293535100324E+01   .298150800565E+01   .302382467008E+01   .306197879136E+01   .309565376868E+01
+   .312454157393E+01   .314834588399E+01   .316678535168E+01   .317959698537E+01   .318653960172E+01
+   .318739731108E+01   .318198299002E+01   .317014169081E+01   .315175393296E+01   .312673881878E+01
+   .309505691121E+01   .305671281039E+01   .301175736428E+01   .296028944858E+01   .290245725290E+01
+   .283845901318E+01   .276854313492E+01   .269300765859E+01   .261219902697E+01   .252651012442E+01
+   .243637757071E+01   .234227826612E+01   .224472520064E+01   .214426255778E+01   .204146016233E+01
+   .193690734109E+01   .183120628548E+01   .172496502364E+01   .161879013072E+01   .151327931436E+01
+   .140901403108E+01   .130655229498E+01   .120642184091E+01   .110911380351E+01   .101507706536E+01
+   .924713415287E+00   .838373638738E+00   .756354633201E+00   .678897594052E+00   .606187236400E+00
+   .538351896408E+00   .475464205924E+00   .417541937254E+00   .364548734839E+00   .316394938044E+00
+   .272939426364E+00   .233993809082E+00   .199329712305E+00   .168688507967E+00   .141791603202E+00
+   .118349382811E+00   .980680113325E-01   .806544733117E-01   .658206202508E-01   .532867336649E-01
+   .427847431325E-01   .340610365648E-01   .268787587943E-01   .210195270993E-01   .162845404577E-01
+   .124951006767E-01   .949259334725E-02   .713799599173E-02   .531099208522E-02   .390877477541E-02
+   .284462447957E-02   .204634106180E-02   .145460473349E-02   .102133087525E-02   .708073374340E-03
+   .484519560765E-03   .327108148624E-03   .217790419037E-03
+ kinetic energy-density
+   .187149272566E-01   .190029016528E-01   .193021383520E-01   .196131445331E-01   .199364668482E-01
+   .202726831041E-01   .206224041703E-01   .209862753360E-01   .213649778729E-01   .217592307042E-01
+   .221697921893E-01   .225974620544E-01   .230430834585E-01   .235075452233E-01   .239917842237E-01
+   .244967879609E-01   .250235973262E-01   .255733095592E-01   .261470814287E-01   .267461326327E-01
+   .273717494355E-01   .280252885669E-01   .287081813606E-01   .294219382048E-01   .301681532636E-01
+   .309485095218E-01   .317647841490E-01   .326188542310E-01   .335127028323E-01   .344484255235E-01
+   .354282371948E-01   .364544794691E-01   .375296284508E-01   .386563030240E-01   .398372736687E-01
+   .410754718683E-01   .423740000125E-01   .437361420645E-01   .451653748014E-01   .466653797901E-01
+   .482400561570E-01   .498935341207E-01   .516301894220E-01   .534546586408E-01   .553718554950E-01
+   .573869882016E-01   .595055778913E-01   .617334782350E-01   .640768963281E-01   .665424148420E-01
+   .691370156842E-01   .718681050854E-01   .747435402840E-01   .777716580423E-01   .809613048245E-01
+   .843218689283E-01   .878633147711E-01   .915962193527E-01   .955318108150E-01   .996820098605E-01
+   .104059473466E+00   .108677641585E+00   .113550786803E+00   .118694067089E+00   .124123581995E+00
+   .129856432521E+00   .135910784469E+00   .142305936459E+00   .149062391504E+00   .156201933897E+00
+   .163747710518E+00   .171724317478E+00   .180157892402E+00   .189076212387E+00   .198508798378E+00
+   .208487026104E+00   .219044244082E+00   .230215899162E+00   .242039670048E+00   .254555609264E+00
+   .267806294183E+00   .281836987641E+00   .296695808659E+00   .312433914112E+00   .329105691757E+00
+   .346768965584E+00   .365485214034E+00   .385319802119E+00   .406342228041E+00   .428626385361E+00
+   .452250841902E+00   .477299135691E+00   .503860089876E+00   .532028147324E+00   .561903725927E+00
+   .593593596265E+00   .627211282887E+00   .662877490414E+00   .700720556173E+00   .740876931071E+00
+   .783491690049E+00   .828719074092E+00   .876723065934E+00   .927678000833E+00   .981769215175E+00
+   .103919373456E+01   .110016100428E+01   .116489366388E+01   .123362836932E+01   .130661666466E+01
+   .138412590656E+01   .146644024463E+01   .155386166052E+01   .164671106948E+01   .174532948751E+01
+   .185007926809E+01   .196134541224E+01   .207953695573E+01   .220508843837E+01   .233846145866E+01
+   .248014631989E+01   .263066377108E+01   .279056684906E+01   .296044282603E+01   .314091526877E+01
+   .333264621471E+01   .353633847128E+01   .375273804390E+01   .398263670078E+01   .422687467799E+01
+   .448634353582E+01   .476198916903E+01   .505481498233E+01   .536588523522E+01   .569632856593E+01
+   .604734170172E+01   .642019336275E+01   .681622836857E+01   .723687195545E+01   .768363431125E+01
+   .815811533885E+01   .866200965348E+01   .919711182443E+01   .976532186826E+01   .103686510014E+02
+   .110092276605E+02   .116893037974E+02   .124112614561E+02   .131776196376E+02   .139910414599E+02
+   .148543416164E+02   .157704941386E+02   .167426404663E+02   .177740978254E+02   .188683679172E+02
+   .200291459156E+02   .212603297708E+02   .225660298148E+02   .239505786611E+02   .254185413897E+02
+   .269747260040E+02   .286241941448E+02   .303722720411E+02   .322245616746E+02   .341869521299E+02
+   .362656310986E+02   .384670964953E+02   .407981681485E+02   .432659995054E+02   .458780893047E+02
+   .486422931402E+02   .515668348501E+02   .546603176435E+02   .579317348741E+02   .613904803553E+02
+   .650463581030E+02   .689095913788E+02   .729908308934E+02   .773011620136E+02   .818521108089E+02
+   .866556487471E+02   .917241958441E+02   .970706220433E+02   .102708246595E+03   .108650835174E+03
+   .114912594467E+03   .121508163936E+03   .128452604432E+03   .135761383343E+03   .143450355903E+03
+   .151535742297E+03   .160034100166E+03   .168962292084E+03   .178337447588E+03   .188176919311E+03
+   .198498232731E+03   .209319029088E+03   .220657000954E+03   .232529819984E+03   .244955056327E+03
+   .257950089232E+03   .271532008341E+03   .285717505210E+03   .300522754616E+03   .315963285221E+03
+   .332053839245E+03   .348808220795E+03   .366239132631E+03   .384358001152E+03   .403174789553E+03
+   .422697799137E+03   .442933458957E+03   .463886104051E+03   .485557742726E+03   .507947813511E+03
+   .531052932602E+03   .554866632844E+03   .579379095524E+03   .604576876521E+03   .630442628632E+03
+   .656954822183E+03   .684087466359E+03   .711809833998E+03   .740086192954E+03   .768875547433E+03
+   .798131393124E+03   .827801490198E+03   .857827658668E+03   .888145600844E+03   .918684755966E+03
+   .949368192307E+03   .980112542272E+03   .101082798616E+04   .104141829035E+04   .107178090569E+04
+   .110180713178E+04   .113138235255E+04   .116038634853E+04   .118869369036E+04   .121617421790E+04
+   .124269360841E+04   .126811403643E+04   .129229492698E+04   .131509380267E+04   .133636722370E+04
+   .135597181862E+04   .137376540192E+04   .138960817268E+04   .140336398711E+04   .141490169540E+04
+   .142409653185E+04   .143083154490E+04   .143499905206E+04   .143650210272E+04   .143525593026E+04
+   .143118937310E+04   .142424624329E+04   .141438661985E+04   .140158804370E+04   .138584659017E+04
+   .136717779557E+04   .134561741424E+04   .132122198382E+04   .129406917745E+04   .126425792364E+04
+   .123190827657E+04   .119716102241E+04   .116017701014E+04   .112113619867E+04   .108023641603E+04
+   .103769182992E+04   .993731133613E+03   .948595455686E+03   .902536007070E+03   .855811484921E+03
+   .808685259103E+03   .761422374678E+03   .714286418279E+03   .667536262337E+03   .621422839436E+03
+   .576185893199E+03   .532050869837E+03   .489225992577E+03   .447899597254E+03   .408237795951E+03
+   .370382528452E+03   .334450063979E+03   .300530043795E+03   .268685225931E+03   .238952207524E+03
+   .211343498908E+03   .185851228955E+03   .162452188076E+03   .141112750295E+03   .121791110838E+03
+   .104434777422E+03   .889742185649E+02   .753170557585E+02   .633476452647E+02   .529332849578E+02
+   .439337166174E+02   .362092956323E+02   .296256559217E+02   .240555383153E+02   .193793214078E+02
+   .154852579587E+02   .122697443525E+02   .963761241955E+01   .750235296988E+01   .578620180549E+01
+   .442005836368E+01   .334323786417E+01   .250307633395E+01   .185441692586E+01   .135900893055E+01
+   .984850383892E+00   .705502793867E+00   .499403134414E+00   .349194331708E+00   .241091270573E+00
+   .164295079104E+00   .110464301462E+00   .732477232375E-01
+ pspotential
+  -.688889563991E+02  -.688859867412E+02  -.688831106037E+02  -.688803250462E+02  -.688776272155E+02
+  -.688750143495E+02  -.688724837717E+02  -.688700328911E+02  -.688676591977E+02  -.688653602608E+02
+  -.688631337259E+02  -.688609773126E+02  -.688588888128E+02  -.688568660880E+02  -.688549070663E+02
+  -.688530097420E+02  -.688511721715E+02  -.688493924735E+02  -.688476688255E+02  -.688459994619E+02
+  -.688443826738E+02  -.688428168048E+02  -.688413002519E+02  -.688398314619E+02  -.688384089307E+02
+  -.688370312015E+02  -.688356968633E+02  -.688344045501E+02  -.688331529381E+02  -.688319407457E+02
+  -.688307667317E+02  -.688296296939E+02  -.688285284677E+02  -.688274619257E+02  -.688264289758E+02
+  -.688254285599E+02  -.688244596540E+02  -.688235212658E+02  -.688226124343E+02  -.688217322292E+02
+  -.688208797490E+02  -.688200541209E+02  -.688192544994E+02  -.688184800661E+02  -.688177300278E+02
+  -.688170036167E+02  -.688163000890E+02  -.688156187246E+02  -.688149588259E+02  -.688143197171E+02
+  -.688137007442E+02  -.688131012737E+02  -.688125206918E+02  -.688119584042E+02  -.688114138354E+02
+  -.688108864282E+02  -.688103756429E+02  -.688098809565E+02  -.688094018632E+02  -.688089378725E+02
+  -.688084885101E+02  -.688080533160E+02  -.688076318451E+02  -.688072236665E+02  -.688068283628E+02
+  -.688064455298E+02  -.688060747762E+02  -.688057157231E+02  -.688053680035E+02  -.688050312622E+02
+  -.688047051553E+02  -.688043893497E+02  -.688040835233E+02  -.688037873638E+02  -.688035005692E+02
+  -.688032228471E+02  -.688029539143E+02  -.688026934969E+02  -.688024413298E+02  -.688021971563E+02
+  -.688019607282E+02  -.688017318051E+02  -.688015101547E+02  -.688012955520E+02  -.688010877797E+02
+  -.688008866271E+02  -.688006918910E+02  -.688005033747E+02  -.688003208880E+02  -.688001442470E+02
+  -.687999732743E+02  -.687998077983E+02  -.687996476534E+02  -.687994926793E+02  -.687993427220E+02
+  -.687991976321E+02  -.687990572661E+02  -.687989214854E+02  -.687987901564E+02  -.687986631505E+02
+  -.687985403441E+02  -.687984216179E+02  -.687983068576E+02  -.687981959533E+02  -.687980887993E+02
+  -.687979852948E+02  -.687978853428E+02  -.687977888509E+02  -.687976957307E+02  -.687976058980E+02
+  -.687975192728E+02  -.687974357789E+02  -.687973553444E+02  -.687972779013E+02  -.687972033858E+02
+  -.687971317377E+02  -.687970629013E+02  -.687969968247E+02  -.687969334599E+02  -.687968727634E+02
+  -.687968146954E+02  -.687967592203E+02  -.687967063072E+02  -.687966559290E+02  -.687966080633E+02
+  -.687965626919E+02  -.687965198015E+02  -.687964793834E+02  -.687964414333E+02  -.687964059529E+02
+  -.687963729482E+02  -.687963424307E+02  -.687963144176E+02  -.687962889318E+02  -.687962660020E+02
+  -.687962456634E+02  -.687962279573E+02  -.687962129321E+02  -.687962006431E+02  -.687961911532E+02
+  -.687961845329E+02  -.687961808611E+02  -.687961802249E+02  -.687961827209E+02  -.687961884551E+02
+  -.687961975430E+02  -.687962101115E+02  -.687962262982E+02  -.687962462524E+02  -.687962701361E+02
+  -.687962981243E+02  -.687963304059E+02  -.687963671847E+02  -.687964086798E+02  -.687964551267E+02
+  -.687965067786E+02  -.687965639071E+02  -.687966268030E+02  -.687966957780E+02  -.687967711656E+02
+  -.687968533224E+02  -.687969426296E+02  -.687970394944E+02  -.687971443510E+02  -.687972576630E+02
+  -.687973799246E+02  -.687975116623E+02  -.687976534371E+02  -.687978058460E+02  -.687979695244E+02
+  -.687981451479E+02  -.687983334348E+02  -.687985351483E+02  -.687987510986E+02  -.687989821460E+02
+  -.687992292029E+02  -.687994932367E+02  -.687997752724E+02  -.688000763957E+02  -.688003977551E+02
+  -.688007405658E+02  -.688011061119E+02  -.688014957490E+02  -.688019109084E+02  -.688023530983E+02
+  -.688028239076E+02  -.688033250079E+02  -.688038581565E+02  -.688044251982E+02  -.688050280672E+02
+  -.688056687886E+02  -.688063494797E+02  -.688070723499E+02  -.688078397012E+02  -.688086539268E+02
+  -.688095175087E+02  -.688104330157E+02  -.688114030976E+02  -.688124304797E+02  -.688135179554E+02
+  -.688146683756E+02  -.688158846362E+02  -.688171696637E+02  -.688185263960E+02  -.688199577609E+02
+  -.688214666496E+02  -.688230558862E+02  -.688247281917E+02  -.688264861406E+02  -.688283321139E+02
+  -.688302682412E+02  -.688322963363E+02  -.688344178226E+02  -.688366336488E+02  -.688389441915E+02
+  -.688413491467E+02  -.688438474061E+02  -.688464369177E+02  -.688491145307E+02  -.688518758209E+02
+  -.688547148965E+02  -.688576241830E+02  -.688605941845E+02  -.688636132213E+02  -.688666671413E+02
+  -.688697390053E+02  -.688728087433E+02  -.688758527834E+02  -.688788436509E+02  -.688817495389E+02
+  -.688845338502E+02  -.688871547130E+02  -.688895644711E+02  -.688917091518E+02  -.688935279164E+02
+  -.688949524978E+02  -.688959066317E+02  -.688963054887E+02  -.688960551185E+02  -.688950519153E+02
+  -.688931821176E+02  -.688903213577E+02  -.688863342755E+02  -.688810742143E+02  -.688743830182E+02
+  -.688660909491E+02  -.688560167451E+02  -.688439678398E+02  -.688297407627E+02  -.688131217405E+02
+  -.687938875149E+02  -.687718063933E+02  -.687466395421E+02  -.687181425318E+02  -.686860671328E+02
+  -.686501633622E+02  -.686101817683E+02  -.685658759377E+02  -.685170052013E+02  -.684633375073E+02
+  -.684046524231E+02  -.683407442210E+02  -.682714249958E+02  -.681965277544E+02  -.681159094160E+02
+  -.680294536485E+02  -.679370734684E+02  -.678387135183E+02  -.677343519329E+02  -.676240016930E+02
+  -.675077113559E+02  -.673855650367E+02  -.672576814981E+02  -.671242121853E+02  -.669853380203E+02
+  -.668412647466E+02  -.666922165917E+02  -.665384279966E+02  -.663801331537E+02  -.662175531029E+02
+  -.660508801689E+02  -.658802595975E+02  -.657057683725E+02  -.655273913819E+02  -.653449953790E+02
+  -.651583015419E+02  -.649668578963E+02  -.647700134098E+02  -.645668961557E+02  -.643563985316E+02
+  -.641371729807E+02  -.639076418840E+02  -.636660250861E+02  -.634103877206E+02  -.631387094822E+02
+  -.628489742078E+02  -.625392757157E+02  -.622079326486E+02  -.618536021106E+02  -.614753798876E+02
+  -.610728746490E+02  -.606462452159E+02  -.601961937686E+02  -.597239132786E+02  -.592309935141E+02
+  -.587192955012E+02  -.581908081958E+02  -.576475026417E+02  -.570911979412E+02  -.565234504120E+02
+  -.559454731997E+02  -.553580892927E+02  -.547617171356E+02  -.541563853081E+02  -.535413959031E+02
+  -.529440596403E+02  -.523371726302E+02  -.517437282672E+02  -.511316376789E+02  -.504857670576E+02
+  -.498097462626E+02  -.491001980528E+02  -.483609990814E+02
+ core charge-density (pseudized)
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00
+ pseudo wavefunction
+   .717870223758E-04   .741213572537E-04   .765315988782E-04   .790202155471E-04   .815897558215E-04
+   .842428511349E-04   .869822184888E-04   .898106632347E-04   .927310819471E-04   .957464653899E-04
+   .988599015791E-04   .102074578945E-03   .105393789599E-03   .108820932702E-03   .112359517948E-03
+   .116013169158E-03   .119785627989E-03   .123680757769E-03   .127702547451E-03   .131855115698E-03
+   .136142715104E-03   .140569736545E-03   .145140713676E-03   .149860327579E-03   .154733411549E-03
+   .159764956050E-03   .164960113823E-03   .170324205164E-03   .175862723369E-03   .181581340366E-03
+   .187485912517E-03   .193582486619E-03   .199877306096E-03   .206376817394E-03   .213087676578E-03
+   .220016756154E-03   .227171152104E-03   .234558191154E-03   .242185438276E-03   .250060704436E-03
+   .258192054594E-03   .266587815961E-03   .275256586530E-03   .284207243875E-03   .293448954252E-03
+   .302991181977E-03   .312843699121E-03   .323016595522E-03   .333520289111E-03   .344365536584E-03
+   .355563444420E-03   .367125480251E-03   .379063484606E-03   .391389683042E-03   .404116698657E-03
+   .417257565021E-03   .430825739524E-03   .444835117154E-03   .459300044732E-03   .474235335597E-03
+   .489656284785E-03   .505578684683E-03   .522018841210E-03   .538993590510E-03   .556520316196E-03
+   .574616967150E-03   .593302075909E-03   .612594777639E-03   .632514829730E-03   .653082632036E-03
+   .674319247758E-03   .696246425021E-03   .718886619138E-03   .742263015616E-03   .766399553891E-03
+   .791320951847E-03   .817052731131E-03   .843621243284E-03   .871053696732E-03   .899378184647E-03
+   .928623713715E-03   .958820233842E-03   .989998668827E-03   .102219094803E-02   .105543003905E-02
+   .108974998154E-02   .112518592198E-02   .116177414977E-02   .119955213430E-02   .123855856337E-02
+   .127883338282E-02   .132041783739E-02   .136335451299E-02   .140768738032E-02   .145346183985E-02
+   .150072476836E-02   .154952456692E-02   .159991121047E-02   .165193629897E-02   .170565311025E-02
+   .176111665459E-02   .181838373103E-02   .187751298552E-02   .193856497102E-02   .200160220943E-02
+   .206668925571E-02   .213389276389E-02   .220328155539E-02   .227492668944E-02   .234890153590E-02
+   .242528185032E-02   .250414585157E-02   .258557430190E-02   .266965058962E-02   .275646081454E-02
+   .284609387606E-02   .293864156425E-02   .303419865378E-02   .313286300101E-02   .323473564415E-02
+   .333992090671E-02   .344852650429E-02   .356066365493E-02   .367644719288E-02   .379599568624E-02
+   .391943155828E-02   .404688121284E-02   .417847516365E-02   .431434816801E-02   .445463936466E-02
+   .459949241628E-02   .474905565649E-02   .490348224167E-02   .506293030778E-02   .522756313214E-02
+   .539754930056E-02   .557306287991E-02   .575428359618E-02   .594139701845E-02   .613459474876E-02
+   .633407461814E-02   .654004088904E-02   .675270446428E-02   .697228310286E-02   .719900164264E-02
+   .743309223039E-02   .767479455916E-02   .792435611347E-02   .818203242234E-02   .844808732062E-02
+   .872279321870E-02   .900643138100E-02   .929929221346E-02   .960167556038E-02   .991389101080E-02
+   .102362582149E-01   .105691072103E-01   .109127787597E-01   .112676246982E-01   .116340082934E-01
+   .120123046152E-01   .124029009196E-01   .128061970435E-01   .132226058123E-01   .136525534616E-01
+   .140964800712E-01   .145548400143E-01   .150281024199E-01   .155167516514E-01   .160212877994E-01
+   .165422271909E-01   .170801029149E-01   .176354653644E-01   .182088827962E-01   .188009419083E-01
+   .194122484359E-01   .200434277663E-01   .206951255733E-01   .213680084719E-01   .220627646942E-01
+   .227801047854E-01   .235207623239E-01   .242854946618E-01   .250750836907E-01   .258903366305E-01
+   .267320868433E-01   .276011946728E-01   .284985483096E-01   .294250646840E-01   .303816903863E-01
+   .313694026150E-01   .323892101552E-01   .334421543865E-01   .345293103217E-01   .356517876776E-01
+   .368107319777E-01   .380073256888E-01   .392427893909E-01   .405183829834E-01   .418354069253E-01
+   .431952035137E-01   .445991581984E-01   .460487009354E-01   .475453075791E-01   .490905013146E-01
+   .506858541297E-01   .523329883290E-01   .540335780891E-01   .557893510568E-01   .576020899897E-01
+   .594736344407E-01   .614058824867E-01   .634007925008E-01   .654603849697E-01   .675867443550E-01
+   .697820209999E-01   .720484330798E-01   .743882685971E-01   .768038874195E-01   .792977233616E-01
+   .818722863080E-01   .845301643767E-01   .872740261228E-01   .901066227780E-01   .930307905261E-01
+   .960494528102E-01   .991656226692E-01   .102382405100E+00   .105702999438E+00   .109130701763E+00
+   .112668907299E+00   .116321112836E+00   .120090919136E+00   .123982033332E+00   .127998271308E+00
+   .132143560039E+00   .136421939896E+00   .140837566886E+00   .145394714824E+00   .150097777413E+00
+   .154951270210E+00   .159959832471E+00   .165128228827E+00   .170461350794E+00   .175964218054E+00
+   .181641979506E+00   .187499914020E+00   .193543430884E+00   .199778069861E+00   .206209500841E+00
+   .212843523008E+00   .219686063465E+00   .226743175253E+00   .234021034673E+00   .241525937847E+00
+   .249264296391E+00   .257242632131E+00   .265467570712E+00   .273945833995E+00   .282684231081E+00
+   .291689647822E+00   .300969034623E+00   .310529392355E+00   .320377756172E+00   .330521176968E+00
+   .340966700246E+00   .351721342092E+00   .362792061937E+00   .374185731763E+00   .385909101372E+00
+   .397968759274E+00   .410371088750E+00   .423122218558E+00   .436227967737E+00   .449693783864E+00
+   .463524674112E+00   .477725128349E+00   .492299033480E+00   .507249578134E+00   .522579146740E+00
+   .538289201953E+00   .554380154284E+00   .570851217722E+00   .587700250025E+00   .604923576284E+00
+   .622515794241E+00   .640469559787E+00   .658775350959E+00   .677421208693E+00   .696392452526E+00
+   .715671369429E+00   .735236873906E+00   .755064137588E+00   .775124186577E+00   .795383465008E+00
+   .815803363485E+00   .836339711416E+00   .856942232728E+00   .877553965049E+00   .898110643238E+00
+   .918540049169E+00   .938761330896E+00   .958684295874E+00   .978208684778E+00   .997223434628E+00
+   .101560594258E+01   .103322134468E+01   .104992182737E+01   .106554599325E+01   .107991830700E+01
+   .109284865167E+01   .110413203038E+01   .111354845314E+01   .112086305318E+01   .112582648089E+01
+   .112815826033E+01   .112766526986E+01   .112429219396E+01   .111806470671E+01   .110902663553E+01
+   .109723971270E+01   .108278313973E+01   .106575297316E+01
+ ae wavefunction
+  -.435742517947E-03  -.449893177036E-03  -.464503226381E-03  -.479587570063E-03  -.495161595061E-03
+  -.511241186854E-03  -.527842745526E-03  -.544983202382E-03  -.562680037106E-03  -.580951295461E-03
+  -.599815607567E-03  -.619292206750E-03  -.639400949017E-03  -.660162333128E-03  -.681597521339E-03
+  -.703728360783E-03  -.726577405556E-03  -.750167939497E-03  -.774523999699E-03  -.799670400771E-03
+  -.825632759880E-03  -.852437522580E-03  -.880111989478E-03  -.908684343740E-03  -.938183679480E-03
+  -.968640031044E-03  -.100008440323E-02  -.103254880249E-02  -.106606626906E-02  -.110067091020E-02
+  -.113639793438E-02  -.117328368669E-02  -.121136568521E-02  -.125068265865E-02  -.129127458513E-02
+  -.133318273222E-02  -.137644969815E-02  -.142111945447E-02  -.146723738990E-02  -.151485035564E-02
+  -.156400671213E-02  -.161475637720E-02  -.166715087575E-02  -.172124339103E-02  -.177708881751E-02
+  -.183474381533E-02  -.189426686652E-02  -.195571833299E-02  -.201916051623E-02  -.208465771892E-02
+  -.215227630849E-02  -.222208478256E-02  -.229415383644E-02  -.236855643275E-02  -.244536787308E-02
+  -.252466587200E-02  -.260653063319E-02  -.269104492797E-02  -.277829417628E-02  -.286836652997E-02
+  -.296135295881E-02  -.305734733898E-02  -.315644654424E-02  -.325875053997E-02  -.336436247986E-02
+  -.347338880566E-02  -.358593934981E-02  -.370212744121E-02  -.382207001408E-02  -.394588772003E-02
+  -.407370504355E-02  -.420565042075E-02  -.434185636172E-02  -.448245957638E-02  -.462760110401E-02
+  -.477742644658E-02  -.493208570585E-02  -.509173372452E-02  -.525653023127E-02  -.542663999011E-02
+  -.560223295378E-02  -.578348442162E-02  -.597057520176E-02  -.616369177789E-02  -.636302648065E-02
+  -.656877766365E-02  -.678114988445E-02  -.700035409032E-02  -.722660780908E-02  -.746013534500E-02
+  -.770116797996E-02  -.794994417981E-02  -.820670980623E-02  -.847171833394E-02  -.874523107357E-02
+  -.902751740010E-02  -.931885498706E-02  -.961953004655E-02  -.992983757504E-02  -.102500816052E-01
+  -.105805754637E-01  -.109216420351E-01  -.112736140315E-01  -.116368342691E-01  -.120116559500E-01
+  -.123984429509E-01  -.127975701174E-01  -.132094235654E-01  -.136344009872E-01  -.140729119656E-01
+  -.145253782923E-01  -.149922342937E-01  -.154739271620E-01  -.159709172922E-01  -.164836786248E-01
+  -.170126989948E-01  -.175584804848E-01  -.181215397845E-01  -.187024085548E-01  -.193016337964E-01
+  -.199197782231E-01  -.205574206391E-01  -.212151563204E-01  -.218935973989E-01  -.225933732497E-01
+  -.233151308810E-01  -.240595353255E-01  -.248272700327E-01  -.256190372626E-01  -.264355584778E-01
+  -.272775747364E-01  -.281458470807E-01  -.290411569250E-01  -.299643064382E-01  -.309161189217E-01
+  -.318974391810E-01  -.329091338894E-01  -.339520919425E-01  -.350272248024E-01  -.361354668290E-01
+  -.372777755970E-01  -.384551321973E-01  -.396685415195E-01  -.409190325138E-01  -.422076584303E-01
+  -.435354970318E-01  -.449036507795E-01  -.463132469854E-01  -.477654379319E-01  -.492614009518E-01
+  -.508023384670E-01  -.523894779821E-01  -.540240720271E-01  -.557073980463E-01  -.574407582283E-01
+  -.592254792716E-01  -.610629120806E-01  -.629544313867E-01  -.649014352884E-01  -.669053447033E-01
+  -.689676027260E-01  -.710896738847E-01  -.732730432877E-01  -.755192156539E-01  -.778297142169E-01
+  -.802060794943E-01  -.826498679133E-01  -.851626502822E-01  -.877460100970E-01  -.904015416732E-01
+  -.931308480896E-01  -.959355389333E-01  -.988172278336E-01  -.101777529769E+00  -.104818058135E+00
+  -.107940421563E+00  -.111146220461E+00  -.114437043280E+00  -.117814462472E+00  -.121280030132E+00
+  -.124835273308E+00  -.128481688949E+00  -.132220738490E+00  -.136053842035E+00  -.139982372135E+00
+  -.144007647128E+00  -.148130924032E+00  -.152353390950E+00  -.156676158992E+00  -.161100253670E+00
+  -.165626605748E+00  -.170256041537E+00  -.174989272593E+00  -.179826884815E+00  -.184769326900E+00
+  -.189816898153E+00  -.194969735618E+00  -.200227800511E+00  -.205590863939E+00  -.211058491884E+00
+  -.216630029429E+00  -.222304584222E+00  -.228081009153E+00  -.233957884239E+00  -.239933497701E+00
+  -.246005826237E+00  -.252172514476E+00  -.258430853626E+00  -.264777759312E+00  -.271209748616E+00
+  -.277722916340E+00  -.284312910504E+00  -.290974907116E+00  -.297703584239E+00  -.304493095405E+00
+  -.311337042424E+00  -.318228447646E+00  -.325159725750E+00  -.332122655133E+00  -.339108349001E+00
+  -.346107226258E+00  -.353108982305E+00  -.360102559894E+00  -.367076120170E+00  -.374017014061E+00
+  -.380911754200E+00  -.387745987563E+00  -.394504469032E+00  -.401171036125E+00  -.407728585119E+00
+  -.414159048843E+00  -.420443376428E+00  -.426561515308E+00  -.432492395804E+00  -.438213918634E+00
+  -.443702945710E+00  -.448935294606E+00  -.453885737104E+00  -.458528002233E+00  -.462834784249E+00
+  -.466777755996E+00  -.470327588142E+00  -.473453974758E+00  -.476125665740E+00  -.478310506592E+00
+  -.479975486076E+00  -.481086792249E+00  -.481609877413E+00  -.481509532496E+00  -.480749971371E+00
+  -.479294925619E+00  -.477107750216E+00  -.474151540602E+00  -.470389261561E+00  -.465783888302E+00
+  -.460298560072E+00  -.453896746594E+00  -.446542427526E+00  -.438200285079E+00  -.428835909804E+00
+  -.418416019475E+00  -.406908690835E+00  -.394283603848E+00  -.380512297898E+00  -.365568439236E+00
+  -.349428098716E+00  -.332070038708E+00  -.313476007769E+00  -.293631041509E+00  -.272523767779E+00
+  -.250146714166E+00  -.226496615562E+00  -.201574719441E+00  -.175387086446E+00  -.147944883820E+00
+  -.119264669340E+00  -.893686635019E-01  -.582850078665E-01  -.260480075826E-01   .730164389810E-02
+   .417166601866E-01   .771429803763E-01   .113519614909E+00   .150778525779E+00   .188844552184E+00
+   .227635399600E+00   .267061721085E+00   .307027335378E+00   .347429645854E+00   .388160339023E+00
+   .429106427031E+00   .470151609649E+00   .511177717128E+00   .552065672491E+00   .592695180096E+00
+   .632942588996E+00   .672677320253E+00   .711758452074E+00   .750033482899E+00   .787340238686E+00
+   .823511018127E+00   .858377021983E+00   .891771646742E+00   .923532423259E+00   .953502106838E+00
+   .981529483979E+00   .100747023338E+01   .103118796300E+01   .105255541998E+01   .107145581493E+01
+   .108778418556E+01   .110144872741E+01   .111237203157E+01   .112049218446E+01   .112576369931E+01
+   .112815826033E+01   .112766526986E+01   .112429219396E+01   .111806470671E+01   .110902663553E+01
+   .109723971270E+01   .108278313973E+01   .106575297316E+01
+ pseudo wavefunction
+   .343855759999E-05   .355037091431E-05   .366582011861E-05   .378502344294E-05   .390810296192E-05
+   .403518471972E-05   .416639885916E-05   .430187975496E-05   .444176615139E-05   .458620130432E-05
+   .473533312795E-05   .488931434630E-05   .504830264954E-05   .521246085559E-05   .538195707675E-05
+   .555696489195E-05   .573766352444E-05   .592423802539E-05   .611687946334E-05   .631578511993E-05
+   .652115869188E-05   .673321049961E-05   .695215770267E-05   .717822452205E-05   .741164246986E-05
+   .765265058641E-05   .790149568498E-05   .815843260462E-05   .842372447107E-05   .869764296629E-05
+   .898046860662E-05   .927249103011E-05   .957400929309E-05   .988533217644E-05   .102067785018E-04
+   .105386774582E-04   .108813689389E-04   .112352038896E-04   .116005446680E-04   .119777654148E-04
+   .123672524366E-04   .127694046018E-04   .131846337490E-04   .136133651087E-04   .140560377388E-04
+   .145131049742E-04   .149850348913E-04   .154723107868E-04   .159754316731E-04   .164949127894E-04
+   .170312861287E-04   .175851009835E-04   .181569245074E-04   .187473422966E-04   .193569589894E-04
+   .199863988852E-04   .206363065839E-04   .213073476463E-04   .220002092752E-04   .227156010196E-04
+   .234542555009E-04   .242169291636E-04   .250044030495E-04   .258174835978E-04   .266570034709E-04
+   .275238224070E-04   .284188281007E-04   .293429371118E-04   .302970958040E-04   .312822813141E-04
+   .322995025525E-04   .333498012366E-04   .344342529572E-04   .355539682800E-04   .367100938833E-04
+   .379038137315E-04   .391363502881E-04   .404089657674E-04   .417229634265E-04   .430796889008E-04
+   .444805315809E-04   .459269260360E-04   .474203534828E-04   .489623433018E-04   .505544746039E-04
+   .521983778470E-04   .538957365056E-04   .556482887945E-04   .574578294490E-04   .593262115619E-04
+   .612553484816E-04   .632472157708E-04   .653038532291E-04   .674273669822E-04   .696199316373E-04
+   .718837925106E-04   .742212679252E-04   .766347515854E-04   .791267150267E-04   .816997101468E-04
+   .843563718176E-04   .870994205827E-04   .899316654427E-04   .928560067304E-04   .958754390803E-04
+   .989930544934E-04   .102212045502E-03   .105535708440E-03   .108967446812E-03   .112510774780E-03
+   .116169320763E-03   .119946831142E-03   .123847174103E-03   .127874343589E-03   .132032463391E-03
+   .136325791364E-03   .140758723789E-03   .145335799862E-03   .150061706349E-03   .154941282370E-03
+   .159979524357E-03   .165181591158E-03   .170552809320E-03   .176098678529E-03   .181824877239E-03
+   .187737268477E-03   .193841905835E-03   .200145039660E-03   .206653123444E-03   .213372820413E-03
+   .220311010347E-03   .227474796596E-03   .234871513348E-03   .242508733111E-03   .250394274453E-03
+   .258536209979E-03   .266942874576E-03   .275622873916E-03   .284585093239E-03   .293838706418E-03
+   .303393185310E-03   .313258309418E-03   .323444175857E-03   .333961209642E-03   .344820174308E-03
+   .356032182868E-03   .367608709128E-03   .379561599355E-03   .391903084331E-03   .404645791781E-03
+   .417802759207E-03   .431387447123E-03   .445413752722E-03   .459896023967E-03   .474849074139E-03
+   .490288196839E-03   .506229181472E-03   .522688329216E-03   .539682469498E-03   .557228976984E-03
+   .575345789108E-03   .594051424152E-03   .613364999882E-03   .633306252776E-03   .653895557846E-03
+   .675153949069E-03   .697103140461E-03   .719765547788E-03   .743164310953E-03   .767323317057E-03
+   .792267224172E-03   .818021485824E-03   .844612376222E-03   .872067016233E-03   .900413400142E-03
+   .929680423194E-03   .959897909947E-03   .991096643458E-03   .102330839531E-02   .105656595649E-02
+   .109090316917E-02   .112635495935E-02   .116295737043E-02   .120074759770E-02   .123976402378E-02
+   .128004625494E-02   .132163515849E-02   .136457290103E-02   .140890298774E-02   .145467030259E-02
+   .150192114958E-02   .155070329491E-02   .160106601018E-02   .165306011643E-02   .170673802930E-02
+   .176215380493E-02   .181936318694E-02   .187842365412E-02   .193939446909E-02   .200233672767E-02
+   .206731340898E-02   .213438942628E-02   .220363167832E-02   .227510910123E-02   .234889272086E-02
+   .242505570531E-02   .250367341765E-02   .258482346872E-02   .266858576958E-02   .275504258375E-02
+   .284427857874E-02   .293638087674E-02   .303143910420E-02   .312954543990E-02   .323079466121E-02
+   .333528418807E-02   .344311412431E-02   .355438729574E-02   .366920928440E-02   .378768845849E-02
+   .390993599701E-02   .403606590856E-02   .416619504321E-02   .430044309660E-02   .443893260498E-02
+   .458178893018E-02   .472914023288E-02   .488111743283E-02   .503785415421E-02   .519948665428E-02
+   .536615373310E-02   .553799662213E-02   .571515884885E-02   .589778607469E-02   .608602590282E-02
+   .628002765238E-02   .647994209485E-02   .668592114830E-02   .689811752438E-02   .711668432243E-02
+   .734177456465E-02   .757354066520E-02   .781213382564E-02   .805770334804E-02   .831039585610E-02
+   .857035441362E-02   .883771752832E-02   .911261802757E-02   .939518179119E-02   .968552632449E-02
+   .998375915303E-02   .102899760181E-01   .106042588496E-01   .109266734901E-01   .112572671412E-01
+   .115960654985E-01   .119430695398E-01   .122982519240E-01   .126615529556E-01   .130328760625E-01
+   .134120827296E-01   .137989868226E-01   .141933482297E-01   .145948657392E-01   .150031690611E-01
+   .154178098909E-01   .158382518989E-01   .162638595185E-01   .166938853859E-01   .171274562738E-01
+   .175635573352E-01   .180010144584E-01   .184384745075E-01   .188743831996E-01   .193069603411E-01
+   .197341721149E-01   .201537000800E-01   .205629065081E-01   .209587956454E-01   .213379704514E-01
+   .216965843224E-01   .220302872721E-01   .223341659983E-01   .226026772302E-01   .228295737141E-01
+   .230078221730E-01   .231295125546E-01   .231857578830E-01   .231665840450E-01   .230608088842E-01
+   .228559100556E-01   .225378812130E-01   .220910762784E-01   .214980417913E-01   .207393376687E-01
+   .197933471468E-01   .186360772443E-01   .172409518109E-01   .155786001262E-01   .136166451323E-01
+   .113194967438E-01   .864815731154E-02   .556004826093E-02   .200886919547E-02  -.205549662129E-02
+  -.668701351940E-02  -.119434412162E-01  -.178861753538E-01  -.245799531729E-01  -.320923928314E-01
+  -.404933311070E-01  -.498539208502E-01  -.602454469396E-01  -.717378181025E-01  -.843976923881E-01
+  -.982572463524E-01  -.113431938710E+00  -.129962815882E+00  -.147925476302E+00  -.167397789939E+00
+  -.188460087115E+00  -.211195414457E+00  -.235689872331E+00
+ ae wavefunction
+  -.655609122826E-05  -.676899905707E-05  -.698881876848E-05  -.721577460561E-05  -.745009807708E-05
+  -.769202819182E-05  -.794181170128E-05  -.819970334956E-05  -.846596613143E-05  -.874087155877E-05
+  -.902469993540E-05  -.931774064088E-05  -.962029242330E-05  -.993266370149E-05  -.102551728769E-04
+  -.105881486555E-04  -.109319303798E-04  -.112868683719E-04  -.116533242870E-04  -.120316714784E-04
+  -.124222953746E-04  -.128255938674E-04  -.132419777136E-04  -.136718709483E-04  -.141157113126E-04
+  -.145739506937E-04  -.150470555800E-04  -.155355075299E-04  -.160398036561E-04  -.165604571246E-04
+  -.170979976704E-04  -.176529721286E-04  -.182259449831E-04  -.188174989321E-04  -.194282354715E-04
+  -.200587754973E-04  -.207097599266E-04  -.213818503374E-04  -.220757296304E-04  -.227921027095E-04
+  -.235316971854E-04  -.242952641000E-04  -.250835786742E-04  -.258974410793E-04  -.267376772313E-04
+  -.276051396118E-04  -.285007081127E-04  -.294252909085E-04  -.303798253547E-04  -.313652789153E-04
+  -.323826501176E-04  -.334329695376E-04  -.345173008153E-04  -.356367417016E-04  -.367924251370E-04
+  -.379855203641E-04  -.392172340733E-04  -.404888115843E-04  -.418015380630E-04  -.431567397764E-04
+  -.445557853843E-04  -.460000872716E-04  -.474911029196E-04  -.490303363191E-04  -.506193394267E-04
+  -.522597136637E-04  -.539531114602E-04  -.557012378455E-04  -.575058520856E-04  -.593687693689E-04
+  -.612918625421E-04  -.632770638971E-04  -.653263670098E-04  -.674418286331E-04  -.696255706450E-04
+  -.718797820523E-04  -.742067210534E-04  -.766087171588E-04  -.790881733733E-04  -.816475684398E-04
+  -.842894591464E-04  -.870164826988E-04  -.898313591585E-04  -.927368939490E-04  -.957359804318E-04
+  -.988316025516E-04  -.102026837556E-03  -.105324858785E-03  -.108728938541E-03  -.112242451028E-03
+  -.115868875379E-03  -.119611798746E-03  -.123474919492E-03  -.127462050444E-03  -.131577122245E-03
+  -.135824186777E-03  -.140207420684E-03  -.144731128964E-03  -.149399748666E-03  -.154217852659E-03
+  -.159190153505E-03  -.164321507411E-03  -.169616918274E-03  -.175081541821E-03  -.180720689835E-03
+  -.186539834474E-03  -.192544612684E-03  -.198740830698E-03  -.205134468627E-03  -.211731685146E-03
+  -.218538822262E-03  -.225562410173E-03  -.232809172212E-03  -.240286029877E-03  -.248000107945E-03
+  -.255958739656E-03  -.264169471988E-03  -.272640070992E-03  -.281378527207E-03  -.290393061126E-03
+  -.299692128739E-03  -.309284427116E-03  -.319178900041E-03  -.329384743692E-03  -.339911412345E-03
+  -.350768624109E-03  -.361966366669E-03  -.373514903040E-03  -.385424777308E-03  -.397706820349E-03
+  -.410372155518E-03  -.423432204288E-03  -.436898691816E-03  -.450783652438E-03  -.465099435041E-03
+  -.479858708330E-03  -.495074465933E-03  -.510760031337E-03  -.526929062624E-03  -.543595556979E-03
+  -.560773854929E-03  -.578478644299E-03  -.596724963824E-03  -.615528206394E-03  -.634904121890E-03
+  -.654868819544E-03  -.675438769809E-03  -.696630805649E-03  -.718462123219E-03  -.740950281862E-03
+  -.764113203357E-03  -.787969170353E-03  -.812536823912E-03  -.837835160080E-03  -.863883525392E-03
+  -.890701611245E-03  -.918309447002E-03  -.946727391760E-03  -.975976124644E-03  -.100607663352E-02
+  -.103705020200E-02  -.106891839458E-02  -.110170303984E-02  -.113542621144E-02  -.117011020683E-02
+  -.120577752349E-02  -.124245083250E-02  -.128015294925E-02  -.131890680108E-02  -.135873539162E-02
+  -.139966176162E-02  -.144170894603E-02  -.148489992701E-02  -.152925758270E-02  -.157480463127E-02
+  -.162156357022E-02  -.166955661033E-02  -.171880560409E-02  -.176933196815E-02  -.182115659954E-02
+  -.187429978504E-02  -.192878110354E-02  -.198461932073E-02  -.204183227580E-02  -.210043675960E-02
+  -.216044838374E-02  -.222188144014E-02  -.228474875047E-02  -.234906150491E-02  -.241482908954E-02
+  -.248205890193E-02  -.255075615403E-02  -.262092366194E-02  -.269256162168E-02  -.276566737035E-02
+  -.284023513193E-02  -.291625574691E-02  -.299371638508E-02  -.307260024061E-02  -.315288620865E-02
+  -.323454854268E-02  -.331755649172E-02  -.340187391669E-02  -.348745888500E-02  -.357426324264E-02
+  -.366223216298E-02  -.375130367145E-02  -.384140814546E-02  -.393246778878E-02  -.402439607977E-02
+  -.411709719292E-02  -.421046539309E-02  -.430438440215E-02  -.439872673758E-02  -.449335302300E-02
+  -.458811127043E-02  -.468283613456E-02  -.477734813917E-02  -.487145287652E-02  -.496494018016E-02
+  -.505758327255E-02  -.514913788875E-02  -.523934137790E-02  -.532791178486E-02  -.541454691445E-02
+  -.549892338155E-02  -.558069565077E-02  -.565949507000E-02  -.573492890299E-02  -.580657936668E-02
+  -.587400268005E-02  -.593672813220E-02  -.599425717818E-02  -.604606257264E-02  -.609158755219E-02
+  -.613024507917E-02  -.616141716066E-02  -.618445425853E-02  -.619867480789E-02  -.620336486339E-02
+  -.619777789497E-02  -.618113475679E-02  -.615262385580E-02  -.611140154893E-02  -.605659280069E-02
+  -.598729213647E-02  -.590256492957E-02  -.580144906401E-02  -.568295701860E-02  -.554607842196E-02
+  -.538978313216E-02  -.521302489904E-02  -.501474567204E-02  -.479388062066E-02  -.454936393997E-02
+  -.428013551813E-02  -.398514854792E-02  -.366337816942E-02  -.331383123541E-02  -.293555729625E-02
+  -.252766090487E-02  -.208931534729E-02  -.161977790723E-02  -.111840677698E-02  -.584679729454E-03
+  -.182146683025E-04   .581207825300E-03   .121361982960E-02   .187883918292E-02   .257644022787E-02
+   .330572207936E-02   .406567429712E-02   .485493984432E-02   .567177521530E-02   .651400761775E-02
+   .737898909896E-02   .826354751388E-02   .916393424625E-02   .100757686173E-01   .109939789522E-01
+   .119127403294E-01   .128254091164E-01   .137244545094E-01   .146013874512E-01   .154466875247E-01
+   .162497287251E-01   .169987054222E-01   .176805603012E-01   .182809164509E-01   .187840155702E-01
+   .191726625170E-01   .194281718035E-01   .195303036636E-01   .194571691115E-01   .191850840508E-01
+   .186883725185E-01   .179391559182E-01   .169071927011E-01   .155598196063E-01   .138619906720E-01
+   .117763573181E-01   .926332827185E-02   .628108658620E-02   .278557796959E-02  -.126950532033E-02
+  -.593272908570E-02  -.112549051725E-01  -.172890643319E-01  -.240904181795E-01  -.317163150650E-01
+  -.402261943607E-01  -.496815431480E-01  -.601458588641E-01  -.716846213574E-01  -.843652780355E-01
+  -.982572463524E-01  -.113431938710E+00  -.129962815882E+00  -.147925476302E+00  -.167397789939E+00
+  -.188460087115E+00  -.211195414457E+00  -.235689872331E+00
+ pseudo wavefunction
+   .563540859347E-08   .600786626449E-08   .640494055630E-08   .682825844040E-08   .727955441873E-08
+   .776067763064E-08   .827359942951E-08   .882042146020E-08   .940338427033E-08   .100248764907E-07
+   .106874446223E-07   .113938034707E-07   .121468472693E-07   .129496615384E-07   .138055357278E-07
+   .147179766947E-07   .156907230730E-07   .167277605920E-07   .178333384073E-07   .190119865113E-07
+   .202685342946E-07   .216081303335E-07   .230362634864E-07   .245587853833E-07   .261819344024E-07
+   .279123612313E-07   .297571561175E-07   .317238779199E-07   .338205850803E-07   .360558686425E-07
+   .384388874527E-07   .409794056871E-07   .436878328599E-07   .465752664748E-07   .496535374959E-07
+   .529352588242E-07   .564338769774E-07   .601637271855E-07   .641400921283E-07   .683792645541E-07
+   .728986140379E-07   .777166581514E-07   .828531383365E-07   .883291007943E-07   .941669827191E-07
+   .100390704233E-06   .107025766396E-06   .114099355693E-06   .121640455429E-06   .129679964484E-06
+   .138250823918E-06   .147388151945E-06   .157129387824E-06   .167514445263E-06   .178585875960E-06
+   .190389043959E-06   .202972311517E-06   .216387237268E-06   .230688787478E-06   .245935561260E-06
+   .262190030684E-06   .279518796742E-06   .297992862244E-06   .317687922738E-06   .338684676672E-06
+   .361069156038E-06   .384933078884E-06   .410374225117E-06   .437496837143E-06   .466412046989E-06
+   .497238331653E-06   .530101998551E-06   .565137703044E-06   .602489000172E-06   .642308932854E-06
+   .684760658963E-06   .730018119842E-06   .778266753009E-06   .829704251961E-06   .884541376196E-06
+   .943002814778E-06   .100532810696E-05   .107177262367E-05   .114260861386E-05   .121812631999E-05
+   .129863516728E-05   .138446503151E-05   .147596759065E-05   .157351776580E-05   .167751525736E-05
+   .178838618277E-05   .190658482240E-05   .203259548094E-05   .216693447172E-05   .231015223223E-05
+   .246283557942E-05   .262561011405E-05   .279914278403E-05   .298414461703E-05   .318137363380E-05
+   .339163795400E-05   .361579910726E-05   .385477556313E-05   .410954649424E-05   .438115578827E-05
+   .467071632493E-05   .497941453575E-05   .530851526509E-05   .565936695252E-05   .603340715757E-05
+   .643216844969E-05   .685728468745E-05   .731049771266E-05   .779366448694E-05   .830876469991E-05
+   .885790888011E-05   .944334704203E-05   .100674779045E-04   .107328587184E-04   .114422157435E-04
+   .121984554180E-04   .130046762663E-04   .138641815928E-04   .147804930159E-04   .157573648950E-04
+   .167987997114E-04   .179090644660E-04   .190927081599E-04   .203545804298E-04   .216998514160E-04
+   .231340329418E-04   .246630010932E-04   .262930202900E-04   .280307689477E-04   .298833668347E-04
+   .318584042369E-04   .339639730489E-04   .362086999200E-04   .386017815894E-04   .411530225552E-04
+   .438728752333E-04   .467724827673E-04   .498637246677E-04   .531592654645E-04   .566726065746E-04
+   .604181415935E-04   .644112152397E-04   .686681861917E-04   .732064940741E-04   .780447308677E-04
+   .832027170341E-04   .887015826677E-04   .945638540041E-04   .100813545640E-03   .107476258843E-03
+   .114579286345E-03   .122151724057E-03   .130224590157E-03   .138830952031E-03   .148006061597E-03
+   .157787499549E-03   .168215329124E-03   .179332260004E-03   .191183823034E-03   .203818556458E-03
+   .217288204431E-03   .231647928618E-03   .246956533745E-03   .263276708003E-03   .280675279299E-03
+   .299223488379E-03   .318997279940E-03   .340077612913E-03   .362550791159E-03   .386508815934E-03
+   .412049761538E-03   .439278175667E-03   .468305506086E-03   .499250555342E-03   .532239965345E-03
+   .567408733777E-03   .604900764394E-03   .644869453427E-03   .687478314448E-03   .732901644181E-03
+   .781325231931E-03   .832947115462E-03   .887978386315E-03   .946644047793E-03   .100918392899E-02
+   .107585365849E-02   .114692570159E-02   .122269046511E-02   .130345747413E-02   .138955662526E-02
+   .148133952139E-02   .157918089300E-02   .168348011159E-02   .179466280119E-02   .191318255387E-02
+   .203952275611E-02   .217419853284E-02   .231775881644E-02   .247078854874E-02   .263391102401E-02
+   .280779038181E-02   .299313425896E-02   .319069661014E-02   .340128070773E-02   .362574233140E-02
+   .386499315908E-02   .412000437119E-02   .439181048093E-02   .468151340366E-02   .499028677951E-02
+   .531938056376E-02   .567012590008E-02   .604394029290E-02   .644233309519E-02   .686691132922E-02
+   .731938585814E-02   .780157792698E-02   .831542609246E-02   .886299356117E-02   .944647595673E-02
+   .100682095365E-01   .107306798791E-01   .114365310642E-01   .121885753659E-01   .129898034814E-01
+   .138433953166E-01   .147527313479E-01   .157214045830E-01   .167532331366E-01   .178522734413E-01
+   .190228341077E-01   .202694904477E-01   .215970996717E-01   .230108167655E-01   .245161110510E-01
+   .261187834253E-01   .278249842710E-01   .296412320197E-01   .315744323432E-01   .336318979367E-01
+   .358213688444E-01   .381510332672E-01   .406295487722E-01   .432660638073E-01   .460702394023E-01
+   .490522709130E-01   .522229096357E-01   .555934840907E-01   .591759207332E-01   .629827638118E-01
+   .670271940485E-01   .713230457611E-01   .758848219909E-01   .807277071372E-01   .858675765219E-01
+   .913210022355E-01   .971052545202E-01   .103238297856E+00   .109738780808E+00   .116626018567E+00
+   .123919967025E+00   .131641187044E+00   .139810797483E+00   .148450415362E+00   .157582081422E+00
+   .167228169129E+00   .177411275073E+00   .188154088481E+00   .199479237473E+00   .211409109499E+00
+   .223965643295E+00   .237170089603E+00   .251042737822E+00   .265602605784E+00   .280867089905E+00
+   .296851573107E+00   .313568988194E+00   .331029334775E+00   .349239148393E+00   .368200921309E+00
+   .387912475432E+00   .408366289161E+00   .429548781600E+00   .451439559571E+00   .474010635347E+00
+   .497225625895E+00   .521038947873E+00   .545395026559E+00   .570227541389E+00   .595458735794E+00
+   .620998824523E+00   .646745537472E+00   .672583845076E+00   .698385916287E+00   .724011365684E+00
+   .749307850846E+00   .774112084099E+00   .798251323299E+00   .821545403372E+00   .843809362604E+00
+   .864856703695E+00   .884503307608E+00   .902571986389E+00   .918897617394E+00   .933332743909E+00
+   .945753454235E+00   .956065262074E+00   .964208605323E+00   .970163460013E+00   .973952434941E+00
+   .975641577861E+00   .975337997314E+00   .973183302052E+00   .969341805567E+00   .963982466511E+00
+   .957253674228E+00   .949250286078E+00   .939967137898E+00
+ ae wavefunction
+   .345880269803E-07   .368147396271E-07   .391630877573E-07   .416408806975E-07   .442563796648E-07
+   .470183275065E-07   .499359803346E-07   .530191411165E-07   .562781953533E-07   .597241489837E-07
+   .633686686638E-07   .672241245792E-07   .713036359587E-07   .756211194698E-07   .801913406860E-07
+   .850299688307E-07   .901536350141E-07   .955799941953E-07   .101327791116E-06   .107416930467E-06
+   .113868551572E-06   .120705107882E-06   .127950451600E-06   .135629923775E-06   .143770450234E-06
+   .152400643718E-06   .161550912651E-06   .171253576971E-06   .181542991487E-06   .192455677263E-06
+   .204030461550E-06   .216308626838E-06   .229334069623E-06   .243153469531E-06   .257816469471E-06
+   .273375867567E-06   .289887821608E-06   .307412066875E-06   .326012148197E-06   .345755667189E-06
+   .366714545666E-06   .388965306283E-06   .412589371555E-06   .437673382450E-06   .464309537843E-06
+   .492595956204E-06   .522637060981E-06   .554543991229E-06   .588435039152E-06   .624436116314E-06
+   .662681250411E-06   .703313114606E-06   .746483591562E-06   .792354374454E-06   .841097607392E-06
+   .892896567826E-06   .947946393699E-06   .100645485829E-05   .106864319584E-05   .113474698138E-05
+   .120501706815E-05   .127972058660E-05   .135914200881E-05   .144358428278E-05   .153337004103E-05
+   .162884288848E-05   .173036877475E-05   .183833745647E-05   .195316405540E-05   .207529071870E-05
+   .220518838808E-05   .234335868479E-05   .249033591827E-05   .264668922633E-05   .281302485559E-05
+   .298998859133E-05   .317826834648E-05   .337859692020E-05   .359175493710E-05   .381857397892E-05
+   .405993992120E-05   .431679648841E-05   .459014904167E-05   .488106861436E-05   .519069621170E-05
+   .552024739158E-05   .587101714484E-05   .624438509476E-05   .664182103620E-05   .706489083686E-05
+   .751526272388E-05   .799471398120E-05   .850513808399E-05   .904855229890E-05   .962710578015E-05
+   .102430881938E-04   .108989389041E-04   .115972567594E-04   .123408105145E-04   .131325499332E-04
+   .139756176126E-04   .148733615779E-04   .158293486960E-04   .168473789614E-04   .179315007108E-04
+   .190860268264E-04   .203155519905E-04   .216249710612E-04   .230194986388E-04   .245046899018E-04
+   .260864627920E-04   .277711216371E-04   .295653823016E-04   .314763989640E-04   .335117926256E-04
+   .356796814598E-04   .379887131204E-04   .404480991341E-04   .430676515087E-04   .458578216993E-04
+   .488297420813E-04   .519952700901E-04   .553670351951E-04   .589584888889E-04   .627839578816E-04
+   .668587007013E-04   .711989679173E-04   .758220662119E-04   .807464265434E-04   .859916766568E-04
+   .915787182129E-04   .975298088258E-04   .103868649313E-03   .110620476484E-03   .117812161806E-03
+   .125472316323E-03   .133631402195E-03   .142321851285E-03   .151578191213E-03   .161437179343E-03
+   .171937945185E-03   .183122141720E-03   .195034106204E-03   .207721031012E-03   .221233145136E-03
+   .235623906972E-03   .250950209091E-03   .267272595685E-03   .284655493464E-03   .303167456795E-03
+   .322881427931E-03   .343875013202E-03   .366230776132E-03   .390036548445E-03   .415385760012E-03
+   .442377788834E-03   .471118332212E-03   .501719800316E-03   .534301733429E-03   .568991244209E-03
+   .605923486367E-03   .645242151254E-03   .687099993885E-03   .731659390044E-03   .779092926154E-03
+   .829584023705E-03   .883327600092E-03   .940530767818E-03   .100141357408E-02   .106620978285E-02
+   .113516770174E-02   .120855105577E-02   .128663991061E-02   .136973164774E-02   .145814199397E-02
+   .155220610817E-02   .165227972784E-02   .175874037846E-02   .187198864842E-02   .199244953274E-02
+   .212057384858E-02   .225683972563E-02   .240175417491E-02   .255585473900E-02   .271971122729E-02
+   .289392753957E-02   .307914358152E-02   .327603727554E-02   .348532667035E-02   .370777215312E-02
+   .394417876724E-02   .419539863956E-02   .446233352010E-02   .474593743783E-02   .504721947541E-02
+   .536724666607E-02   .570714701529E-02   .606811265001E-02   .645140309744E-02   .685834869576E-02
+   .729035413788E-02   .774890214992E-02   .823555730457E-02   .875196996978E-02   .929988039215E-02
+   .988112291363E-02   .104976303197E-01   .111514383156E-01   .118446901277E-01   .125796412233E-01
+   .133586641445E-01   .141842534468E-01   .150590307347E-01   .159857497830E-01   .169673017313E-01
+   .180067203384E-01   .191071872789E-01   .202720374648E-01   .215047643706E-01   .228090253387E-01
+   .241886468392E-01   .256476296546E-01   .271901539582E-01   .288205842499E-01   .305434741118E-01
+   .323635707393E-01   .342858192035E-01   .363153663933E-01   .384575645820E-01   .407179745612E-01
+   .431023682761E-01   .456167308958E-01   .482672622432E-01   .510603775081E-01   .540027071583E-01
+   .571010959597E-01   .603626010131E-01   .637944887051E-01   .674042304707E-01   .711994972565E-01
+   .751881525675E-01   .793782439807E-01   .837779929965E-01   .883957831019E-01   .932401459101E-01
+   .983197452423E-01   .103643359011E+00   .109219858768E+00   .115058186771E+00   .121167330436E+00
+   .127556294036E+00   .134234067512E+00   .141209592272E+00   .148491723865E+00   .156089191418E+00
+   .164010553754E+00   .172264152109E+00   .180858059409E+00   .189800026080E+00   .199097422382E+00
+   .208757177326E+00   .218785714228E+00   .229188883025E+00   .239971889488E+00   .251139221539E+00
+   .262694572877E+00   .274640764188E+00   .286979662183E+00   .299712096784E+00   .312837776678E+00
+   .326355203518E+00   .340261584915E+00   .354552746333E+00   .369223041887E+00   .384265263953E+00
+   .399670551406E+00   .415428296305E+00   .431526048923E+00   .447949421271E+00   .464681989806E+00
+   .481705198910E+00   .498998268148E+00   .516538108581E+00   .534299256830E+00   .552253840873E+00
+   .570371599694E+00   .588619990658E+00   .606964434030E+00   .625368759241E+00   .643795919193E+00
+   .662208997143E+00   .680572398679E+00   .698852865629E+00   .717019633899E+00   .735042944768E+00
+   .752890589331E+00   .770523296286E+00   .787890909173E+00   .804931355401E+00   .821572952966E+00
+   .837738646284E+00   .853350000447E+00   .868329655898E+00   .882602263867E+00   .896094573156E+00
+   .908735288781E+00   .920455036227E+00   .931186536235E+00   .940864977431E+00   .949428530232E+00
+   .956818937764E+00   .962982127564E+00   .967868801554E+00   .971434976111E+00   .973642456203E+00
+   .974459236487E+00   .973859827995E+00   .971825512270E+00   .968344526450E+00   .963412183401E+00
+   .957030931285E+00   .949210356990E+00   .939967137898E+00
+ pseudo wavefunction
+  -.279100332060E-08  -.297546742365E-08  -.317212320158E-08  -.338177643140E-08  -.360528614584E-08
+  -.384356815318E-08  -.409759878966E-08  -.436841891992E-08  -.465713820182E-08  -.496493963318E-08
+  -.529308439896E-08  -.564291703887E-08  -.601587095646E-08  -.641347429233E-08  -.683735618556E-08
+  -.728925344894E-08  -.777101768534E-08  -.828462287450E-08  -.883217346120E-08  -.941591297798E-08
+  -.100382332378E-07  -.107016841344E-07  -.114089840897E-07  -.121630311930E-07  -.129669150751E-07
+  -.138239295678E-07  -.147375862001E-07  -.157116285863E-07  -.167500477652E-07  -.178570985526E-07
+  -.190373169755E-07  -.202955388575E-07  -.216369196333E-07  -.230669554724E-07  -.245915057993E-07
+  -.262168173018E-07  -.279495495259E-07  -.297968021628E-07  -.317661441390E-07  -.338656446294E-07
+  -.361039061195E-07  -.384900996534E-07  -.410340024109E-07  -.437460377687E-07  -.466373180090E-07
+  -.497196898505E-07  -.530057829893E-07  -.565090618476E-07  -.602438807426E-07  -.642255427017E-07
+  -.684703621646E-07  -.729957318304E-07  -.778201939216E-07  -.829635161588E-07  -.884467727567E-07
+  -.942924307731E-07  -.100524442165E-06  -.107168341928E-06  -.114251352723E-06  -.121802496421E-06
+  -.129852713009E-06  -.138434987371E-06  -.147584484433E-06  -.157338693248E-06  -.167737580606E-06
+  -.178823754787E-06  -.190642640146E-06  -.203242663231E-06  -.216675451205E-06  -.230996043379E-06
+  -.246263116728E-06  -.262539226313E-06  -.279891061585E-06  -.298389719639E-06  -.318110996522E-06
+  -.339135697790E-06  -.361549969599E-06  -.385445651673E-06  -.410920653597E-06  -.438079355985E-06
+  -.467033038159E-06  -.497900334092E-06  -.530807718486E-06  -.565890024977E-06  -.603290998579E-06
+  -.643163884653E-06  -.685672056786E-06  -.730989686178E-06  -.779302455259E-06  -.830808318475E-06
+  -.885718313346E-06  -.944257425134E-06  -.100666550865E-05  -.107319827097E-05  -.114412831913E-05
+  -.121974627702E-05  -.130036197611E-05  -.138630572487E-05  -.147792966206E-05  -.157560919949E-05
+  -.167974456009E-05  -.179076241763E-05  -.190911764480E-05  -.203529517683E-05  -.216981199824E-05
+  -.231321926086E-05  -.246610454188E-05  -.262909425103E-05  -.280285619688E-05  -.298810232272E-05
+  -.318559162316E-05  -.339613325358E-05  -.362058984486E-05  -.385988103730E-05  -.411498724795E-05
+  -.438695368687E-05  -.467689463877E-05  -.498599802752E-05  -.531553028225E-05  -.566684152493E-05
+  -.604137110065E-05  -.644065347328E-05  -.686632451062E-05  -.732012818467E-05  -.780392371464E-05
+  -.831969318161E-05  -.886954964637E-05  -.945574580324E-05  -.100806832056E-04  -.107469221007E-04
+  -.114571919139E-04  -.122144024253E-04  -.130216556843E-04  -.138822587115E-04  -.147997370379E-04
+  -.157778491399E-04  -.168206018252E-04  -.179322666362E-04  -.191173973350E-04  -.203808485423E-04
+  -.217277956078E-04  -.231637557902E-04  -.246946108353E-04  -.263266310442E-04  -.280665009288E-04
+  -.299213465589E-04  -.318987647140E-04  -.340068539568E-04  -.362542477552E-04  -.386501497879E-04
+  -.412043715772E-04  -.439273726015E-04  -.468303030501E-04  -.499250493950E-04  -.532242829633E-04
+  -.567415117076E-04  -.604911353844E-04  -.644885043632E-04  -.687499823040E-04  -.732930129577E-04
+  -.781361913574E-04  -.832993396886E-04  -.888035881438E-04  -.946714610865E-04  -.100926968871E-03
+  -.107595705689E-03  -.114704953825E-03  -.122283794757E-03  -.130363227527E-03  -.138976294859E-03
+  -.148158217538E-03  -.157946537565E-03  -.168381270675E-03  -.179505068800E-03  -.191363393143E-03
+  -.204004698523E-03  -.217480629723E-03  -.231846230618E-03  -.247160166882E-03  -.263484963153E-03
+  -.280887255575E-03  -.299438060680E-03  -.319213061663E-03  -.340292913127E-03  -.362763565471E-03
+  -.386716610145E-03  -.412249647075E-03  -.439466675641E-03  -.468478510647E-03  -.499403224845E-03
+  -.532366619614E-03  -.567502725527E-03  -.604954334604E-03  -.644873566158E-03  -.687422468234E-03
+  -.732773656763E-03  -.781110994622E-03  -.832630312942E-03  -.887540177094E-03  -.946062699880E-03
+  -.100843440462E-02  -.107490714085E-02  -.114574905561E-02  -.122124562321E-02  -.130170073660E-02
+  -.138743786363E-02  -.147880127134E-02  -.157615732184E-02  -.167989584301E-02  -.179043157778E-02
+  -.190820571524E-02  -.203368750745E-02  -.216737597522E-02  -.230980170646E-02  -.246152875055E-02
+  -.262315661189E-02  -.279532234574E-02  -.297870275910E-02  -.317401671921E-02  -.338202757143E-02
+  -.360354566834E-02  -.383943101045E-02  -.409059599886E-02  -.435800829868E-02  -.464269381116E-02
+  -.494573975085E-02  -.526829782285E-02  -.561158749277E-02  -.597689934018E-02  -.636559848360E-02
+  -.677912806178E-02  -.721901275286E-02  -.768686230858E-02  -.818437507615E-02  -.871334147500E-02
+  -.927564738919E-02  -.987327742939E-02  -.105083180100E-01  -.111829601782E-01  -.118995021197E-01
+  -.126603512567E-01  -.134680258372E-01  -.143251559008E-01  -.152344834894E-01  -.161988619506E-01
+  -.172212541600E-01  -.183047294655E-01  -.194524591272E-01  -.206677099968E-01  -.219538361483E-01
+  -.233142681308E-01  -.247524994748E-01  -.262720700375E-01  -.278765457220E-01  -.295694940484E-01
+  -.313544549982E-01  -.332349064866E-01  -.352142237462E-01  -.372956318335E-01  -.394821503891E-01
+  -.417765296978E-01  -.441811770102E-01  -.466980719964E-01  -.493286701138E-01  -.520737925813E-01
+  -.549335015674E-01  -.579069591200E-01  -.609922683005E-01  -.641862949312E-01  -.674844683360E-01
+  -.708805594534E-01  -.743664347429E-01  -.779317843870E-01  -.815638234472E-01  -.852469648520E-01
+  -.889624634163E-01  -.926880305187E-01  -.963974196265E-01  -.100059983574E+00  -.103640205399E+00
+  -.107097205642E+00  -.110384230348E+00  -.113448125613E+00  -.116228806356E+00  -.118658729208E+00
+  -.120662381827E+00  -.122155803741E+00  -.123046156855E+00  -.123231367001E+00  -.122599861329E+00
+  -.121030429774E+00  -.118392242085E+00  -.114545054827E+00  -.109339644965E+00  -.102618507758E+00
+  -.942168562765E-01  -.839639573143E-01  -.716848331267E-01  -.572023496269E-01  -.403396986013E-01
+  -.209232634852E-01   .121416534536E-02   .262298892774E-01   .542676129321E-01   .854537073972E-01
+   .119893607610E+00   .157668569643E+00   .198833051986E+00   .243413010949E+00   .291405404078E+00
+   .342779164013E+00   .397477822421E+00   .455423810756E+00   .516524221269E+00   .580677457773E+00
+   .647779725320E+00   .717729694069E+00   .790428935263E+00   .865774902453E+00   .943642393869E+00
+   .102384870860E+01   .110609729177E+01   .118988811168E+01
+ ae wavefunction
+  -.116542067594E-07  -.124044977761E-07  -.131957736016E-07  -.140306656112E-07  -.149119574462E-07
+  -.158425950344E-07  -.168256972502E-07  -.178645672328E-07  -.189627044082E-07  -.201238172617E-07
+  -.213518369099E-07  -.226509315269E-07  -.240255216803E-07  -.254802966387E-07  -.270202317135E-07
+  -.286506067059E-07  -.303770255296E-07  -.322054370900E-07  -.341421575006E-07  -.361938937267E-07
+  -.383677687500E-07  -.406713483551E-07  -.431126696449E-07  -.457002713986E-07  -.484432263953E-07
+  -.513511758310E-07  -.544343659691E-07  -.577036871700E-07  -.611707154577E-07  -.648477567899E-07
+  -.687478942106E-07  -.728850380733E-07  -.772739795394E-07  -.819304475651E-07  -.868711696074E-07
+  -.921139362941E-07  -.976776703179E-07  -.103582499833E-06  -.109849836650E-06  -.116502459544E-06
+  -.123564603011E-06  -.131062051839E-06  -.139022241858E-06  -.147474367297E-06  -.156449495165E-06
+  -.165980687121E-06  -.176103129339E-06  -.186854270866E-06  -.198273971060E-06  -.210404656679E-06
+  -.223291489277E-06  -.236982543566E-06  -.251528997468E-06  -.266985334637E-06  -.283409560247E-06
+  -.300863430940E-06  -.319412699843E-06  -.339127377657E-06  -.360082010861E-06  -.382355978163E-06
+  -.406033806394E-06  -.431205507107E-06  -.457966935252E-06  -.486420171376E-06  -.516673928875E-06
+  -.548843987947E-06  -.583053658010E-06  -.619434270419E-06  -.658125703492E-06  -.699276941957E-06
+  -.743046673053E-06  -.789603921719E-06  -.839128727392E-06  -.891812865166E-06  -.947860614192E-06
+  -.100748957643E-05  -.107093154901E-05  -.113843345377E-05  -.121025832760E-05  -.128668637772E-05
+  -.136801610591E-05  -.145456550650E-05  -.154667334260E-05  -.164470050592E-05  -.174903146549E-05
+  -.186007581124E-05  -.197826989835E-05  -.210407859921E-05  -.223799716990E-05  -.238055323851E-05
+  -.253230892350E-05  -.269386309025E-05  -.286585375507E-05  -.304896064599E-05  -.324390793075E-05
+  -.345146712267E-05  -.367246017595E-05  -.390776278282E-05  -.415830788548E-05  -.442508941676E-05
+  -.470916628434E-05  -.501166661428E-05  -.533379227057E-05  -.567682366857E-05  -.604212490128E-05
+  -.643114919862E-05  -.684544474122E-05  -.728666085140E-05  -.775655458580E-05  -.825699775532E-05
+  -.878998439987E-05  -.935763874710E-05  -.996222368613E-05  -.106061497892E-04  -.112919849164E-04
+  -.120224644406E-04  -.128005021321E-04  -.136292017456E-04  -.145118693528E-04  -.154520264704E-04
+  -.164534240312E-04  -.175200572543E-04  -.186561814691E-04  -.198663289557E-04  -.211553268635E-04
+  -.225283162782E-04  -.239907725076E-04  -.255485266641E-04  -.272077886245E-04  -.289751714536E-04
+  -.308577173829E-04  -.328629254418E-04  -.349987808435E-04  -.372737862353E-04  -.396969949279E-04
+  -.422780462274E-04  -.450272029982E-04  -.479553915954E-04  -.510742443111E-04  -.543961444887E-04
+  -.579342744694E-04  -.617026665405E-04  -.657162570707E-04  -.699909440230E-04  -.745436480496E-04
+  -.793923773845E-04  -.845562967609E-04  -.900558005919E-04  -.959125906717E-04  -.102149758660E-03
+  -.108791873636E-03  -.115865075016E-03  -.123397171149E-03  -.131417743923E-03  -.139958259726E-03
+  -.149052187125E-03  -.158735121661E-03  -.169044918139E-03  -.180021830872E-03  -.191708662286E-03
+  -.204150920391E-03  -.217396985582E-03  -.231498287289E-03  -.246509491031E-03  -.262488696406E-03
+  -.279497646635E-03  -.297601950258E-03  -.316871315613E-03  -.337379798797E-03  -.359206065760E-03
+  -.382433669297E-03  -.407151341649E-03  -.433453303517E-03  -.461439590281E-03  -.491216396253E-03
+  -.522896437828E-03  -.556599336408E-03  -.592452022021E-03  -.630589158538E-03  -.671153591471E-03
+  -.714296819297E-03  -.760179489312E-03  -.808971919000E-03  -.860854643940E-03  -.916018993258E-03
+  -.974667693643E-03  -.103701550293E-02  -.110328987428E-02  -.117373165185E-02  -.124859579904E-02
+  -.132815216011E-02  -.141268625609E-02  -.150250011577E-02  -.159791314254E-02  -.169926301765E-02
+  -.180690664054E-02  -.192122110648E-02  -.204260472202E-02  -.217147805810E-02  -.230828504096E-02
+  -.245349408034E-02  -.260759923450E-02  -.277112141118E-02  -.294460960335E-02  -.312864215812E-02
+  -.332382807689E-02  -.353080834438E-02  -.375025728348E-02  -.398288393254E-02  -.422943344082E-02
+  -.449068847740E-02  -.476747064777E-02  -.506064191174E-02  -.537110599514E-02  -.569980978681E-02
+  -.604774471137E-02  -.641594806671E-02  -.680550431407E-02  -.721754630679E-02  -.765325644248E-02
+  -.811386772120E-02  -.860066469065E-02  -.911498425698E-02  -.965821633760E-02  -.102318043300E-01
+  -.108372453676E-01  -.114760903311E-01  -.121499435805E-01  -.128604623686E-01  -.136093558956E-01
+  -.143983839573E-01  -.152293551373E-01  -.161041244889E-01  -.170245906457E-01  -.179926922974E-01
+  -.190104039593E-01  -.200797309592E-01  -.212027035591E-01  -.223813701213E-01  -.236177892228E-01
+  -.249140206129E-01  -.262721149025E-01  -.276941018621E-01  -.291819772014E-01  -.307376876894E-01
+  -.323631144669E-01  -.340600543932E-01  -.358301992573E-01  -.376751126749E-01  -.395962044805E-01
+  -.415947024138E-01  -.436716208885E-01  -.458277266219E-01  -.480635008913E-01  -.503790981760E-01
+  -.527743009314E-01  -.552484702362E-01  -.578004920430E-01  -.604287187595E-01  -.631309058800E-01
+  -.659041433832E-01  -.687447816140E-01  -.716483513616E-01  -.746094778523E-01  -.776217883748E-01
+  -.806778132642E-01  -.837688799724E-01  -.868849999614E-01  -.900147481647E-01  -.931451347659E-01
+  -.962614690568E-01  -.993472151489E-01  -.102383839329E+00  -.105350648884E+00  -.108224622255E+00
+  -.110980230477E+00  -.113589249961E+00  -.116020566855E+00  -.118239973483E+00  -.120209957715E+00
+  -.121889486565E+00  -.123233785983E+00  -.124194119546E+00  -.124717569791E+00  -.124746827215E+00
+  -.124219993528E+00  -.123070407576E+00  -.121226503932E+00  -.118611714138E+00  -.115144416120E+00
+  -.110737923637E+00  -.105300480905E+00  -.987351922876E-01  -.909397990956E-01  -.818062623135E-01
+  -.712202497639E-01  -.590607954837E-01  -.452004418151E-01  -.295059878331E-01  -.118396629322E-01
+   .793961119861E-02   .299750801289E-01   .544111019193E-01   .813920105918E-01   .111060751685E+00
+   .143557217466E+00   .179016260798E+00   .217565385042E+00   .259322106952E+00   .304390982216E+00
+   .352860275065E+00   .404798246896E+00   .460249035383E+00   .519228095764E+00   .581717179741E+00
+   .647658834662E+00   .716950416187E+00   .789437621611E+00   .864907568857E+00   .943081468528E+00
+   .102360696409E+01   .110605024916E+01   .118988811168E+01
+ End of Dataset
+ PAW_PBE O 08Apr2002
+ 6.00000000000000000
+ parameters from PSCTR are:
+   VRHFIN =O: s2p4
+   LEXCH  = PE
+   EATOM  =   432.3788 eV,   31.7789 Ry
+
+   TITEL  = PAW_PBE O 08Apr2002
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        0    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =     .000    partial core radius
+   POMASS =   16.000; ZVAL   =    6.000    mass and valenz
+   RCORE  =    1.520    outmost cutoff radius
+   RWIGS  =    1.550; RWIGS  =     .820    wigner-seitz radius (au A)
+   ENMAX  =  400.000; ENMIN  =  300.000 eV
+   ICORE  =        2    local potential
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  605.392
+   DEXC   =     .000
+   RMAX   =    2.264    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    1.550    radius for radial grids
+   QCUT   =   -5.520; QGAM   =   11.041    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     0   .000     23  1.200
+     0  -.700     23  1.200
+     1   .000     23  1.520
+     1   .600     23  1.520
+     2   .000      7  1.500
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  163.      160.      159.      156.      154.      151.      148.      146.
+  142.      139.      137.      134.      130.      126.      123.      119.
+  115.      111.      108.      102.      98.8      95.2      90.0      86.6
+  83.2      78.3      73.5      70.4      65.9      61.6      57.4      53.4
+  49.6      46.0      42.6      39.3      35.3      32.4      28.9      26.4
+  23.4      20.6      18.1      15.8      13.7      11.9      10.3      8.47
+  7.22      5.87      4.73      3.95      3.13      2.45      1.80      1.37
+  1.03      .721      .493      .329      .215      .138      .882E-01  .534E-01
+  .367E-01  .267E-01  .223E-01  .205E-01  .193E-01  .181E-01  .162E-01  .138E-01
+  .112E-01  .878E-02  .646E-02  .490E-02  .370E-02  .300E-02  .259E-02  .238E-02
+  .219E-02  .196E-02  .167E-02  .132E-02  .100E-02  .764E-03  .617E-03  .544E-03
+  .522E-03  .507E-03  .467E-03  .403E-03  .312E-03  .236E-03  .181E-03  .157E-03
+  .152E-03  .150E-03  .139E-03  .118E-03
+END of PSCTR-controll parameters
+ local part
+ 122.832189257630020
+   .23155445E+02   .23152693E+02   .23149261E+02   .23143544E+02   .23135541E+02
+   .23125253E+02   .23112681E+02   .23097823E+02   .23080677E+02   .23061237E+02
+   .23039495E+02   .23015440E+02   .22989059E+02   .22960335E+02   .22929249E+02
+   .22895777E+02   .22859896E+02   .22821578E+02   .22780793E+02   .22737509E+02
+   .22691690E+02   .22643299E+02   .22592293E+02   .22538630E+02   .22482260E+02
+   .22423132E+02   .22361190E+02   .22296376E+02   .22228625E+02   .22157873E+02
+   .22084048E+02   .22007079E+02   .21926890E+02   .21843403E+02   .21756538E+02
+   .21666211E+02   .21572340E+02   .21474838E+02   .21373619E+02   .21268597E+02
+   .21159684E+02   .21046794E+02   .20929842E+02   .20808743E+02   .20683417E+02
+   .20553785E+02   .20419772E+02   .20281308E+02   .20138327E+02   .19990769E+02
+   .19838580E+02   .19681713E+02   .19520129E+02   .19353797E+02   .19182693E+02
+   .19006804E+02   .18826128E+02   .18640671E+02   .18450451E+02   .18255500E+02
+   .18055858E+02   .17851580E+02   .17642733E+02   .17429396E+02   .17211664E+02
+   .16989641E+02   .16763448E+02   .16533218E+02   .16299098E+02   .16061247E+02
+   .15819840E+02   .15575061E+02   .15327109E+02   .15076196E+02   .14822544E+02
+   .14566388E+02   .14307973E+02   .14047552E+02   .13785392E+02   .13521763E+02
+   .13256948E+02   .12991234E+02   .12724915E+02   .12458289E+02   .12191659E+02
+   .11925331E+02   .11659614E+02   .11394816E+02   .11131245E+02   .10869211E+02
+   .10609017E+02   .10350966E+02   .10095354E+02   .98424727E+01   .95926072E+01
+   .93460340E+01   .91030212E+01   .88638270E+01   .86286987E+01   .83978722E+01
+   .81715707E+01   .79500043E+01   .77333688E+01   .75218455E+01   .73156002E+01
+   .71147829E+01   .69195273E+01   .67299503E+01   .65461519E+01   .63682145E+01
+   .61962037E+01   .60301671E+01   .58701350E+01   .57161205E+01   .55681193E+01
+   .54261103E+01   .52900556E+01   .51599012E+01   .50355773E+01   .49169989E+01
+   .48040663E+01   .46966659E+01   .45946711E+01   .44979426E+01   .44063297E+01
+   .43196709E+01   .42377948E+01   .41605214E+01   .40876627E+01   .40190236E+01
+   .39544034E+01   .38935965E+01   .38363932E+01   .37825814E+01   .37319469E+01
+   .36842749E+01   .36393508E+01   .35969612E+01   .35568949E+01   .35189437E+01
+   .34829034E+01   .34485744E+01   .34157630E+01   .33842813E+01   .33539488E+01
+   .33245924E+01   .32960472E+01   .32681572E+01   .32407752E+01   .32137639E+01
+   .31869956E+01   .31603530E+01   .31337289E+01   .31070267E+01   .30801603E+01
+   .30530540E+01   .30256429E+01   .29978721E+01   .29696971E+01   .29410832E+01
+   .29120056E+01   .28824486E+01   .28524057E+01   .28218788E+01   .27908779E+01
+   .27594206E+01   .27275318E+01   .26952425E+01   .26625901E+01   .26296170E+01
+   .25963704E+01   .25629018E+01   .25292661E+01   .24955211E+01   .24617268E+01
+   .24279449E+01   .23942383E+01   .23606701E+01   .23273035E+01   .22942010E+01
+   .22614239E+01   .22290318E+01   .21970823E+01   .21656302E+01   .21347276E+01
+   .21044231E+01   .20747616E+01   .20457843E+01   .20175281E+01   .19900255E+01
+   .19633044E+01   .19373883E+01   .19122957E+01   .18880405E+01   .18646316E+01
+   .18420733E+01   .18203652E+01   .17995024E+01   .17794755E+01   .17602707E+01
+   .17418705E+01   .17242532E+01   .17073938E+01   .16912639E+01   .16758320E+01
+   .16610641E+01   .16469237E+01   .16333722E+01   .16203693E+01   .16078735E+01
+   .15958421E+01   .15842318E+01   .15729988E+01   .15620996E+01   .15514907E+01
+   .15411295E+01   .15309742E+01   .15209843E+01   .15111206E+01   .15013460E+01
+   .14916249E+01   .14819243E+01   .14722133E+01   .14624637E+01   .14526498E+01
+   .14427487E+01   .14327405E+01   .14226081E+01   .14123373E+01   .14019171E+01
+   .13913392E+01   .13805984E+01   .13696923E+01   .13586213E+01   .13473883E+01
+   .13359990E+01   .13244615E+01   .13127860E+01   .13009850E+01   .12890728E+01
+   .12770654E+01   .12649804E+01   .12528367E+01   .12406544E+01   .12284542E+01
+   .12162578E+01   .12040872E+01   .11919646E+01   .11799123E+01   .11679522E+01
+   .11561062E+01   .11443952E+01   .11328397E+01   .11214589E+01   .11102712E+01
+   .10992936E+01   .10885419E+01   .10780303E+01   .10677713E+01   .10577759E+01
+   .10480534E+01   .10386110E+01   .10294545E+01   .10205875E+01   .10120120E+01
+   .10037281E+01   .99573405E+00   .98802637E+00   .98059993E+00   .97344797E+00
+   .96656217E+00   .95993281E+00   .95354881E+00   .94739790E+00   .94146671E+00
+   .93574091E+00   .93020536E+00   .92484425E+00   .91964123E+00   .91457956E+00
+   .90964227E+00   .90481229E+00   .90007260E+00   .89540637E+00   .89079709E+00
+   .88622870E+00   .88168571E+00   .87715333E+00   .87261756E+00   .86806530E+00
+   .86348444E+00   .85886393E+00   .85419386E+00   .84946550E+00   .84467136E+00
+   .83980521E+00   .83486211E+00   .82983841E+00   .82473177E+00   .81954111E+00
+   .81426662E+00   .80890973E+00   .80347303E+00   .79796024E+00   .79237615E+00
+   .78672657E+00   .78101820E+00   .77525858E+00   .76945600E+00   .76361942E+00
+   .75775831E+00   .75188262E+00   .74600265E+00   .74012893E+00   .73427215E+00
+   .72844301E+00   .72265218E+00   .71691014E+00   .71122715E+00   .70561310E+00
+   .70007743E+00   .69462911E+00   .68927647E+00   .68402723E+00   .67888835E+00
+   .67386605E+00   .66896570E+00   .66419185E+00   .65954814E+00   .65503733E+00
+   .65066125E+00   .64642082E+00   .64231605E+00   .63834605E+00   .63450904E+00
+   .63080240E+00   .62722268E+00   .62376568E+00   .62042644E+00   .61719934E+00
+   .61407817E+00   .61105614E+00   .60812599E+00   .60528004E+00   .60251030E+00
+   .59980849E+00   .59716614E+00   .59457468E+00   .59202550E+00   .58951003E+00
+   .58701980E+00   .58454654E+00   .58208221E+00   .57961910E+00   .57714987E+00
+   .57466763E+00   .57216594E+00   .56963895E+00   .56708132E+00   .56448837E+00
+   .56185603E+00   .55918091E+00   .55646027E+00   .55369208E+00   .55087499E+00
+   .54800835E+00   .54509219E+00   .54212720E+00   .53911474E+00   .53605675E+00
+   .53295582E+00   .52981506E+00   .52663812E+00   .52342909E+00   .52019253E+00
+   .51693334E+00   .51365677E+00   .51036832E+00   .50707371E+00   .50377881E+00
+   .50048961E+00   .49721211E+00   .49395232E+00   .49071615E+00   .48750942E+00
+   .48433774E+00   .48120651E+00   .47812083E+00   .47508551E+00   .47210497E+00
+   .46918326E+00   .46632398E+00   .46353029E+00   .46080485E+00   .45814984E+00
+   .45556693E+00   .45305727E+00   .45062147E+00   .44825964E+00   .44597137E+00
+   .44375571E+00   .44161126E+00   .43953613E+00   .43752797E+00   .43558402E+00
+   .43370110E+00   .43187571E+00   .43010401E+00   .42838185E+00   .42670486E+00
+   .42506848E+00   .42346796E+00   .42189845E+00   .42035503E+00   .41883273E+00
+   .41732664E+00   .41583186E+00   .41434364E+00   .41285733E+00   .41136849E+00
+   .40987289E+00   .40836657E+00   .40684582E+00   .40530728E+00   .40374789E+00
+   .40216498E+00   .40055624E+00   .39891975E+00   .39725399E+00   .39555786E+00
+   .39383066E+00   .39207210E+00   .39028230E+00   .38846177E+00   .38661143E+00
+   .38473254E+00   .38282674E+00   .38089598E+00   .37894254E+00   .37696897E+00
+   .37497807E+00   .37297287E+00   .37095659E+00   .36893261E+00   .36690442E+00
+   .36487563E+00   .36284989E+00   .36083085E+00   .35882219E+00   .35682749E+00
+   .35485030E+00   .35289401E+00   .35096191E+00   .34905706E+00   .34718238E+00
+   .34534052E+00   .34353392E+00   .34176471E+00   .34003479E+00   .33834572E+00
+   .33669879E+00   .33509493E+00   .33353480E+00   .33201871E+00   .33054663E+00
+   .32911826E+00   .32773295E+00   .32638975E+00   .32508743E+00   .32382450E+00
+   .32259918E+00   .32140947E+00   .32025315E+00   .31912781E+00   .31803085E+00
+   .31695955E+00   .31591105E+00   .31488241E+00   .31387062E+00   .31287264E+00
+   .31188540E+00   .31090587E+00   .30993106E+00   .30895805E+00   .30798401E+00
+   .30700625E+00   .30602221E+00   .30502951E+00   .30402592E+00   .30300946E+00
+   .30197832E+00   .30093095E+00   .29986602E+00   .29878246E+00   .29767946E+00
+   .29655644E+00   .29541311E+00   .29424942E+00   .29306559E+00   .29186206E+00
+   .29063955E+00   .28939897E+00   .28814149E+00   .28686844E+00   .28558136E+00
+   .28428197E+00   .28297213E+00   .28165382E+00   .28032916E+00   .27900034E+00
+   .27766963E+00   .27633933E+00   .27501179E+00   .27368934E+00   .27237430E+00
+   .27106894E+00   .26977549E+00   .26849606E+00   .26723268E+00   .26598726E+00
+   .26476157E+00   .26355722E+00   .26237566E+00   .26121818E+00   .26008586E+00
+   .25897959E+00   .25790008E+00   .25684781E+00   .25582306E+00   .25482591E+00
+   .25385623E+00   .25291367E+00   .25199772E+00   .25110764E+00   .25024254E+00
+   .24940133E+00   .24858278E+00   .24778552E+00   .24700803E+00   .24624869E+00
+   .24550578E+00   .24477747E+00   .24406190E+00   .24335715E+00   .24266125E+00
+   .24197226E+00   .24128820E+00   .24060715E+00   .23992721E+00   .23924657E+00
+   .23856345E+00   .23787620E+00   .23718326E+00   .23648318E+00   .23577464E+00
+   .23505648E+00   .23432765E+00   .23358730E+00   .23283470E+00   .23206930E+00
+   .23129074E+00   .23049880E+00   .22969344E+00   .22887479E+00   .22804315E+00
+   .22719895E+00   .22634282E+00   .22547549E+00   .22459785E+00   .22371090E+00
+   .22281576E+00   .22191365E+00   .22100589E+00   .22009385E+00   .21917899E+00
+   .21826279E+00   .21734679E+00   .21643251E+00   .21552151E+00   .21461531E+00
+   .21371541E+00   .21282327E+00   .21194030E+00   .21106783E+00   .21020712E+00
+   .20935932E+00   .20852550E+00   .20770662E+00   .20690351E+00   .20611688E+00
+   .20534731E+00   .20459524E+00   .20386099E+00   .20314472E+00   .20244647E+00
+   .20176612E+00   .20110343E+00   .20045804E+00   .19982942E+00   .19921696E+00
+   .19861993E+00   .19803748E+00   .19746867E+00   .19691247E+00   .19636779E+00
+   .19583345E+00   .19530823E+00   .19479088E+00   .19428008E+00   .19377454E+00
+   .19327293E+00   .19277395E+00   .19227630E+00   .19177873E+00   .19128003E+00
+   .19077902E+00   .19027463E+00   .18976581E+00   .18925164E+00   .18873125E+00
+   .18820390E+00   .18766893E+00   .18712580E+00   .18657407E+00   .18601343E+00
+   .18544366E+00   .18486468E+00   .18427653E+00   .18367934E+00   .18307336E+00
+   .18245897E+00   .18183663E+00   .18120690E+00   .18057043E+00   .17992795E+00
+   .17928028E+00   .17862829E+00   .17797292E+00   .17731514E+00   .17665599E+00
+   .17599649E+00   .17533773E+00   .17468077E+00   .17402668E+00   .17337651E+00
+   .17273128E+00   .17209201E+00   .17145962E+00   .17083504E+00   .17021908E+00
+   .16961253E+00   .16901607E+00   .16843034E+00   .16785584E+00   .16729304E+00
+   .16674226E+00   .16620377E+00   .16567772E+00   .16516416E+00   .16466305E+00
+   .16417424E+00   .16369750E+00   .16323250E+00   .16277882E+00   .16233597E+00
+   .16190338E+00   .16148038E+00   .16106628E+00   .16066029E+00   .16026161E+00
+   .15986936E+00   .15948266E+00   .15910059E+00   .15872220E+00   .15834656E+00
+   .15797274E+00   .15759979E+00   .15722681E+00   .15685292E+00   .15647729E+00
+   .15609910E+00   .15571761E+00   .15533214E+00   .15494205E+00   .15454679E+00
+   .15414587E+00   .15373889E+00   .15332551E+00   .15290550E+00   .15247869E+00
+   .15204501E+00   .15160447E+00   .15115717E+00   .15070328E+00   .15024306E+00
+   .14977685E+00   .14930505E+00   .14882814E+00   .14834665E+00   .14786118E+00
+   .14737238E+00   .14688092E+00   .14638754E+00   .14589300E+00   .14539806E+00
+   .14490354E+00   .14441021E+00   .14391889E+00   .14343036E+00   .14294540E+00
+   .14246476E+00   .14198915E+00   .14151925E+00   .14105571E+00   .14059910E+00
+   .14014996E+00   .13970877E+00   .13927593E+00   .13885178E+00   .13843659E+00
+   .13803056E+00   .13763383E+00   .13724643E+00   .13686835E+00   .13649948E+00
+   .13613966E+00   .13578864E+00   .13544611E+00   .13511171E+00   .13478500E+00
+   .13446548E+00   .13415263E+00   .13384585E+00   .13354452E+00   .13324799E+00
+   .13295557E+00   .13266656E+00   .13238023E+00   .13209586E+00   .13181273E+00
+   .13153012E+00   .13124732E+00   .13096365E+00   .13067845E+00   .13039111E+00
+   .13010103E+00   .12980768E+00   .12951055E+00   .12920922E+00   .12890329E+00
+   .12859244E+00   .12827640E+00   .12795499E+00   .12762805E+00   .12729554E+00
+   .12695744E+00   .12661382E+00   .12626482E+00   .12591063E+00   .12555151E+00
+   .12518776E+00   .12481975E+00   .12444790E+00   .12407269E+00   .12369460E+00
+   .12331418E+00   .12293200E+00   .12254866E+00   .12216478E+00   .12178098E+00
+   .12139790E+00   .12101618E+00   .12063646E+00   .12025935E+00   .11988545E+00
+   .11951535E+00   .11914960E+00   .11878872E+00   .11843318E+00   .11808343E+00
+   .11773986E+00   .11740281E+00   .11707256E+00   .11674936E+00   .11643337E+00
+   .11612472E+00   .11582347E+00   .11552960E+00   .11524306E+00   .11496374E+00
+   .11469144E+00   .11442595E+00   .11416697E+00   .11391417E+00   .11366717E+00
+   .11342554E+00   .11318884E+00   .11295655E+00   .11272816E+00   .11250313E+00
+   .11228088E+00   .11206084E+00   .11184242E+00   .11162503E+00   .11140810E+00
+   .11119104E+00   .11097329E+00   .11075431E+00   .11053359E+00   .11031063E+00
+   .11008499E+00   .10985625E+00   .10962403E+00   .10938800E+00   .10914789E+00
+   .10890345E+00   .10865450E+00   .10840093E+00   .10814264E+00   .10787962E+00
+   .10761191E+00   .10733958E+00   .10706278E+00   .10678170E+00   .10649658E+00
+   .10620769E+00   .10591537E+00   .10561998E+00   .10532192E+00   .10502162E+00
+   .10471954E+00   .10441617E+00   .10411201E+00   .10380756E+00   .10350335E+00
+   .10319991E+00   .10289777E+00   .10259743E+00   .10229940E+00   .10200418E+00
+   .10171222E+00   .10142397E+00   .10113985E+00   .10086023E+00   .10058546E+00
+   .10031584E+00   .10005162E+00   .99793034E-01   .99540245E-01   .99293377E-01
+   .99052504E-01   .98817651E-01   .98588793E-01   .98365858E-01   .98148724E-01
+   .97937225E-01   .97731147E-01   .97530237E-01   .97334202E-01   .97142709E-01
+   .96955397E-01   .96771871E-01   .96591713E-01   .96414480E-01   .96239713E-01
+   .96066940E-01   .95895679E-01   .95725442E-01   .95555746E-01   .95386107E-01
+   .95216055E-01   .95045131E-01   .94872896E-01   .94698932E-01   .94522846E-01
+   .94344276E-01   .94162891E-01   .93978395E-01   .93790532E-01   .93599082E-01
+   .93403871E-01   .93204764E-01   .93001674E-01   .92794556E-01   .92583411E-01
+   .92368286E-01   .92149271E-01   .91926498E-01   .91700141E-01   .91470413E-01
+   .91237566E-01   .91001884E-01   .90763683E-01   .90523308E-01   .90281128E-01
+   .90037534E-01   .89792935E-01   .89547752E-01   .89302418E-01   .89057370E-01
+   .88813047E-01   .88569884E-01   .88328311E-01   .88088743E-01   .87851584E-01
+   .87617217E-01   .87386003E-01   .87158276E-01   .86934344E-01   .86714482E-01
+   .86498932E-01   .86287900E-01   .86081555E-01   .85880026E-01   .85683402E-01
+   .85491732E-01   .85305023E-01   .85123242E-01   .84946313E-01   .84774125E-01
+   .84606523E-01   .84443320E-01   .84284292E-01   .84129183E-01   .83977708E-01
+   .83829555E-01   .83684387E-01   .83541847E-01   .83401561E-01   .83263141E-01
+   .83126188E-01   .82990297E-01   .82855060E-01   .82720073E-01   .82584933E-01
+   .82449250E-01   .82312643E-01   .82174750E-01   .82035227E-01   .81893753E-01
+   .81750031E-01   .81603794E-01   .81454803E-01   .81302851E-01   .81147768E-01
+   .80989416E-01   .80827694E-01   .80662540E-01   .80493929E-01   .80321872E-01
+   .80146420E-01   .79967660E-01   .79785713E-01   .79600737E-01   .79412920E-01
+   .79222482E-01   .79029671E-01   .78834760E-01   .78638045E-01   .78439844E-01
+   .78240491E-01   .78040334E-01   .77839732E-01   .77639049E-01   .77438658E-01
+   .77238926E-01   .77040221E-01   .76842902E-01   .76647319E-01   .76453807E-01
+   .76262685E-01   .76074254E-01   .75888790E-01   .75706547E-01   .75527750E-01
+   .75352598E-01   .75181256E-01   .75013859E-01   .74850509E-01   .74691274E-01
+   .74536187E-01   .74385246E-01   .74238414E-01   .74095622E-01   .73956766E-01
+   .73821710E-01   .73690288E-01   .73562306E-01   .73437542E-01   .73315749E-01
+   .73196658E-01   .73079982E-01   .72965415E-01   .72852638E-01   .72741320E-01
+   .72631122E-01   .72521701E-01   .72412713E-01   .72303815E-01   .72194667E-01
+ gradient corrections used for XC
+ 5
+ atomic pseudo charge-density
+   .60000000E+01   .59917682E+01   .59671789E+01   .59265479E+01   .58703891E+01
+   .57993990E+01   .57144341E+01   .56164855E+01   .55066511E+01   .53861066E+01
+   .52560766E+01   .51178084E+01   .49725469E+01   .48215134E+01   .46658876E+01
+   .45067929E+01   .43452859E+01   .41823479E+01   .40188803E+01   .38557025E+01
+   .36935506E+01   .35330797E+01   .33748662E+01   .32194109E+01   .30671444E+01
+   .29184307E+01   .27735730E+01   .26328185E+01   .24963632E+01   .23643571E+01
+   .22369087E+01   .21140897E+01   .19959388E+01   .18824658E+01   .17736551E+01
+   .16694691E+01   .15698510E+01   .14747279E+01   .13840130E+01   .12976078E+01
+   .12154045E+01   .11372872E+01   .10631344E+01   .99281940E+00   .92621249E+00
+   .86318152E+00   .80359313E+00   .74731357E+00   .69420942E+00   .64414831E+00
+   .59699943E+00   .55263402E+00   .51092580E+00   .47175127E+00   .43498998E+00
+   .40052480E+00   .36824205E+00   .33803164E+00   .30978717E+00   .28340598E+00
+   .25878921E+00   .23584178E+00   .21447237E+00   .19459343E+00   .17612108E+00
+   .15897509E+00   .14307879E+00   .12835897E+00   .11474584E+00   .10217290E+00
+   .90576828E-01   .79897428E-01   .70077479E-01   .61062654E-01   .52801404E-01
+   .45244856E-01   .38346707E-01   .32063120E-01   .26352622E-01   .21176003E-01
+   .16496215E-01   .12278281E-01   .84891979E-02   .50978486E-02   .20749112E-02
+  -.60722392E-03  -.29745366E-02  -.50514558E-02  -.68609362E-02  -.84245308E-02
+  -.97624615E-02  -.10893686E-01  -.11835965E-01  -.12605919E-01  -.13219093E-01
+  -.13690009E-01  -.14032225E-01  -.14258381E-01  -.14380251E-01  -.14408793E-01
+  -.14354189E-01  -.14225891E-01  -.14032660E-01  -.13782607E-01  -.13483228E-01
+  -.13141441E-01  -.12763619E-01  -.12355619E-01  -.11922818E-01  -.11470137E-01
+  -.11002072E-01  -.10522716E-01  -.10035788E-01  -.95446538E-02  -.90523500E-02
+  -.85616040E-02  -.80748545E-02  -.75942711E-02  -.71217719E-02  -.66590412E-02
+  -.62075454E-02  -.57685488E-02  -.53431281E-02  -.49321863E-02  -.45364660E-02
+  -.41565619E-02  -.37929322E-02  -.34459103E-02  -.31157151E-02  -.28024608E-02
+  -.25061667E-02  -.22267656E-02  -.19641127E-02  -.17179931E-02  -.14881294E-02
+  -.12741886E-02  -.10757886E-02  -.89250485E-03  -.72387531E-03  -.56940653E-03
+  -.42857839E-03  -.30084889E-03  -.18565853E-03  -.82434402E-04   .94060408E-05
+   .90451458E-04   .16129340E-03   .22252332E-03   .27472986E-03   .31849633E-03
+   .35439845E-03   .38300228E-03   .40486239E-03   .42052015E-03   .43050232E-03
+   .43531967E-03   .43546591E-03   .43141669E-03   .42362876E-03   .41253930E-03
+   .39856538E-03   .38210349E-03   .36352929E-03   .34319737E-03   .32144120E-03
+   .29857309E-03   .27488433E-03   .25064534E-03   .22610596E-03   .20149575E-03
+   .17702443E-03   .15288230E-03   .12924076E-03   .10625290E-03   .84054063E-04
+   .62762536E-04   .42480190E-04   .23293206E-04   .52728069E-05  -.11523997E-04
+  -.27053634E-04  -.41285196E-04  -.54199648E-04  -.65789036E-04  -.76055698E-04
+  -.85011472E-04  -.92676912E-04  -.99080513E-04  -.10425795E-03  -.10825132E-03
+  -.11110843E-03  -.11288204E-03  -.11362924E-03  -.11341070E-03  -.11229009E-03
+  -.11033340E-03  -.10760841E-03  -.10418409E-03  -.10013005E-03  -.95516074E-04
+  -.90411625E-04  -.84885403E-04  -.79004941E-04  -.72836222E-04  -.66443339E-04
+  -.59888174E-04  -.53230123E-04  -.46525844E-04  -.39829037E-04  -.33190254E-04
+  -.26656746E-04  -.20272330E-04  -.14077288E-04  -.81082945E-05  -.23983708E-05
+   .30231404E-05   .81305709E-05   .12901903E-04   .17318722E-04   .21366154E-04
+   .25032774E-04   .28310510E-04   .31194523E-04   .33683071E-04   .35777367E-04
+   .37481423E-04   .38801876E-04   .39747820E-04   .40330618E-04   .40563715E-04
+   .40462443E-04   .40043828E-04   .39326388E-04   .38329937E-04   .37075387E-04
+   .35584548E-04   .33879943E-04   .31984612E-04   .29921930E-04   .27715431E-04
+   .25388634E-04   .22964881E-04   .20467181E-04   .17918061E-04   .15339435E-04
+   .12752470E-04   .10177472E-04   .76337790E-05   .51396670E-05   .27122626E-05
+   .36747166E-06  -.18800836E-05  -.40171154E-05  -.60317107E-05  -.79133600E-05
+  -.96529757E-05  -.11242900E-04  -.12676905E-04  -.13950176E-04  -.15059296E-04
+  -.16002213E-04  -.16778201E-04  -.17387818E-04  -.17832850E-04  -.18116252E-04
+  -.18242083E-04  -.18215435E-04  -.18042359E-04  -.17729783E-04  -.17285432E-04
+  -.16717741E-04  -.16035770E-04  -.15249111E-04  -.14367805E-04  -.13402245E-04
+  -.12363095E-04  -.11261198E-04  -.10107488E-04  -.89129121E-05  -.76883443E-05
+  -.64445099E-05  -.51919113E-05  -.39407569E-05  -.27008960E-05  -.14817571E-05
+  -.29229229E-06   .85907414E-06   .19644910E-05   .30167200E-05   .40091707E-05
+   .49359281E-05   .57917760E-05   .65722140E-05   .72734684E-05   .78924981E-05
+   .84269947E-05   .88753771E-05   .92367814E-05   .95110452E-05   .96986879E-05
+   .98008862E-05   .98194454E-05   .97567671E-05   .96158136E-05   .94000686E-05
+   .91134958E-05   .87604949E-05   .83458553E-05   .78747087E-05   .73524802E-05
+   .67848387E-05   .61776463E-05   .55369089E-05   .48687256E-05   .41792398E-05
+   .34745909E-05   .27608672E-05   .20440608E-05   .13300240E-05   .62442817E-06
+  -.67274844E-07  -.73988911E-06  -.13885077E-05  -.20085430E-05  -.25957536E-05
+  -.31462683E-05  -.36566061E-05  -.41236935E-05  -.45448774E-05  -.49179355E-05
+  -.52410820E-05  -.55129711E-05  -.57326961E-05  -.58997856E-05  -.60141966E-05
+  -.60763041E-05  -.60868881E-05  -.60471176E-05  -.59585325E-05  -.58230221E-05
+  -.56428027E-05  -.54203921E-05  -.51585832E-05  -.48604156E-05  -.45291462E-05
+  -.41682184E-05  -.37812318E-05  -.33719094E-05  -.29440665E-05  -.25015785E-05
+  -.20483491E-05  -.15882795E-05  -.11252375E-05  -.66302845E-06  -.20536640E-06
+   .24415270E-06   .68207665E-06   .11051209E-05   .15101907E-05   .18944013E-05
+   .22550957E-05   .25898612E-05   .28965426E-05   .31732540E-05   .34183878E-05
+   .36306212E-05   .38089213E-05   .39525463E-05   .40610461E-05   .41342594E-05
+   .41723089E-05   .41755949E-05   .41447863E-05   .40808098E-05   .39848377E-05
+   .38582733E-05   .37027357E-05   .35200423E-05   .33121910E-05   .30813405E-05
+   .28297905E-05   .25599605E-05   .22743685E-05   .19756094E-05   .16663331E-05
+   .13492220E-05   .10269701E-05   .70226093E-06   .37774670E-06   .56028197E-07
+  -.26036489E-06  -.56899253E-06  -.86752192E-06  -.11537438E-05  -.14255877E-05
+  -.16811355E-05  -.19186339E-05  -.21365050E-05  -.23333557E-05  -.25079852E-05
+  -.26593909E-05  -.27867730E-05  -.28895365E-05  -.29672929E-05  -.30198589E-05
+  -.30472548E-05  -.30496999E-05  -.30276079E-05  -.29815799E-05  -.29123962E-05
+  -.28210073E-05  -.27085230E-05  -.25762012E-05  -.24254351E-05  -.22577400E-05
+  -.20747392E-05  -.18781493E-05  -.16697650E-05  -.14514439E-05  -.12250901E-05
+  -.99263919E-06  -.75604189E-06  -.51724870E-06  -.27819440E-06  -.40783164E-07
+   .19312596E-06   .42173291E-06   .64330979E-06   .85621327E-06   .10588960E-05
+   .12499175E-05   .14279530E-05   .15918027E-05   .17403988E-05   .18728116E-05
+   .19882544E-05   .20860878E-05   .21658217E-05   .22271172E-05   .22697861E-05
+   .22937907E-05   .22992407E-05   .22863909E-05   .22556358E-05   .22075048E-05
+   .21426558E-05   .20618676E-05   .19660321E-05   .18561454E-05   .17332978E-05
+   .15986645E-05   .14534943E-05   .12990990E-05   .11368416E-05   .96812543E-06
+   .79438183E-06   .61705882E-06   .43760937E-06   .25747988E-06   .78098960E-07
+  -.99133517E-07  -.27285691E-06  -.44175989E-06  -.60458990E-06  -.76016206E-06
+  -.90736736E-06  -.10451802E-05  -.11726648E-05  -.12889818E-05  -.13933923E-05
+  -.14852629E-05  -.15640686E-05  -.16293950E-05  -.16809403E-05  -.17185153E-05
+  -.17420434E-05  -.17515594E-05  -.17472073E-05  -.17292375E-05  -.16980032E-05
+  -.16539558E-05  -.15976400E-05  -.15296880E-05  -.14508129E-05  -.13618024E-05
+  -.12635108E-05  -.11568517E-05  -.10427895E-05  -.92233154E-06  -.79651917E-06
+  -.66641916E-06  -.53311498E-06  -.39769801E-06  -.26125892E-06  -.12487913E-06
+   .10377485E-07   .14347264E-06   .27340134E-06   .39919922E-06   .51994941E-06
+   .63478896E-06   .74291471E-06   .84358862E-06   .93614249E-06   .10199820E-05
+   .10945904E-05   .11595310E-05   .12144494E-05   .12590751E-05   .12932221E-05
+   .13167890E-05   .13297585E-05   .13321964E-05   .13242491E-05   .13061420E-05
+   .12781757E-05   .12407232E-05   .11942252E-05   .11391859E-05   .10761679E-05
+   .10057870E-05   .92870654E-06   .84563134E-06   .75730164E-06   .66448672E-06
+   .56797846E-06   .46858480E-06   .36712315E-06   .26441394E-06   .16127411E-06
+   .58510840E-07  -.43084584E-07  -.14274268E-06  -.23972139E-06  -.33331146E-06
+  -.42284137E-06  -.50768199E-06  -.58725077E-06  -.66101551E-06  -.72849772E-06
+  -.78927542E-06  -.84298553E-06  -.88932573E-06  -.92805581E-06  -.95899854E-06
+  -.98204001E-06  -.99712946E-06  -.10042787E-05  -.10035609E-05  -.99510908E-06
+  -.97911412E-06  -.95582224E-06  -.92553223E-06  -.88859224E-06  -.84539628E-06
+  -.79638041E-06  -.74201862E-06  -.68281852E-06  -.61931691E-06  -.55207504E-06
+  -.48167388E-06  -.40870931E-06  -.33378719E-06  -.25751852E-06  -.18051463E-06
+  -.10338237E-06  -.26719534E-07   .48889673E-07   .12287892E-06   .19470384E-06
+   .26384591E-06   .32981604E-06   .39215784E-06   .45045066E-06   .50431220E-06
+   .55340089E-06   .59741779E-06   .63610824E-06   .66926307E-06   .69671942E-06
+   .71836129E-06   .73411956E-06   .74397180E-06   .74794162E-06   .74609770E-06
+   .73855250E-06   .72546064E-06   .70701697E-06   .68345439E-06   .65504139E-06
+   .62207935E-06   .58489965E-06   .54386058E-06   .49934410E-06   .45175249E-06
+   .40150487E-06   .34903364E-06   .29478097E-06   .23919513E-06   .18272695E-06
+   .12582629E-06   .68938549E-07   .12501322E-07  -.43058875E-07  -.97329706E-07
+  -.14991596E-06  -.20044230E-06  -.24855584E-06  -.29392849E-06  -.33625901E-06
+  -.37527494E-06  -.41073416E-06  -.44242622E-06  -.47017345E-06  -.49383173E-06
+  -.51329101E-06  -.52847558E-06  -.53934403E-06  -.54588897E-06  -.54813649E-06
+  -.54614532E-06  -.54000588E-06  -.52983894E-06  -.51579416E-06  -.49804846E-06
+  -.47680410E-06  -.45228674E-06  -.42474318E-06  -.39443917E-06  -.36165694E-06
+  -.32669276E-06  -.28985441E-06  -.25145854E-06  -.21182812E-06  -.17128979E-06
+  -.13017128E-06  -.88798891E-07  -.47494935E-07  -.65753680E-08   .33652554E-07
+   .72892492E-07   .11086111E-06   .14729002E-06   .18192762E-06   .21454067E-06
+   .24491580E-06   .27286079E-06   .29820565E-06   .32080356E-06   .34053152E-06
+   .35729090E-06   .37100778E-06   .38163299E-06   .38914209E-06   .39353509E-06
+   .39483599E-06   .39309215E-06   .38837349E-06   .38077154E-06   .37039831E-06
+   .35738509E-06   .34188101E-06   .32405161E-06   .30407723E-06   .28215135E-06
+   .25847886E-06   .23327422E-06   .20675970E-06   .17916344E-06   .15071762E-06
+   .12165660E-06   .92215039E-07   .62626105E-07   .33119689E-07   .39206951E-08
+  -.24752597E-07  -.52690095E-07  -.79691358E-07  -.10556696E-06  -.13013974E-06
+  -.15324595E-06  -.17473624E-06  -.19447656E-06  -.21234887E-06  -.22825180E-06
+  -.24210104E-06  -.25382974E-06  -.26338863E-06  -.27074611E-06  -.27588811E-06
+  -.27881792E-06  -.27955575E-06  -.27813834E-06  -.27461828E-06  -.26906337E-06
+  -.26155573E-06  -.25219095E-06  -.24107705E-06  -.22833345E-06  -.21408978E-06
+  -.19848472E-06  -.18166473E-06  -.16378279E-06  -.14499707E-06  -.12546963E-06
+  -.10536508E-06  -.84849265E-07  -.64087970E-07  -.43245621E-07  -.22484060E-07
+  -.19613409E-08   .18169418E-07   .37761115E-07   .56673688E-07   .74775054E-07
+   .91941974E-07   .10806083E-06   .12302832E-06   .13675204E-06   .14915099E-06
+   .16015600E-06   .16970998E-06   .17776817E-06   .18429822E-06   .18928021E-06
+   .19270655E-06   .19458179E-06   .19492237E-06   .19375623E-06   .19112240E-06
+   .18707045E-06   .18165991E-06   .17495962E-06   .16704703E-06   .15800738E-06
+   .14793295E-06   .13692218E-06   .12507877E-06   .11251081E-06   .99329838E-07
+   .85649915E-07   .71586695E-07   .57256498E-07   .42775398E-07   .28258334E-07
+   .13818240E-07  -.43478729E-09  -.14394282E-07  -.27958162E-07  -.41029432E-07
+  -.53516833E-07  -.65335434E-07  -.76407165E-07  -.86661288E-07  -.96034794E-07
+  -.10447275E-06  -.11192854E-06  -.11836410E-06  -.12375001E-06  -.12806557E-06
+  -.13129879E-06  -.13344629E-06  -.13451320E-06  -.13451290E-06  -.13346681E-06
+  -.13140400E-06  -.12836090E-06  -.12438080E-06  -.11951341E-06  -.11381435E-06
+  -.10734461E-06  -.10016996E-06  -.92360356E-07  -.83989297E-07  -.75133217E-07
+  -.65870815E-07  -.56282407E-07  -.46449269E-07  -.36452990E-07  -.26374834E-07
+  -.16295114E-07  -.62925859E-08   .35561287E-08   .13177100E-07   .22499609E-07
+   .31456639E-07   .39985322E-07   .48027346E-07   .55529326E-07   .62443121E-07
+   .68726111E-07   .74341419E-07   .79258092E-07   .83451231E-07   .86902064E-07
+   .89597984E-07   .91532524E-07   .92705296E-07   .93121878E-07   .92793663E-07
+   .91737653E-07   .89976232E-07   .87536883E-07   .84451885E-07   .80757970E-07
+   .76495956E-07   .71710350E-07   .66448940E-07   .60762354E-07   .54703620E-07
+   .48327702E-07   .41691044E-07   .34851096E-07   .27865848E-07   .20793373E-07
+   .13691366E-07   .66167019E-08  -.37499308E-09  -.72297542E-08  -.13895671E-07
+  -.20323255E-07  -.26465788E-07  -.32279633E-07  -.37724526E-07  -.42763829E-07
+  -.47364755E-07  -.51498560E-07  -.55140694E-07  -.58270921E-07  -.60873410E-07
+  -.62936773E-07  -.64454090E-07  -.65422877E-07  -.65845040E-07  -.65726779E-07
+  -.65078469E-07  -.63914512E-07  -.62253155E-07  -.60116282E-07  -.57529183E-07
+  -.54520303E-07  -.51120960E-07  -.47365060E-07  -.43288783E-07  -.38930265E-07
+  -.34329266E-07  -.29526833E-07  -.24564953E-07  -.19486211E-07  -.14333446E-07
+  -.91494082E-08  -.39764231E-08   .11439326E-08   .61711490E-08   .11066085E-07
+   .15791256E-07   .20311104E-07   .24592250E-07   .28603725E-07   .32317176E-07
+   .35707053E-07   .38750770E-07   .41428839E-07   .43724980E-07   .45626202E-07
+   .47122860E-07   .48208684E-07   .48880781E-07   .49139608E-07   .48988926E-07
+   .48435724E-07   .47490115E-07   .46165220E-07   .44477022E-07   .42444198E-07
+   .40087938E-07   .37431747E-07   .34501224E-07   .31323833E-07   .27928668E-07
+   .24346193E-07   .20607989E-07   .16746490E-07   .12794713E-07   .87859919E-08
+   .47537088E-08   .73102898E-09  -.32493587E-08  -.71554951E-08  -.10956395E-07
+  -.14622282E-07  -.18124808E-07  -.21437265E-07  -.24534773E-07  -.27394460E-07
+  -.29995620E-07  -.32319853E-07  -.34351183E-07  -.36076162E-07  -.37483945E-07
+  -.38566352E-07  -.39317902E-07  -.39735828E-07  -.39820072E-07  -.39573258E-07
+  -.39000641E-07  -.38110042E-07  -.36911758E-07  -.35418458E-07  -.33645056E-07
+  -.31608577E-07  -.29327996E-07  -.26824071E-07  -.24119164E-07  -.21237046E-07
+  -.18202698E-07  -.15042101E-07  -.11782020E-07  -.84497905E-08  -.50730892E-08
+  -.16797180E-08   .17026196E-08   .50465364E-08   .83251756E-08   .11512419E-07
+   .14583088E-07   .17513133E-07   .20279819E-07   .22861888E-07   .25239723E-07
+   .27395485E-07   .29313242E-07   .30979082E-07   .32381206E-07   .33510003E-07
+   .34358115E-07   .34920476E-07   .35194336E-07   .35179264E-07   .34877139E-07
+   .34292118E-07   .33430584E-07   .32301084E-07   .30914248E-07   .29282688E-07
+   .27420888E-07   .25345076E-07   .23073086E-07   .20624207E-07   .18019022E-07
+   .15279237E-07   .12427505E-07   .94872409E-08   .64824308E-08   .34374431E-08
+   .37683268E-09  -.26748531E-08  -.56932672E-08  -.86544532E-08  -.11535032E-07
+  -.14312380E-07  -.16964808E-07  -.19471719E-07  -.21813770E-07  -.23973015E-07
+  -.25933039E-07  -.27679077E-07  -.29198125E-07  -.30479028E-07  -.31512564E-07
+  -.32291502E-07  -.32810648E-07  -.33066883E-07  -.33059167E-07  -.32788546E-07
+  -.32258130E-07  -.31473058E-07  -.30440450E-07  -.29169342E-07  -.27670607E-07
+  -.25956858E-07  -.24042349E-07  -.21942849E-07  -.19675514E-07  -.17258751E-07
+  -.14712064E-07  -.12055899E-07  -.93114809E-08  -.65006434E-08  -.36456576E-08
+  -.76905595E-09   .21065446E-08   .49586189E-08   .77649082E-08   .10503593E-07
+   .13153461E-07   .15694069E-07   .18105899E-07   .20370507E-07   .22470662E-07
+ 24.7554104503838985 T
+ Non local Part
+ 0 2 1.19823013906127396
+ 1.10994077959183524 1.53342233373160219 1.53342233373160219 -0.291376959654070899
+ Reciprocal Space Part
+   .41916247E+01   .41825847E+01   .41555387E+01   .41107084E+01   .40484610E+01
+   .39693053E+01   .38738873E+01   .37629841E+01   .36374959E+01   .34984375E+01
+   .33469290E+01   .31841841E+01   .30114991E+01   .28302395E+01   .26418272E+01
+   .24477262E+01   .22494282E+01   .20484379E+01   .18462583E+01   .16443755E+01
+   .14442443E+01   .12472735E+01   .10548126E+01   .86813848E+00   .68844301E+00
+   .51682202E+00   .35426518E+00   .20164722E+00   .59720666E-01  -.70890044E-01
+  -.18969273E+00  -.29633001E+00  -.39058015E+00  -.47235620E+00  -.54170338E+00
+  -.59879486E+00  -.64392596E+00  -.67750676E+00  -.70005339E+00  -.71217809E+00
+  -.71457813E+00  -.70802382E+00  -.69334585E+00  -.67142204E+00  -.64316388E+00
+  -.60950289E+00  -.57137716E+00  -.52971824E+00  -.48543852E+00  -.43941937E+00
+  -.39250026E+00  -.34546882E+00  -.29905223E+00  -.25390984E+00  -.21062725E+00
+  -.16971183E+00  -.13158971E+00  -.96604303E-01  -.65016283E-01  -.37004945E-01
+  -.12670925E-01   .79598551E-02   .24931149E-01   .38350371E-01   .48381788E-01
+   .55239058E-01   .59177307E-01   .60484919E-01   .59475206E-01   .56478136E-01
+   .51832277E-01   .45877121E-01   .38945906E-01   .31359071E-01   .23418444E-01
+   .15402235E-01   .75609010E-02   .11392130E-03  -.67525066E-02  -.12886855E-01
+  -.18172761E-01  -.22528680E-01  -.25906755E-01  -.28290977E-01  -.29694738E-01
+  -.30157854E-01  -.29743190E-01  -.28532968E-01  -.26624897E-01  -.24128204E-01
+  -.21159697E-01  -.17839940E-01  -.14289626E-01  -.10626249E-01  -.69611057E-02
+  -.33967125E-02  -.24653651E-04   .30761027E-02   .58404133E-02   .82176957E-02
+ Real Space Part
+  -.12209911E+02  -.12156465E+02  -.11996746E+02  -.11732600E+02  -.11367080E+02
+  -.10904404E+02  -.10349903E+02  -.97099514E+01  -.89918873E+01  -.82039151E+01
+  -.73550000E+01  -.64547502E+01  -.55132907E+01  -.45411287E+01  -.35490140E+01
+  -.25477947E+01  -.15482719E+01  -.56105360E+00   .40358764E+00   .13358530E+01
+   .22265484E+01   .30672055E+01   .38501921E+01   .45688082E+01   .52173671E+01
+   .57912593E+01   .62869985E+01   .67022486E+01   .70358309E+01   .72877116E+01
+   .74589701E+01   .75517488E+01   .75691844E+01   .75153242E+01   .73950278E+01
+   .72138561E+01   .69779520E+01   .66939128E+01   .63686597E+01   .60093047E+01
+   .56230197E+01   .52169103E+01   .47978951E+01   .43725954E+01   .39472355E+01
+   .35275565E+01   .31187441E+01   .27253720E+01   .23513613E+01   .19999558E+01
+   .16737134E+01   .13745126E+01   .11035728E+01   .86148821E+00   .64827189E+00
+   .46341029E+00   .30592455E+00   .17443747E+00   .67243739E-01  -.17618413E-01
+  -.82296239E-01  -.12905384E+00  -.16020751E+00  -.17806636E+00  -.18487943E+00
+  -.18279001E+00  -.17379778E+00  -.15972907E+00  -.14221522E+00  -.12267879E+00
+  -.10232730E+00  -.82153699E-01  -.62942943E-01  -.45283648E-01  -.29583985E-01
+  -.16090730E-01  -.49105123E-02   .39677126E-02   .10649843E-01   .15314281E-01
+   .18190739E-01   .19540772E-01   .19640479E-01   .18765672E-01   .17179704E-01
+   .15123994E-01   .12811214E-01   .10420974E-01   .80977811E-02   .59509921E-02
+   .40564286E-02   .24593019E-02   .11780974E-02   .20907384E-03  -.46894317E-03
+  -.88975727E-03  -.10952287E-02  -.11311262E-02  -.10435471E-02  -.87599685E-03
+ Reciprocal Space Part
+   .74573153E+01   .74205324E+01   .73105035E+01   .71281866E+01   .68751723E+01
+   .65536755E+01   .61665220E+01   .57171327E+01   .52095018E+01   .46481714E+01
+   .40382008E+01   .33851306E+01   .26949407E+01   .19740037E+01   .12290314E+01
+   .46701580E+00  -.30483477E+00  -.10791659E+01  -.18485513E+01  -.26055719E+01
+  -.33428971E+01  -.40533700E+01  -.47300925E+01  -.53665105E+01  -.59564989E+01
+  -.64944419E+01  -.69753105E+01  -.73947331E+01  -.77490593E+01  -.80354149E+01
+  -.82517461E+01  -.83968535E+01  -.84704128E+01  -.84729835E+01  -.84060025E+01
+  -.82717655E+01  -.80733934E+01  -.78147852E+01  -.75005585E+01  -.71359771E+01
+  -.67268679E+01  -.62795286E+01  -.58006267E+01  -.52970927E+01  -.47760092E+01
+  -.42444981E+01  -.37096071E+01  -.31781994E+01  -.26568473E+01  -.21517323E+01
+  -.16685537E+01  -.12124471E+01  -.78791534E+00  -.39877098E+00  -.48094094E-01
+   .26179610E+00   .52935445E+00   .75380808E+00   .93513994E+00   .10740583E+01
+   .11719530E+01   .12308401E+01   .12532955E+01   .12423801E+01   .12015583E+01
+   .11346105E+01   .10455433E+01   .93849855E+00   .81766341E+00   .68718315E+00
+   .55107898E+00   .41317216E+00   .27701602E+00   .14583714E+00   .22486520E-01
+  -.90598413E-01  -.19142056E+00  -.27843862E+00  -.35057128E+00  -.40719064E+00
+  -.44810548E+00  -.47353521E+00  -.48407567E+00  -.48065789E+00  -.46450122E+00
+  -.43706235E+00  -.39998148E+00  -.35502741E+00  -.30404270E+00  -.24889052E+00
+  -.19140434E+00  -.13334157E+00  -.76342240E-01  -.21893397E-01   .28700093E-01
+   .74337975E-01   .11414004E+00   .14745461E+00   .17386013E+00   .19316046E+00
+ Real Space Part
+  -.14450582E+03  -.14434158E+03  -.14384692E+03  -.14301613E+03  -.14184006E+03
+  -.14030674E+03  -.13840209E+03  -.13611089E+03  -.13341784E+03  -.13030866E+03
+  -.12677136E+03  -.12279734E+03  -.11838257E+03  -.11352859E+03  -.10824339E+03
+  -.10254210E+03  -.96447492E+02  -.89990226E+02  -.83208815E+02  -.76149381E+02
+  -.68865127E+02  -.61415564E+02  -.53865525E+02  -.46283974E+02  -.38742660E+02
+  -.31314650E+02  -.24072789E+02  -.17088132E+02  -.10428398E+02  -.41564905E+01
+   .16708644E+01   .70043321E+01   .11802990E+02   .16035133E+02   .19678836E+02
+   .22722270E+02   .25163755E+02   .27011560E+02   .28283456E+02   .29006050E+02
+   .29213914E+02   .28948539E+02   .28257163E+02   .27191494E+02   .25806374E+02
+   .24158431E+02   .22304747E+02   .20301581E+02   .18203183E+02   .16060736E+02
+   .13921425E+02   .11827682E+02   .98165975E+01   .79195094E+01   .61617801E+01
+   .45627407E+01   .31358031E+01   .18887196E+01   .82397384E+00  -.60720401E-01
+  -.77183450E+00  -.13193800E+01  -.17162274E+01  -.19774128E+01  -.21194552E+01
+  -.21597028E+01  -.21157294E+01  -.20047908E+01  -.18433559E+01  -.16467180E+01
+  -.14286910E+01  -.12013912E+01  -.97510211E+00  -.75821818E+00  -.55725868E+00
+  -.37694436E+00  -.22032548E+00  -.88950652E-01   .16934939E-01   .98173080E-01
+   .15646828E+00   .19416536E+00   .21403714E+00   .21908924E+00   .21238723E+00
+   .19691002E+00   .17543163E+00   .15043210E+00   .12403694E+00   .97983416E-01
+   .73610913E-01   .51872133E-01   .33361169E-01   .18354475E-01   .68606192E-02
+  -.13250790E-02  -.65645922E-02  -.93230150E-02  -.10118734E-01  -.94798863E-02
+ Non local Part
+ 1 2 1.19823013906127396
+ 6.12884028017874360 -3.81892483499089330 -3.81892483499089330 1.42081284536133179
+ Reciprocal Space Part
+   .00000000E+00   .24190713E+00   .48134296E+00   .71587281E+00   .94313460E+00
+   .11608735E+01   .13669746E+01   .15594931E+01   .17366816E+01   .18970136E+01
+   .20392032E+01   .21622207E+01   .22653035E+01   .23479626E+01   .24099842E+01
+   .24514270E+01   .24726145E+01   .24741237E+01   .24567692E+01   .24215837E+01
+   .23697959E+01   .23028052E+01   .22221538E+01   .21294985E+01   .20265799E+01
+   .19151923E+01   .17971534E+01   .16742740E+01   .15483304E+01   .14210370E+01
+   .12940221E+01   .11688056E+01   .10467802E+01   .92919538E+00   .81714463E+00
+   .71155640E+00   .61318834E+00   .52262508E+00   .44027930E+00   .36639596E+00
+   .30105950E+00   .24420362E+00   .19562346E+00   .15498971E+00   .12186422E+00
+   .95716908E-01   .75943293E-01   .61882440E-01   .52834833E-01   .48079811E-01
+   .46892228E-01   .48558017E-01   .52388387E-01   .57732421E-01   .63987899E-01
+   .70610211E-01   .77119283E-01   .83104495E-01   .88227596E-01   .92223688E-01
+   .94900397E-01   .96135352E-01   .95872176E-01   .94115169E-01   .90922917E-01
+   .86401051E-01   .80694419E-01   .73978879E-01   .66452981E-01   .58329740E-01
+   .49828715E-01   .41168581E-01   .32560350E-01   .24201382E-01   .16270280E-01
+   .89227536E-02   .22884849E-02  -.35309816E-02  -.84633498E-02  -.12465719E-01
+  -.15523834E-01  -.17650532E-01  -.18883476E-01  -.19282310E-01  -.18925339E-01
+  -.17905890E-01  -.16328465E-01  -.14304828E-01  -.11950138E-01  -.93792522E-02
+  -.67032934E-02  -.40265698E-02  -.14439170E-02   .96148255E-03   .31197699E-02
+   .49755497E-02   .64885011E-02   .76334748E-02   .84001065E-02   .87919916E-02
+ Real Space Part
+   .00000000E+00   .79674956E+00   .15859159E+01   .23600635E+01   .31120483E+01
+   .38351532E+01   .45232120E+01   .51707187E+01   .57729178E+01   .63258763E+01
+   .68265322E+01   .72727217E+01   .76631830E+01   .79975380E+01   .82762527E+01
+   .85005780E+01   .86724745E+01   .87945214E+01   .88698160E+01   .89018646E+01
+   .88944696E+01   .88516162E+01   .87773614E+01   .86757301E+01   .85506195E+01
+   .84057148E+01   .82444190E+01   .80697972E+01   .78845365E+01   .76909225E+01
+   .74908310E+01   .72857355E+01   .70767279E+01   .68645513E+01   .66496437E+01
+   .64321882E+01   .62121700E+01   .59894356E+01   .57637521E+01   .55348655E+01
+   .53025546E+01   .50666788E+01   .48272185E+01   .45843073E+01   .43382543E+01
+   .40895568E+01   .38389031E+01   .35871659E+01   .33353872E+01   .30847548E+01
+   .28365735E+01   .25922301E+01   .23531559E+01   .21207871E+01   .18965247E+01
+   .16816961E+01   .14775193E+01   .12850711E+01   .11052602E+01   .93880647E+00
+   .78622548E+00   .64782090E+00   .52368250E+00   .41369091E+00   .31752808E+00
+   .23469302E+00   .16452201E+00   .10621225E+00   .58848150E-01   .21429047E-01
+  -.71024369E-02  -.27832509E-01  -.41849597E-01  -.50219785E-01  -.53964937E-01
+  -.54044003E-01  -.51337836E-01  -.46637720E-01  -.40637642E-01  -.33930212E-01
+  -.27006003E-01  -.20256005E-01  -.13976760E-01  -.83777375E-02  -.35904248E-02
+   .32136120E-03   .33504644E-02   .55351505E-02   .69480767E-02   .76858459E-02
+   .78594557E-02   .75858795E-02   .69809449E-02   .61535968E-02   .52015693E-02
+   .42084251E-02   .32418692E-02   .23532017E-02   .15777427E-02   .93604221E-03
+ Reciprocal Space Part
+   .00000000E+00   .31744093E+00   .62796632E+00   .92479987E+00   .12014407E+01
+   .14517937E+01   .16702913E+01   .18520039E+01   .19927369E+01   .20891120E+01
+   .21386315E+01   .21397237E+01   .20917694E+01   .19951083E+01   .18510259E+01
+   .16617203E+01   .14302515E+01   .11604730E+01   .85694736E+00   .52484880E+00
+   .16985417E+00  -.20197520E+00  -.58431776E+00  -.97071968E+00  -.13547235E+01
+  -.17299949E+01  -.20904447E+01  -.24303437E+01  -.27444280E+01  -.30279929E+01
+  -.32769731E+01  -.34880080E+01  -.36584915E+01  -.37866046E+01  -.38713313E+01
+  -.39124572E+01  -.39105517E+01  -.38669350E+01  -.37836290E+01  -.36632969E+01
+  -.35091693E+01  -.33249628E+01  -.31147888E+01  -.28830588E+01  -.26343861E+01
+  -.23734858E+01  -.21050774E+01  -.18337905E+01  -.15640757E+01  -.13001231E+01
+  -.10457895E+01  -.80453601E+00  -.57937641E+00  -.37283792E+00  -.18693396E+00
+  -.23149557E-01   .11756098E+00   .23476454E+00   .32852852E+00   .39939002E+00
+   .44831599E+00   .47665573E+00   .48608716E+00   .47855846E+00   .45622663E+00
+   .42139471E+00   .37644900E+00   .32379812E+00   .26581491E+00   .20478287E+00
+   .14284783E+00   .81976051E-01   .23919311E-01  -.29812460E-01  -.77970740E-01
+  -.11958010E+00  -.15394216E+00  -.18063212E+00  -.19948839E+00  -.21059606E+00
+  -.21426485E+00  -.21100257E+00  -.20148507E+00  -.18652355E+00  -.16703047E+00
+  -.14398496E+00  -.11839869E+00  -.91283257E-01  -.63619700E-01  -.36331110E-01
+  -.10258728E-01   .13857887E-01   .35396331E-01   .53862293E-01   .68895888E-01
+   .80273504E-01   .87905366E-01   .91829151E-01   .92200087E-01   .89278037E-01
+ Real Space Part
+   .00000000E+00  -.20833035E+01  -.41655263E+01  -.62451081E+01  -.83195511E+01
+  -.10385006E+02  -.12435921E+02  -.14464767E+02  -.16461863E+02  -.18415296E+02
+  -.20310962E+02  -.22132707E+02  -.23862587E+02  -.25481222E+02  -.26968246E+02
+  -.28302832E+02  -.29464273E+02  -.30432608E+02  -.31189254E+02  -.31717642E+02
+  -.32003813E+02  -.32036975E+02  -.31809978E+02  -.31319701E+02  -.30567341E+02
+  -.29558576E+02  -.28303611E+02  -.26817098E+02  -.25117923E+02  -.23228879E+02
+  -.21176227E+02  -.18989155E+02  -.16699160E+02  -.14339360E+02  -.11943772E+02
+  -.95465606E+01  -.71812913E+01  -.48802088E+01  -.26735552E+01  -.58895310E+00
+   .13491329E+01   .31198413E+01   .47062558E+01   .60956367E+01   .72795389E+01
+   .82538163E+01   .90185169E+01   .95776756E+01   .99390140E+01   .10113561E+02
+   .10115209E+02   .99602166E+01   .96666821E+01   .92540003E+01   .87423176E+01
+   .81520050E+01   .75031602E+01   .68151530E+01   .61062235E+01   .53931413E+01
+   .46909323E+01   .40126745E+01   .33693654E+01   .27698580E+01   .22208628E+01
+   .17270086E+01   .12909577E+01   .91356460E+00   .59407062E+00   .33032511E+00
+   .11902304E+00  -.44049687E-01  -.16377201E+00  -.24545238E+00  -.29460892E+00
+  -.31677078E+00  -.31730480E+00  -.30127048E+00  -.27330483E+00  -.23753750E+00
+  -.19753537E+00  -.15627485E+00  -.11613935E+00  -.78938581E-01  -.45946163E-01
+  -.17951420E-01   .46784902E-02   .21930096E-01   .34072423E-01   .41586401E-01
+   .45097684E-01   .45315224E-01   .42977316E-01   .38806326E-01   .33472725E-01
+   .27568557E-01   .21590035E-01   .15928553E-01   .10869144E-01   .65951677E-02
+ PAW radial sets
+ 321 0.721520152002725790
+(5E20.12)                                
+ augmentation charges (non sperical)
+  -.157752259102E+00   .256865056813E-01   .447401437060E-01   .282550287931E-02   .256865056813E-01
+  -.513111026050E-02  -.610189826978E-02   .234333105778E-03   .447401437060E-01  -.610189826978E-02
+   .206642369840E+00  -.512388802954E-01   .282550287931E-02   .234333105778E-03  -.512388802954E-01
+   .161404628631E-01
+ uccopancies in atom
+   .199999999995E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .133333333287E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .292861757568E-04   .302384891324E-04   .312217693632E-04   .322370234141E-04   .332852909940E-04
+   .343676456204E-04   .354851957192E-04   .366390857593E-04   .378304974248E-04   .390606508255E-04
+   .403308057460E-04   .416422629358E-04   .429963654417E-04   .443944999831E-04   .458380983718E-04
+   .473286389788E-04   .488676482478E-04   .504567022590E-04   .520974283424E-04   .537915067449E-04
+   .555406723508E-04   .573467164586E-04   .592114886153E-04   .611368985105E-04   .631249179321E-04
+   .651775827859E-04   .672969951799E-04   .694853255777E-04   .717448150208E-04   .740777774238E-04
+   .764866019442E-04   .789737554287E-04   .815417849398E-04   .841933203642E-04   .869310771058E-04
+   .897578588667E-04   .926765605186E-04   .956901710669E-04   .988017767123E-04   .102014564011E-03
+   .105331823137E-03   .108756951255E-03   .112293455994E-03   .115944959045E-03   .119715199866E-03
+   .123608039513E-03   .127627464593E-03   .131777591350E-03   .136062669876E-03   .140487088466E-03
+   .145055378110E-03   .149772217137E-03   .154642436003E-03   .159671022236E-03   .164863125548E-03
+   .170224063108E-03   .175759324983E-03   .181474579766E-03   .187375680376E-03   .193468670057E-03
+   .199759788562E-03   .206255478546E-03   .212962392164E-03   .219887397881E-03   .227037587508E-03
+   .234420283464E-03   .242043046275E-03   .249913682317E-03   .258040251807E-03   .266431077064E-03
+   .275094751026E-03   .284040146052E-03   .293276423008E-03   .302813040649E-03   .312659765305E-03
+   .322826680882E-03   .333324199190E-03   .344163070606E-03   .355354395080E-03   .366909633507E-03
+   .378840619461E-03   .391159571315E-03   .403879104750E-03   .417012245681E-03   .430572443592E-03
+   .444573585311E-03   .459030009230E-03   .473956519990E-03   .489368403644E-03   .505281443305E-03
+   .521711935319E-03   .538676705943E-03   .556193128586E-03   .574279141596E-03   .592953266629E-03
+   .612234627622E-03   .632142970374E-03   .652698682767E-03   .673922815646E-03   .695837104379E-03
+   .718463991113E-03   .741826647755E-03   .765948999709E-03   .790855750370E-03   .816572406429E-03
+   .843125303987E-03   .870541635532E-03   .898849477784E-03   .928077820446E-03   .958256595896E-03
+   .989416709837E-03   .102159007295E-02   .105480963356E-02   .108910941142E-02   .112452453248E-02
+   .116109126493E-02   .119884705630E-02   .123783057181E-02   .127808173400E-02   .131964176357E-02
+   .136255322161E-02   .140686005323E-02   .145260763247E-02   .149984280887E-02   .154861395536E-02
+   .159897101787E-02   .165096556643E-02   .170465084799E-02   .176008184098E-02   .181731531158E-02
+   .187640987187E-02   .193742603983E-02   .200042630136E-02   .206547517423E-02   .213263927416E-02
+   .220198738308E-02   .227359051949E-02   .234752201127E-02   .242385757072E-02   .250267537214E-02
+   .258405613183E-02   .266808319080E-02   .275484260011E-02   .284442320898E-02   .293691675577E-02
+   .303241796195E-02   .313102462912E-02   .323283773910E-02   .333796155744E-02   .344650374009E-02
+   .355857544374E-02   .367429143961E-02   .379377023099E-02   .391713417460E-02   .404450960591E-02
+   .417602696847E-02   .431182094758E-02   .445203060811E-02   .459679953703E-02   .474627599036E-02
+   .490061304506E-02   .505996875575E-02   .522450631661E-02   .539439422848E-02   .556980647142E-02
+   .575092268290E-02   .593792834175E-02   .613101495811E-02   .633038026953E-02   .653622844353E-02
+   .674877028662E-02   .696822346022E-02   .719481270355E-02   .742877006381E-02   .767033513377E-02
+   .791975529717E-02   .817728598207E-02   .844319092237E-02   .871774242798E-02   .900122166363E-02
+   .929391893683E-02   .959613399516E-02   .990817633326E-02   .102303655097E-01   .105630314745E-01
+   .109065149065E-01   .112611675628E-01   .116273526388E-01   .120054451399E-01   .123958322659E-01
+   .127989138074E-01   .132151025550E-01   .136448247225E-01   .140885203828E-01   .145466439191E-01
+   .150196644899E-01   .155080665096E-01   .160123501446E-01   .165330318254E-01   .170706447755E-01
+   .176257395575E-01   .181988846371E-01   .187906669648E-01   .194016925775E-01   .200325872188E-01
+   .206839969800E-01   .213565889615E-01   .220510519564E-01   .227680971554E-01   .235084588754E-01
+   .242728953116E-01   .250621893137E-01   .258771491876E-01   .267186095236E-01   .275874320505E-01
+   .284845065186E-01   .294107516104E-01   .303671158820E-01   .313545787337E-01   .323741514141E-01
+   .334268780544E-01   .345138367389E-01   .356361406081E-01   .367949389994E-01   .379914186235E-01
+   .392268047802E-01   .405023626127E-01   .418193984038E-01   .431792609133E-01   .445833427591E-01
+   .460330818438E-01   .475299628269E-01   .490755186453E-01   .506713320832E-01   .523190373930E-01
+   .540203219690E-01   .557769280752E-01   .575906546298E-01   .594633590472E-01   .613969591405E-01
+   .633934350851E-01   .654548314468E-01   .675832592756E-01   .697808982676E-01   .720499989972E-01
+   .743928852218E-01   .768119562617E-01   .793096894569E-01   .818886427046E-01   .845514570782E-01
+   .873008595323E-01   .901396656953E-01   .930707827527E-01   .960972124246E-01   .992220540394E-01
+   .102448507708E+00   .105779877601E+00   .109219575332E+00   .112771123452E+00   .116438159057E+00
+   .120224437512E+00   .124133836297E+00   .128170358977E+00   .132338139305E+00   .136641445452E+00
+   .141084684380E+00   .145672406352E+00   .150409309599E+00   .155300245122E+00   .160350221666E+00
+   .165564410850E+00   .170948152458E+00   .176506959912E+00   .182246525918E+00   .188172728291E+00
+   .194291635982E+00   .200609515285E+00   .207132836263E+00   .213868279365E+00   .220822742274E+00
+   .228003346967E+00   .235417447012E+00   .243072635094E+00   .250976750795E+00   .259137888621E+00
+   .267564406289E+00   .276264933290E+00   .285248379723E+00   .294523945424E+00   .304101129382E+00
+   .313989739470E+00   .324199902489E+00   .334742074538E+00   .345627051723E+00   .356865981211E+00
+   .368470372648E+00   .380452109945E+00   .392823463449E+00   .405597102506E+00   .418786108438E+00
+   .432403987941E+00   .446464686913E+00   .460982604738E+00   .475972609033E+00   .491450050872E+00
+   .507430780509E+00   .523931163606E+00   .540968097998E+00   .558559030995E+00   .576721977248E+00
+   .595475537203E+00   .614838916143E+00   .634831943861E+00   .655475094963E+00   .676789509841E+00
+   .698797016317E+00   .721520152003E+00   .744982187373E+00   .769207149603E+00   .794219847171E+00
+   .820045895265E+00
+ aepotential
+   .344620864381E+05   .335729348910E+05   .326607094679E+05   .317298527617E+05   .307850610750E+05
+   .298308294196E+05   .288714423118E+05   .279109409932E+05   .269531004174E+05   .260014122025E+05
+   .250590723857E+05   .241289743073E+05   .232137061556E+05   .223155526546E+05   .214365006885E+05
+   .205782481780E+05   .197422158561E+05   .189295613384E+05   .181411950859E+05   .173777977152E+05
+   .166398382559E+05   .159275929117E+05   .152411639803E+05   .145804985929E+05   .139454070005E+05
+   .133355801830E+05   .127506065798E+05   .121899878290E+05   .116531533851E+05   .111394739797E+05
+   .106482738762E+05   .101788419327E+05   .973044147139E+04   .930231902072E+04   .889371196167E+04
+   .850385516385E+04   .813198665588E+04   .777735243911E+04   .743921050565E+04   .711683412068E+04
+   .680951449358E+04   .651656285928E+04   .623731207683E+04   .597111778273E+04   .571735918511E+04
+   .547543952008E+04   .524478624895E+04   .502485103028E+04   .481510949625E+04   .461506088322E+04
+   .442422753164E+04   .424215429199E+04   .406840786784E+04   .390257606950E+04   .374426708320E+04
+   .359310864864E+04   .344874729194E+04   .331084749161E+04   .317909090091E+04   .305317553308E+04
+   .293281500979E+04   .281773778683E+04   .270768642593E+04   .260241688250E+04   .250169782385E+04
+   .240530996858E+04   .231304545700E+04   .222470724985E+04   .214010855063E+04   .205907226117E+04
+   .198143045752E+04   .190702389788E+04   .183570154950E+04   .176732014469E+04   .170174376187E+04
+   .163884341822E+04   .157849670118E+04   .152058740347E+04   .146500519043E+04   .141164527724E+04
+   .136040813035E+04   .131119918080E+04   .126392855649E+04   .121851082761E+04   .117486476841E+04
+   .113291313152E+04   .109258243223E+04   .105380275072E+04   .101650753965E+04   .980633446472E+03
+   .946120143433E+03   .912910169256E+03   .880948776621E+03   .850183792788E+03   .820565482959E+03
+   .792046425154E+03   .764581390092E+03   .738127227908E+03   .712642762779E+03   .688088691006E+03
+   .664427485954E+03   .641623309210E+03   .619641924627E+03   .598450617897E+03   .578018121645E+03
+   .558314542462E+03   .539311293781E+03   .520981031521E+03   .503297592970E+03   .486235939917E+03
+   .469772103352E+03   .453883132589E+03   .438547046213E+03   .423742785978E+03   .409450172651E+03
+   .395649864932E+03   .382323319715E+03   .369452755171E+03   .357021114941E+03   .345012034961E+03
+   .333409811120E+03   .322199369640E+03   .311366237899E+03   .300896517183E+03   .290776857231E+03
+   .280994431097E+03   .271536912121E+03   .262392451581E+03   .253549657589E+03   .244997574942E+03
+   .236725666004E+03   .228723792657E+03   .220982198738E+03   .213491493677E+03   .206242636794E+03
+   .199226922258E+03   .192435964878E+03   .185861686483E+03   .179496302942E+03   .173332311815E+03
+   .167362480543E+03   .161579835190E+03   .155977649674E+03   .150549435529E+03   .145288932112E+03
+   .140190097209E+03   .135247098073E+03   .130454302933E+03   .125806272739E+03   .121297753428E+03
+   .116923668358E+03   .112679111224E+03   .108559339155E+03   .104559766209E+03   .100675957051E+03
+   .969036209796E+02   .932386061771E+02   .896768941581E+02   .862145945364E+02   .828479399394E+02
+   .795732811790E+02   .763870825897E+02   .732859175903E+02   .702664644175E+02   .673255020247E+02
+   .644599061844E+02   .616666457159E+02   .589427788941E+02   .562854499948E+02   .536918860003E+02
+   .511593934268E+02   .486853553017E+02   .462672282535E+02   .439025397420E+02   .415888854025E+02
+   .393239265054E+02   .371053875305E+02   .349310538513E+02   .327987695257E+02   .307064351866E+02
+   .286520060380E+02   .266334899472E+02   .246489456285E+02   .226964809271E+02   .207742511855E+02
+   .188804577096E+02   .170133463090E+02   .151712059355E+02   .133523673943E+02   .115552021482E+02
+   .977812119341E+01   .801957401914E+01   .627804764882E+01   .455206574938E+01   .284018782908E+01
+   .114100849772E+01  -.546843190099E+00  -.222470432416E+01  -.389387865170E+01  -.555563702498E+01
+  -.721121777413E+01  -.886182701424E+01  -.105086388850E+02  -.121527957221E+02  -.137954081656E+02
+  -.154375552027E+02  -.170802841491E+02  -.187246105688E+02  -.203715181315E+02  -.220219584159E+02
+  -.236768506503E+02  -.253370814013E+02  -.270035042054E+02  -.286769391470E+02  -.303581723845E+02
+  -.320479556231E+02  -.337470055368E+02  -.354560031382E+02  -.371755930961E+02  -.389063829998E+02
+  -.406489425672E+02  -.424038027938E+02  -.441714550387E+02  -.459523500399E+02  -.477468968516E+02
+  -.495554616915E+02  -.513783666850E+02  -.532158884890E+02  -.550682567708E+02  -.569356525179E+02
+  -.588182061426E+02  -.607159953416E+02  -.626290426590E+02  -.645573126945E+02  -.665007088812E+02
+  -.684590697493E+02  -.704321645699E+02  -.724196882588E+02  -.744212553972E+02  -.764363932049E+02
+  -.784645332739E+02  -.805050018497E+02  -.825570084189E+02  -.846196323419E+02  -.866918072559E+02
+  -.887723029672E+02  -.908597045751E+02  -.929523886095E+02  -.950484960626E+02  -.971459023431E+02
+  -.992421844218E+02  -.101334585782E+03  -.103419980279E+03  -.105494836659E+03  -.107555186343E+03
+  -.109596598129E+03  -.111614164704E+03  -.113602507280E+03  -.115555806133E+03  -.117467866281E+03
+  -.119332228743E+03  -.121142338730E+03  -.122891782384E+03  -.124574603359E+03  -.126185709187E+03
+  -.127721375786E+03  -.129179849068E+03  -.130562037348E+03  -.131872249654E+03  -.133118881188E+03
+  -.134314825072E+03  -.135477192987E+03  -.136625659703E+03  -.137778518637E+03  -.138945648412E+03
+  -.140118549526E+03  -.141259817826E+03  -.142297364032E+03  -.143130166505E+03  -.143649392083E+03
+  -.143770896700E+03  -.143466650444E+03  -.142779438341E+03  -.141810639779E+03  -.140684648871E+03
+  -.139508468373E+03  -.138347629848E+03  -.137225671915E+03  -.136138333179E+03  -.135069529969E+03
+  -.134002012204E+03  -.132922043139E+03  -.131820225779E+03  -.130690626727E+03  -.129529519065E+03
+  -.128334338388E+03  -.127103016727E+03  -.125833658340E+03  -.124524453614E+03  -.123173726082E+03
+  -.121780032930E+03  -.120342269386E+03  -.118859752079E+03  -.117332272953E+03  -.115760124514E+03
+  -.114144101237E+03  -.112485482930E+03  -.110786005302E+03  -.109047821948E+03  -.107273460804E+03
+  -.105465777240E+03  -.103627905226E+03  -.101763207541E+03  -.998752256539E+02  -.979676297084E+02
+  -.960441689068E+02  -.941086224963E+02  -.921647514802E+02  -.902162518570E+02  -.882667076453E+02
+  -.863195480576E+02
+ core charge-density
+   .625549835994E-05   .666800504134E-05   .710770694600E-05   .757639628637E-05   .807598331802E-05
+   .860850410778E-05   .917612881239E-05   .978117050118E-05   .104260945584E-04   .111135287033E-04
+   .118462736682E-04   .126273145781E-04   .134598330771E-04   .143472202518E-04   .152930904017E-04
+   .163012957151E-04   .173759419064E-04   .185214048808E-04   .197423484910E-04   .210437434593E-04
+   .224308875404E-04   .239094270056E-04   .254853795358E-04   .271651586146E-04   .289555995192E-04
+   .308639870146E-04   .328980848607E-04   .350661672522E-04   .373770523150E-04   .398401377963E-04
+   .424654390887E-04   .452636297410E-04   .482460846186E-04   .514249258846E-04   .548130719857E-04
+   .584242898380E-04   .622732504215E-04   .663755880027E-04   .707479632232E-04   .754081303033E-04
+   .803750086285E-04   .856687590020E-04   .913108648668E-04   .973242188169E-04   .103733214742E-03
+   .110563845969E-03   .117843809786E-03   .125602618763E-03   .133871719311E-03   .142684617931E-03
+   .152077015675E-03   .162086951316E-03   .172754953815E-03   .184124204661E-03   .196240710731E-03
+   .209153488342E-03   .222914759203E-03   .237580159043E-03   .253208959714E-03   .269864305635E-03
+   .287613465490E-03   .306528100151E-03   .326684547867E-03   .348164127795E-03   .371053463070E-03
+   .395444824619E-03   .421436497058E-03   .449133168056E-03   .478646342645E-03   .510094784058E-03
+   .543604982759E-03   .579311655433E-03   .617358275824E-03   .657897639406E-03   .701092464009E-03
+   .747116028632E-03   .796152852835E-03   .848399419223E-03   .904064941684E-03   .963372182234E-03
+   .102655831945E-02   .109387587165E-02   .116559367828E-02   .124199794286E-02   .132339334157E-02
+   .141010420110E-02   .150247575032E-02   .160087545001E-02   .170569440540E-02   .181734886664E-02
+   .193628182230E-02   .206296469151E-02   .219789912070E-02   .234161889100E-02   .249469194297E-02
+   .265772252544E-02   .283135347583E-02   .301626863953E-02   .321319543645E-02   .342290758323E-02
+   .364622797998E-02   .388403177110E-02   .413724958987E-02   .440687099725E-02   .469394812583E-02
+   .499959954031E-02   .532501432642E-02   .567145642088E-02   .604026919554E-02   .643288030937E-02
+   .685080684263E-02   .729566072830E-02   .776915449617E-02   .827310734610E-02   .880945156718E-02
+   .938023932048E-02   .998764980358E-02   .106339968159E-01   .113217367443E-01   .120534769893E-01
+   .128319848529E-01   .136601969090E-01   .145412288792E-01   .154783860366E-01   .164751741595E-01
+   .175353110613E-01   .186627387172E-01   .198616360155E-01   .211364321554E-01   .224918207178E-01
+   .239327744331E-01   .254645606710E-01   .270927576767E-01   .288232715768E-01   .306623541799E-01
+   .326166215923E-01   .346930736722E-01   .368991143409E-01   .392425727696E-01   .417317254593E-01
+   .443753192252E-01   .471825950990E-01   .501633131551E-01   .533277782643E-01   .566868667757E-01
+   .602520541187E-01   .640354433157E-01   .680497943852E-01   .723085546110E-01   .768258896433E-01
+   .816167153881E-01   .866967306317E-01   .920824503355E-01   .977912395230E-01   .103841347667E+00
+   .110251943473E+00   .117043149927E+00   .124236079476E+00   .131852869168E+00   .139916715573E+00
+   .148451909274E+00   .157483868688E+00   .167039172970E+00   .177145593679E+00   .187832124907E+00
+   .199129011493E+00   .211067774932E+00   .223681236533E+00   .237003537347E+00   .251070154350E+00
+   .265917912286E+00   .281584990564E+00   .298110924537E+00   .315536600407E+00   .333904243004E+00
+   .353257395572E+00   .373640890661E+00   .395100811173E+00   .417684440517E+00   .441440200801E+00
+   .466417577909E+00   .492667032246E+00   .520239893902E+00   .549188240900E+00   .579564759170E+00
+   .611422582830E+00   .644815113329E+00   .679795815970E+00   .716417992322E+00   .754734527020E+00
+   .794797607463E+00   .836658414955E+00   .880366785870E+00   .925970841497E+00   .973516585329E+00
+   .102304746666E+01   .107460390956E+01   .112822280638E+01   .118393697538E+01   .124177458210E+01
+   .130175852453E+01   .136390578269E+01   .142822673320E+01   .149472443039E+01   .156339385578E+01
+   .163422113833E+01   .170718274867E+01   .178224467121E+01   .185936155863E+01   .193847587451E+01
+   .201951703024E+01   .210240052383E+01   .218702708883E+01   .227328186302E+01   .236103358719E+01
+   .245013384581E+01   .254041636236E+01   .263169636304E+01   .272377002387E+01   .281641401710E+01
+   .290938517367E+01   .300242027945E+01   .309523602333E+01   .318752911609E+01   .327897659887E+01
+   .336923636007E+01   .345794787948E+01   .354473321719E+01   .362919826436E+01   .371093427085E+01
+   .378951966301E+01   .386452216249E+01   .393550121345E+01   .400201072252E+01   .406360211102E+01
+   .411982767477E+01   .417024424100E+01   .421441710619E+01   .425192423234E+01   .428236067202E+01
+   .430534318581E+01   .432051500785E+01   .432755070794E+01   .432616109105E+01   .431609806767E+01
+   .429715942168E+01   .426919339592E+01   .423210301053E+01   .418585002452E+01   .413045844838E+01
+   .406601751409E+01   .399268400981E+01   .391068388909E+01   .382031307013E+01   .372193734800E+01
+   .361599135397E+01   .350297650932E+01   .338345793746E+01   .325806031784E+01   .312746268671E+01
+   .299239221437E+01   .285361701458E+01   .271193806915E+01   .256818037860E+01   .242318347665E+01
+   .227779147070E+01   .213284279909E+01   .198915989658E+01   .184753899553E+01   .170874027411E+01
+   .157347856698E+01   .144241483371E+01   .131614854842E+01   .119521112569E+01   .108006043765E+01
+   .971076418067E+00   .868557721402E+00   .772719447114E+00   .683692073759E+00   .601521935591E+00
+   .526173696431E+00   .457535189769E+00   .395424650783E+00   .339599878201E+00   .289768462616E+00
+   .245598123128E+00   .206726459316E+00   .172769862786E+00   .143331658667E+00   .118009628694E+00
+   .964029802611E-01   .781187114291E-01   .627772595572E-01   .500173176187E-01   .394997339384E-01
+   .309104557903E-01   .239625219489E-01   .183971482330E-01   .139839814991E-01   .105206211709E-01
+   .783152347062E-02   .576641243399E-02   .419832401429E-02   .302140579039E-02   .214858584976E-02
+   .150921140926E-02   .104674188219E-02   .716563673537E-03   .483976205693E-03   .322381627428E-03
+   .211695211051E-03   .136980222199E-03   .873004178539E-04   .547754089416E-04   .338188194079E-04
+   .205362239785E-04   .122588804757E-04   .718986054261E-05   .414088618653E-05   .234058876995E-05
+   .129766794578E-05
+ kinetic energy-density
+   .132176025795E+00   .133935190758E+00   .135761668823E+00   .137658262485E+00   .139627986720E+00
+   .141674035833E+00   .143799794426E+00   .146008844928E+00   .148304976284E+00   .150692193057E+00
+   .153174724964E+00   .155757037169E+00   .158443841093E+00   .161240106033E+00   .164151071593E+00
+   .167182260952E+00   .170339495149E+00   .173628908334E+00   .177056964154E+00   .180630473327E+00
+   .184356612448E+00   .188242944155E+00   .192297438694E+00   .196528496986E+00   .200944975290E+00
+   .205556211542E+00   .210372053444E+00   .215402888447E+00   .220659675688E+00   .226153980051E+00
+   .231898008388E+00   .237904648105E+00   .244187508236E+00   .250760963072E+00   .257640198646E+00
+   .264841262088E+00   .272381114163E+00   .280277685096E+00   .288549933816E+00   .297217911178E+00
+   .306302826851E+00   .315827120668E+00   .325814538349E+00   .336290211906E+00   .347280745353E+00
+   .358814305519E+00   .370920718749E+00   .383631573741E+00   .396980330632E+00   .411002437249E+00
+   .425735452489E+00   .441219177486E+00   .457495795227E+00   .474610018769E+00   .492609248970E+00
+   .511543742045E+00   .531466787872E+00   .552434899374E+00   .574508014020E+00   .597749707978E+00
+   .622227423754E+00   .648012712331E+00   .675181490499E+00   .703814314438E+00   .733996670649E+00
+   .765819285087E+00   .799378452009E+00   .834776383364E+00   .872121580296E+00   .911529228018E+00
+   .953121615574E+00   .997028581984E+00   .104338799046E+01   .109234623230E+01   .114405876274E+01
+   .119869066993E+01   .125641728002E+01   .131742479982E+01   .138191099985E+01   .145008593986E+01
+   .152217273989E+01   .159840839916E+01   .167904466597E+01   .176434896181E+01   .185460536262E+01
+   .195011564109E+01   .205120037326E+01   .215820011361E+01   .227147664259E+01   .239141429086E+01
+   .251842134511E+01   .265293153969E+01   .279540564002E+01   .294633312225E+01   .310623395535E+01
+   .327566049175E+01   .345519947206E+01   .364547415152E+01   .384714655437E+01   .406091986370E+01
+   .428754095473E+01   .452780307932E+01   .478254871036E+01   .505267255494E+01   .533912474579E+01
+   .564291422071E+01   .596511230019E+01   .630685647417E+01   .666935440928E+01   .705388818805E+01
+   .746181879232E+01   .789459084458E+01   .835373761891E+01   .884088633706E+01   .935776376336E+01
+   .990620211314E+01   .104881452909E+02   .111056554739E+02   .117609200576E+02   .124562589809E+02
+   .131941324473E+02   .139771490622E+02   .148080744026E+02   .156898400404E+02   .166255530370E+02
+   .176185059297E+02   .186721872297E+02   .197902924519E+02   .209767356968E+02   .222356618045E+02
+   .235714591012E+02   .249887727582E+02   .264925187826E+02   .280878986594E+02   .297804146618E+02
+   .315758858496E+02   .334804647683E+02   .355006548677E+02   .376433286489E+02   .399157465539E+02
+   .423255766040E+02   .448809147943E+02   .475903062448E+02   .504627671092E+02   .535078072330E+02
+   .567354535528E+02   .601562742178E+02   .637814034155E+02   .676225668666E+02   .716921079591E+02
+   .760030144672E+02   .805689458084E+02   .854042607667E+02   .905240456056E+02   .959441424815E+02
+   .101681178049E+03   .107752592143E+03   .114176666392E+03   .120972552609E+03   .128160300793E+03
+   .135760886523E+03   .143796237537E+03   .152289259245E+03   .161263858899E+03   .170744968109E+03
+   .180758563383E+03   .191331684306E+03   .202492448959E+03   .214270066138E+03   .226694843879E+03
+   .239798193771E+03   .253612630490E+03   .268171765933E+03   .283510297290E+03   .299663988351E+03
+   .316669643277E+03   .334565072038E+03   .353389046636E+03   .373181247220E+03   .393982197127E+03
+   .415833185818E+03   .438776178681E+03   .462853712577E+03   .488108776000E+03   .514584672670E+03
+   .542324867365E+03   .571372812760E+03   .601771756058E+03   .633564524166E+03   .666793286221E+03
+   .701499292269E+03   .737722586982E+03   .775501697325E+03   .814873293226E+03   .855871820381E+03
+   .898529104489E+03   .942873926389E+03   .988931567784E+03   .103672332747E+04   .108626600830E+04
+   .113757137544E+04   .119064558683E+04   .124548859720E+04   .130209353751E+04   .136044607208E+04
+   .142052373640E+04   .148229525921E+04   .154571987295E+04   .161074661763E+04   .167731364382E+04
+   .174534752129E+04   .181476256062E+04   .188546015605E+04   .195732815867E+04   .203024028995E+04
+   .210405560636E+04   .217861802691E+04   .225375593595E+04   .232928187445E+04   .240499233356E+04
+   .248066766472E+04   .255607212096E+04   .263095404408E+04   .270504621268E+04   .277806636514E+04
+   .284971791180E+04   .291969084901E+04   .298766288709E+04   .305330080234E+04   .311626202128E+04
+   .317619644332E+04   .323274850470E+04   .328555948400E+04   .333427004551E+04   .337852301282E+04
+   .341796636105E+04   .345225641087E+04   .348106120307E+04   .350406402702E+04   .352096707125E+04
+   .353149515895E+04   .353539952622E+04   .353246159564E+04   .352249669327E+04   .350535765276E+04
+   .348093824682E+04   .344917638314E+04   .341005700022E+04   .336361459689E+04   .330993533011E+04
+   .324915861635E+04   .318147817463E+04   .310714245333E+04   .302645438806E+04   .293977044482E+04
+   .284749891086E+04   .275009740545E+04   .264806959424E+04   .254196110373E+04   .243235464705E+04
+   .231986438895E+04   .220512959614E+04   .208880763954E+04   .197156643697E+04   .185407644573E+04
+   .173700236837E+04   .162099461974E+04   .150668097393E+04   .139465831045E+04   .128548489127E+04
+   .117967334783E+04   .107768468195E+04   .979923607561E+03   .886735573996E+03   .798405745392E+03
+   .715159972906E+03   .637167313519E+03   .564542994768E+03   .497350259215E+03   .435599806459E+03
+   .379246858276E+03   .328187667685E+03   .282258420739E+03   .241239058244E+03   .204862611625E+03
+   .172828208383E+03   .144814513432E+03   .120490951119E+03   .995258554820E+02   .815921605138E+02
+   .663716392437E+02   .535583897932E+02   .428618420638E+02   .340093008571E+02   .267479559883E+02
+   .208462991666E+02   .160949283081E+02   .123067613777E+02   .931671330706E+01   .698090988085E+01
+   .517552365756E+01   .379532122669E+01   .275201013792E+01   .197246887711E+01   .139693522036E+01
+   .977217978443E+00   .674985355080E+00   .460170689103E+00   .309524004753E+00   .205326232749E+00
+   .134272726203E+00   .865241474580E-01   .549161358338E-01   .343144068647E-01   .210989666792E-01
+   .127597318321E-01   .758574113557E-02   .443101963639E-02   .254169787533E-02   .143092283623E-02
+   .790186700406E-03
+ pspotential
+  -.153267498751E+03  -.153268334719E+03  -.153269144358E+03  -.153269928498E+03  -.153270687940E+03
+  -.153271423465E+03  -.153272135824E+03  -.153272825746E+03  -.153273493938E+03  -.153274141086E+03
+  -.153274767850E+03  -.153275374873E+03  -.153275962777E+03  -.153276532163E+03  -.153277083615E+03
+  -.153277617698E+03  -.153278134957E+03  -.153278635922E+03  -.153279121108E+03  -.153279591009E+03
+  -.153280046109E+03  -.153280486871E+03  -.153280913748E+03  -.153281327177E+03  -.153281727581E+03
+  -.153282115370E+03  -.153282490940E+03  -.153282854677E+03  -.153283206952E+03  -.153283548126E+03
+  -.153283878548E+03  -.153284198557E+03  -.153284508479E+03  -.153284808632E+03  -.153285099324E+03
+  -.153285380850E+03  -.153285653501E+03  -.153285917553E+03  -.153286173278E+03  -.153286420936E+03
+  -.153286660782E+03  -.153286893059E+03  -.153287118007E+03  -.153287335853E+03  -.153287546822E+03
+  -.153287751128E+03  -.153287948980E+03  -.153288140580E+03  -.153288326123E+03  -.153288505800E+03
+  -.153288679792E+03  -.153288848278E+03  -.153289011428E+03  -.153289169410E+03  -.153289322383E+03
+  -.153289470504E+03  -.153289613923E+03  -.153289752785E+03  -.153289887232E+03  -.153290017399E+03
+  -.153290143418E+03  -.153290265418E+03  -.153290383520E+03  -.153290497845E+03  -.153290608507E+03
+  -.153290715618E+03  -.153290819284E+03  -.153290919611E+03  -.153291016697E+03  -.153291110640E+03
+  -.153291201533E+03  -.153291289466E+03  -.153291374526E+03  -.153291456797E+03  -.153291536359E+03
+  -.153291613289E+03  -.153291687662E+03  -.153291759550E+03  -.153291829021E+03  -.153291896142E+03
+  -.153291960976E+03  -.153292023584E+03  -.153292084023E+03  -.153292142348E+03  -.153292198613E+03
+  -.153292252867E+03  -.153292305158E+03  -.153292355532E+03  -.153292404029E+03  -.153292450691E+03
+  -.153292495556E+03  -.153292538656E+03  -.153292580026E+03  -.153292619695E+03  -.153292657691E+03
+  -.153292694037E+03  -.153292728756E+03  -.153292761868E+03  -.153292793388E+03  -.153292823331E+03
+  -.153292851708E+03  -.153292878528E+03  -.153292903794E+03  -.153292927509E+03  -.153292949673E+03
+  -.153292970281E+03  -.153292989325E+03  -.153293006793E+03  -.153293022672E+03  -.153293036943E+03
+  -.153293049582E+03  -.153293060563E+03  -.153293069855E+03  -.153293077423E+03  -.153293083226E+03
+  -.153293087219E+03  -.153293089351E+03  -.153293089567E+03  -.153293087804E+03  -.153293083994E+03
+  -.153293078063E+03  -.153293069929E+03  -.153293059505E+03  -.153293046693E+03  -.153293031390E+03
+  -.153293013483E+03  -.153292992849E+03  -.153292969357E+03  -.153292942866E+03  -.153292913222E+03
+  -.153292880262E+03  -.153292843808E+03  -.153292803672E+03  -.153292759650E+03  -.153292711525E+03
+  -.153292659062E+03  -.153292602011E+03  -.153292540105E+03  -.153292473056E+03  -.153292400559E+03
+  -.153292322284E+03  -.153292237881E+03  -.153292146975E+03  -.153292049166E+03  -.153291944026E+03
+  -.153291831096E+03  -.153291709890E+03  -.153291579885E+03  -.153291440524E+03  -.153291291215E+03
+  -.153291131321E+03  -.153290960167E+03  -.153290777030E+03  -.153290581140E+03  -.153290371673E+03
+  -.153290147752E+03  -.153289908442E+03  -.153289652744E+03  -.153289379593E+03  -.153289087853E+03
+  -.153288776312E+03  -.153288443679E+03  -.153288088575E+03  -.153287709530E+03  -.153287304978E+03
+  -.153286873247E+03  -.153286412556E+03  -.153285921003E+03  -.153285396563E+03  -.153284837074E+03
+  -.153284240234E+03  -.153283603586E+03  -.153282924511E+03  -.153282200217E+03  -.153281427727E+03
+  -.153280603866E+03  -.153279725251E+03  -.153278788273E+03  -.153277789085E+03  -.153276723588E+03
+  -.153275587408E+03  -.153274375886E+03  -.153273084050E+03  -.153271706604E+03  -.153270237900E+03
+  -.153268671918E+03  -.153267002237E+03  -.153265222017E+03  -.153263323962E+03  -.153261300295E+03
+  -.153259142728E+03  -.153256842423E+03  -.153254389959E+03  -.153251775295E+03  -.153248987724E+03
+  -.153246015835E+03  -.153242847465E+03  -.153239469645E+03  -.153235868555E+03  -.153232029459E+03
+  -.153227936653E+03  -.153223573395E+03  -.153218921843E+03  -.153213962975E+03  -.153208676519E+03
+  -.153203040866E+03  -.153197032984E+03  -.153190628326E+03  -.153183800728E+03  -.153176522303E+03
+  -.153168763333E+03  -.153160492144E+03  -.153151674979E+03  -.153142275862E+03  -.153132256458E+03
+  -.153121575910E+03  -.153110190681E+03  -.153098054380E+03  -.153085117571E+03  -.153071327580E+03
+  -.153056628283E+03  -.153040959881E+03  -.153024258665E+03  -.153006456759E+03  -.152987481856E+03
+  -.152967256927E+03  -.152945699921E+03  -.152922723439E+03  -.152898234395E+03  -.152872133647E+03
+  -.152844315614E+03  -.152814667865E+03  -.152783070683E+03  -.152749396601E+03  -.152713509918E+03
+  -.152675266173E+03  -.152634511599E+03  -.152591082542E+03  -.152544804840E+03  -.152495493173E+03
+  -.152442950375E+03  -.152386966703E+03  -.152327319066E+03  -.152263770217E+03  -.152196067893E+03
+  -.152123943913E+03  -.152047113229E+03  -.151965272928E+03  -.151878101180E+03  -.151785256138E+03
+  -.151686374786E+03  -.151581071732E+03  -.151468937946E+03  -.151349539448E+03  -.151222415938E+03
+  -.151087079381E+03  -.150943012535E+03  -.150789667437E+03  -.150626463844E+03  -.150452787634E+03
+  -.150267989181E+03  -.150071381702E+03  -.149862239601E+03  -.149639796804E+03  -.149403245124E+03
+  -.149151732663E+03  -.148884362277E+03  -.148600190139E+03  -.148298224436E+03  -.147977424245E+03
+  -.147636698633E+03  -.147274906062E+03  -.146890854152E+03  -.146483299908E+03  -.146050950508E+03
+  -.145592464773E+03  -.145106455457E+03  -.144591492526E+03  -.144046107597E+03  -.143468799752E+03
+  -.142858042941E+03  -.142212295229E+03  -.141530010130E+03  -.140809650298E+03  -.140049703820E+03
+  -.139248703340E+03  -.138405248186E+03  -.137518029605E+03  -.136585859073E+03  -.135607699519E+03
+  -.134582699073E+03  -.133510226679E+03  -.132389908643E+03  -.131221664747E+03  -.130005742202E+03
+  -.128742745182E+03  -.127433657208E+03  -.126079853056E+03  -.124683096318E+03  -.123245518152E+03
+  -.121769572251E+03  -.120257960715E+03  -.118713525584E+03  -.117139101555E+03  -.115537327466E+03
+  -.113910418052E+03  -.112259903701E+03  -.110586354425E+03  -.108889113652E+03  -.107166074813E+03
+  -.105413536199E+03  -.103626169033E+03  -.101788508452E+03  -.999430277917E+02  -.980420648473E+02
+  -.960785627187E+02  -.940556466143E+02  -.921485909176E+02  -.902256659693E+02  -.882744476111E+02
+  -.863187908432E+02
+ core charge-density (pseudized)
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ pseudo wavefunction
+   .165601274856E-03   .170986215157E-03   .176546260279E-03   .182287104195E-03   .188214626029E-03
+   .194334896081E-03   .200654182042E-03   .207178955413E-03   .213915898130E-03   .220871909412E-03
+   .228054112820E-03   .235469863558E-03   .243126756002E-03   .251032631476E-03   .259195586288E-03
+   .267623980014E-03   .276326444066E-03   .285311890524E-03   .294589521270E-03   .304168837407E-03
+   .314059648988E-03   .324272085066E-03   .334816604067E-03   .345704004495E-03   .356945435997E-03
+   .368552410777E-03   .380536815389E-03   .392910922904E-03   .405687405487E-03   .418879347365E-03
+   .432500258235E-03   .446564087093E-03   .461085236521E-03   .476078577438E-03   .491559464327E-03
+   .507543750959E-03   .524047806630E-03   .541088532924E-03   .558683381021E-03   .576850369569E-03
+   .595608103136E-03   .614975791265E-03   .634973268142E-03   .655621012910E-03   .676940170642E-03
+   .698952573993E-03   .721680765562E-03   .745148020973E-03   .769378372712E-03   .794396634742E-03
+   .820228427910E-03   .846900206184E-03   .874439283748E-03   .902873862971E-03   .932233063289E-03
+   .962546951024E-03   .993846570176E-03   .102616397421E-02   .105953225889E-02   .109398559615E-02
+   .112955926913E-02   .116628970826E-02   .120421452859E-02   .124337256831E-02   .128380392853E-02
+   .132555001431E-02   .136865357713E-02   .141315875859E-02   .145911113565E-02   .150655776733E-02
+   .155554724285E-02   .160612973141E-02   .165835703357E-02   .171228263430E-02   .176796175772E-02
+   .182545142368E-02   .188481050614E-02   .194609979345E-02   .200938205063E-02   .207472208357E-02
+   .214218680549E-02   .221184530537E-02   .228376891874E-02   .235803130072E-02   .243470850144E-02
+   .251387904391E-02   .259562400442E-02   .268002709556E-02   .276717475196E-02   .285715621874E-02
+   .295006364293E-02   .304599216783E-02   .314504003038E-02   .324730866178E-02   .335290279132E-02
+   .346193055363E-02   .357450359938E-02   .369073720957E-02   .381075041359E-02   .393466611106E-02
+   .406261119765E-02   .419471669497E-02   .433111788476E-02   .447195444729E-02   .461737060442E-02
+   .476751526719E-02   .492254218825E-02   .508261011925E-02   .524788297332E-02   .541852999284E-02
+   .559472592264E-02   .577665118885E-02   .596449208355E-02   .615844095538E-02   .635869640641E-02
+   .656546349531E-02   .677895394718E-02   .699938637020E-02   .722698647920E-02   .746198732663E-02
+   .770462954092E-02   .795516157261E-02   .821383994844E-02   .848092953369E-02   .875670380303E-02
+   .904144512013E-02   .933544502630E-02   .963900453860E-02   .995243445741E-02   .102760556841E-01
+   .106101995490E-01   .109552081499E-01   .113114347013E-01   .116792438955E-01   .120590122749E-01
+   .124511286162E-01   .128559943277E-01   .132740238587E-01   .137056451223E-01   .141512999320E-01
+   .146114444525E-01   .150865496644E-01   .155771018444E-01   .160836030610E-01   .166065716853E-01
+   .171465429196E-01   .177040693415E-01   .182797214664E-01   .188740883277E-01   .194877780754E-01
+   .201214185942E-01   .207756581406E-01   .214511660017E-01   .221486331730E-01   .228687730598E-01
+   .236123221990E-01   .243800410052E-01   .251727145395E-01   .259911533031E-01   .268361940553E-01
+   .277087006579E-01   .286095649458E-01   .295397076241E-01   .305000791949E-01   .314916609108E-01
+   .325154657596E-01   .335725394789E-01   .346639616015E-01   .357908465336E-01   .369543446654E-01
+   .381556435158E-01   .393959689112E-01   .406765862011E-01   .419988015081E-01   .433639630173E-01
+   .447734623020E-01   .462287356896E-01   .477312656669E-01   .492825823258E-01   .508842648510E-01
+   .525379430496E-01   .542452989239E-01   .560080682881E-01   .578280424287E-01   .597070698116E-01
+   .616470578325E-01   .636499746161E-01   .657178508593E-01   .678527817232E-01   .700569287714E-01
+   .723325219554E-01   .746818616470E-01   .771073207187E-01   .796113466687E-01   .821964637939E-01
+   .848652754061E-01   .876204660936E-01   .904648040245E-01   .934011432916E-01   .964324262953E-01
+   .995616861634E-01   .102792049205E+00   .106126737391E+00   .109569070868E+00   .113122470484E+00
+   .116790460339E+00   .120576670337E+00   .124484838752E+00   .128518814779E+00   .132682561076E+00
+   .136980156286E+00   .141415797513E+00   .145993802769E+00   .150718613337E+00   .155594796077E+00
+   .160627045623E+00   .165820186468E+00   .171179174922E+00   .176709100891E+00   .182415189482E+00
+   .188302802382E+00   .194377438986E+00   .200644737239E+00   .207110474140E+00   .213780565882E+00
+   .220661067553E+00   .227758172370E+00   .235078210363E+00   .242627646458E+00   .250413077873E+00
+   .258441230761E+00   .266718955998E+00   .275253224027E+00   .284051118653E+00   .293119829670E+00
+   .302466644194E+00   .312098936569E+00   .322024156685E+00   .332249816565E+00   .342783475014E+00
+   .353632720169E+00   .364805149715E+00   .376308348564E+00   .388149863728E+00   .400337176150E+00
+   .412877669191E+00   .425778593474E+00   .439047027769E+00   .452689835565E+00   .466713616955E+00
+   .481124655463E+00   .495928859375E+00   .511131697159E+00   .526738126515E+00   .542752516577E+00
+   .559178562785E+00   .576019193926E+00   .593276470840E+00   .610951476266E+00   .629044195346E+00
+   .647553386288E+00   .666476440712E+00   .685809233285E+00   .705545960242E+00   .725678966536E+00
+   .746198561387E+00   .767092822191E+00   .788347386848E+00   .809945234816E+00   .831866457373E+00
+   .854088017907E+00   .876583503344E+00   .899322868247E+00   .922272173564E+00   .945393322553E+00
+   .968643796991E+00   .991976397530E+00   .101533899278E+01   .103867428264E+01   .106191958231E+01
+   .108500663448E+01   .110786145843E+01   .113040424569E+01   .115254931351E+01   .117420512822E+01
+   .119527441206E+01   .121565434786E+01   .123523689697E+01   .125390924631E+01   .127155440041E+01
+   .128805193389E+01   .130327891850E+01   .131711103614E+01   .132942388590E+01   .134009448735E+01
+   .134900297496E+01   .135603446881E+01   .136108109375E+01   .136404410364E+01   .136483604759E+01
+   .136338289235E+01   .135962598792E+01   .135352373274E+01   .134505276160E+01   .133420844359E+01
+   .132100444141E+01   .130547105033E+01   .128765200718E+01   .126759944388E+01   .124536666092E+01
+   .122099842355E+01   .119451854586E+01   .116591463800E+01   .113513192355E+01   .110229857916E+01
+   .106760690066E+01   .103126913660E+01   .993503299915E+00   .954531323645E+00   .914577215088E+00
+   .873865221786E+00
+ ae wavefunction
+  -.779383096528E-03  -.804670312887E-03  -.830777581751E-03  -.857731471485E-03  -.885559409570E-03
+  -.914289710274E-03  -.943951603198E-03  -.974575262735E-03  -.100619183847E-02  -.103883348655E-02
+  -.107253340205E-02  -.110732585237E-02  -.114324621168E-02  -.118033099650E-02  -.121861790238E-02
+  -.125814584174E-02  -.129895498293E-02  -.134108679051E-02  -.138458406684E-02  -.142949099492E-02
+  -.147585318269E-02  -.152371770861E-02  -.157313316876E-02  -.162414972543E-02  -.167681915716E-02
+  -.173119491046E-02  -.178733215307E-02  -.184528782898E-02  -.190512071508E-02  -.196689147963E-02
+  -.203066274263E-02  -.209649913792E-02  -.216446737738E-02  -.223463631706E-02  -.230707702532E-02
+  -.238186285320E-02  -.245906950689E-02  -.253877512250E-02  -.262106034307E-02  -.270600839809E-02
+  -.279370518532E-02  -.288423935523E-02  -.297770239805E-02  -.307418873338E-02  -.317379580270E-02
+  -.327662416455E-02  -.338277759273E-02  -.349236317747E-02  -.360549142956E-02  -.372227638785E-02
+  -.384283572975E-02  -.396729088528E-02  -.409576715439E-02  -.422839382787E-02  -.436530431191E-02
+  -.450663625628E-02  -.465253168635E-02  -.480313713910E-02  -.495860380302E-02  -.511908766224E-02
+  -.528474964477E-02  -.545575577518E-02  -.563227733166E-02  -.581449100761E-02  -.600257907796E-02
+  -.619672957020E-02  -.639713644035E-02  -.660399975388E-02  -.681752587179E-02  -.703792764195E-02
+  -.726542459571E-02  -.750024315008E-02  -.774261681542E-02  -.799278640894E-02  -.825100027389E-02
+  -.851751450485E-02  -.879259317897E-02  -.907650859340E-02  -.936954150911E-02  -.967198140099E-02
+  -.998412671452E-02  -.103062851291E-01  -.106387738280E-01  -.109819197754E-01  -.113360599999E-01
+  -.117015418854E-01  -.120787234691E-01  -.124679737464E-01  -.128696729834E-01  -.132842130364E-01
+  -.137119976791E-01  -.141534429365E-01  -.146089774276E-01  -.150790427142E-01  -.155640936577E-01
+  -.160645987838E-01  -.165810406541E-01  -.171139162452E-01  -.176637373357E-01  -.182310308994E-01
+  -.188163395071E-01  -.194202217343E-01  -.200432525764E-01  -.206860238705E-01  -.213491447237E-01
+  -.220332419481E-01  -.227389605007E-01  -.234669639306E-01  -.242179348300E-01  -.249925752914E-01
+  -.257916073683E-01  -.266157735405E-01  -.274658371825E-01  -.283425830349E-01  -.292468176777E-01
+  -.301793700053E-01  -.311410917014E-01  -.321328577144E-01  -.331555667305E-01  -.342101416451E-01
+  -.352975300301E-01  -.364187045964E-01  -.375746636502E-01  -.387664315412E-01  -.399950591018E-01
+  -.412616240742E-01  -.425672315256E-01  -.439130142467E-01  -.453001331341E-01  -.467297775521E-01
+  -.482031656720E-01  -.497215447865E-01  -.512861915962E-01  -.528984124638E-01  -.545595436345E-01
+  -.562709514173E-01  -.580340323242E-01  -.598502131628E-01  -.617209510776E-01  -.636477335360E-01
+  -.656320782528E-01  -.676755330486E-01  -.697796756363E-01  -.719461133288E-01  -.741764826622E-01
+  -.764724489270E-01  -.788357056004E-01  -.812679736711E-01  -.837710008495E-01  -.863465606530E-01
+  -.889964513581E-01  -.917224948098E-01  -.945265350766E-01  -.974104369411E-01  -.100376084214E+00
+  -.103425377862E+00  -.106560233929E+00  -.109782581249E+00  -.113094358924E+00  -.116497513566E+00
+  -.119993996267E+00  -.123585759308E+00  -.127274752560E+00  -.131062919588E+00  -.134952193412E+00
+  -.138944491932E+00  -.143041712971E+00  -.147245728938E+00  -.151558381071E+00  -.155981473248E+00
+  -.160516765342E+00  -.165165966088E+00  -.169930725446E+00  -.174812626431E+00  -.179813176378E+00
+  -.184933797634E+00  -.190175817616E+00  -.195540458251E+00  -.201028824724E+00  -.206641893546E+00
+  -.212380499881E+00  -.218245324131E+00  -.224236877725E+00  -.230355488105E+00  -.236601282866E+00
+  -.242974173035E+00  -.249473835456E+00  -.256099694256E+00  -.262850901371E+00  -.269726316115E+00
+  -.276724483765E+00  -.283843613151E+00  -.291081553233E+00  -.298435768663E+00  -.305903314322E+00
+  -.313480808822E+00  -.321164407001E+00  -.328949771388E+00  -.336832042685E+00  -.344805809276E+00
+  -.352865075782E+00  -.361003230735E+00  -.369213013385E+00  -.377486479727E+00  -.385814967803E+00
+  -.394189062379E+00  -.402598559074E+00  -.411032428077E+00  -.419478777565E+00  -.427924816961E+00
+  -.436356820221E+00  -.444760089293E+00  -.453118917987E+00  -.461416556449E+00  -.469635176497E+00
+  -.477755838092E+00  -.485758457214E+00  -.493621775488E+00  -.501323331879E+00  -.508839436836E+00
+  -.516145149286E+00  -.523214256890E+00  -.530019260023E+00  -.536531359954E+00  -.542720451743E+00
+  -.548555122378E+00  -.554002654726E+00  -.559029037887E+00  -.563598984561E+00  -.567675956067E+00
+  -.571222195686E+00  -.574198770982E+00  -.576565625816E+00  -.578281642748E+00  -.579304716540E+00
+  -.579591839480E+00  -.579099199228E+00  -.577782289902E+00  -.575596037067E+00  -.572494937302E+00
+  -.568433212954E+00  -.563364982657E+00  -.557244448127E+00  -.550026097668E+00  -.541664926755E+00
+  -.532116675918E+00  -.521338086057E+00  -.509287171175E+00  -.495923508326E+00  -.481208544420E+00
+  -.465105919304E+00  -.447581804307E+00  -.428605255216E+00  -.408148578344E+00  -.386187708121E+00
+  -.362702594311E+00  -.337677596716E+00  -.311101884914E+00  -.282969840345E+00  -.253281457808E+00
+  -.222042743227E+00  -.189266104353E+00  -.154970730897E+00  -.119182960394E+00  -.819366258111E-01
+  -.432733805088E-01  -.324299545533E-02   .380963775271E-01   .806779844544E-01   .124426300356E+00
+   .169256927002E+00   .215076575501E+00   .261783156083E+00   .309265998475E+00   .357406219523E+00
+   .406077232836E+00   .455145352347E+00   .504470381268E+00   .553906024273E+00   .603299959640E+00
+   .652493503846E+00   .701320993687E+00   .749609226077E+00   .797177403836E+00   .843837924822E+00
+   .889398035072E+00   .933662031769E+00   .976433575826E+00   .101751780301E+01   .105672315067E+01
+   .109386297533E+01   .112875707838E+01   .116123322551E+01   .119112869576E+01   .121829185458E+01
+   .124258372123E+01   .126387948974E+01   .128206996159E+01   .129706285239E+01   .130878394122E+01
+   .131717803816E+01   .132220975218E+01   .132386404652E+01   .132214657395E+01   .131708378801E+01
+   .130872283014E+01   .129713119621E+01   .128239618878E+01   .126462416508E+01   .124393959283E+01
+   .122048392909E+01   .119441433896E+01   .116590227308E+01   .113513192355E+01   .110229857916E+01
+   .106760690066E+01   .103126913660E+01   .993503299915E+00   .954531323645E+00   .914577215088E+00
+   .873865221786E+00
+ pseudo wavefunction
+  -.412220112469E-04  -.425624482010E-04  -.439464728195E-04  -.453755024641E-04  -.468510005858E-04
+  -.483744782236E-04  -.499474955513E-04  -.515716634757E-04  -.532486452866E-04  -.549801583594E-04
+  -.567679759144E-04  -.586139288326E-04  -.605199075306E-04  -.624878638966E-04  -.645198132893E-04
+  -.666178366018E-04  -.687840823927E-04  -.710207690860E-04  -.733301872437E-04  -.757147019107E-04
+  -.781767550374E-04  -.807188679802E-04  -.833436440837E-04  -.860537713465E-04  -.888520251743E-04
+  -.917412712218E-04  -.947244683276E-04  -.978046715442E-04  -.100985035267E-03  -.104268816463E-03
+  -.107659378009E-03  -.111160192133E-03  -.114774843972E-03  -.118507035241E-03  -.122360588027E-03
+  -.126339448699E-03  -.130447691954E-03  -.134689524986E-03  -.139069291798E-03  -.143591477648E-03
+  -.148260713640E-03  -.153081781474E-03  -.158059618336E-03  -.163199321955E-03  -.168506155828E-03
+  -.173985554604E-03  -.179643129654E-03  -.185484674815E-03  -.191516172325E-03  -.197743798948E-03
+  -.204173932299E-03  -.210813157375E-03  -.217668273302E-03  -.224746300292E-03  -.232054486837E-03
+  -.239600317127E-03  -.247391518721E-03  -.255436070452E-03  -.263742210605E-03  -.272318445350E-03
+  -.281173557452E-03  -.290316615266E-03  -.299756982024E-03  -.309504325423E-03  -.319568627522E-03
+  -.329960194969E-03  -.340689669551E-03  -.351768039092E-03  -.363206648708E-03  -.375017212419E-03
+  -.387211825149E-03  -.399802975108E-03  -.412803556582E-03  -.426226883132E-03  -.440086701234E-03
+  -.454397204349E-03  -.469173047458E-03  -.484429362069E-03  -.500181771710E-03  -.516446407924E-03
+  -.533239926792E-03  -.550579525983E-03  -.568482962361E-03  -.586968570171E-03  -.606055279807E-03
+  -.625762637196E-03  -.646110823808E-03  -.667120677320E-03  -.688813712947E-03  -.711212145472E-03
+  -.734338911988E-03  -.758217695378E-03  -.782872948560E-03  -.808329919522E-03  -.834614677163E-03
+  -.861754137983E-03  -.889776093630E-03  -.918709239353E-03  -.948583203367E-03  -.979428577181E-03
+  -.101127694691E-02  -.104416092559E-02  -.107811418657E-02  -.111317149796E-02  -.114936875821E-02
+  -.118674303286E-02  -.122533259242E-02  -.126517695159E-02  -.130631690962E-02  -.134879459210E-02
+  -.139265349403E-02  -.143793852429E-02  -.148469605160E-02  -.153297395193E-02  -.158282165747E-02
+  -.163429020713E-02  -.168743229878E-02  -.174230234307E-02  -.179895651908E-02  -.185745283172E-02
+  -.191785117100E-02  -.198021337325E-02  -.204460328423E-02  -.211108682442E-02  -.217973205627E-02
+  -.225060925375E-02  -.232379097404E-02  -.239935213163E-02  -.247737007471E-02  -.255792466414E-02
+  -.264109835484E-02  -.272697627989E-02  -.281564633733E-02  -.290719927965E-02  -.300172880635E-02
+  -.309933165926E-02  -.320010772105E-02  -.330416011687E-02  -.341159531922E-02  -.352252325622E-02
+  -.363705742327E-02  -.375531499834E-02  -.387741696092E-02  -.400348821471E-02  -.413365771428E-02
+  -.426805859572E-02  -.440682831139E-02  -.455010876899E-02  -.469804647501E-02  -.485079268268E-02
+  -.500850354455E-02  -.517134026996E-02  -.533946928727E-02  -.551306241133E-02  -.569229701603E-02
+  -.587735621227E-02  -.606842903139E-02  -.626571061432E-02  -.646940240646E-02  -.667971235858E-02
+  -.689685513379E-02  -.712105232080E-02  -.735253265363E-02  -.759153223789E-02  -.783829478379E-02
+  -.809307184612E-02  -.835612307119E-02  -.862771645107E-02  -.890812858518E-02  -.919764494940E-02
+  -.949656017280E-02  -.980517832225E-02  -.101238131949E-01  -.104527886188E-01  -.107924387616E-01
+  -.111431084476E-01  -.115051534833E-01  -.118789409908E-01  -.122648497510E-01  -.126632705538E-01
+  -.130746065579E-01  -.134992736592E-01  -.139377008669E-01  -.143903306890E-01  -.148576195256E-01
+  -.153400380707E-01  -.158380717219E-01  -.163522209980E-01  -.168830019638E-01  -.174309466622E-01
+  -.179966035535E-01  -.185805379595E-01  -.191833325146E-01  -.198055876210E-01  -.204479219077E-01
+  -.211109726928E-01  -.217953964482E-01  -.225018692639E-01  -.232310873126E-01  -.239837673115E-01
+  -.247606469798E-01  -.255624854903E-01  -.263900639122E-01  -.272441856433E-01  -.281256768272E-01
+  -.290353867542E-01  -.299741882405E-01  -.309429779831E-01  -.319426768846E-01  -.329742303434E-01
+  -.340386085044E-01  -.351368064621E-01  -.362698444117E-01  -.374387677378E-01  -.386446470349E-01
+  -.398885780472E-01  -.411716815209E-01  -.424951029540E-01  -.438600122329E-01  -.452676031415E-01
+  -.467190927260E-01  -.482157205004E-01  -.497587474713E-01  -.513494549631E-01  -.529891432198E-01
+  -.546791297580E-01  -.564207474440E-01  -.582153422637E-01  -.600642707520E-01  -.619688970453E-01
+  -.639305895159E-01  -.659507169443E-01  -.680306441808E-01  -.701717272434E-01  -.723753077929E-01
+  -.746427069221E-01  -.769752181897E-01  -.793740998211E-01  -.818405659956E-01  -.843757771268E-01
+  -.869808290391E-01  -.896567409320E-01  -.924044420163E-01  -.952247566937E-01  -.981183881437E-01
+  -.101085900167E+00  -.104127697127E+00  -.107244001807E+00  -.110434831009E+00  -.113699968673E+00
+  -.117038936314E+00  -.120450960536E+00  -.123934937372E+00  -.127489393177E+00  -.131112441808E+00
+  -.134801737757E+00  -.138554424943E+00  -.142367080808E+00  -.146235655364E+00  -.150155404816E+00
+  -.154120819373E+00  -.158125544834E+00  -.162162297548E+00  -.166222772304E+00  -.170297542723E+00
+  -.174375953731E+00  -.178446005655E+00  -.182494229536E+00  -.186505553254E+00  -.190463158067E+00
+  -.194348325228E+00  -.198140272376E+00  -.201815979445E+00  -.205350003927E+00  -.208714285396E+00
+  -.211877939310E+00  -.214807040213E+00  -.217464394627E+00  -.219809304039E+00  -.221797318607E+00
+  -.223379982348E+00  -.224504570832E+00  -.225113822576E+00  -.225145665596E+00  -.224532940792E+00
+  -.223203124070E+00  -.221078049349E+00  -.218073634810E+00  -.214099614936E+00  -.209059281106E+00
+  -.202849233644E+00  -.195359148430E+00  -.186471561366E+00  -.176061674254E+00  -.163997186071E+00
+  -.150138154291E+00  -.134336891962E+00  -.116437908003E+00  -.962779008330E-01  -.736858195368E-01
+  -.484830127511E-01  -.204834941246E-01   .105056345896E-01   .446835448931E-01   .822547466436E-01
+   .123427745979E+00   .168413145922E+00   .217420989654E+00   .270657084570E+00   .328317970202E+00
+   .390584105101E+00   .457610748007E+00   .529515901005E+00   .606351591923E+00   .688292477140E+00
+   .775483611861E+00   .868104097163E+00   .966343881368E+00   .107040649767E+01   .118051230869E+01
+   .129690233012E+01
+ ae wavefunction
+   .151059377480E-03   .155960524120E-03   .161020612578E-03   .166244792305E-03   .171638379267E-03
+   .177206861306E-03   .182955903670E-03   .188891354729E-03   .195019251859E-03   .201345827531E-03
+   .207877515575E-03   .214620957660E-03   .221583009967E-03   .228770750086E-03   .236191484124E-03
+   .243852754039E-03   .251762345212E-03   .259928294254E-03   .268358897063E-03   .277062717136E-03
+   .286048594142E-03   .295325652768E-03   .304903311844E-03   .314791293754E-03   .324999634147E-03
+   .335538691950E-03   .346419159699E-03   .357652074193E-03   .369248827483E-03   .381221178204E-03
+   .393581263265E-03   .406341609899E-03   .419515148098E-03   .433115223427E-03   .447155610239E-03
+   .461650525311E-03   .476614641884E-03   .492063104159E-03   .508011542228E-03   .524476087471E-03
+   .541473388430E-03   .559020627168E-03   .577135536133E-03   .595836415542E-03   .615142151292E-03
+   .635072233421E-03   .655646775136E-03   .676886532411E-03   .698812924191E-03   .721448053199E-03
+   .744814727376E-03   .768936481966E-03   .793837602267E-03   .819543147059E-03   .846078972739E-03
+   .873471758171E-03   .901749030273E-03   .930939190367E-03   .961071541300E-03   .992176315370E-03
+   .102428470306E-02   .105742888264E-02   .109164205057E-02   .112695845284E-02   .116341341721E-02
+   .120104338633E-02   .123988595187E-02   .127997988956E-02   .132136519524E-02   .136408312197E-02
+   .140817621812E-02   .145368836653E-02   .150066482477E-02   .154915226652E-02   .159919882404E-02
+   .165085413180E-02   .170416937133E-02   .175919731719E-02   .181599238422E-02   .187461067603E-02
+   .193511003469E-02   .199755009177E-02   .206199232064E-02   .212850009012E-02   .219713871947E-02
+   .226797553469E-02   .234107992624E-02   .241652340816E-02   .249437967854E-02   .257472468145E-02
+   .265763667029E-02   .274319627253E-02   .283148655597E-02   .292259309636E-02   .301660404653E-02
+   .311361020695E-02   .321370509767E-02   .331698503180E-02   .342354919032E-02   .353349969836E-02
+   .364694170279E-02   .376398345126E-02   .388473637250E-02   .400931515794E-02   .413783784463E-02
+   .427042589925E-02   .440720430340E-02   .454830163989E-02   .469385018009E-02   .484398597219E-02
+   .499884893033E-02   .515858292446E-02   .532333587081E-02   .549325982298E-02   .566851106323E-02
+   .584925019418E-02   .603564223044E-02   .622785669018E-02   .642606768641E-02   .663045401763E-02
+   .684119925789E-02   .705849184563E-02   .728252517141E-02   .751349766390E-02   .775161287407E-02
+   .799707955702E-02   .825011175122E-02   .851092885468E-02   .877975569759E-02   .905682261099E-02
+   .934236549099E-02   .963662585794E-02   .993985090987E-02   .102522935698E-01   .105742125261E-01
+   .109058722650E-01   .112475430948E-01   .115995011607E-01   .119620284495E-01   .123354127833E-01
+   .127199478006E-01   .131159329245E-01   .135236733165E-01   .139434798145E-01   .143756688539E-01
+   .148205623706E-01   .152784876835E-01   .157497773562E-01   .162347690359E-01   .167338052661E-01
+   .172472332744E-01   .177754047297E-01   .183186754705E-01   .188774051983E-01   .194519571368E-01
+   .200426976531E-01   .206499958378E-01   .212742230423E-01   .219157523701E-01   .225749581184E-01
+   .232522151676E-01   .239478983153E-01   .246623815501E-01   .253960372634E-01   .261492353938E-01
+   .269223425006E-01   .277157207625E-01   .285297268961E-01   .293647109914E-01   .302210152575E-01
+   .310989726746E-01   .319989055478E-01   .329211239561E-01   .338659240917E-01   .348335864849E-01
+   .358243741068E-01   .368385303458E-01   .378762768513E-01   .389378112376E-01   .400233046424E-01
+   .411328991343E-01   .422667049611E-01   .434247976343E-01   .446072148414E-01   .458139531821E-01
+   .470449647194E-01   .483001533414E-01   .495793709266E-01   .508824133076E-01   .522090160269E-01
+   .535588498806E-01   .549315162446E-01   .563265421791E-01   .577433753083E-01   .591813784716E-01
+   .606398241459E-01   .621178886351E-01   .636146460304E-01   .651290619393E-01   .666599869875E-01
+   .682061500989E-01   .697661515563E-01   .713384558542E-01   .729213843511E-01   .745131077342E-01
+   .761116383119E-01   .777148221508E-01   .793203310770E-01   .809256545684E-01   .825280915617E-01
+   .841247422088E-01   .857124996153E-01   .872880416035E-01   .888478225428E-01   .903880652988E-01
+   .919047533556E-01   .933936231734E-01   .948501568487E-01   .962695751503E-01   .976468310133E-01
+   .989766035796E-01   .100253292878E+00   .101471015254E+00   .102623599651E+00   .103704584878E+00
+   .104707217978E+00   .105624453851E+00   .106448956270E+00   .107173100449E+00   .107788977341E+00
+   .108288399829E+00   .108662911011E+00   .108903794772E+00   .109002088849E+00   .108948600619E+00
+   .108733925814E+00   .108348470429E+00   .107782476040E+00   .107026048811E+00   .106069192420E+00
+   .104901845194E+00   .103513921706E+00   .101895359105E+00   .100036168453E+00   .979264913315E-01
+   .955566619749E-01   .929172751856E-01   .899992602665E-01   .867939611894E-01   .832932231985E-01
+   .794894860197E-01   .753758838152E-01   .709463519862E-01   .661957408865E-01   .611199364627E-01
+   .557159877905E-01   .499822414220E-01   .439184824105E-01   .375260818220E-01   .308081504919E-01
+   .237696987296E-01   .164178016160E-01   .876176947364E-02   .813323004364E-03  -.741322752467E-02
+  -.159007998325E-01  -.246293549443E-01  -.335757116697E-01  -.427133621408E-01  -.520122910084E-01
+  -.614388017831E-01  -.709553547884E-01  -.805204219704E-01  -.900883637045E-01  -.996093305631E-01
+  -.109029187229E+00  -.118289445417E+00  -.127327179510E+00  -.136074889026E+00  -.144460276770E+00
+  -.152405938844E+00  -.159829009187E+00  -.166640846770E+00  -.172746868312E+00  -.178046592839E+00
+  -.182433887306E+00  -.185797331820E+00  -.188020606003E+00  -.188982836131E+00  -.188558895599E+00
+  -.186619682941E+00  -.183032406141E+00  -.177660891660E+00  -.170365923942E+00  -.161005611726E+00
+  -.149435772257E+00  -.135510322374E+00  -.119081665288E+00  -.100001062586E+00  -.781189819864E-01
+  -.532854121368E-01  -.253501363098E-01   .583704303801E-02   .404261369719E-01   .785668685721E-01
+   .120408646344E+00   .166100622522E+00   .215791847373E+00   .269631532049E+00   .327769434397E+00
+   .390356384479E+00   .457544969431E+00   .529490400826E+00   .606351591923E+00   .688292477140E+00
+   .775483611861E+00   .868104097163E+00   .966343881368E+00   .107040649767E+01   .118051230869E+01
+   .129690233012E+01
+ pseudo wavefunction
+   .876800942919E-08   .934750820283E-08   .996530744023E-08   .106239385109E-07   .113261000886E-07
+   .120746692089E-07   .128727130575E-07   .137235015379E-07   .146305206693E-07   .155974868702E-07
+   .166283621861E-07   .177273705236E-07   .188990149574E-07   .201480961813E-07   .214797321784E-07
+   .228993791914E-07   .244128540793E-07   .260263581512E-07   .277465025757E-07   .295803354691E-07
+   .315353707747E-07   .336196190504E-07   .358416202909E-07   .382104789196E-07   .407359010930E-07
+   .434282344708E-07   .462985106142E-07   .493584901867E-07   .526207111420E-07   .560985400973E-07
+   .598062271014E-07   .637589640228E-07   .679729467968E-07   .724654417870E-07   .772548565319E-07
+   .823608151682E-07   .878042388385E-07   .936074314137E-07   .997941708807E-07   .106389806770E-06
+   .113421364022E-06   .120917653723E-06   .128909391148E-06   .137429321620E-06   .146512354678E-06
+   .156195707115E-06   .166519055469E-06   .177524698598E-06   .189257730987E-06   .201766227524E-06
+   .215101440481E-06   .229318009513E-06   .244474185538E-06   .260632069415E-06   .277857866393E-06
+   .296222157385E-06   .315800188158E-06   .336672177651E-06   .358923646660E-06   .382645768248E-06
+   .407935741319E-06   .434897188879E-06   .463640582620E-06   .494283695562E-06   .526952084616E-06
+   .561779605040E-06   .598908958892E-06   .638492279736E-06   .680691755993E-06   .725680295482E-06
+   .773642233894E-06   .824774090084E-06   .879285371278E-06   .937399431503E-06   .999354386754E-06
+   .106540409064E-05   .113581917451E-05   .121088815635E-05   .129091862290E-05   .137623848999E-05
+   .146719734613E-05   .156416788485E-05   .166754743180E-05   .177775957271E-05   .189525588897E-05
+   .202051780793E-05   .215405857544E-05   .229642535878E-05   .244820148864E-05   .261000884915E-05
+   .278251042597E-05   .296641302275E-05   .316247015708E-05   .337148514794E-05   .359431440709E-05
+   .383187094802E-05   .408512812686E-05   .435512363048E-05   .464296372811E-05   .494982780407E-05
+   .527697318997E-05   .562574031625E-05   .599755820430E-05   .639395032137E-05   .681654082259E-05
+   .726706120540E-05   .774735740376E-05   .825939735129E-05   .880527904412E-05   .938723913663E-05
+   .100076621053E-04   .106690900180E-04   .113742329492E-04   .121259800829E-04   .129274115503E-04
+   .137818110482E-04   .146926792929E-04   .156637483622E-04   .166989969852E-04   .178026668427E-04
+   .189792799449E-04   .202336571571E-04   .215709379492E-04   .229966014514E-04   .245164888998E-04
+   .261368275659E-04   .278642562675E-04   .297058525640E-04   .316691617501E-04   .337622277638E-04
+   .359936261373E-04   .383724991248E-04   .409085931505E-04   .436122987313E-04   .464946930367E-04
+   .495675852597E-04   .528435649859E-04   .563360537566E-04   .600593600386E-04   .640287378248E-04
+   .682604491045E-04   .727718304609E-04   .775813640660E-04   .827087533641E-04   .881750037533E-04
+   .940025085951E-04   .100215140902E-03   .106838351079E-03   .113899271120E-03   .121426825680E-03
+   .129451850478E-03   .138007218521E-03   .147127974656E-03   .156851478992E-03   .167217559805E-03
+   .178268676513E-03   .190050093415E-03   .202610064881E-03   .216000032767E-03   .230274836838E-03
+   .245492939072E-03   .261716662751E-03   .279012447307E-03   .297451119968E-03   .317108185303E-03
+   .338064133837E-03   .360404770996E-03   .384221567711E-03   .409612034101E-03   .436680117756E-03
+   .465536628216E-03   .496299689376E-03   .529095221642E-03   .564057455770E-03   .601329480479E-03
+   .641063826030E-03   .683423086115E-03   .728580580566E-03   .776721061532E-03   .828041465956E-03
+   .882751717358E-03   .941075580128E-03   .100325156974E-02   .106953392247E-02   .114019362857E-02
+   .121551953281E-02   .129581950697E-02   .138142169865E-02   .147267586158E-02   .156995477238E-02
+   .167365573951E-02   .178420221022E-02   .190204548166E-02   .202766652295E-02   .216157791508E-02
+   .230432591607E-02   .245649265950E-02   .261869849446E-02   .279160447600E-02   .297591501533E-02
+   .317238069977E-02   .338180129278E-02   .360502892529E-02   .384297148989E-02   .409659625027E-02
+   .436693367886E-02   .465508153640E-02   .496220920774E-02   .528956230910E-02   .563846758260E-02
+   .601033809478E-02   .640667875647E-02   .682909218230E-02   .727928490893E-02   .775907399167E-02
+   .827039400030E-02   .881530443543E-02   .939599758743E-02   .100148068609E-01   .106742155883E-01
+   .113768663561E-01   .121255708695E-01   .129233203788E-01   .137732966940E-01   .146788838121E-01
+   .156436801832E-01   .166715116379E-01   .177664450033E-01   .189328024277E-01   .201751764366E-01
+   .214984457406E-01   .229077918110E-01   .244087162380E-01   .260070588813E-01   .277090168194E-01
+   .295211640968E-01   .314504722621E-01   .335043316825E-01   .356905736097E-01   .380174929610E-01
+   .404938717663E-01   .431290032176E-01   .459327162362E-01   .489154004572E-01   .520880315025E-01
+   .554621963885E-01   .590501188839E-01   .628646845960E-01   .669194655242E-01   .712287437731E-01
+   .758075340664E-01   .806716046432E-01   .858374960531E-01   .913225372928E-01   .971448586440E-01
+   .103323400480E+00   .109877917210E+00   .116828975410E+00   .124197945074E+00   .132006982779E+00
+   .140279005407E+00   .149037652906E+00   .158307238415E+00   .168112683857E+00   .178479438948E+00
+   .189433381339E+00   .201000695392E+00   .213207726887E+00   .226080810723E+00   .239646068460E+00
+   .253929172356E+00   .268955072346E+00   .284747682278E+00   .301329521590E+00   .318721308578E+00
+   .336941501427E+00   .356005783316E+00   .375926488182E+00   .396711964169E+00   .418365872421E+00
+   .440886419795E+00   .464265525259E+00   .488487921304E+00   .513530193674E+00   .539359765212E+00
+   .565933832605E+00   .593198268522E+00   .621086505922E+00   .649518426467E+00   .678399280811E+00
+   .707618675275E+00   .737049666855E+00   .766548016726E+00   .795951661151E+00   .825080467758E+00
+   .853736354175E+00   .881703854475E+00   .908751226040E+00   .934632194409E+00   .959088435217E+00
+   .981852888934E+00   .100265399395E+01   .102122090455E+01   .103728972981E+01   .105061078496E+01
+   .106095678522E+01   .106813183090E+01   .107198092903E+01   .107239966993E+01   .106934352597E+01
+   .106283606749E+01   .105297520198E+01   .103993634791E+01   .102397126974E+01   .100540114852E+01
+   .984602376785E+00   .961983587564E+00   .937952609537E+00   .912872443939E+00   .887006052763E+00
+   .860452992548E+00
+ ae wavefunction
+   .106376700892E-06   .113087413803E-06   .120167236645E-06   .127639483744E-06   .135528816674E-06
+   .143861331680E-06   .152664652631E-06   .161968029723E-06   .171802444287E-06   .182200720122E-06
+   .193197641780E-06   .204830080265E-06   .217137126625E-06   .230160233977E-06   .243943368496E-06
+   .258533169978E-06   .273979122604E-06   .290333736564E-06   .307652741272E-06   .325995290924E-06
+   .345424183216E-06   .366006092090E-06   .387811815424E-06   .410916538653E-06   .435400115376E-06
+   .461347366055E-06   .488848395999E-06   .517998933913E-06   .548900692345E-06   .581661751487E-06
+   .616396967856E-06   .653228409491E-06   .692285819420E-06   .733707109229E-06   .777638884741E-06
+   .824237005887E-06   .873667183032E-06   .926105612138E-06   .981739651318E-06   .104076854150E-05
+   .110340417408E-05   .116987190869E-05   .124041144428E-05   .131527774710E-05   .139474203931E-05
+   .147909285209E-05   .156863714758E-05   .166370151417E-05   .176463343984E-05   .187180266875E-05
+   .198560264655E-05   .210645206009E-05   .223479647791E-05   .237111009795E-05   .251589760950E-05
+   .266969617698E-05   .283307755347E-05   .300665033235E-05   .319106234635E-05   .338700322333E-05
+   .359520710936E-05   .381645556972E-05   .405158067970E-05   .430146831748E-05   .456706167228E-05
+   .484936498185E-05   .514944751434E-05   .546844781039E-05   .580757820245E-05   .616812962949E-05
+   .655147676623E-05   .695908348745E-05   .739250868932E-05   .785341249074E-05   .834356283974E-05
+   .886484255102E-05   .941925680293E-05   .100089411236E-04   .106361698981E-04   .113033654302E-04
+   .120131075958E-04   .127681441243E-04   .135714015515E-04   .144259968849E-04   .153352500294E-04
+   .163026970217E-04   .173321041264E-04   .184274828491E-04   .195931059255E-04   .208335243507E-04
+   .221535855148E-04   .235584525170E-04   .250536247328E-04   .266449597174E-04   .283386965292E-04
+   .301414805655E-04   .320603900083E-04   .341029639827E-04   .362772325379E-04   .385917485686E-04
+   .410556217999E-04   .436785549684E-04   .464708823404E-04   .494436107148E-04   .526084630715E-04
+   .559779250320E-04   .595652943117E-04   .633847333553E-04   .674513253550E-04   .717811338686E-04
+   .763912662638E-04   .812999412304E-04   .865265606192E-04   .920917858780E-04   .980176193759E-04
+   .104327490922E-03   .111046349803E-03   .118200762693E-03   .125819017788E-03   .133931235567E-03
+   .142569486591E-03   .151767916764E-03   .161562880536E-03   .171993082532E-03   .183099728119E-03
+   .194926683483E-03   .207520645769E-03   .220931323935E-03   .235211630950E-03   .250417888030E-03
+   .266610041664E-03   .283851894174E-03   .302211348653E-03   .321760669129E-03   .342576756879E-03
+   .364741443858E-03   .388341804248E-03   .413470485229E-03   .440226058081E-03   .468713390831E-03
+   .499044043701E-03   .531336688690E-03   .565717554690E-03   .602320899606E-03   .641289511049E-03
+   .682775237216E-03   .726939549682E-03   .773954139915E-03   .824001551398E-03   .877275849343E-03
+   .933983330099E-03   .994343272418E-03   .105858873288E-02   .112696738786E-02   .119974242457E-02
+   .127719348371E-02   .135961765659E-02   .144733053946E-02   .154066734799E-02   .163998409513E-02
+   .174565883545E-02   .185809297922E-02   .197771267987E-02   .210497029824E-02   .224034594739E-02
+   .238434912175E-02   .253752041457E-02   .270043332766E-02   .287369617763E-02   .305795410281E-02
+   .325389117523E-02   .346223262206E-02   .368374716102E-02   .391924945424E-02   .416960268529E-02
+   .443572126384E-02   .471857366264E-02   .501918539142E-02   .533864211224E-02   .567809290071E-02
+   .603875365747E-02   .642191067419E-02   .682892435788E-02   .726123311760E-02   .772035741668E-02
+   .820790399386E-02   .872557025585E-02   .927514884363E-02   .985853237406E-02   .104777183579E-01
+   .111348142943E-01   .118320429415E-01   .125717477618E-01   .133563985387E-01   .141885971617E-01
+   .150710835746E-01   .160067418798E-01   .169986065912E-01   .180498690246E-01   .191638838151E-01
+   .203441755463E-01   .215944454747E-01   .229185783311E-01   .243206491763E-01   .258049302872E-01
+   .273758980435E-01   .290382397858E-01   .307968606070E-01   .326568900396E-01   .346236885944E-01
+   .367028541013E-01   .389002278011E-01   .412219001270E-01   .436742161149E-01   .462637803697E-01
+   .489974615148E-01   .518823960404E-01   .549259914628E-01   .581359287001E-01   .615201635596E-01
+   .650869272297E-01   .688447256561E-01   .728023376806E-01   .769688118071E-01   .813534614566E-01
+   .859658585633E-01   .908158253555E-01   .959134241600E-01   .101268945060E+00   .106892891232E+00
+   .112795961776E+00   .118989031859E+00   .125483129974E+00   .132289412126E+00   .139419132743E+00
+   .146883612124E+00   .154694200223E+00   .162862236587E+00   .171399006251E+00   .180315691438E+00
+   .189623318879E+00   .199332702626E+00   .209454382222E+00   .219998556134E+00   .230975010377E+00
+   .242393042285E+00   .254261379434E+00   .266588093757E+00   .279380510946E+00   .292645115267E+00
+   .306387449993E+00   .320612013705E+00   .335322152738E+00   .350519950160E+00   .366206111659E+00
+   .382379848796E+00   .399038760101E+00   .416178710538E+00   .433793709878E+00   .451875790568E+00
+   .470414885758E+00   .489398708235E+00   .508812631219E+00   .528639572274E+00   .548859882133E+00
+   .569451240978E+00   .590388565945E+00   .611643935260E+00   .633186536732E+00   .654982651249E+00
+   .676995685242E+00   .699186268990E+00   .721512438144E+00   .743929910111E+00   .766392449272E+00
+   .788852279292E+00   .811260446533E+00   .833566980334E+00   .855720670381E+00   .877668337660E+00
+   .899353638918E+00   .920715675787E+00   .941687868576E+00   .962197568574E+00   .982166651298E+00
+   .100151294021E+01   .102015199363E+01   .103799875596E+01   .105496880038E+01   .107097916191E+01
+   .108594890868E+01   .109979961198E+01   .111245582099E+01   .112384558656E+01   .113390103606E+01
+   .114255897893E+01   .114976151523E+01   .115545662016E+01   .115959868275E+01   .116214898256E+01
+   .116307609395E+01   .116235621160E+01   .115997339441E+01   .115591972686E+01   .115019539897E+01
+   .114280870681E+01   .113377597710E+01   .112312142000E+01   .111087691529E+01   .109708173797E+01
+   .108178222991E+01   .106503142466E+01   .104688863309E+01   .102741899727E+01   .100669302004E+01
+   .984786077433E+00   .961777919909E+00   .937752168082E+00   .912795806820E+00   .886998680870E+00
+   .860452992548E+00
+ pseudo wavefunction
+  -.484981210978E-08  -.517034782341E-08  -.551206851094E-08  -.587637433806E-08  -.626475801078E-08
+  -.667881089163E-08  -.712022952007E-08  -.759082256394E-08  -.809251823026E-08  -.862737216586E-08
+  -.919757588020E-08  -.980546572483E-08  -.104535324664E-07  -.111444314922E-07  -.118809936904E-07
+  -.126662370496E-07  -.135033790242E-07  -.143958497179E-07  -.153473059381E-07  -.163616461796E-07
+  -.174430265977E-07  -.185958780382E-07  -.198249241917E-07  -.211352009493E-07  -.225320770357E-07
+  -.240212760075E-07  -.256088997050E-07  -.273014532535E-07  -.291058717175E-07  -.310295485164E-07
+  -.330803657184E-07  -.352667263361E-07  -.375975887573E-07  -.400825034508E-07  -.427316520988E-07
+  -.455558893145E-07  -.485667871188E-07  -.517766823542E-07  -.551987272348E-07  -.588469432353E-07
+  -.627362785426E-07  -.668826693048E-07  -.713031049274E-07  -.760156976854E-07  -.810397569369E-07
+  -.863958682405E-07  -.921059777024E-07  -.981934818985E-07  -.104683323739E-06  -.111602094668E-06
+  -.118978143621E-06  -.126841693181E-06  -.135224963409E-06  -.144162303866E-06  -.153690334354E-06
+  -.163848094962E-06  -.174677206025E-06  -.186222038665E-06  -.198529896590E-06  -.211651209915E-06
+  -.225639741800E-06  -.240552808727E-06  -.256451515356E-06  -.273401004888E-06  -.291470725984E-06
+  -.310734717316E-06  -.331271910937E-06  -.353166455688E-06  -.376508061991E-06  -.401392369417E-06
+  -.427921338563E-06  -.456203668815E-06  -.486355243727E-06  -.518499605835E-06  -.552768462857E-06
+  -.589302227334E-06  -.628250591955E-06  -.669773142891E-06  -.714040013671E-06  -.761232582275E-06
+  -.811544214289E-06  -.865181055189E-06  -.922362874974E-06  -.983323968628E-06  -.104831411609E-05
+  -.111759960569E-05  -.119146432515E-05  -.127021092481E-05  -.135416205761E-05  -.144366170111E-05
+  -.153907656682E-05  -.164079760268E-05  -.174924159491E-05  -.186485287559E-05  -.198810514322E-05
+  -.211950340349E-05  -.225958603841E-05  -.240892701210E-05  -.256813822235E-05  -.273787200769E-05
+  -.291882382001E-05  -.311173507387E-05  -.331739618410E-05  -.353664980411E-05  -.377039427823E-05
+  -.401958732215E-05  -.428524994664E-05  -.456847064045E-05  -.487040982971E-05  -.519230463199E-05
+  -.553547392442E-05  -.590132374684E-05  -.629135306184E-05  -.670715989552E-05  -.715044788386E-05
+  -.762303325178E-05  -.812685225324E-05  -.866396910290E-05  -.923658443192E-05  -.984704430227E-05
+  -.104978498167E-04  -.111916673638E-04  -.119313395390E-04  -.127198967884E-04  -.135605698208E-04
+  -.144568028395E-04  -.154122676493E-04  -.164308786935E-04  -.175168090859E-04  -.186745077006E-04
+  -.199087173907E-04  -.212244944099E-04  -.226272291173E-04  -.241226680492E-04  -.257169374475E-04
+  -.274165683426E-04  -.292285232921E-04  -.311602248837E-04  -.332195861213E-04  -.354150428150E-04
+  -.377555881103E-04  -.402508092948E-04  -.429109270347E-04  -.457468371992E-04  -.487701554451E-04
+  -.519932647415E-04  -.554293660300E-04  -.590925322246E-04  -.629977657738E-04  -.671610600158E-04
+  -.715994645799E-04  -.763311550967E-04  -.813755075024E-04  -.867531772382E-04  -.924861836656E-04
+  -.985980000416E-04  -.105113649416E-03  -.112059806841E-03  -.119464908308E-03  -.127359266843E-03
+  -.135775196248E-03  -.144747142968E-03  -.154311826620E-03  -.164508389768E-03  -.175378557515E-03
+  -.186966807581E-03  -.199320551533E-03  -.212490327900E-03  -.226530007941E-03  -.241497014895E-03
+  -.257452557576E-03  -.274461879255E-03  -.292594522804E-03  -.311924613169E-03  -.332531158267E-03
+  -.354498369521E-03  -.377916003265E-03  -.402879724382E-03  -.429491493587E-03  -.457859979859E-03
+  -.488100999641E-03  -.520337984491E-03  -.554702478997E-03  -.591334670871E-03  -.630383955233E-03
+  -.672009535253E-03  -.716381061407E-03  -.763679311757E-03  -.814096915808E-03  -.867839124620E-03
+  -.925124630025E-03  -.986186435947E-03  -.105127278500E-02  -.112064814366E-02  -.119459424963E-02
+  -.127341122495E-02  -.135741875884E-02  -.144695736438E-02  -.154238971319E-02  -.164410205274E-02
+  -.175250571083E-02  -.186803869227E-02  -.199116737280E-02  -.212238829545E-02  -.226223007509E-02
+  -.241125541661E-02  -.257006325271E-02  -.273929100740E-02  -.291961699125E-02  -.311176293483E-02
+  -.331649666668E-02  -.353463494230E-02  -.376704643060E-02  -.401465486427E-02  -.427844236040E-02
+  -.455945291747E-02  -.485879609456E-02  -.517765087828E-02  -.551726974244E-02  -.587898290465E-02
+  -.626420278338E-02  -.667442865800E-02  -.711125153281E-02  -.757635920484E-02  -.807154153319E-02
+  -.859869590547E-02  -.915983289434E-02  -.975708209415E-02  -.103926981239E-01  -.110690667787E-01
+  -.117887113070E-01  -.125542987846E-01  -.133686465518E-01  -.142347286687E-01  -.151556823396E-01
+  -.161348142443E-01  -.171756067022E-01  -.182817235853E-01  -.194570158786E-01  -.207055267687E-01
+  -.220314961265E-01  -.234393642216E-01  -.249337744894E-01  -.265195751357E-01  -.282018193402E-01
+  -.299857637799E-01  -.318768651574E-01  -.338807743746E-01  -.360033279438E-01  -.382505361751E-01
+  -.406285676186E-01  -.431437291758E-01  -.458024412223E-01  -.486112070040E-01  -.515765754874E-01
+  -.547050967478E-01  -.580032688826E-01  -.614774753320E-01  -.651339113731E-01  -.689784984396E-01
+  -.730167847954E-01  -.772538309642E-01  -.816940781960E-01  -.863411981213E-01  -.911979216348E-01
+  -.962658449377E-01  -.101545210582E+00  -.107034661297E+00  -.112730964337E+00  -.118628704124E+00
+  -.124719941003E+00  -.130993834083E+00  -.137436226395E+00  -.144029190886E+00  -.150750536321E+00
+  -.157573272760E+00  -.164465037129E+00  -.171387480481E+00  -.178295619833E+00  -.185137159123E+00
+  -.191851785719E+00  -.198370451268E+00  -.204614648334E+00  -.210495697360E+00  -.215914062001E+00
+  -.220758714745E+00  -.224906578945E+00  -.228222077845E+00  -.230556825737E+00  -.231749500859E+00
+  -.231625943672E+00  -.229999527507E+00  -.226671850571E+00  -.221433798478E+00  -.214067024019E+00
+  -.204345884891E+00  -.192039869647E+00  -.176916526010E+00  -.158744882936E+00  -.137299327216E+00
+  -.112363856392E+00  -.837365817490E-01  -.512342988727E-01  -.146968800657E-01   .260088236197E-01
+   .709859473943E-01   .120305874995E+00   .174008258681E+00   .232103247571E+00   .294576302991E+00
+   .361395818621E+00   .432523481873E+00   .507926877214E+00   .587593208619E+00   .671542180701E+00
+   .759835015304E+00   .852575310011E+00   .949896029782E+00   .105192549120E+01   .115872396875E+01
+   .127018390490E+01
+ ae wavefunction
+  -.472972142918E-07  -.502809550806E-07  -.534288103841E-07  -.567511463376E-07  -.602589280982E-07
+  -.639637587127E-07  -.678779204502E-07  -.720144186850E-07  -.763870284991E-07  -.810103441839E-07
+  -.858998318329E-07  -.910718852297E-07  -.965438852493E-07  -.102334263003E-06  -.108462566976E-06
+  -.114949534415E-06  -.121817167258E-06  -.129088812886E-06  -.136789250034E-06  -.144944780187E-06
+  -.153583324830E-06  -.162734528931E-06  -.172429871071E-06  -.182702780661E-06  -.193588762704E-06
+  -.205125530605E-06  -.217353147560E-06  -.230314177081E-06  -.244053843261E-06  -.258620201423E-06
+  -.274064319833E-06  -.290440473203E-06  -.307806348753E-06  -.326223265675E-06  -.345756408863E-06
+  -.366475077844E-06  -.388452951924E-06  -.411768372601E-06  -.436504644380E-06  -.462750355197E-06
+  -.490599717748E-06  -.520152933077E-06  -.551516577900E-06  -.584804017213E-06  -.620135843834E-06
+  -.657640346671E-06  -.697454009563E-06  -.739722042725E-06  -.784598948928E-06  -.832249126674E-06
+  -.882847512809E-06  -.936580267150E-06  -.993645501866E-06  -.105425405856E-05  -.111863033617E-05
+  -.118701317300E-05  -.125965678643E-05  -.133683177411E-05  -.141882618059E-05  -.150594663373E-05
+  -.159851955544E-05  -.169689245154E-05  -.180143528606E-05  -.191254194527E-05  -.203063179756E-05
+  -.215615135520E-05  -.228957604481E-05  -.243141209348E-05  -.258219853821E-05  -.274250936664E-05
+  -.291295579765E-05  -.309418871095E-05  -.328690123535E-05  -.349183150611E-05  -.370976560225E-05
+  -.394154067566E-05  -.418804828444E-05  -.445023794372E-05  -.472912090816E-05  -.502577420112E-05
+  -.534134490660E-05  -.567705474085E-05  -.603420492205E-05  -.641418135716E-05  -.681846016657E-05
+  -.724861356850E-05  -.770631614632E-05  -.819335152374E-05  -.871161947402E-05  -.926314349147E-05
+  -.985007885489E-05  -.104747212149E-04  -.111395157389E-04  -.118470668493E-04  -.126001485937E-04
+  -.134017156874E-04  -.142549152716E-04  -.151630994328E-04  -.161298385333E-04  -.171589354034E-04
+  -.182544404518E-04  -.194206677522E-04  -.206622121687E-04  -.219839675864E-04  -.233911463173E-04
+  -.248892997576E-04  -.264843403742E-04  -.281825651068E-04  -.299906802733E-04  -.319158280768E-04
+  -.339656148119E-04  -.361481408815E-04  -.384720327353E-04  -.409464768529E-04  -.435812558999E-04
+  -.463867871929E-04  -.493741636189E-04  -.525551971624E-04  -.559424652033E-04  -.595493597589E-04
+  -.633901398516E-04  -.674799871989E-04  -.718350654298E-04  -.764725830466E-04  -.814108603629E-04
+  -.866694006623E-04  -.922689658382E-04  -.982316567873E-04  -.104580998849E-03  -.111342032598E-03
+  -.118541410310E-03  -.126207498457E-03  -.134370486580E-03  -.143062502931E-03  -.152317737297E-03
+  -.162172571418E-03  -.172665717465E-03  -.183838365057E-03  -.195734337304E-03  -.208400256429E-03
+  -.221885719513E-03  -.236243484964E-03  -.251529670323E-03  -.267803962068E-03  -.285129838100E-03
+  -.303574803640E-03  -.323210641291E-03  -.344113676076E-03  -.366365056271E-03  -.390051050939E-03
+  -.415263365070E-03  -.442099473296E-03  -.470662973201E-03  -.501063959273E-03  -.533419418624E-03
+  -.567853649606E-03  -.604498704550E-03  -.643494857881E-03  -.684991100905E-03  -.729145664640E-03
+  -.776126572096E-03  -.826112221479E-03  -.879292001813E-03  -.935866942584E-03  -.996050398993E-03
+  -.106006877451E-02  -.112816228242E-02  -.120058574819E-02  -.127760945438E-02  -.135952002996E-02
+  -.144662138604E-02  -.153923569969E-02  -.163770444806E-02  -.174238949449E-02  -.185367422883E-02
+  -.197196476371E-02  -.209769118885E-02  -.223130888538E-02  -.237329990186E-02  -.252417439411E-02
+  -.268447213049E-02  -.285476406427E-02  -.303565397484E-02  -.322778017906E-02  -.343181731416E-02
+  -.364847819316E-02  -.387851573387E-02  -.412272496194E-02  -.438194508841E-02  -.465706166164E-02
+  -.494900879337E-02  -.525877145797E-02  -.558738786364E-02  -.593595189361E-02  -.630561561495E-02
+  -.669759185176E-02  -.711315681877E-02  -.755365281070E-02  -.802049094143E-02  -.851515392653E-02
+  -.903919890089E-02  -.959426026278E-02  -.101820525334E-01  -.108043732203E-01  -.114631056710E-01
+  -.121602219014E-01  -.128977853819E-01  -.136779537620E-01  -.145029815117E-01  -.153752224563E-01
+  -.162971321775E-01  -.172712702531E-01  -.183003023012E-01  -.193870017956E-01  -.205342516131E-01
+  -.217450452710E-01  -.230224878088E-01  -.243697962648E-01  -.257902996938E-01  -.272874386674E-01
+  -.288647641945E-01  -.305259359947E-01  -.322747200519E-01  -.341149853699E-01  -.360506998488E-01
+  -.380859251916E-01  -.402248107488E-01  -.424715862004E-01  -.448305529696E-01  -.473060742583E-01
+  -.499025635849E-01  -.526244717049E-01  -.554762717828E-01  -.584624426843E-01  -.615874502485E-01
+  -.648557263988E-01  -.682716459433E-01  -.718395009169E-01  -.755634723093E-01  -.794475990276E-01
+  -.834957439357E-01  -.877115568190E-01  -.920984341201E-01  -.966594753010E-01  -.101397435685E+00
+  -.106314675651E+00  -.111413106042E+00  -.116694129691E+00  -.122158578946E+00  -.127806649124E+00
+  -.133637827802E+00  -.139650819919E+00  -.145843468624E+00  -.152212671869E+00  -.158754294736E+00
+  -.165463077504E+00  -.172332539485E+00  -.179354878656E+00  -.186520867151E+00  -.193819742660E+00
+  -.201239095858E+00  -.208764754003E+00  -.216380660953E+00  -.224068754007E+00  -.231808838183E+00
+  -.239578458923E+00  -.247352774701E+00  -.255104431738E+00  -.262803443932E+00  -.270417082304E+00
+  -.277909779489E+00  -.285243055812E+00  -.292375473379E+00  -.299262621885E+00  -.305857132353E+00
+  -.312108700555E+00  -.317964081005E+00  -.323366991509E+00  -.328257862320E+00  -.332573391282E+00
+  -.336245933981E+00  -.339202846653E+00  -.341365964104E+00  -.342651386442E+00  -.342969647620E+00
+  -.342226187351E+00  -.340321938987E+00  -.337153850317E+00  -.332615249521E+00  -.326596069998E+00
+  -.318982997231E+00  -.309659599289E+00  -.298506478860E+00  -.285401461366E+00  -.270219818938E+00
+  -.252834523455E+00  -.233116520853E+00  -.210935020787E+00  -.186157798852E+00  -.158651511825E+00
+  -.128282029310E+00  -.949147876852E-01  -.584151743313E-01  -.186489519831E-01   .245172652344E-01
+   .712154708464E-01   .121575645247E+00   .175725038559E+00   .233787339000E+00   .295881707164E+00
+   .362121655279E+00   .432613749428E+00   .507456111914E+00   .586736700416E+00   .670531340478E+00
+   .758901488024E+00   .851891699118E+00   .949526784875E+00   .105180863024E+01   .115871265627E+01
+   .127018390490E+01
+ End of Dataset
Index: examples/Vasp/Serial/INCAR
===================================================================
--- examples/Vasp/Serial/INCAR	(revision 0)
+++ examples/Vasp/Serial/INCAR	(revision 1)
@@ -0,0 +1,18 @@
+Bulk de Pt fcc
+
+    PREC  =   NORMAL  # precision generale
+    GGA   =   PE      # choix de la fonctionnelle GGA=Perdew-Burke-Ernzerhof
+    LREAL =   Auto    # on verra
+    NELM  =   200     # nb max de cyles de minimisation elec au cours du SCF
+    EDIFF =   1e-4    # critere d'arret SCF sur l'energie elec totale
+    ALGO  =   FAST    # algo de minimisation elec=RMM-DIIS
+
+    NSW   =   0       # nb max d'iteration d'opt geometrique
+    IBRION =  2       # algo d'opt geom = CG
+    EDIFFG =  -0.01   # critere d'arret sur les forces en eV/Ang
+    POTIM  =  0.5     # pas d'optim geom
+
+    ISMEAR =  2       # occup elec methode de Methfessel-Paxton
+    SIGMA  =  0.2     # largeur a mi-hauteur des gaussiennes
+ 
+    LWAVE = .FALSE.
Index: examples/Vasp/Serial/run_Path
===================================================================
--- examples/Vasp/Serial/run_Path	(revision 0)
+++ examples/Vasp/Serial/run_Path	(revision 1)
@@ -0,0 +1,92 @@
+#PBS -S /bin/sh
+#PBS -N PathSer0.02
+#PBS -l nodes=1:Other
+#PBS -q OneL
+#PBS -o PathSer0.02.batch-log
+#PBS -j oe
+#PBS -M Paul.Fleurat-Lessard@ens-lyon.fr
+#PBS -m aeb
+
+
+#!/bin/bash
+
+home_dir=$PBS_O_WORKDIR
+work_dir=$PBS_O_WORKDIR
+Job=Test_Vasp_Serial
+numb=run1
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Carte/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASP=/home/dloffred/VASP_SOURCES/Intel_P4/VASP46_CINEB
+#
+# Whre is mpirun ?
+#
+export MPIRUN=/usr/local/mpich-intel-090404/bin/mpirun
+#
+# Some libraries... 
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+
+
+
+#################################
+#
+# We create the machinefile
+#
+# even if it is not really needed for SERIAL calculations
+#
+#################################
+nodes=`cat $PBS_NODEFILE`
+nnodes=`wc $PBS_NODEFILE | awk '{print $1}'` 
+
+confile=$home_dir/ip.$PBS_JOBID.conf
+touch $confile
+j="init"
+for i in $nodes
+do
+if [ $j != $i ]
+then echo "$i:1" >> $confile
+else
+	echo "vous calculez sur des noeuds smp"
+fi
+j=$i
+done
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+cd $work_dir
+echo "$MPIRUN -nolocal -machinefile $confile -np $nnodes $VASP > out_$numb" >  ./RunVasp
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -s ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+ 

Property changes on: examples/Vasp/Serial/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Parallel/run_Path_PBS
===================================================================
--- examples/Vasp/Parallel/run_Path_PBS	(revision 0)
+++ examples/Vasp/Parallel/run_Path_PBS	(revision 1)
@@ -0,0 +1,140 @@
+#PBS -S /bin/sh
+#PBS -N VaspPara
+#PBS -l nodes=8:Other
+#PBS -q Para8
+#PBS -o Test_Vasp_Para.batch-log
+#PBS -j oe
+#PBS -M Paul.Fleurat-Lessard@ens-lyon.fr
+#PBS -m aeb
+
+#!/bin/bash
+
+home_dir=$PBS_O_WORKDIR
+work_dir=$PBS_O_WORKDIR
+numb=3x3_run1
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the Path Input file
+#
+Job=Test_Vasp_Para
+#
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Carte/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASP=/home/dloffred/VASP_SOURCES/Intel_P4/VASP46_CINEB
+#
+# Whre is mpirun ?
+#
+export MPIRUN=/usr/local/mpich-intel-090404/bin/mpirun
+#
+# Some libraries... 
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+
+
+
+#################################
+#
+# We create the machinefile
+#
+# even if it is not really needed for SERIAL calculations
+#
+#################################
+nodes=`cat $PBS_NODEFILE`
+nnodes=`wc $PBS_NODEFILE | awk '{print $1}'` 
+
+confile=$home_dir/ip.$PBS_JOBID.conf
+touch $confile
+j="init"
+for i in $nodes
+do
+if [ $j != $i ]
+then echo "$i:1" >> $confile
+else
+	echo "vous calculez sur des noeuds smp"
+fi
+j=$i
+done
+
+###############################
+#
+# We go to the Work Directory
+#
+###############################
+
+cd $work_dir
+
+#! we create the 00, 01... and 0x directorires
+# First we get the number of images in the INCAR file:
+NbIm=`grep -i IMAGES INCAR | awk -F"=" '{n=$2*1+1; print n}' `
+n=0
+while [ $n -le $NbIm ]
+do
+ndir=`echo $n | awk '{k="00" $1; l=length(k); l=l-1; print substr(k,l,2)}'`
+mkdir -p $ndir
+let n=n+1
+done
+
+# A small test to see if everything matches
+NbImP=` sed 's/,/^M/g' ${Job}.path | grep -i ngeomf | awk -F"=" '{n=$2*1-1; print n}' `
+if [ $NbImP -ne $NbIm ]; then
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+ echo "IMAGES in INCAR and NGeomF in " ${Job}.path
+ echo "Do Not Match... problems might be expected..."
+ echo "Check it !!!"
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+fi
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+echo "$MPIRUN -nolocal -machinefile $confile -np $nnodes $VASP > out_$numb" >  ./RunVasp
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+#############################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+
+echo "$MPIRUN -nolocal -machinefile $confile -np $nnodes $VASP > out_$numb" >  ./RunVasp
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+ 

Property changes on: examples/Vasp/Parallel/run_Path_PBS
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Parallel/run_Path_SGE_scratch
===================================================================
--- examples/Vasp/Parallel/run_Path_SGE_scratch	(revision 0)
+++ examples/Vasp/Parallel/run_Path_SGE_scratch	(revision 1)
@@ -0,0 +1,288 @@
+#!/bin/bash
+#$ -S /bin/bash
+#$ -N Vasp_PU3
+#$ -cwd 
+#$ -V
+#$ -o Vasp_para.batch-log
+#$ -j y
+#$ -q r410lin24ibcourt
+#$ -pe mpi32 32
+
+
+echo "============================================================================================="
+echo "=                                                                                           ="
+echo "=                        Vasp Parallel with unique machine                                  ="
+echo "=                                                                                           ="
+echo "=                           `date`                                          ="
+echo "=                                                                                           ="
+echo "============================================================================================="
+HOMEDIR=$SGE_O_WORKDIR
+SCRATCHDIR=`echo $HOMEDIR | awk -F "/" '{$2="scratch"; for(j=2;j<=NF;j++) {printf("/%s",$j);} print ""} ' `
+
+echo "SCRATCHDIR=$SCRATCHDIR"
+
+#Iter is the index for storing files as POSCAR_runXX
+Iter=1
+echo $Iter > Path.iter
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the Path Input file
+#
+Job=Test_Vasp_Para
+#
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASPDIR=~/Programs/VASP
+export VASPEXEC=VASP4635_R410_STD
+#
+# Whre is mpirun ?
+#
+export MPIDIR=/softs/openmpi-1.4.1-intel/
+export MPIRUN=$MPIDIR/bin/mpirun
+#
+#
+# Machine where the files are
+#
+RUNNINGMACHINE=r410comp1-pub
+
+# Some libraries... 
+#
+#For intel 11.1.069
+source /softs/intel/v11.1.069/bin/intel64/ifortvars_intel64.sh
+export LD_LIBRARY_PATH=/softs/fftw/2.1.5/ps-gb/lib:$LD_LIBRARY_PATH:/usr/lib
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/softs/intel/v11.1.069/mkl/lib/em64t/:$MPIDIR/lib/:/softs/intel/v11.1.069/lib/intel64
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+#
+# Machinefile
+#
+HOSTFILE=$TMPDIR/machines
+
+
+#################################
+#
+#! we create the 00, 01... and 0x directorires
+# First we get the number of images in the INCAR file:
+NbIm=`grep -i IMAGES INCAR | awk -F"=" '{n=$2*1+1; print n}' `
+#
+#
+#################################
+#
+# We go to the Work Directory
+cd $HOMEDIR
+
+# A small test to see if everything matches
+NbImP=` sed 's/,/^M/g' ${Job}.path | grep -i ngeomf | awk -F"=" '{n=$2*1-1; print n}' `
+if [ $NbImP -ne $NbIm ]; then
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+ echo "IMAGES in INCAR and NGeomF in " ${Job}.path
+ echo "Do Not Match... problems might be expected..."
+ echo "Check it !!!"
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+fi
+
+if [ $NbIm -le 9 ]; then
+ Pref="0"
+else
+ Pref=""
+fi
+
+cp $HOSTFILE  $HOMEDIR/tmp
+cp $PE_HOSTFILE $HOMEDIR/local_PE_HOSTFILE
+Master="`head -1 $HOSTFILE`"
+echo $Master > $HOMEDIR/Master
+
+FUniq=`which uniq`
+Uniq=${FUniq:-"sort -u"}
+$Uniq $HOSTFILE > $HOMEDIR/machines_unique
+grep -v $Master $HOMEDIR/machines_unique > $HOMEDIR/machines_other
+
+
+#### We create the directories and copy files to other machines
+for server in `cat $HOMEDIR/machines_other`
+do
+#### We create the images directory on all nodes
+  for n in `seq -w 0 $NbIm`
+  do
+    ndir=$Pref$n
+    ssh $server mkdir -p ${SCRATCHDIR}/${ndir}
+  done
+
+#### we copy the Vasp executable to all nodes
+   scp ${RUNNINGMACHINE}:${VASPDIR}/${VASPEXEC} $server:${SCRATCHDIR}/${VASPEXEC}
+
+#### we copy the files to all nodes
+   for FILE in INCAR KPOINTS POTCAR 
+   do
+     scp $RUNNINGMACHINE:$HOMEDIR/$FILE $server:${SCRATCHDIR}/.
+   done
+
+done
+
+#### We create the directories and copy files on Master
+for n in `seq -w 0 $NbIm`
+do
+  ndir=$Pref$n
+  mkdir -p ${SCRATCHDIR}/${ndir}
+  mkdir -p ${HOMEDIR}/${ndir}
+done
+
+#### we copy the Vasp executable to Scratch
+cp ${VASPDIR}/${VASPEXEC} ${SCRATCHDIR}/${VASPEXEC}
+
+#### we copy the files to SCRATCHDIR
+for FILE in INCAR KPOINTS POTCAR
+do
+  cp $HOMEDIR/$FILE ${SCRATCHDIR}/.
+done
+
+
+# ###########################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+# we test if we run on one machine (ie only Master or on many)
+NOther=`wc -l  $HOMEDIR/machines_other | awk '{print $1}'`
+if [ $NOther -ge 1 ]; then
+cat << EOF > ./RunVasp
+#!/bin/bash
+
+#set -x
+HOMEDIR=$HOMEDIR
+SCRATCHDIR=$SCRATCHDIR
+Pref=$Pref
+
+#### We copy files to other machines
+for server in \`cat \$HOMEDIR/machines_other\`
+do
+  for n in \`seq -w 0 $NbIm\`
+  do
+    ndir="$Pref\$n"
+# we copy the POSCAR file
+    scp \$HOMEDIR/\${ndir}/POSCAR \$server:\${SCRATCHDIR}/\${ndir}/.
+  done
+done
+
+#### We copy files on Master
+for n in \`seq -w 0 $NbIm\`
+do
+  ndir="$Pref\$n"
+# we copy the POSCAR file
+  cp \$HOMEDIR/\${ndir}/POSCAR \${SCRATCHDIR}/\${ndir}/.
+done
+
+cd \$SCRATCHDIR
+
+$MPIRUN -v -prefix $MPIDIR -mca pls_rsh_agent "ssh" -mca btl openib,self -np $NSLOTS \${SCRATCHDIR}/${VASPEXEC} > \${SCRATCHDIR}/out
+
+Iter=\`cat \$HOMEDIR/Path.iter\`
+RUNNEW=run\${Iter}
+
+#### We copy files from other machines
+for server in \`cat \$HOMEDIR/machines_other\`
+do
+  for n in \`seq -w 0 $NbIm\`
+  do
+    ndir="$Pref\$n"
+    for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+    do
+      scp \$server:\${SCRATCHDIR}/\$ndir/\$FILE \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}
+      cp \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}  \$HOMEDIR/\$ndir/\${FILE}
+    done
+  done
+done
+
+#### We copy files on Master
+for n in \`seq -w 0 $NbIm\`
+do
+  ndir=$Pref\$n
+  for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+  do
+   cp \${SCRATCHDIR}/\$ndir/\$FILE \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}
+   cp \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}  \$HOMEDIR/\$ndir/\${FILE}
+  done
+done
+
+cp \${SCRATCHDIR}/out  \$HOMEDIR/out_\${RUNNEW}
+
+let Iter=Iter+1
+echo \$Iter > \$HOMEDIR/Path.iter
+
+cd \$HOMEDIR
+EOF
+else
+# We have only one node, so that everything is store on master
+cat << EOF > ./RunVasp
+#!/bin/bash
+
+#set -x
+
+HOMEDIR=$HOMEDIR
+SCRATCHDIR=$SCRATCHDIR
+Pref=$Pref
+
+cd \$SCRATCHDIR
+# We copy files from HOMEDIR to SCRATCHDIR
+for n in \`seq -w 0 $NbIm\`
+do
+  ndir=$Pref\$n
+  cp \$HOMEDIR/\$ndir/POSCAR \${SCRATCHDIR}/\$ndir/POSCAR
+done
+
+$MPIRUN -v -prefix $MPIDIR -mca pls_rsh_agent "ssh" -mca btl openib,self -np $NSLOTS \${SCRATCHDIR}/${VASPEXEC} > \${SCRATCHDIR}/out
+
+Iter=\`cat \$HOMEDIR/Path.iter\`
+RUNNEW=run\${Iter}
+
+
+for n in \`seq -w 0 $NbIm\`
+do
+  ndir=$Pref\$n
+  for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+  do
+   cp \${SCRATCHDIR}/\$ndir/\$FILE \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}
+   cp \${SCRATCHDIR}/\$ndir/\$FILE \$HOMEDIR/\$ndir/\${FILE}
+  done
+done
+cp \${SCRATCHDIR}/out  \$HOMEDIR/out_\${RUNNEW}
+
+let Iter=Iter+1
+echo \$Iter > \$HOMEDIR/Path.iter
+
+cd \$HOMEDIR
+EOF
+fi
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+ 
+#### We delete SCRATCHDIR on all machines
+for server in `cat $HOMEDIR/machines_other`
+do
+ ssh $server rm -rf ${SCRATCHDIR}
+done
+
+rm -rf ${SCRATCHDIR}
\ No newline at end of file

Property changes on: examples/Vasp/Parallel/run_Path_SGE_scratch
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Parallel/Test_Vasp_Para.path
===================================================================
--- examples/Vasp/Parallel/Test_Vasp_Para.path	(revision 0)
+++ examples/Vasp/Parallel/Test_Vasp_Para.path	(revision 1)
@@ -0,0 +1,83 @@
+ &path
+  nat=23,  ! Number of atoms
+  ngeomi=2,! Number of initial geometries
+  ngeomf=10, !Number of geometries along the path
+  OptReac=F, ! Do you want to optimize the reactants ?
+  OptProd=F, ! Don't optimize the products
+  EProd= -139.258087, ! As we don't optimize products, we can give their energy
+  EReac= -139.578314,! Energy of the reactant, because it is not calculated
+  PathOnly=F,  ! do NOT stop after generating the first path
+  Fcart=T,  ! Some atoms  described in cartesian coordinates. See CartList.
+  AtTypes="Pt" "C" "O" ,! Type of the atoms
+  coord='mixed',  ! we use mixed coordinates
+  maxcyc=10,! Launch 10 iterations
+  IReparam=1,! re-distribution of points along the path every 1 iteration
+  SMax=0.1, ! Max displacement will be 0.1 a.u.
+  ISpline=5, ! Start using spline interpolation at iteration  
+  prog='VaSP',! we use the VASP program to get energy and gradients
+  RunMode='Para',  ! we use all processors at once ! Check the INCAR file
+  progexe='./RunVasp ! we use the scrip RunVasp to actually launch VASP
+/
+ &cartlist list= 1 -20 /
+Pt(111) 5c met. 6 c vides + (2x2) + CO+O
+   1.00000000000000     
+     5.6241399999999997    0.0000000000000000    0.0000000000000000
+    -2.8120699999999998    4.8706481144402121    0.0000000000000000
+     0.0000000000000000    0.0000000000000000   22.9993025279694656
+  20   1   2
+Selective dynamics
+Direct
+  0.0000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.0000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.1666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.1666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.3333353975168575  0.1666438715374017  0.1986002597140218   T   T   T
+  0.8333403210548475  0.1666509691792946  0.1985951454848725   T   T   T
+  0.8333409037841187  0.6666472796414442  0.1985964980703305   T   T   T
+  0.3333238335130192  0.6666392268365445  0.1985886239182766   T   T   T
+  0.9999617034511911  0.9998888282191930  0.2974795871350692   T   T   T
+  0.4999473247002513  0.9998693862713626  0.2974682028687743   T   T   T
+  0.9999863206811004  0.4999301882185511  0.2974642227650535   T   T   T
+  0.4999658150793101  0.4999168754294835  0.2974680428614041   T   T   T
+  0.1665405010219072  0.3330823961827170  0.3974964450182662   T   T   T
+  0.6665975225309845  0.3330642960797304  0.3975177029878819   T   T   T
+  0.1665996677662783  0.8330538544691352  0.3975167863229472   T   T   T
+  0.6665572450291234  0.8331019445865336  0.3974969275775631   T   T   T
+  0.5929747344527317  0.4140358994090573  0.5812350180389987   T   T   T
+  0.6943114107032239  0.2794239342435746  0.5915072062646071   T   T   T
+  0.4917024505660316  0.5487034897377517  0.5709635073040794   T   T   T
+Pt(111) 5c met. 6 c vides + (2x2) + CO+O
+   1.00000000000000     
+     5.6241399999999997    0.0000000000000000    0.0000000000000000
+    -2.8120699999999998    4.8706481144402121    0.0000000000000000
+     0.0000000000000000    0.0000000000000000   22.9993025279694656
+  20   1   2
+Selective dynamics
+Direct
+  0.0000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.0000000000000000  0.0000000000000000   F   F   F
+  0.0000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.5000000000000000  0.5000000000000000  0.0000000000000000   F   F   F
+  0.1666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.3333333333333357  0.1000000000000014   F   F   F
+  0.1666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.6666666666666643  0.8333333333333357  0.1000000000000014   F   F   F
+  0.3312494678895713  0.1656247339447821  0.2000650221512907   T   T   T
+  0.8343752660552178  0.1656247339447821  0.2000650221512907   T   T   T
+  0.8343752660552178  0.6687505321104290  0.2000650221512907   T   T   T
+  0.3333333333333357  0.6666666666666643  0.1989322786478102   T   T   T
+  0.0000000000000000  0.0000000000000000  0.3049797611957177   T   T   T
+  0.5012215770853086  0.0024431541706242  0.2988640527255405   T   T   T
+  0.9975568458293755  0.4987784229146913  0.2988640527255405   T   T   T
+  0.5012215770853086  0.4987784229146913  0.2988640527255405   T   T   T
+  0.1636261803593769  0.3272523607187537  0.4016023552577619   T   T   T
+  0.6666666666666643  0.3333333333333357  0.4039432223561479   T   T   T
+  0.1636261803593769  0.8363738196406233  0.4016023552577619   T   T   T
+  0.6727476392812467  0.8363738196406233  0.4016023552577619   T   T   T
+  0.6666666666666643  0.3333333333333357  0.4851233567089529   T   T   T
+  0.6666666666666643  0.3333333333333357  0.5353693274205206   T   T   T
+  0.3333333333333286  0.6666666666666714  0.4552485250372680   T   T   T
Index: examples/Vasp/Parallel/run_Path_SGE_home
===================================================================
--- examples/Vasp/Parallel/run_Path_SGE_home	(revision 0)
+++ examples/Vasp/Parallel/run_Path_SGE_home	(revision 1)
@@ -0,0 +1,161 @@
+#!/bin/bash
+#$ -S /bin/bash
+#$ -N Vasp_PHome
+#$ -cwd 
+#$ -V
+#$ -o Vasp_para.batch-log
+#$ -j y
+#$ -q dl165adf
+#$ -pe mpi8 8
+
+#set -x
+
+echo "============================================================================================="
+echo "=                                                                                           ="
+echo "=                        Vasp Parallel with unique machine                                  ="
+echo "=                                                                                           ="
+echo "=                           `date`                                          ="
+echo "=                                                                                           ="
+echo "============================================================================================="
+
+HOMEDIR=$SGE_O_WORKDIR
+
+echo "No SCRATCHDIR"
+
+#Iter is the index for storing files as POSCAR_runXX
+Iter=1
+echo $Iter > Path.iter
+
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the Path Input file
+#
+Job=Test_Vasp_Para
+#
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+# Where is VASP ?
+#
+export VASPDIR=~/Programs/VASP
+export VASPEXEC=VASP4635_R410_STD
+#
+# Whre is mpirun ?
+#
+export MPIDIR=/softs/openmpi-1.4.1-intel/
+export MPIRUN=$MPIDIR/bin/mpirun
+#
+#
+# Machine where the files are
+#
+RUNNINGMACHINE=r410comp1-pub
+
+# Some libraries... 
+#
+#For intel 11.1.069
+source /softs/intel/v11.1.069/bin/intel64/ifortvars_intel64.sh
+export LD_LIBRARY_PATH=/softs/fftw/2.1.5/ps-gb/lib:$LD_LIBRARY_PATH:/usr/lib
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/softs/intel/v11.1.069/mkl/lib/em64t/:$MPIDIR/lib/:/softs/intel/v11.1.069/lib/intel64
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+#
+# Machinefile
+#
+HOSTFILE=$TMPDIR/machines
+
+
+#################################
+#
+#! we create the 00, 01... and 0x directorires
+# First we get the number of images in the INCAR file:
+NbIm=`grep -i IMAGES INCAR | awk -F"=" '{n=$2*1+1; print n}' `
+#
+#
+#################################
+#
+# We go to the Work Directory
+cd $HOMEDIR
+
+# A small test to see if everything matches
+NbImP=` sed 's/,/^M/g' ${Job}.path | grep -i ngeomf | awk -F"=" '{n=$2*1-1; print n}' `
+if [ $NbImP -ne $NbIm ]; then
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+ echo "IMAGES in INCAR and NGeomF in " ${Job}.path
+ echo "Do Not Match... problems might be expected..."
+ echo "Check it !!!"
+ echo "WARNING WARNING WARNING WARNING WARNING WARNING"
+fi
+
+if [ $NbIm -le 9 ]; then
+ Pref="0"
+else
+ Pref=""
+fi
+
+#### We create the directories and copy files on Master
+for n in `seq -w 0 $NbIm`
+do
+  ndir=$Pref$n
+  mkdir -p ${HOMEDIR}/${ndir}
+done
+
+
+# ###########################
+#
+#  We create the 'VaspExe' file that Path will use to run the
+# actual VASP calculations of E and forces
+#
+#############################
+# We work in HOMEDIR. Nothing to copy to scratch 
+cat << EOF > ./RunVasp
+#!/bin/bash
+
+#set -x
+HOMEDIR=$HOMEDIR
+SCRATCHDIR=$SCRATCHDIR
+Pref=$Pref
+
+cd $HOMEDIR
+$MPIRUN -v -prefix $MPIDIR -mca pls_rsh_agent "ssh" -mca btl openib,self -np $NSLOTS ${VASPDIR}/${VASPEXEC} > \${HOMEDIR}/out
+
+Iter=`cat \$HOMEDIR/Path.iter`
+RUNNEW=run\${Iter}
+
+for n in \`seq -w 0 $NbIm\`
+do
+  ndir=$Pref\$n
+  for FILE in  OUTCAR POSCAR OSZICAR XDATCAR CONTCAR
+  do
+   cp \${HOMEDIR}/\$ndir/\$FILE \$HOMEDIR/\$ndir/\${FILE}_\${RUNNEW}
+  done
+done
+cp \${HOMEDIR}/out  \$HOMEDIR/out_\${RUNNEW}
+
+
+let Iter=Iter+1
+echo \$Iter > \$HOMEDIR/Path.iter
+
+
+EOF
+chmod u+x ./RunVasp
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+ 

Property changes on: examples/Vasp/Parallel/run_Path_SGE_home
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Vasp/Parallel/KPOINTS
===================================================================
--- examples/Vasp/Parallel/KPOINTS	(revision 0)
+++ examples/Vasp/Parallel/KPOINTS	(revision 1)
@@ -0,0 +1,5 @@
+grille de points k utilisee
+0
+Monkhorst
+  3  3  1
+  0  0  0
Index: examples/Vasp/Parallel/POTCAR
===================================================================
--- examples/Vasp/Parallel/POTCAR	(revision 0)
+++ examples/Vasp/Parallel/POTCAR	(revision 1)
@@ -0,0 +1,5228 @@
+ PAW_PBE Pt 05Jan2001
+ 10.0000000000000000
+ parameters from PSCTR are:
+   VRHFIN =Pt: s1d9
+   LEXCH  = PE
+   EATOM  =   729.1171 eV,   53.5886 Ry
+
+   TITEL  = PAW_PBE Pt 05Jan2001
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        1    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =    2.330    partial core radius
+   POMASS =  195.080; ZVAL   =   10.000    mass and valenz
+   RCORE  =    2.500    outmost cutoff radius
+   RWIGS  =    2.750; RWIGS  =    1.455    wigner-seitz radius (au A)
+   ENMAX  =  230.283; ENMIN  =  172.712 eV
+   RCLOC  =    1.896    cutoff for local pot
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  358.966
+   DEXC   =    -.039
+   RMAX   =    3.038    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    2.590    radius for radial grids
+   QCUT   =   -4.114; QGAM   =    8.228    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     2   .000     23  2.500
+     2   .000     23  2.500
+     0   .000     23  2.500
+     0   .000     23  2.500
+     1  -.200     23  2.500
+     1  1.500     23  2.500
+     3   .000      7   .000
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  199.      196.      194.      190.      188.      184.      180.      178.
+  173.      168.      166.      161.      155.      150.      144.      138.
+  133.      127.      121.      112.      107.      101.      92.5      87.0
+  81.6      73.8      66.3      61.6      54.8      48.4      42.5      37.1
+  32.1      27.6      23.5      19.9      15.7      13.0      9.97      8.06
+  5.97      4.33      3.06      2.11      1.41      .913      .573      .307
+  .183      .101      .659E-01  .561E-01  .534E-01  .532E-01  .504E-01  .450E-01
+  .376E-01  .279E-01  .191E-01  .124E-01  .819E-02  .607E-02  .532E-02  .519E-02
+  .511E-02  .469E-02  .391E-02  .296E-02  .199E-02  .141E-02  .110E-02  .102E-02
+  .101E-02  .948E-03  .781E-03  .594E-03  .418E-03  .321E-03  .292E-03  .288E-03
+  .263E-03  .211E-03  .155E-03  .116E-03  .105E-03  .103E-03  .922E-04  .706E-04
+  .522E-04  .450E-04  .438E-04  .398E-04  .302E-04  .233E-04  .212E-04  .204E-04
+  .167E-04  .128E-04  .112E-04  .108E-04
+END of PSCTR-controll parameters
+ local part
+ 75.5890395431569289
+   .14549528E+03   .14546936E+03   .14539157E+03   .14526204E+03   .14508094E+03
+   .14484850E+03   .14456503E+03   .14423087E+03   .14384644E+03   .14341220E+03
+   .14292868E+03   .14239643E+03   .14181606E+03   .14118822E+03   .14051359E+03
+   .13979291E+03   .13902696E+03   .13821655E+03   .13736254E+03   .13646583E+03
+   .13552738E+03   .13454817E+03   .13352924E+03   .13247168E+03   .13137660E+03
+   .13024517E+03   .12907858E+03   .12787807E+03   .12664491E+03   .12538039E+03
+   .12408584E+03   .12276259E+03   .12141201E+03   .12003550E+03   .11863444E+03
+   .11721025E+03   .11576435E+03   .11429819E+03   .11281319E+03   .11131082E+03
+   .10979253E+03   .10825976E+03   .10671398E+03   .10515663E+03   .10358917E+03
+   .10201304E+03   .10042966E+03   .98840448E+02   .97246816E+02   .95650144E+02
+   .94051797E+02   .92453121E+02   .90855435E+02   .89260033E+02   .87668184E+02
+   .86081128E+02   .84500071E+02   .82926193E+02   .81360637E+02   .79804514E+02
+   .78258898E+02   .76724826E+02   .75203297E+02   .73695271E+02   .72201667E+02
+   .70723363E+02   .69261194E+02   .67815953E+02   .66388388E+02   .64979206E+02
+   .63589068E+02   .62218591E+02   .60868349E+02   .59538871E+02   .58230644E+02
+   .56944111E+02   .55679672E+02   .54437683E+02   .53218462E+02   .52022280E+02
+   .50849372E+02   .49699929E+02   .48574104E+02   .47472012E+02   .46393728E+02
+   .45339293E+02   .44308709E+02   .43301946E+02   .42318940E+02   .41359594E+02
+   .40423783E+02   .39511351E+02   .38622113E+02   .37755860E+02   .36912355E+02
+   .36091339E+02   .35292531E+02   .34515628E+02   .33760306E+02   .33026224E+02
+   .32313023E+02   .31620330E+02   .30947756E+02   .30294899E+02   .29661347E+02
+   .29046676E+02   .28450455E+02   .27872244E+02   .27311598E+02   .26768066E+02
+   .26241195E+02   .25730527E+02   .25235603E+02   .24755966E+02   .24291156E+02
+   .23840716E+02   .23404190E+02   .22981127E+02   .22571078E+02   .22173600E+02
+   .21788254E+02   .21414610E+02   .21052241E+02   .20700730E+02   .20359669E+02
+   .20028655E+02   .19707298E+02   .19395215E+02   .19092034E+02   .18797392E+02
+   .18510937E+02   .18232328E+02   .17961234E+02   .17697334E+02   .17440321E+02
+   .17189895E+02   .16945770E+02   .16707671E+02   .16475331E+02   .16248498E+02
+   .16026928E+02   .15810391E+02   .15598665E+02   .15391540E+02   .15188816E+02
+   .14990304E+02   .14795823E+02   .14605205E+02   .14418288E+02   .14234922E+02
+   .14054963E+02   .13878279E+02   .13704742E+02   .13534236E+02   .13366650E+02
+   .13201882E+02   .13039836E+02   .12880423E+02   .12723561E+02   .12569172E+02
+   .12417188E+02   .12267541E+02   .12120174E+02   .11975029E+02   .11832056E+02
+   .11691209E+02   .11552444E+02   .11415722E+02   .11281007E+02   .11148265E+02
+   .11017465E+02   .10888579E+02   .10761582E+02   .10636448E+02   .10513155E+02
+   .10391684E+02   .10272013E+02   .10154126E+02   .10038005E+02   .99236328E+01
+   .98109941E+01   .97000734E+01   .95908554E+01   .94833251E+01   .93774675E+01
+   .92732675E+01   .91707098E+01   .90697790E+01   .89704594E+01   .88727347E+01
+   .87765885E+01   .86820040E+01   .85889638E+01   .84974501E+01   .84074446E+01
+   .83189284E+01   .82318822E+01   .81462859E+01   .80621191E+01   .79793607E+01
+   .78979889E+01   .78179815E+01   .77393159E+01   .76619687E+01   .75859164E+01
+   .75111349E+01   .74375999E+01   .73652869E+01   .72941709E+01   .72242270E+01
+   .71554301E+01   .70877549E+01   .70211762E+01   .69556686E+01   .68912069E+01
+   .68277659E+01   .67653203E+01   .67038453E+01   .66433160E+01   .65837077E+01
+   .65249962E+01   .64671573E+01   .64101676E+01   .63540039E+01   .62986433E+01
+   .62440637E+01   .61902433E+01   .61371611E+01   .60847964E+01   .60331292E+01
+   .59821402E+01   .59318105E+01   .58821218E+01   .58330566E+01   .57845978E+01
+   .57367291E+01   .56894347E+01   .56426993E+01   .55965087E+01   .55508488E+01
+   .55057067E+01   .54610697E+01   .54169261E+01   .53732646E+01   .53300746E+01
+   .52873462E+01   .52450700E+01   .52032371E+01   .51618391E+01   .51208684E+01
+   .50803175E+01   .50401795E+01   .50004481E+01   .49611171E+01   .49221812E+01
+   .48836349E+01   .48454737E+01   .48076930E+01   .47702889E+01   .47332576E+01
+   .46965957E+01   .46603001E+01   .46243681E+01   .45887969E+01   .45535842E+01
+   .45187277E+01   .44842252E+01   .44500750E+01   .44162750E+01   .43828235E+01
+   .43497189E+01   .43169595E+01   .42845439E+01   .42524705E+01   .42207381E+01
+   .41893451E+01   .41582903E+01   .41275724E+01   .40971900E+01   .40671417E+01
+   .40374261E+01   .40080418E+01   .39789871E+01   .39502605E+01   .39218602E+01
+   .38937842E+01   .38660308E+01   .38385977E+01   .38114828E+01   .37846837E+01
+   .37581982E+01   .37320237E+01   .37061576E+01   .36805971E+01   .36553394E+01
+   .36303815E+01   .36057203E+01   .35813525E+01   .35572746E+01   .35334831E+01
+   .35099742E+01   .34867440E+01   .34637885E+01   .34411034E+01   .34186844E+01
+   .33965271E+01   .33746269E+01   .33529792E+01   .33315791E+01   .33104218E+01
+   .32895024E+01   .32688159E+01   .32483572E+01   .32281211E+01   .32081025E+01
+   .31882961E+01   .31686964E+01   .31492982E+01   .31300960E+01   .31110845E+01
+   .30922582E+01   .30736118E+01   .30551400E+01   .30368374E+01   .30186990E+01
+   .30007196E+01   .29828943E+01   .29652183E+01   .29476868E+01   .29302953E+01
+   .29130394E+01   .28959148E+01   .28789175E+01   .28620434E+01   .28452889E+01
+   .28286504E+01   .28121246E+01   .27957084E+01   .27793989E+01   .27631937E+01
+   .27470902E+01   .27310865E+01   .27151808E+01   .26993714E+01   .26836573E+01
+   .26680372E+01   .26525106E+01   .26370769E+01   .26217359E+01   .26064874E+01
+   .25913318E+01   .25762694E+01   .25613009E+01   .25464270E+01   .25316488E+01
+   .25169674E+01   .25023843E+01   .24879009E+01   .24735189E+01   .24592402E+01
+   .24450665E+01   .24310000E+01   .24170426E+01   .24031964E+01   .23894635E+01
+   .23758460E+01   .23623459E+01   .23489652E+01   .23357058E+01   .23225696E+01
+   .23095582E+01   .22966733E+01   .22839163E+01   .22712885E+01   .22587911E+01
+   .22464252E+01   .22341914E+01   .22220904E+01   .22101226E+01   .21982882E+01
+   .21865870E+01   .21750186E+01   .21635825E+01   .21522778E+01   .21411034E+01
+   .21300578E+01   .21191394E+01   .21083463E+01   .20976763E+01   .20871272E+01
+   .20766962E+01   .20663806E+01   .20561775E+01   .20460836E+01   .20360957E+01
+   .20262102E+01   .20164236E+01   .20067320E+01   .19971317E+01   .19876187E+01
+   .19781889E+01   .19688384E+01   .19595629E+01   .19503585E+01   .19412210E+01
+   .19321465E+01   .19231311E+01   .19141709E+01   .19052622E+01   .18964015E+01
+   .18875853E+01   .18788106E+01   .18700742E+01   .18613732E+01   .18527052E+01
+   .18440676E+01   .18354584E+01   .18268755E+01   .18183174E+01   .18097827E+01
+   .18012701E+01   .17927789E+01   .17843085E+01   .17758586E+01   .17674292E+01
+   .17590206E+01   .17506333E+01   .17422681E+01   .17339260E+01   .17256084E+01
+   .17173167E+01   .17090526E+01   .17008180E+01   .16926148E+01   .16844453E+01
+   .16763117E+01   .16682165E+01   .16601622E+01   .16521512E+01   .16441863E+01
+   .16362702E+01   .16284054E+01   .16205946E+01   .16128405E+01   .16051457E+01
+   .15975126E+01   .15899437E+01   .15824411E+01   .15750071E+01   .15676434E+01
+   .15603520E+01   .15531344E+01   .15459919E+01   .15389258E+01   .15319369E+01
+   .15250260E+01   .15181934E+01   .15114396E+01   .15047645E+01   .14981678E+01
+   .14916491E+01   .14852076E+01   .14788425E+01   .14725525E+01   .14663361E+01
+   .14601918E+01   .14541177E+01   .14481116E+01   .14421715E+01   .14362947E+01
+   .14304789E+01   .14247212E+01   .14190189E+01   .14133691E+01   .14077688E+01
+   .14022150E+01   .13967047E+01   .13912347E+01   .13858022E+01   .13804039E+01
+   .13750370E+01   .13696984E+01   .13643854E+01   .13590951E+01   .13538249E+01
+   .13485723E+01   .13433348E+01   .13381103E+01   .13328967E+01   .13276922E+01
+   .13224950E+01   .13173038E+01   .13121174E+01   .13069346E+01   .13017548E+01
+   .12965774E+01   .12914020E+01   .12862285E+01   .12810570E+01   .12758877E+01
+   .12707212E+01   .12655581E+01   .12603993E+01   .12552459E+01   .12500990E+01
+   .12449600E+01   .12398304E+01   .12347120E+01   .12296064E+01   .12245156E+01
+   .12194415E+01   .12143862E+01   .12093516E+01   .12043399E+01   .11993532E+01
+   .11943936E+01   .11894630E+01   .11845636E+01   .11796972E+01   .11748657E+01
+   .11700710E+01   .11653146E+01   .11605981E+01   .11559231E+01   .11512907E+01
+   .11467023E+01   .11421588E+01   .11376611E+01   .11332099E+01   .11288057E+01
+   .11244489E+01   .11201395E+01   .11158776E+01   .11116630E+01   .11074953E+01
+   .11033739E+01   .10992981E+01   .10952669E+01   .10912794E+01   .10873344E+01
+   .10834306E+01   .10795666E+01   .10757407E+01   .10719515E+01   .10681972E+01
+   .10644759E+01   .10607859E+01   .10571252E+01   .10534920E+01   .10498842E+01
+   .10462998E+01   .10427369E+01   .10391936E+01   .10356679E+01   .10321580E+01
+   .10286621E+01   .10251785E+01   .10217056E+01   .10182418E+01   .10147857E+01
+   .10113361E+01   .10078917E+01   .10044516E+01   .10010148E+01   .99758056E+00
+   .99414815E+00   .99071710E+00   .98728703E+00   .98385770E+00   .98042901E+00
+   .97700100E+00   .97357386E+00   .97014788E+00   .96672353E+00   .96330134E+00
+   .95988202E+00   .95646633E+00   .95305516E+00   .94964947E+00   .94625029E+00
+   .94285871E+00   .93947588E+00   .93610296E+00   .93274118E+00   .92939175E+00
+   .92605589E+00   .92273484E+00   .91942980E+00   .91614198E+00   .91287255E+00
+   .90962261E+00   .90639327E+00   .90318553E+00   .90000035E+00   .89683862E+00
+   .89370111E+00   .89058854E+00   .88750150E+00   .88444051E+00   .88140594E+00
+   .87839810E+00   .87541715E+00   .87246319E+00   .86953618E+00   .86663598E+00
+   .86376237E+00   .86091504E+00   .85809356E+00   .85529745E+00   .85252612E+00
+   .84977891E+00   .84705509E+00   .84435387E+00   .84167438E+00   .83901570E+00
+   .83637687E+00   .83375689E+00   .83115471E+00   .82856930E+00   .82599957E+00
+   .82344447E+00   .82090294E+00   .81837395E+00   .81585649E+00   .81334959E+00
+   .81085230E+00   .80836375E+00   .80588310E+00   .80340956E+00   .80094242E+00
+   .79848101E+00   .79602474E+00   .79357308E+00   .79112557E+00   .78868183E+00
+   .78624156E+00   .78380453E+00   .78137059E+00   .77893968E+00   .77651182E+00
+   .77408709E+00   .77166566E+00   .76924777E+00   .76683371E+00   .76442386E+00
+   .76201861E+00   .75961843E+00   .75722381E+00   .75483529E+00   .75245342E+00
+   .75007878E+00   .74771198E+00   .74535361E+00   .74300431E+00   .74066467E+00
+   .73833533E+00   .73601688E+00   .73370991E+00   .73141500E+00   .72913269E+00
+   .72686348E+00   .72460785E+00   .72236622E+00   .72013896E+00   .71792639E+00
+   .71572877E+00   .71354632E+00   .71137917E+00   .70922741E+00   .70709108E+00
+   .70497014E+00   .70286451E+00   .70077406E+00   .69869861E+00   .69663792E+00
+   .69459171E+00   .69255965E+00   .69054138E+00   .68853647E+00   .68654448E+00
+   .68456493E+00   .68259729E+00   .68064103E+00   .67869558E+00   .67676037E+00
+   .67483481E+00   .67291831E+00   .67101030E+00   .66911020E+00   .66721745E+00
+   .66533154E+00   .66345194E+00   .66157818E+00   .65970980E+00   .65784640E+00
+   .65598759E+00   .65413301E+00   .65228238E+00   .65043542E+00   .64859191E+00
+   .64675166E+00   .64491456E+00   .64308051E+00   .64124949E+00   .63942150E+00
+   .63759661E+00   .63577493E+00   .63395663E+00   .63214191E+00   .63033101E+00
+   .62852421E+00   .62672183E+00   .62492419E+00   .62313166E+00   .62134461E+00
+   .61956345E+00   .61778855E+00   .61602035E+00   .61425924E+00   .61250564E+00
+   .61075995E+00   .60902259E+00   .60729393E+00   .60557438E+00   .60386427E+00
+   .60216397E+00   .60047378E+00   .59879398E+00   .59712482E+00   .59546651E+00
+   .59381923E+00   .59218310E+00   .59055819E+00   .58894456E+00   .58734218E+00
+   .58575101E+00   .58417097E+00   .58260191E+00   .58104367E+00   .57949604E+00
+   .57795877E+00   .57643160E+00   .57491421E+00   .57340627E+00   .57190739E+00
+   .57041720E+00   .56893526E+00   .56746113E+00   .56599436E+00   .56453446E+00
+   .56308095E+00   .56163335E+00   .56019117E+00   .55875392E+00   .55732114E+00
+   .55589237E+00   .55446717E+00   .55304513E+00   .55162586E+00   .55020899E+00
+   .54879421E+00   .54738119E+00   .54596967E+00   .54455942E+00   .54315022E+00
+   .54174192E+00   .54033438E+00   .53892751E+00   .53752127E+00   .53611565E+00
+   .53471068E+00   .53330645E+00   .53190307E+00   .53050072E+00   .52909958E+00
+   .52769991E+00   .52630196E+00   .52490605E+00   .52351250E+00   .52212165E+00
+   .52073387E+00   .51934954E+00   .51796906E+00   .51659282E+00   .51522124E+00
+   .51385471E+00   .51249366E+00   .51113849E+00   .50978960E+00   .50844740E+00
+   .50711226E+00   .50578456E+00   .50446464E+00   .50315283E+00   .50184942E+00
+   .50055468E+00   .49926885E+00   .49799211E+00   .49672463E+00   .49546652E+00
+   .49421787E+00   .49297872E+00   .49174906E+00   .49052887E+00   .48931806E+00
+   .48811655E+00   .48692417E+00   .48574077E+00   .48456612E+00   .48339999E+00
+   .48224210E+00   .48109214E+00   .47994979E+00   .47881469E+00   .47768644E+00
+   .47656465E+00   .47544890E+00   .47433874E+00   .47323373E+00   .47213343E+00
+   .47103738E+00   .46994513E+00   .46885626E+00   .46777033E+00   .46668693E+00
+   .46560565E+00   .46452611E+00   .46344796E+00   .46237084E+00   .46129445E+00
+   .46021848E+00   .45914266E+00   .45806677E+00   .45699059E+00   .45591394E+00
+   .45483669E+00   .45375873E+00   .45268000E+00   .45160048E+00   .45052017E+00
+   .44943912E+00   .44835744E+00   .44727522E+00   .44619264E+00   .44510986E+00
+   .44402711E+00   .44294463E+00   .44186266E+00   .44078149E+00   .43970143E+00
+   .43862278E+00   .43754587E+00   .43647106E+00   .43539869E+00   .43432913E+00
+   .43326275E+00   .43219992E+00   .43114102E+00   .43008640E+00   .42903644E+00
+   .42799148E+00   .42695185E+00   .42591788E+00   .42488985E+00   .42386804E+00
+   .42285270E+00   .42184404E+00   .42084225E+00   .41984752E+00   .41885996E+00
+   .41787969E+00   .41690679E+00   .41594132E+00   .41498329E+00   .41403271E+00
+   .41308952E+00   .41215366E+00   .41122504E+00   .41030352E+00   .40938895E+00
+   .40848113E+00   .40757985E+00   .40668486E+00   .40579591E+00   .40491270E+00
+   .40403494E+00   .40316231E+00   .40229448E+00   .40143112E+00   .40057189E+00
+   .39971645E+00   .39886446E+00   .39801557E+00   .39716943E+00   .39632572E+00
+   .39548409E+00   .39464423E+00   .39380582E+00   .39296856E+00   .39213215E+00
+   .39129633E+00   .39046084E+00   .38962546E+00   .38878998E+00   .38795422E+00
+   .38711802E+00   .38628126E+00   .38544385E+00   .38460571E+00   .38376681E+00
+   .38292712E+00   .38208666E+00   .38124546E+00   .38040358E+00   .37956109E+00
+   .37871810E+00   .37787474E+00   .37703114E+00   .37618747E+00   .37534392E+00
+   .37450070E+00   .37365801E+00   .37281611E+00   .37197523E+00   .37113563E+00
+   .37029759E+00   .36946138E+00   .36862727E+00   .36779554E+00   .36696645E+00
+   .36614028E+00   .36531727E+00   .36449768E+00   .36368174E+00   .36286969E+00
+   .36206173E+00   .36125808E+00   .36045891E+00   .35966440E+00   .35887471E+00
+   .35808998E+00   .35731032E+00   .35653585E+00   .35576662E+00   .35500271E+00
+   .35424414E+00   .35349091E+00   .35274302E+00   .35200041E+00   .35126303E+00
+   .35053080E+00   .34980360E+00   .34908132E+00   .34836381E+00   .34765093E+00
+   .34694251E+00   .34623836E+00   .34553830E+00   .34484213E+00   .34414963E+00
+   .34346058E+00   .34277476E+00   .34209194E+00   .34141186E+00   .34073430E+00
+   .34005901E+00   .33938574E+00   .33871427E+00   .33804435E+00   .33737577E+00
+   .33670831E+00   .33604177E+00   .33537596E+00   .33471072E+00   .33404587E+00
+   .33338128E+00   .33271682E+00   .33205238E+00   .33138786E+00   .33072317E+00
+   .33005826E+00   .32939307E+00   .32872757E+00   .32806175E+00   .32739560E+00
+   .32672915E+00   .32606245E+00   .32539553E+00   .32472849E+00   .32406141E+00
+   .32339440E+00   .32272759E+00   .32206110E+00   .32139508E+00   .32072968E+00
+   .32006506E+00   .31940139E+00   .31873883E+00   .31807755E+00   .31741773E+00
+ gradient corrections used for XC
+ 5
+ core charge-density (partial)
+   .23304368E+01   .23293201E+01   .23259732E+01   .23204049E+01   .23126305E+01
+   .23026710E+01   .22905531E+01   .22763094E+01   .22599782E+01   .22416029E+01
+   .22212323E+01   .21989203E+01   .21747254E+01   .21487106E+01   .21209435E+01
+   .20914951E+01   .20604407E+01   .20278585E+01   .19938299E+01   .19584392E+01
+   .19217727E+01   .18839190E+01   .18449683E+01   .18050123E+01   .17641436E+01
+   .17224552E+01   .16800409E+01   .16369943E+01   .15934084E+01   .15493760E+01
+   .15049886E+01   .14603366E+01   .14155089E+01   .13705926E+01   .13256726E+01
+   .12808318E+01   .12361503E+01   .11917056E+01   .11475724E+01   .11038223E+01
+   .10605235E+01   .10177412E+01   .97553688E+00   .93396849E+00   .89309041E+00
+   .85295331E+00   .81360412E+00   .77508601E+00   .73743836E+00   .70069679E+00
+   .66489317E+00   .63005566E+00   .59620875E+00   .56337331E+00   .53156672E+00
+   .50080286E+00   .47109230E+00   .44244234E+00   .41485716E+00   .38833792E+00
+   .36288288E+00   .33848755E+00   .31514485E+00   .29284519E+00   .27157666E+00
+   .25132520E+00   .23207467E+00   .21380708E+00   .19650272E+00   .18014027E+00
+   .16469700E+00   .15014889E+00   .13647080E+00   .12363658E+00   .11161923E+00
+   .10039103E+00   .89923683E-01   .80188417E-01   .71156134E-01   .62797511E-01
+   .55083117E-01   .47983519E-01   .41469382E-01   .35511562E-01   .30081199E-01
+   .25149796E-01   .20689298E-01   .16672160E-01   .13071413E-01   .98607243E-02
+   .70144480E-02   .45076723E-02   .23162617E-02   .41689200E-03  -.12129190E-02
+  -.25947862E-02  -.37494372E-02  -.46966967E-02  -.54554756E-02  -.60437648E-02
+  -.64786326E-02  -.67762263E-02  -.69517776E-02  -.70196111E-02  -.69931560E-02
+  -.68849611E-02  -.67067121E-02  -.64692513E-02  -.61826002E-02  -.58559828E-02
+  -.54978523E-02  -.51159176E-02  -.47171723E-02  -.43079243E-02  -.38938266E-02
+  -.34799081E-02  -.30706058E-02  -.26697966E-02  -.22808298E-02  -.19065589E-02
+  -.15493743E-02  -.12112344E-02  -.89369736E-03  -.59795196E-03  -.32484747E-03
+  -.74923249E-04   .15156275E-03   .35460631E-03   .53443034E-03   .69145924E-03
+   .82629443E-03   .93969097E-03   .10325354E-02   .11058249E-02   .11606473E-02
+   .11981628E-02   .12195867E-02   .12261732E-02   .12192008E-02   .11999587E-02
+   .11697344E-02   .11298025E-02   .10814146E-02   .10257904E-02   .96410991E-03
+   .89750636E-03   .82706064E-03   .75379623E-03   .67867523E-03   .60259520E-03
+   .52638683E-03   .45081228E-03   .37656432E-03   .30426603E-03   .23447116E-03
+   .16766494E-03   .10426550E-03   .44625618E-04  -.10965055E-04  -.62277499E-04
+  -.10914048E-03  -.15143748E-03  -.18910343E-03  -.22212121E-03  -.25051814E-03
+  -.27436228E-03  -.29375870E-03  -.30884575E-03  -.31979136E-03  -.32678928E-03
+  -.33005549E-03  -.32982466E-03  -.32634667E-03  -.31988337E-03  -.31070531E-03
+  -.29908884E-03  -.28531317E-03  -.26965778E-03  -.25239992E-03  -.23381231E-03
+  -.21416110E-03  -.19370396E-03  -.17268840E-03  -.15135032E-03  -.12991272E-03
+  -.10858460E-03  -.87560067E-04  -.67017675E-04  -.47119842E-04  -.28012521E-04
+  -.98249937E-05   .73301671E-05   .23357000E-04   .38175920E-04   .51723364E-04
+   .63951324E-04   .74826772E-04   .84331012E-04   .92458932E-04   .99218206E-04
+   .10462843E-03   .10872021E-03   .11153421E-03   .11312020E-03   .11353606E-03
+   .11284676E-03   .11112339E-03   .10844216E-03   .10488343E-03   .10053078E-03
+   .95470056E-04   .89788497E-04   .83573909E-04   .76913851E-04   .69894883E-04
+   .62601872E-04   .55117348E-04   .47520913E-04   .39888714E-04   .32292973E-04
+   .24801577E-04   .17477727E-04   .10379646E-04   .35603507E-05  -.29325299E-05
+  -.90568714E-05  -.14776122E-04  -.20059320E-04  -.24881058E-04  -.29221412E-04
+  -.33065816E-04  -.36404904E-04  -.39234321E-04  -.41554491E-04  -.43370362E-04
+  -.44691131E-04  -.45529938E-04  -.45903551E-04  -.45832027E-04  -.45338375E-04
+  -.44448200E-04  -.43189350E-04  -.41591557E-04  -.39686087E-04  -.37505390E-04
+  -.35082753E-04  -.32451976E-04  -.29647049E-04  -.26701844E-04  -.23649833E-04
+  -.20523810E-04  -.17355641E-04  -.14176032E-04  -.11014321E-04  -.78982827E-05
+  -.48539668E-05  -.19055520E-05   .92477448E-06   .36169158E-05   .61529415E-05
+   .85171410E-05   .10696057E-04   .12678496E-04   .14455523E-04   .16020431E-04
+   .17368700E-04   .18497933E-04   .19407782E-04   .20099856E-04   .20577621E-04
+   .20846281E-04   .20912660E-04   .20785065E-04   .20473154E-04   .19987785E-04
+   .19340871E-04   .18545235E-04   .17614450E-04   .16562694E-04   .15404599E-04
+   .14155106E-04   .12829317E-04   .11442362E-04   .10009266E-04   .85448185E-05
+   .70634612E-05   .55791739E-05   .41053735E-05   .26548220E-05   .12395425E-05
+  -.12925334E-06  -.14412292E-05  -.26869768E-05  -.38580596E-05  -.49470451E-05
+  -.59475284E-05  -.68541453E-05  -.76625765E-05  -.83695420E-05  -.89727877E-05
+  -.94710631E-05  -.98640917E-05  -.10152535E-04  -.10337946E-04  -.10422727E-04
+  -.10410066E-04  -.10303884E-04  -.10108772E-04  -.98299213E-05  -.94730568E-05
+  -.90443672E-05  -.85504326E-05  -.79981518E-05  -.73946709E-05  -.67473112E-05
+  -.60634995E-05  -.53506995E-05  -.46163455E-05  -.38677795E-05  -.31121908E-05
+  -.23565597E-05  -.16076047E-05  -.87173441E-06  -.15500346E-06   .53692665E-06
+   .11988219E-05   .18259052E-05   .24138810E-05   .29589543E-05   .34578455E-05
+   .39077997E-05   .43065915E-05   .46525247E-05   .49444280E-05   .51816457E-05
+   .53640255E-05   .54919009E-05   .55660712E-05   .55877780E-05   .55586784E-05
+   .54808159E-05   .53565894E-05   .51887191E-05   .49802123E-05   .47343270E-05
+   .44545347E-05   .41444834E-05   .38079592E-05   .34488492E-05   .30711044E-05
+   .26787028E-05   .22756145E-05   .18657675E-05   .14530150E-05   .10411046E-05
+   .63364981E-06   .23410279E-06  -.15426965E-06  -.52840821E-06  -.88548061E-06
+  -.12228984E-05  -.15383315E-05  -.18297190E-05  -.20952791E-05  -.23335143E-05
+  -.25432154E-05  -.27234626E-05  -.28736234E-05  -.29933493E-05  -.30825689E-05
+  -.31414799E-05  -.31705385E-05  -.31704468E-05  -.31421393E-05  -.30867669E-05
+  -.30056800E-05  -.29004106E-05  -.27726531E-05  -.26242444E-05  -.24571436E-05
+  -.22734112E-05  -.20751878E-05  -.18646732E-05  -.16441058E-05  -.14157414E-05
+  -.11818338E-05  -.94461476E-06  -.70627584E-06  -.46895046E-06  -.23469733E-06
+  -.54849251E-08   .21682277E-06   .43047913E-06   .63386644E-06   .82550591E-06
+   .10040662E-05   .11683706E-05   .13174022E-05   .14503083E-05   .15664022E-05
+   .16651647E-05   .17462435E-05   .18094507E-05   .18547602E-05   .18823026E-05
+   .18923598E-05   .18853577E-05   .18618583E-05   .18225512E-05   .17682434E-05
+   .16998492E-05   .16183790E-05   .15249275E-05   .14206625E-05   .13068119E-05
+   .11846516E-05   .10554933E-05   .92067201E-06   .78153347E-06   .63942272E-06
+   .49567220E-06   .35159066E-06   .20845250E-06   .67487760E-07  -.70127289E-07
+  -.20327878E-06  -.33092312E-06  -.45209402E-06  -.56590870E-06  -.67157317E-06
+  -.76838657E-06  -.85574470E-06  -.93314249E-06  -.10001756E-05  -.10565413E-05
+  -.11020378E-05  -.11365640E-05  -.11601167E-05  -.11727885E-05  -.11747644E-05
+  -.11663173E-05  -.11478035E-05  -.11196572E-05  -.10823849E-05  -.10365589E-05
+  -.98281020E-06  -.92182220E-06  -.85432280E-06  -.78107713E-06  -.70287991E-06
+  -.62054778E-06  -.53491166E-06  -.44680917E-06  -.35707723E-06  -.26654483E-06
+  -.17602606E-06  -.86313511E-07   .18280737E-08   .87667637E-07   .17051326E-06
+   .24971712E-06   .32467994E-06   .39485490E-06   .45975101E-06   .51893591E-06
+   .57203808E-06   .61874850E-06   .65882166E-06   .69207614E-06   .71839446E-06
+   .73772246E-06   .75006822E-06   .75550031E-06   .75414575E-06   .74618735E-06
+   .73186078E-06   .71145113E-06   .68528928E-06   .65374782E-06   .61723680E-06
+   .57619927E-06   .53110660E-06   .48245369E-06   .43075414E-06   .37653531E-06
+   .32033343E-06   .26268877E-06   .20414083E-06   .14522371E-06   .86461636E-07
+   .28364650E-07  -.28575431E-07  -.83888838E-07  -.13713137E-06  -.18788759E-06
+  -.23577378E-06  -.28044041E-06  -.32157438E-06  -.35890085E-06  -.39218468E-06
+  -.42123149E-06  -.44588842E-06  -.46604439E-06  -.48163010E-06  -.49261765E-06
+  -.49901974E-06  -.50088864E-06  -.49831479E-06  -.49142511E-06  -.48038105E-06
+  -.46537636E-06  -.44663468E-06  -.42440689E-06  -.39896831E-06  -.37061575E-06
+  -.33966443E-06  -.30644483E-06  -.27129949E-06  -.23457975E-06  -.19664255E-06
+  -.15784715E-06  -.11855201E-06  -.79111711E-07  -.39873975E-07  -.11768050E-08
+   .36654207E-07   .73308410E-07   .10849244E-06   .14193238E-06   .17337564E-06
+   .20259271E-06   .22937860E-06   .25355406E-06   .27496653E-06   .29349090E-06
+   .30902994E-06   .32151454E-06   .33090364E-06   .33718401E-06   .34036972E-06
+   .34050140E-06   .33764530E-06   .33189219E-06   .32335597E-06   .31217222E-06
+   .29849654E-06   .28250276E-06   .26438102E-06   .24433581E-06   .22258386E-06
+   .19935199E-06   .17487494E-06   .14939320E-06   .12315073E-06   .96392873E-07
+   .69364109E-07   .42306026E-07   .15455264E-07  -.10958415E-07  -.36713971E-07
+  -.61600805E-07  -.85420362E-07  -.10798758E-06  -.12913223E-06  -.14870002E-06
+  -.16655364E-06  -.18257358E-06  -.19665877E-06  -.20872705E-06  -.21871553E-06
+  -.22658070E-06  -.23229838E-06  -.23586355E-06  -.23729001E-06  -.23660979E-06
+  -.23387259E-06  -.22914492E-06  -.22250919E-06  -.21406266E-06  -.20391632E-06
+  -.19219361E-06  -.17902912E-06  -.16456717E-06  -.14896040E-06  -.13236825E-06
+  -.11495545E-06  -.96890487E-07  -.78344077E-07  -.59487632E-07  -.40491772E-07
+  -.21524866E-07  -.27516156E-08   .15668287E-07   .33581443E-07   .50841947E-07
+   .67312494E-07   .82865395E-07   .97383488E-07   .11076094E-06   .12290394E-06
+   .13373125E-06   .14317469E-06   .15117943E-06   .15770424E-06   .16272152E-06
+   .16621732E-06   .16819119E-06   .16865586E-06   .16763693E-06   .16517238E-06
+   .16131197E-06   .15611662E-06   .14965762E-06   .14201587E-06   .13328092E-06
+   .12355009E-06   .11292744E-06   .10152275E-06   .89450460E-07   .76828596E-07
+   .63777667E-07   .50419586E-07   .36876582E-07   .23270141E-07   .97199680E-08
+  -.36570146E-08  -.16747623E-07  -.29443320E-07  -.41641064E-07  -.53244099E-07
+  -.64162665E-07  -.74314648E-07  -.83626139E-07  -.92031922E-07  -.99475872E-07
+  -.10591127E-06  -.11130102E-06  -.11561781E-06  -.11884414E-06  -.12097230E-06
+  -.12200426E-06  -.12195147E-06  -.12083455E-06  -.11868301E-06  -.11553475E-06
+  -.11143564E-06  -.10643895E-06  -.10060474E-06  -.93999222E-07  -.86694100E-07
+  -.78765811E-07  -.70294799E-07  -.61364738E-07  -.52061750E-07  -.42473618E-07
+  -.32688994E-07  -.22796614E-07  -.12884535E-07  -.30393823E-08   .66543747E-08
+   .16115111E-07   .25264703E-07   .34029138E-07   .42339082E-07   .50130394E-07
+   .57344587E-07   .63929232E-07   .69838304E-07   .75032461E-07   .79479269E-07
+   .83153358E-07   .86036513E-07   .88117703E-07   .89393055E-07   .89865751E-07
+   .89545882E-07   .88450235E-07   .86602031E-07   .84030608E-07   .80771061E-07
+   .76863837E-07   .72354289E-07   .67292201E-07   .61731277E-07   .55728605E-07
+   .49344112E-07   .42639989E-07   .35680116E-07   .28529479E-07   .21253592E-07
+   .13917918E-07   .65873031E-08  -.67457097E-09  -.78057191E-08  -.14746359E-07
+  -.21439392E-07  -.27830847E-07  -.33870297E-07  -.39511234E-07  -.44711401E-07
+  -.49433089E-07  -.53643381E-07  -.57314360E-07  -.60423260E-07  -.62952578E-07
+  -.64890135E-07  -.66229092E-07  -.66967917E-07  -.67110310E-07  -.66665082E-07
+  -.65645991E-07  -.64071541E-07  -.61964743E-07  -.59352837E-07  -.56266990E-07
+  -.52741954E-07  -.48815714E-07  -.44529096E-07  -.39925375E-07  -.35049852E-07
+  -.29949436E-07  -.24672205E-07  -.19266974E-07  -.13782862E-07  -.82688564E-08
+  -.27733981E-08   .26560326E-08   .79733100E-08   .13134039E-07   .18095912E-07
+   .22819039E-07   .27266253E-07   .31403391E-07   .35199532E-07   .38627222E-07
+   .41662645E-07   .44285777E-07   .46480495E-07   .48234651E-07   .49540117E-07
+   .50392785E-07   .50792542E-07   .50743205E-07   .50252424E-07   .49331553E-07
+   .47995495E-07   .46262514E-07   .44154023E-07   .41694350E-07   .38910480E-07
+   .35831778E-07   .32489697E-07   .28917475E-07   .25149817E-07   .21222572E-07
+   .17172404E-07   .13036464E-07   .88520584E-08   .46563239E-08   .48591144E-09
+  -.36233256E-08  -.76366282E-08  -.11520615E-07  -.15243550E-07  -.18775592E-07
+  -.22089019E-07  -.25158441E-07  -.27960980E-07  -.30476427E-07  -.32687378E-07
+  -.34579342E-07  -.36140815E-07  -.37363342E-07  -.38241535E-07  -.38773075E-07
+  -.38958688E-07  -.38802085E-07  -.38309891E-07  -.37491535E-07  -.36359132E-07
+  -.34927336E-07  -.33213168E-07  -.31235842E-07  -.29016557E-07  -.26578288E-07
+  -.23945557E-07  -.21144202E-07  -.18201127E-07  -.15144058E-07  -.12001289E-07
+  -.88014270E-08  -.55731429E-08  -.23449199E-08   .85518884E-09   .39997971E-08
+   .70624121E-08   .10017650E-07   .12841440E-07   .15511212E-07   .18006069E-07
+   .20306944E-07   .22396735E-07   .24260429E-07   .25885194E-07   .27260464E-07
+   .28377989E-07   .29231882E-07   .29818625E-07   .30137069E-07   .30188412E-07
+   .29976146E-07   .29505999E-07   .28785851E-07   .27825634E-07   .26637215E-07
+   .25234264E-07   .23632114E-07   .21847599E-07   .19898886E-07   .17805304E-07
+   .15587153E-07   .13265518E-07   .10862076E-07   .83988960E-08   .58982453E-08
+   .33823929E-08   .87341716E-09  -.16069829E-08  -.40376697E-08  -.63982416E-08
+  -.86691993E-08  -.10832101E-07  -.12869709E-07  -.14766115E-07  -.16506870E-07
+  -.18079075E-07  -.19471482E-07  -.20674560E-07  -.21680557E-07  -.22483541E-07
+  -.23079423E-07  -.23465968E-07  -.23642791E-07  -.23611326E-07  -.23374796E-07
+  -.22938157E-07  -.22308027E-07  -.21492609E-07  -.20501600E-07  -.19346078E-07
+  -.18038394E-07  -.16592045E-07  -.15021541E-07  -.13342262E-07  -.11570318E-07
+  -.97223975E-08  -.78156128E-08  -.58673483E-08  -.38951057E-08  -.19163504E-08
+   .51638444E-10   .19919154E-08   .38880104E-08   .57240650E-08   .74849610E-08
+   .91564410E-08   .10725220E-07   .12179086E-07   .13506993E-07   .14699139E-07
+   .15747033E-07   .16643553E-07   .17382984E-07   .17961056E-07   .18374953E-07
+   .18623322E-07   .18706264E-07   .18625312E-07   .18383400E-07   .17984818E-07
+   .17435155E-07   .16741234E-07   .15911038E-07   .14953620E-07   .13879017E-07
+   .12698144E-07   .11422691E-07   .10065010E-07   .86379991E-08   .71549846E-08
+   .56295989E-08   .40756584E-08   .25070421E-08   .93756996E-09  -.61911552E-09
+  -.21496651E-08  -.36411346E-08  -.50810912E-08  -.64577143E-08  -.77598902E-08
+  -.89772979E-08  -.10100489E-07  -.11120957E-07  -.12031198E-07  -.12824765E-07
+  -.13496307E-07  -.14041600E-07  -.14457573E-07  -.14742315E-07  -.14895079E-07
+  -.14916271E-07  -.14807432E-07  -.14571213E-07  -.14211332E-07  -.13732531E-07
+  -.13140521E-07  -.12441921E-07  -.11644186E-07  -.10755536E-07  -.97848685E-08
+  -.87416795E-08  -.76359690E-08  -.64781496E-08  -.52789505E-08  -.40493209E-08
+  -.28003321E-08  -.15430801E-08  -.28858937E-09   .95228174E-09   .21689328E-08
+   .33511099E-08   .44889898E-08   .55732592E-08   .65951894E-08   .75467040E-08
+   .84204402E-08   .92098039E-08   .99090168E-08   .10513156E-07   .11018185E-07
+   .11420979E-07   .11719338E-07   .11911997E-07   .11998622E-07   .11979804E-07
+   .11857039E-07   .11632708E-07   .11310038E-07   .10893073E-07   .10386621E-07
+   .97962035E-08   .91280042E-08   .83888013E-08   .75859037E-08   .67270812E-08
+   .58204909E-08   .48746020E-08   .38981185E-08   .28999009E-08   .18888876E-08
+   .87401653E-09  -.13585227E-09  -.11320123E-08  -.21059843E-08  -.30495862E-08
+  -.39550013E-08  -.48148404E-08  -.56222010E-08  -.63707209E-08  -.70546268E-08
+  -.76687766E-08  -.82086964E-08  -.86706112E-08  -.90514685E-08  -.93489562E-08
+  -.95615132E-08  -.96883342E-08  -.97293668E-08  -.96853033E-08  -.95575651E-08
+  -.93482819E-08  -.90602643E-08  -.86969713E-08  -.82624724E-08  -.77614051E-08
+  -.71989276E-08  -.65806679E-08  -.59126694E-08  -.52013337E-08  -.44533605E-08
+  -.36756862E-08  -.28754209E-08  -.20597849E-08  -.12360448E-08  -.41144973E-09
+   .40683075E-09   .12117680E-08   .19965336E-08   .27545557E-08   .34795730E-08
+ atomic pseudo charge-density
+   .10000000E+02   .99890372E+01   .99562530E+01   .99019569E+01   .98266570E+01
+   .97310482E+01   .96159969E+01   .94825221E+01   .93317741E+01   .91650117E+01
+   .89835779E+01   .87888765E+01   .85823483E+01   .83654494E+01   .81396305E+01
+   .79063186E+01   .76669018E+01   .74227149E+01   .71750295E+01   .69250448E+01
+   .66738820E+01   .64225799E+01   .61720928E+01   .59232900E+01   .56769568E+01
+   .54337959E+01   .51944311E+01   .49594100E+01   .47292085E+01   .45042351E+01
+   .42848354E+01   .40712969E+01   .38638531E+01   .36626888E+01   .34679437E+01
+   .32797173E+01   .30980722E+01   .29230383E+01   .27546161E+01   .25927800E+01
+   .24374811E+01   .22886505E+01   .21462010E+01   .20100303E+01   .18800226E+01
+   .17560505E+01   .16379770E+01   .15256572E+01   .14189392E+01   .13176659E+01
+   .12216760E+01   .11308050E+01   .10448862E+01   .96375155E+00   .88723242E+00
+   .81516016E+00   .74736681E+00   .68368555E+00   .62395121E+00   .56800066E+00
+   .51567315E+00   .46681063E+00   .42125802E+00   .37886341E+00   .33947828E+00
+   .30295762E+00   .26916013E+00   .23794825E+00   .20918829E+00   .18275048E+00
+   .15850902E+00   .13634211E+00   .11613196E+00   .97764785E-01   .81130813E-01
+   .66124254E-01   .52643274E-01   .40589956E-01   .29870261E-01   .20393973E-01
+   .12074648E-01   .48295493E-02  -.14204149E-02  -.67507596E-02  -.11233496E-01
+  -.14937205E-01  -.17927114E-01  -.20265179E-01  -.22010159E-01  -.23217706E-01
+  -.23940443E-01  -.24228051E-01  -.24127356E-01  -.23682410E-01  -.22934584E-01
+  -.21922649E-01  -.20682866E-01  -.19249072E-01  -.17652767E-01  -.15923198E-01
+  -.14087448E-01  -.12170517E-01  -.10195410E-01  -.81832199E-02  -.61532087E-02
+  -.41228896E-02  -.21081084E-02  -.12312228E-03   .18193221E-02   .37079115E-02
+   .55326910E-02   .72849899E-02   .89573494E-02   .10543452E-01   .12038051E-01
+   .13436907E-01   .14736716E-01   .15935051E-01   .17030296E-01   .18021590E-01
+   .18908763E-01   .19692286E-01   .20373210E-01   .20953117E-01   .21434070E-01
+   .21818563E-01   .22109474E-01   .22310019E-01   .22423714E-01   .22454330E-01
+   .22405855E-01   .22282457E-01   .22088452E-01   .21828266E-01   .21506409E-01
+   .21127443E-01   .20695955E-01   .20216532E-01   .19693736E-01   .19132085E-01
+   .18536030E-01   .17909937E-01   .17258074E-01   .16584587E-01   .15893497E-01
+   .15188679E-01   .14473856E-01   .13752590E-01   .13028271E-01   .12304112E-01
+   .11583144E-01   .10868213E-01   .10161972E-01   .94668846E-02   .87852225E-02
+   .81190639E-02   .74702956E-02   .68406149E-02   .62315321E-02   .56443737E-02
+   .50802866E-02   .45402425E-02   .40250436E-02   .35353278E-02   .30715755E-02
+   .26341155E-02   .22231327E-02   .18386749E-02   .14806604E-02   .11488860E-02
+   .84303473E-03   .56268369E-03   .30731248E-03   .76311157E-04  -.13101162E-03
+  -.31542050E-03  -.47774544E-03  -.61887383E-03  -.73974269E-03  -.84133116E-03
+  -.92465311E-03  -.99074996E-03  -.10406838E-02  -.10755307E-02  -.10963744E-02
+  -.11043004E-02  -.11003898E-02  -.10857145E-02  -.10613317E-02  -.10282790E-02
+  -.98757076E-03  -.94019333E-03  -.88710180E-03  -.82921659E-03  -.76742052E-03
+  -.70255622E-03  -.63542391E-03  -.56677949E-03  -.49733298E-03  -.42774733E-03
+  -.35863750E-03  -.29056984E-03  -.22406181E-03  -.15958199E-03  -.97550261E-04
+  -.38338389E-04   .17729274E-04   .70374798E-04   .11936550E-03   .16451255E-03
+   .20566947E-03   .24273035E-03   .27562806E-03   .30433227E-03   .32884730E-03
+   .34921002E-03   .36548758E-03   .37777507E-03   .38619319E-03   .39088586E-03
+   .39201784E-03   .38977233E-03   .38434857E-03   .37595952E-03   .36482953E-03
+   .35119208E-03   .33528760E-03   .31736131E-03   .29766123E-03   .27643614E-03
+   .25393383E-03   .23039924E-03   .20607290E-03   .18118933E-03   .15597569E-03
+   .13065042E-03   .10542214E-03   .80488552E-04   .56035562E-04   .32236461E-04
+   .92512703E-05  -.12773800E-04  -.33706778E-04  -.53430228E-04  -.71841442E-04
+  -.88852514E-04  -.10439031E-03  -.11839633E-03  -.13082650E-03  -.14165082E-03
+  -.15085297E-03  -.15842985E-03  -.16439100E-03  -.16875798E-03  -.17156369E-03
+  -.17285166E-03  -.17267525E-03  -.17109685E-03  -.16818704E-03  -.16402371E-03
+  -.15869121E-03  -.15227940E-03  -.14488283E-03  -.13659977E-03  -.12753138E-03
+  -.11778083E-03  -.10745244E-03  -.96650856E-04  -.85480256E-04  -.74043600E-04
+  -.62441899E-04  -.50773536E-04  -.39133631E-04  -.27613449E-04  -.16299871E-04
+  -.52748956E-05   .53847825E-05   .15608158E-04   .25330234E-04   .34492292E-04
+   .43042103E-04   .50934085E-04   .58129403E-04   .64596023E-04   .70308707E-04
+   .75248966E-04   .79404955E-04   .82771332E-04   .85349072E-04   .87145234E-04
+   .88172706E-04   .88449898E-04   .88000418E-04   .86852713E-04   .85039693E-04
+   .82598326E-04   .79569225E-04   .75996212E-04   .71925886E-04   .67407169E-04
+   .62490860E-04   .57229188E-04   .51675365E-04   .45883146E-04   .39906407E-04
+   .33798724E-04   .27612974E-04   .21400954E-04   .15213018E-04   .90977377E-05
+   .31015825E-05  -.27313676E-05  -.83596884E-05  -.13744847E-04  -.18851408E-04
+  -.23647214E-04  -.28103530E-04  -.32195165E-04  -.35900553E-04  -.39201818E-04
+  -.42084794E-04  -.44539031E-04  -.46557761E-04  -.48137841E-04  -.49279676E-04
+  -.49987108E-04  -.50267286E-04  -.50130519E-04  -.49590099E-04  -.48662117E-04
+  -.47365259E-04  -.45720580E-04  -.43751282E-04  -.41482467E-04  -.38940891E-04
+  -.36154710E-04  -.33153221E-04  -.29966601E-04  -.26625650E-04  -.23161532E-04
+  -.19605521E-04  -.15988759E-04  -.12342010E-04  -.86954328E-05  -.50783628E-05
+  -.15191029E-05   .19552697E-05   .53190827E-05   .85482325E-05   .11620331E-04
+   .14514838E-04   .17213171E-04   .19698799E-04   .21957326E-04   .23976537E-04
+   .25746449E-04   .27259325E-04   .28509677E-04   .29494257E-04   .30212019E-04
+   .30664076E-04   .30853634E-04   .30785915E-04   .30468063E-04   .29909042E-04
+   .29119519E-04   .28111736E-04   .26899375E-04   .25497415E-04   .23921979E-04
+   .22190180E-04   .20319961E-04   .18329933E-04   .16239208E-04   .14067241E-04
+   .11833661E-04   .95581150E-05   .72601091E-05   .49588586E-05   .26731409E-05
+   .42115707E-06  -.17795999E-05  -.39124672E-05  -.59617260E-05  -.79127041E-05
+  -.97518687E-05  -.11466908E-04  -.13046800E-04  -.14481873E-04  -.15763849E-04
+  -.16885879E-04  -.17842565E-04  -.18629971E-04  -.19245617E-04  -.19688471E-04
+  -.19958922E-04  -.20058743E-04  -.19991049E-04  -.19760239E-04  -.19371932E-04
+  -.18832899E-04  -.18150975E-04  -.17334980E-04  -.16394621E-04  -.15340398E-04
+  -.14183499E-04  -.12935698E-04  -.11609243E-04  -.10216752E-04  -.87710986E-05
+  -.72853075E-05  -.57724417E-05  -.42454988E-05  -.27173069E-05  -.12004248E-05
+   .29295348E-06   .17510898E-05   .31627867E-05   .45174663E-05   .58052430E-05
+   .70169886E-05   .81443899E-05   .91799992E-05   .10117276E-04   .10950622E-04
+   .11675405E-04   .12287977E-04   .12785684E-04   .13166866E-04   .13430850E-04
+   .13577936E-04   .13609373E-04   .13527330E-04   .13334858E-04   .13035852E-04
+   .12634996E-04   .12137711E-04   .11550097E-04   .10878870E-04   .10131293E-04
+   .93151047E-05   .84384509E-05   .75098063E-05   .65379007E-05   .55316418E-05
+   .45000393E-05   .34521293E-05   .23969003E-05   .13432200E-05   .29976609E-06
+  -.72504132E-06  -.17231034E-05  -.26867024E-05  -.36085573E-05  -.44818748E-05
+  -.53003953E-05  -.60584339E-05  -.67509155E-05  -.73734046E-05  -.79221292E-05
+  -.83939988E-05  -.87866167E-05  -.90982862E-05  -.93280108E-05  -.94754891E-05
+  -.95411042E-05  -.95259069E-05  -.94315946E-05  -.92604852E-05  -.90154856E-05
+  -.87000577E-05  -.83181781E-05  -.78742969E-05  -.73732913E-05  -.68204177E-05
+  -.62212615E-05  -.55816847E-05  -.49077725E-05  -.42057792E-05  -.34820734E-05
+  -.27430833E-05  -.19952428E-05  -.12449382E-05  -.49845692E-06   .23806330E-06
+   .95868157E-06   .16576995E-05   .23297038E-05   .29696054E-05   .35726759E-05
+   .41345797E-05   .46514028E-05   .51196771E-05   .55364014E-05   .58990573E-05
+   .62056212E-05   .64545724E-05   .66448962E-05   .67760834E-05   .68481250E-05
+   .68615037E-05   .68171806E-05   .67165791E-05   .65615643E-05   .63544199E-05
+   .60978218E-05   .57948091E-05   .54487517E-05   .50633174E-05   .46424356E-05
+   .41902603E-05   .37111314E-05   .32095357E-05   .26900671E-05   .21573864E-05
+   .16161813E-05   .10711276E-05   .52684998E-06  -.12115283E-07  -.54135631E-06
+  -.10566202E-05  -.15538456E-05  -.20291931E-05  -.24790730E-05  -.29001713E-05
+  -.32894720E-05  -.36442771E-05  -.39622238E-05  -.42412978E-05  -.44798446E-05
+  -.46765764E-05  -.48305771E-05  -.49413032E-05  -.50085819E-05  -.50326061E-05
+  -.50139267E-05  -.49534417E-05  -.48523829E-05  -.47122997E-05  -.45350409E-05
+  -.43227344E-05  -.40777641E-05  -.38027463E-05  -.35005036E-05  -.31740379E-05
+  -.28265022E-05  -.24611721E-05  -.20814162E-05  -.16906660E-05  -.12923871E-05
+  -.89004901E-06  -.48709622E-06  -.86920136E-07   .30716855E-06   .69196605E-06
+   .10644005E-05   .14215553E-05   .17606909E-05   .20792650E-05   .23749499E-05
+   .26456488E-05   .28895095E-05   .31049355E-05   .32905952E-05   .34454287E-05
+   .35686523E-05   .36597600E-05   .37185234E-05   .37449891E-05   .37394736E-05
+   .37025563E-05   .36350700E-05   .35380903E-05   .34129221E-05   .32610850E-05
+   .30842975E-05   .28844585E-05   .26636292E-05   .24240130E-05   .21679342E-05
+   .18978175E-05   .16161652E-05   .13255353E-05   .10285194E-05   .72772006E-06
+   .42572905E-06   .12510573E-06  -.17164382E-06  -.46208694E-06  -.74388362E-06
+  -.10148045E-05  -.12727479E-05  -.15157553E-05  -.17420252E-05  -.19499262E-05
+  -.21380075E-05  -.23050081E-05  -.24498648E-05  -.25717173E-05  -.26699126E-05
+  -.27440069E-05  -.27937661E-05  -.28191641E-05  -.28203802E-05  -.27977938E-05
+  -.27519782E-05  -.26836927E-05  -.25938733E-05  -.24836219E-05  -.23541944E-05
+  -.22069877E-05  -.20435259E-05  -.18654454E-05  -.16744791E-05  -.14724408E-05
+  -.12612082E-05  -.10427065E-05  -.81889147E-06  -.59173215E-06  -.36319456E-06
+  -.13522503E-06   .90265796E-07   .31141843E-06   .52643932E-06   .73361490E-06
+   .93132471E-06   .11180535E-05   .12924023E-05   .14530983E-05   .15990038E-05
+   .17291231E-05   .18426092E-05   .19387683E-05   .20170631E-05   .20771150E-05
+   .21187051E-05   .21417727E-05   .21464142E-05   .21328794E-05   .21015669E-05
+   .20530189E-05   .19879136E-05   .19070583E-05   .18113799E-05   .17019156E-05
+   .15798024E-05   .14462657E-05   .13026082E-05   .11501973E-05   .99045256E-06
+   .82483342E-06   .65482584E-06   .48192967E-06   .30764573E-06   .13346322E-06
+  -.39152622E-07  -.20877244E-06  -.37401424E-06  -.53355425E-06  -.68613714E-06
+  -.83058551E-06  -.96580857E-06  -.10908100E-05  -.12046948E-05  -.13066752E-05
+  -.13960759E-05  -.14723376E-05  -.15350202E-05  -.15838045E-05  -.16184932E-05
+  -.16390105E-05  -.16454009E-05  -.16378270E-05  -.16165664E-05  -.15820075E-05
+  -.15346444E-05  -.14750716E-05  -.14039767E-05  -.13221342E-05  -.12303965E-05
+  -.11296866E-05  -.10209887E-05  -.90533895E-06  -.78381630E-06  -.65753252E-06
+  -.52762245E-06  -.39523412E-06  -.26151888E-06  -.12762170E-06   .53283234E-08
+   .13622726E-06   .26400518E-06   .38763464E-06   .50613867E-06   .61859816E-06
+   .72415877E-06   .82203703E-06   .91152591E-06   .99199954E-06   .10629173E-05
+   .11238269E-05   .11743670E-05   .12142689E-05   .12433572E-05   .12615499E-05
+   .12688579E-05   .12653830E-05   .12513165E-05   .12269352E-05   .11925986E-05
+   .11487444E-05   .10958834E-05   .10345944E-05   .96551827E-06   .88935158E-06
+   .80683989E-06   .71877082E-06   .62596683E-06   .52927772E-06   .42957318E-06
+   .32773515E-06   .22465026E-06   .12120232E-06   .18264981E-07  -.83305468E-07
+  -.18267698E-06  -.27904839E-06  -.37165562E-06  -.45977755E-06  -.54274143E-06
+  -.61992775E-06  -.69077464E-06  -.75478173E-06  -.81151341E-06  -.86060149E-06
+  -.90174730E-06  -.93472312E-06  -.95937306E-06  -.97561326E-06  -.98343152E-06
+  -.98288637E-06  -.97410546E-06  -.95728352E-06  -.93267968E-06  -.90061441E-06
+  -.86146584E-06  -.81566581E-06  -.76369543E-06  -.70608032E-06  -.64338557E-06
+  -.57621042E-06  -.50518275E-06  -.43095339E-06  -.35419036E-06  -.27557305E-06
+  -.19578632E-06  -.11551475E-06  -.35436910E-07   .43780222E-07   .12148666E-06
+   .19705457E-06   .26988321E-06   .33940350E-06   .40508238E-06   .46642662E-06
+   .52298646E-06   .57435862E-06   .62018906E-06   .66017516E-06   .69406748E-06
+   .72167112E-06   .74284644E-06   .75750953E-06   .76563197E-06   .76724035E-06
+   .76241517E-06   .75128945E-06   .73404675E-06   .71091899E-06   .68218379E-06
+   .64816144E-06   .60921167E-06   .56573002E-06   .51814409E-06   .46690945E-06
+   .41250548E-06   .35543100E-06   .29619988E-06   .23533650E-06   .17337126E-06
+   .11083610E-06   .48259996E-07  -.13835327E-07  -.74939668E-07  -.13455841E-06
+  -.19221640E-06  -.24746163E-06  -.29986863E-06  -.34904162E-06  -.39461741E-06
+  -.43626787E-06  -.47370221E-06  -.50666881E-06  -.53495677E-06  -.55839707E-06
+  -.57686331E-06  -.59027225E-06  -.59858378E-06  -.60180066E-06  -.59996791E-06
+  -.59317179E-06  -.58153851E-06  -.56523260E-06  -.54445500E-06  -.51944089E-06
+  -.49045720E-06  -.45780002E-06  -.42179166E-06  -.38277765E-06  -.34112351E-06
+  -.29721150E-06  -.25143716E-06  -.20420588E-06  -.15592938E-06  -.10702227E-06
+  -.57898509E-07  -.89680541E-08   .39366504E-07   .86713151E-07   .13269353E-06
+   .17694590E-06   .21912784E-06   .25891885E-06   .29602265E-06   .33016931E-06
+   .36111708E-06   .38865399E-06   .41259922E-06   .43280407E-06   .44915281E-06
+   .46156312E-06   .46998635E-06   .47440738E-06   .47484433E-06   .47134792E-06
+   .46400060E-06   .45291543E-06   .43823471E-06   .42012843E-06   .39879244E-06
+   .37444653E-06   .34733224E-06   .31771061E-06   .28585974E-06   .25207228E-06
+   .21665282E-06   .17991523E-06   .14217991E-06   .10377116E-06   .65014363E-07
+   .26233367E-07  -.12252182E-07  -.50129393E-07  -.87094611E-07  -.12285577E-06
+  -.15713465E-06  -.18966894E-06  -.22021420E-06  -.24854558E-06  -.27445945E-06
+  -.29777474E-06  -.31833410E-06  -.33600493E-06  -.35068007E-06  -.36227835E-06
+  -.37074492E-06  -.37605131E-06  -.37819535E-06  -.37720080E-06  -.37311680E-06
+  -.36601717E-06  -.35599943E-06  -.34318371E-06  -.32771148E-06  -.30974405E-06
+  -.28946107E-06  -.26705876E-06  -.24274810E-06  -.21675294E-06  -.18930795E-06
+  -.16065662E-06  -.13104913E-06  -.10074021E-06  -.69987027E-07  -.39047039E-07
+  -.81759050E-08   .22374577E-07   .52358477E-07   .81537649E-07   .10968358E-06
+   .13657912E-06   .16202009E-06   .18581680E-06   .20779538E-06   .22779901E-06
+   .24568896E-06   .26134550E-06   .27466861E-06   .28557855E-06   .29401626E-06
+   .29994356E-06   .30334318E-06   .30421867E-06   .30259409E-06   .29851354E-06
+   .29204056E-06   .28325738E-06   .27226400E-06   .25917715E-06   .24412915E-06
+   .22726664E-06   .20874919E-06   .18874789E-06   .16744374E-06   .14502616E-06
+   .12169127E-06   .97640253E-07   .73077659E-07   .48209706E-07   .23242584E-07
+  -.16192054E-08  -.26174492E-07  -.50227020E-07  -.73586976E-07  -.96072450E-07
+  -.11751081E-06  -.13773997E-06  -.15660961E-06  -.17398222E-06  -.18973406E-06
+  -.20375600E-06  -.21595423E-06  -.22625084E-06  -.23458423E-06  -.24090945E-06
+  -.24519836E-06  -.24743963E-06  -.24763866E-06  -.24581733E-06  -.24201364E-06
+  -.23628119E-06  -.22868858E-06  -.21931870E-06  -.20826786E-06  -.19564487E-06
+  -.18157003E-06  -.16617401E-06  -.14959670E-06  -.13198594E-06  -.11349627E-06
+  -.94287586E-07  -.74523803E-07  -.54371484E-07  -.33998464E-07  -.13572488E-07
+   .67401425E-08   .26775892E-07   .46375279E-07   .65384115E-07   .83654685E-07
+   .10104687E-06   .11742918E-06   .13267975E-06   .14668716E-06   .15935126E-06
+   .17058387E-06   .18030928E-06   .18846481E-06   .19500113E-06   .19988252E-06
+   .20308701E-06   .20460641E-06   .20444622E-06   .20262546E-06   .19917636E-06
+   .19414395E-06   .18758557E-06   .17957030E-06   .17017824E-06   .15949980E-06
+   .14763480E-06   .13469163E-06   .12078627E-06   .10604125E-06   .90584633E-07
+   .74548919E-07   .58069923E-07   .41285656E-07   .24335193E-07   .73575421E-08
+ 15.1178079086313861 T
+ Non local Part
+ 2 2 1.60783796536775347
+ 10.9995361597666310 -2.62145997968654187 -2.62145997968654187 0.509270725655861844
+ Reciprocal Space Part
+   .00000000E+00   .14861775E-01   .59196749E-01   .13225845E+00   .23281794E+00
+   .35918630E+00   .50924537E+00   .68048638E+00   .87005535E+00   .10748047E+01
+   .12913498E+01   .15161293E+01   .17454685E+01   .19756440E+01   .22029482E+01
+   .24237537E+01   .26345741E+01   .28321230E+01   .30133671E+01   .31755745E+01
+   .33163567E+01   .34337036E+01   .35260107E+01   .35920984E+01   .36312234E+01
+   .36430815E+01   .36278026E+01   .35859374E+01   .35184374E+01   .34266272E+01
+   .33121714E+01   .31770353E+01   .30234427E+01   .28538281E+01   .26707884E+01
+   .24770321E+01   .22753281E+01   .20684561E+01   .18591573E+01   .16500887E+01
+   .14437803E+01   .12425961E+01   .10487007E+01   .86403021E+00   .69026937E+00
+   .52883413E+00   .38086047E+00   .24719903E+00   .12841556E+00   .24796917E-01
+  -.63637788E-01  -.13712134E+00  -.19611841E+00  -.24130208E+00  -.27352739E+00
+  -.29380287E+00  -.30326050E+00  -.30312506E+00  -.29468335E+00  -.27925415E+00
+  -.25815934E+00  -.23269690E+00  -.20411628E+00  -.17359632E+00  -.14222643E+00
+  -.11099093E+00  -.80756876E-01  -.52265432E-01  -.26126690E-01  -.28178995E-02
+   .17315100E-01   .34053483E-01   .47298383E-01   .57061516E-01   .63453890E-01
+   .66672990E-01   .66988865E-01   .64729545E-01   .60266207E-01   .53998468E-01
+   .46340186E-01   .37706099E-01   .28499585E-01   .19101779E-01   .98622473E-02
+   .10913473E-02  -.69456460E-02  -.14032617E-01  -.20004909E-01  -.24749924E-01
+  -.28206117E-01  -.30360557E-01  -.31245206E-01  -.30932144E-01  -.29527935E-01
+  -.27167385E-01  -.24006902E-01  -.20217702E-01  -.15979063E-01  -.11471837E-01
+ Real Space Part
+   .00000000E+00   .76044216E-02   .30245439E-01   .67412219E-01   .11827285E+00
+   .18170281E+00   .25632327E+00   .34054787E+00   .43263619E+00   .53075194E+00
+   .63302361E+00   .73760552E+00   .84273685E+00   .94679654E+00   .10483521E+01
+   .11462007E+01   .12394006E+01   .13272924E+01   .14095095E+01   .14859765E+01
+   .15568971E+01   .16227312E+01   .16841621E+01   .17420558E+01   .17974136E+01
+   .18513196E+01   .19048858E+01   .19591962E+01   .20152529E+01   .20739250E+01
+   .21359034E+01   .22016624E+01   .22714299E+01   .23451668E+01   .24225568E+01
+   .25030070E+01   .25856579E+01   .26694044E+01   .27529257E+01   .28347230E+01
+   .29131636E+01   .29865310E+01   .30530770E+01   .31110762E+01   .31588796E+01
+   .31949656E+01   .32179879E+01   .32268169E+01   .32205752E+01   .31986643E+01
+   .31607839E+01   .31069407E+01   .30374497E+01   .29529253E+01   .28542644E+01
+   .27426222E+01   .26193806E+01   .24861118E+01   .23445369E+01   .21964828E+01
+   .20438368E+01   .18885013E+01   .17323508E+01   .15771909E+01   .14247206E+01
+   .12765005E+01   .11339257E+01   .99820439E+00   .87034299E+00   .75113777E+00
+   .64117213E+00   .54081990E+00   .45025394E+00   .36945930E+00   .29825042E+00
+   .23629132E+00   .18311803E+00   .13816245E+00   .10077669E+00   .70257121E-01
+   .45867528E-01   .26860581E-01   .12497260E-01   .20637587E-02  -.51143592E-02
+  -.96609218E-02  -.12140841E-01  -.13054671E-01  -.12835862E-01  -.11850460E-01
+  -.10398956E-01  -.87199302E-02  -.69951156E-02  -.53555130E-02  -.38881737E-02
+  -.26433075E-02  -.16413967E-02  -.88004571E-03  -.34033831E-03   .74684857E-05
+ Reciprocal Space Part
+   .00000000E+00   .71116440E-01   .28336969E+00   .63346732E+00   .11159089E+01
+   .17229697E+01   .24446845E+01   .32688376E+01   .41809658E+01   .51643837E+01
+   .62002390E+01   .72676057E+01   .83436246E+01   .94036966E+01   .10421735E+02
+   .11370481E+02   .12221878E+02   .12947517E+02   .13519130E+02   .13909140E+02
+   .14091257E+02   .14041094E+02   .13736808E+02   .13159735E+02   .12295011E+02
+   .11132150E+02   .96655748E+01   .78950621E+01   .58261036E+01   .34701532E+01
+   .84475161E+00  -.20264837E+01  -.51140121E+01  -.83826708E+01  -.11792123E+02
+  -.15297454E+02  -.18849893E+02  -.22397676E+02  -.25886996E+02  -.29263054E+02
+  -.32471169E+02  -.35457926E+02  -.38172333E+02  -.40566958E+02  -.42599021E+02
+  -.44231406E+02  -.45433563E+02  -.46182284E+02  -.46462326E+02  -.46266857E+02
+  -.45597714E+02  -.44465470E+02  -.42889294E+02  -.40896607E+02  -.38522549E+02
+  -.35809256E+02  -.32804975E+02  -.29563023E+02  -.26140637E+02  -.22597719E+02
+  -.18995527E+02  -.15395334E+02  -.11857095E+02  -.84381485E+01  -.51919963E+01
+  -.21671800E+01   .59370742E+00   .30548564E+01   .51878996E+01   .69723799E+01
+   .83960181E+01   .94547742E+01   .10152705E+02   .10501625E+02   .10520578E+02
+   .10235145E+02   .96766006E+01   .88809480E+01   .78878596E+01   .67395538E+01
+   .54796378E+01   .41519509E+01   .27994367E+01   .14630765E+01   .18091015E+00
+  -.10128310E+01  -.20884584E+01  -.30214099E+01  -.37926737E+01  -.43890416E+01
+  -.48031934E+01  -.50336130E+01  -.50843442E+01  -.49645995E+01  -.46882365E+01
+  -.42731223E+01  -.37404085E+01  -.31137394E+01  -.24184212E+01  -.16805761E+01
+ Real Space Part
+   .00000000E+00   .26267779E+00   .10336297E+01   .22623044E+01   .38667344E+01
+   .57368711E+01   .77390758E+01   .97215947E+01   .11520811E+02   .12968037E+02
+   .13896585E+02   .14148855E+02   .13583167E+02   .12080073E+02   .95479287E+01
+   .59274838E+01   .11953486E+01  -.46338199E+01  -.11506484E+02  -.19330785E+02
+  -.27978471E+02  -.37288145E+02  -.47069691E+02  -.57109751E+02  -.67178040E+02
+  -.77034285E+02  -.86435546E+02  -.95143662E+02  -.10293256E+03  -.10959522E+03
+  -.11494995E+03  -.11884594E+03  -.12116776E+03  -.12183873E+03  -.12082307E+03
+  -.11812676E+03  -.11379710E+03  -.10792102E+03  -.10062220E+03  -.92057157E+02
+  -.82410394E+02  -.71888821E+02  -.60715656E+02  -.49123986E+02  -.37350233E+02
+  -.25627708E+02  -.14180481E+02  -.32177363E+01   .70712290E+01   .16521217E+02
+   .24994461E+02   .32383006E+02   .38610101E+02   .43630616E+02   .47430504E+02
+   .50025380E+02   .51458316E+02   .51796945E+02   .51130024E+02   .49563588E+02
+   .47216847E+02   .44217959E+02   .40699848E+02   .36796173E+02   .32637584E+02
+   .28348353E+02   .24043478E+02   .19826300E+02   .15786686E+02   .11999785E+02
+   .85253518E+01   .54076191E+01   .26756638E+01   .34422249E+00  -.15851191E+01
+  -.31224363E+01  -.42877542E+01  -.51091980E+01  -.56210809E+01  -.58620054E+01
+  -.58730416E+01  -.56960425E+01  -.53721387E+01  -.49404502E+01  -.44370358E+01
+  -.38940935E+01  -.33394093E+01  -.27960482E+01  -.22822661E+01  -.18116204E+01
+  -.13932475E+01  -.10322744E+01  -.73032938E+00  -.48611763E+00  -.29602674E+00
+  -.15473353E+00  -.55784477E-01   .78718306E-02   .43417289E-01   .57773521E-01
+ Non local Part
+ 0 2 1.60783796536775347
+ 4.55068527853635008 -0.166977273103439572 -0.166977273103439572 0.292510511024706536E-01
+ Reciprocal Space Part
+   .13796039E+02   .13764623E+02   .13670727E+02   .13515407E+02   .13300402E+02
+   .13028110E+02   .12701546E+02   .12324298E+02   .11900468E+02   .11434610E+02
+   .10931659E+02   .10396854E+02   .98356619E+01   .92536966E+01   .86566346E+01
+   .80501357E+01   .74397644E+01   .68309148E+01   .62287401E+01   .56380887E+01
+   .50634473E+01   .45088913E+01   .39780442E+01   .34740460E+01   .29995305E+01
+   .25566126E+01   .21468839E+01   .17714182E+01   .14307850E+01   .11250709E+01
+   .85390848E+00   .61651113E+00   .41171330E+00   .23801507E+00   .93629950E-01
+  -.23465254E-01  -.11547945E+00  -.18475638E+00  -.23372464E+00  -.26484981E+00
+  -.28058922E+00  -.28335032E+00  -.27545326E+00  -.25909798E+00  -.23633644E+00
+  -.20905002E+00  -.17893230E+00  -.14747717E+00  -.11597208E+00  -.85496292E-01
+  -.56923642E-01  -.30929510E-01  -.80014181E-02   .11547253E-01   .27561027E-01
+   .40024168E-01   .49041200E-01   .54816689E-01   .57634868E-01   .57839600E-01
+   .55815183E-01   .51968378E-01   .46712029E-01   .40450541E-01   .33567418E-01
+   .26414995E-01   .19306422E-01   .12509884E-01   .62450068E-02   .68129067E-03
+  -.40615681E-02  -.79117039E-02  -.10841687E-01  -.12863975E-01  -.14025479E-01
+  -.14401521E-01  -.14089457E-01  -.13202209E-01  -.11861945E-01  -.10194117E-01
+  -.83220218E-02  -.63620394E-02  -.44196449E-02  -.25862665E-02  -.93702477E-03
+   .47064882E-03   .15975449E-02   .24224199E-02   .29410322E-02   .31645734E-02
+   .31176083E-02   .28356475E-02   .23624803E-02   .17473940E-02   .10423985E-02
+   .29956886E-03  -.43139739E-03  -.11053257E-02  -.16833483E-02  -.21342795E-02
+ Real Space Part
+   .51966267E+01   .52000788E+01   .52103164E+01   .52269867E+01   .52495133E+01
+   .52771126E+01   .53088162E+01   .53434991E+01   .53799113E+01   .54167133E+01
+   .54525138E+01   .54859077E+01   .55155151E+01   .55400176E+01   .55581933E+01
+   .55689477E+01   .55713401E+01   .55646055E+01   .55481706E+01   .55216631E+01
+   .54849160E+01   .54379651E+01   .53810407E+01   .53145536E+01   .52390772E+01
+   .51553241E+01   .50641209E+01   .49663796E+01   .48630682E+01   .47551807E+01
+   .46437084E+01   .45296116E+01   .44137950E+01   .42970856E+01   .41802142E+01
+   .40638014E+01   .39483484E+01   .38342313E+01   .37217016E+01   .36108893E+01
+   .35018118E+01   .33943848E+01   .32884374E+01   .31837290E+01   .30799677E+01
+   .29768305E+01   .28739823E+01   .27710958E+01   .26678692E+01   .25640429E+01
+   .24594132E+01   .23538435E+01   .22472733E+01   .21397230E+01   .20312960E+01
+   .19221776E+01   .18126311E+01   .17029909E+01   .15936535E+01   .14850662E+01
+   .13777148E+01   .12721098E+01   .11687725E+01   .10682206E+01   .97095509E+00
+   .87744703E+00   .78812623E+00   .70337134E+00   .62350167E+00   .54877111E+00
+   .47936405E+00   .41539338E+00   .35690054E+00   .30385752E+00   .25617052E+00
+   .21368519E+00   .17619308E+00   .14343912E+00   .11512978E+00   .90941548E-01
+   .70529633E-01   .53536423E-01   .39599584E-01   .28359550E-01   .19466236E-01
+   .12584854E-01   .74007349E-02   .36231230E-02   .98791858E-03  -.74058734E-03
+  -.17689365E-02  -.22745956E-02  -.24068127E-02  -.22881165E-02  -.20163290E-02
+  -.16669620E-02  -.12958644E-02  -.94200201E-03  -.63025388E-03  -.37413154E-03
+ Reciprocal Space Part
+  -.15515252E+02  -.15170383E+02  -.14142539E+02  -.12451864E+02  -.10131446E+02
+  -.72266077E+01  -.37939229E+01   .99991646E-01   .43799035E+01   .89635653E+01
+   .13763455E+02   .18688616E+02   .23646549E+02   .28545123E+02   .33294448E+02
+   .37808680E+02   .42007711E+02   .45818708E+02   .49177467E+02   .52029566E+02
+   .54331267E+02   .56050187E+02   .57165697E+02   .57669056E+02   .57563293E+02
+   .56862821E+02   .55592830E+02   .53788444E+02   .51493693E+02   .48760325E+02
+   .45646469E+02   .42215218E+02   .38533137E+02   .34668750E+02   .30691037E+02
+   .26667979E+02   .22665173E+02   .18744566E+02   .14963313E+02   .11372796E+02
+   .80178182E+01   .49359775E+01   .21572398E+01  -.29629525E+00  -.24104350E+01
+  -.41787489E+01  -.56022496E+01  -.66889165E+01  -.74530803E+01  -.79146903E+01
+  -.80984893E+01  -.80331197E+01  -.77501887E+01  -.72833167E+01  -.66671956E+01
+  -.59366788E+01  -.51259258E+01  -.42676201E+01  -.33922772E+01  -.25276543E+01
+  -.16982727E+01  -.92505829E+00  -.22510272E+00   .38845606E+00   .90643747E+00
+   .13235140E+01   .16380082E+01   .18516039E+01   .19689839E+01   .19974115E+01
+   .19462689E+01   .18265718E+01   .16504730E+01   .14307724E+01   .11804470E+01
+   .91221307E+00   .63813203E+00   .36926894E+00   .11541019E+00  -.11515471E+00
+  -.31578520E+00  -.48157525E+00  -.60937451E+00  -.69774889E+00  -.74688609E+00
+  -.75845307E+00  -.73541344E+00  -.68181379E+00  -.60254812E+00  -.50310996E+00
+  -.38934138E+00  -.26718774E+00  -.14246626E+00  -.20655489E-01   .93288210E-01
+   .19508268E+00   .28123695E+00   .34913134E+00   .39706016E+00   .42423768E+00
+ Real Space Part
+   .16746359E+03   .16704432E+03   .16579443E+03   .16373748E+03   .16091209E+03
+   .15737086E+03   .15317910E+03   .14841307E+03   .14315810E+03   .13750634E+03
+   .13155450E+03   .12540143E+03   .11914565E+03   .11288302E+03   .10670444E+03
+   .10069379E+03   .94926032E+02   .89465657E+02   .84365429E+02   .79665462E+02
+   .75392683E+02   .71560663E+02   .68169819E+02   .65207980E+02   .62651274E+02
+   .60465322E+02   .58606689E+02   .57024539E+02   .55662449E+02   .54460319E+02
+   .53356324E+02   .52288851E+02   .51198357E+02   .50029108E+02   .48730746E+02
+   .47259644E+02   .45580016E+02   .43664764E+02   .41496038E+02   .39065505E+02
+   .36374338E+02   .33432917E+02   .30260290E+02   .26883384E+02   .23336028E+02
+   .19657813E+02   .15892820E+02   .12088276E+02   .82931720E+01   .45568731E+01
+   .92778691E+00  -.25478964E+01  -.58273472E+01  -.88720990E+01  -.11648886E+02
+  -.14130303E+02  -.16295271E+02  -.18129313E+02  -.19624636E+02  -.20780029E+02
+  -.21600591E+02  -.22097304E+02  -.22286478E+02  -.22189081E+02  -.21829991E+02
+  -.21237188E+02  -.20440926E+02  -.19472883E+02  -.18365354E+02  -.17150468E+02
+  -.15859473E+02  -.14522107E+02  -.13166043E+02  -.11816447E+02  -.10495630E+02
+  -.92228138E+01  -.80139899E+01  -.68818870E+01  -.58360219E+01  -.48828340E+01
+  -.40258887E+01  -.32661372E+01  -.26022195E+01  -.20307969E+01  -.15469014E+01
+  -.11442891E+01  -.81578603E+00  -.55361747E+00  -.34971122E+00  -.19596927E+00
+  -.84502293E-01  -.78244379E-02   .40993116E-01   .68209507E-01   .79340754E-01
+   .79122675E-01   .71506339E-01   .59681529E-01   .46123225E-01   .32655932E-01
+ Non local Part
+ 1 2 1.60783796536775347
+ 8.58730342702083149 -3.20137177333169598 -3.20137177333169598 0.931568281602889847
+ Reciprocal Space Part
+   .00000000E+00   .77227658E+00   .15357215E+01   .22816455E+01   .30016410E+01
+   .36877162E+01   .43324209E+01   .49289621E+01   .54713061E+01   .59542673E+01
+   .63735791E+01   .67259490E+01   .70090943E+01   .72217596E+01   .73637150E+01
+   .74357363E+01   .74395672E+01   .73778649E+01   .72541304E+01   .70726251E+01
+   .68382758E+01   .65565710E+01   .62334487E+01   .58751810E+01   .54882554E+01
+   .50792568E+01   .46547518E+01   .42211784E+01   .37847417E+01   .33513188E+01
+   .29263748E+01   .25148887E+01   .21212942E+01   .17494319E+01   .14025172E+01
+   .10831204E+01   .79316188E+00   .53391940E+00   .30604848E+00   .10961353E+00
+  -.55870631E-01  -.19138885E+00  -.29836856E+00  -.37861726E+00  -.43425635E+00
+  -.46765282E+00  -.48135059E+00  -.47800300E+00  -.46030791E+00  -.43094671E+00
+  -.39252851E+00  -.34754024E+00  -.29830364E+00  -.24693954E+00  -.19533982E+00
+  -.14514721E+00  -.97742728E-01  -.54240634E-01  -.15490341E-01   .17915227E-01
+   .45625590E-01   .67513768E-01   .83653350E-01   .94292475E-01   .99825698E-01
+   .10076466E+00   .97708444E-01   .91314548E-01   .82271071E-01   .71270959E-01
+   .58988762E-01   .46060388E-01   .33066178E-01   .20517502E-01   .88469661E-02
+  -.15978042E-02  -.10556930E-01  -.17857826E-01  -.23411841E-01  -.27208358E-01
+  -.29306776E-01  -.29826842E-01  -.28937790E-01  -.26846767E-01  -.23787007E-01
+  -.20006178E-01  -.15755295E-01  -.11278536E-01  -.68042482E-02  -.25373655E-02
+   .13466133E-02   .47059911E-02   .74355627E-02   .94676624E-02   .10771664E-01
+   .11352069E-01   .11245369E-01   .10515888E-01   .92508450E-02   .75548723E-02
+ Real Space Part
+   .00000000E+00   .12071756E+00   .24225583E+00   .36539902E+00   .49085965E+00
+   .61924628E+00   .75103508E+00   .88654664E+00   .10259286E+01   .11691449E+01
+   .13159723E+01   .14660032E+01   .16186564E+01   .17731933E+01   .19287407E+01
+   .20843174E+01   .22388654E+01   .23912829E+01   .25404591E+01   .26853078E+01
+   .28248003E+01   .29579950E+01   .30840632E+01   .32023099E+01   .33121893E+01
+   .34133137E+01   .35054567E+01   .35885489E+01   .36626693E+01   .37280294E+01
+   .37849535E+01   .38338552E+01   .38752106E+01   .39095302E+01   .39373302E+01
+   .39591050E+01   .39753014E+01   .39862959E+01   .39923758E+01   .39937257E+01
+   .39904185E+01   .39824126E+01   .39695541E+01   .39515859E+01   .39281600E+01
+   .38988562E+01   .38632040E+01   .38207068E+01   .37708689E+01   .37132231E+01
+   .36473579E+01   .35729430E+01   .34897536E+01   .33976898E+01   .32967935E+01
+   .31872594E+01   .30694419E+01   .29438558E+01   .28111722E+01   .26722092E+01
+   .25279177E+01   .23793625E+01   .22277006E+01   .20741559E+01   .19199926E+01
+   .17664867E+01   .16148985E+01   .14664450E+01   .13222741E+01   .11834417E+01
+   .10508915E+01   .92543827E+00   .80775528E+00   .69836614E+00   .59764059E+00
+   .50579467E+00   .42289493E+00   .34886626E+00   .28350294E+00   .22648252E+00
+   .17738162E+00   .13569348E+00   .10084614E+00   .72221068E-01   .49171293E-01
+   .31038781E-01   .17170414E-01   .69322715E-02  -.27809218E-03  -.50215843E-02
+  -.78098174E-02  -.90996801E-02  -.92901640E-02  -.87213059E-02  -.76750390E-02
+  -.63777027E-02  -.50039211E-02  -.36815469E-02  -.24973552E-02  -.15031837E-02
+ Reciprocal Space Part
+   .00000000E+00   .93692991E-01   .19503478E+00   .31144629E+00   .44989871E+00
+   .61670363E+00   .81732059E+00   .10561873E+01   .13365767E+01   .16604855E+01
+   .20285556E+01   .24400317E+01   .28927567E+01   .33832020E+01   .39065366E+01
+   .44567282E+01   .50266771E+01   .56083783E+01   .61931067E+01   .67716217E+01
+   .73343857E+01   .78717897E+01   .83743824E+01   .88330945E+01   .92394542E+01
+   .95857881E+01   .98654021E+01   .10072739E+02   .10203506E+02   .10254775E+02
+   .10225048E+02   .10114287E+02   .99239118E+01   .96567626E+01   .93170295E+01
+   .89101532E+01   .84426961E+01   .79221910E+01   .73569698E+01   .67559763E+01
+   .61285699E+01   .54843227E+01   .48328174E+01   .41834499E+01   .35452403E+01
+   .29266592E+01   .23354708E+01   .17785968E+01   .12620049E+01   .79062237E+00
+   .36827693E+00  -.23348789E-02  -.31965183E+00  -.58322562E+00  -.79367351E+00
+  -.95260799E+00  -.10625464E+01  -.11268030E+01  -.11493684E+01  -.11347770E+01
+  -.10879706E+01  -.10141573E+01  -.91867315E+00  -.80684754E+00  -.68387738E+00
+  -.55471149E+00  -.42394865E+00  -.29575080E+00  -.17377316E+00  -.61111950E-01
+   .39729644E-01   .12685752E+00   .19898523E+00   .25541621E+00   .29601107E+00
+   .32114180E+00   .33163499E+00   .32870627E+00   .31388858E+00   .28895652E+00
+   .25584936E+00   .21659505E+00   .17323740E+00   .12776835E+00   .82067171E-01
+   .37847812E-01  -.33843801E-02  -.40365951E-01  -.72098220E-01  -.97859761E-01
+  -.11720876E+00  -.12997589E+00  -.13624850E+00  -.13634734E+00  -.13079696E+00
+  -.12029122E+00  -.10565547E+00  -.87806753E-01  -.67713621E-01  -.46356904E-01
+ Real Space Part
+   .00000000E+00   .16353531E+01   .32489859E+01   .48197584E+01   .63276727E+01
+   .77543961E+01   .90837291E+01   .10302004E+02   .11398399E+02   .12365160E+02
+   .13197725E+02   .13894742E+02   .14457990E+02   .14892199E+02   .15204784E+02
+   .15405497E+02   .15506011E+02   .15519460E+02   .15459943E+02   .15342006E+02
+   .15180135E+02   .14988266E+02   .14779329E+02   .14564847E+02   .14354595E+02
+   .14156342E+02   .13975665E+02   .13815855E+02   .13677909E+02   .13560609E+02
+   .13460675E+02   .13373001E+02   .13290939E+02   .13206646E+02   .13111459E+02
+   .12996290E+02   .12852037E+02   .12669973E+02   .12442123E+02   .12161600E+02
+   .11822898E+02   .11422124E+02   .10957170E+02   .10427819E+02   .98357819E+01
+   .91846606E+01   .84798527E+01   .77283925E+01   .69387401E+01   .61205269E+01
+   .52842678E+01   .44410502E+01   .36022122E+01   .27790211E+01   .19823628E+01
+   .12224515E+01   .50857062E+00  -.15115030E+00  -.74991449E+00  -.12823903E+01
+  -.17447941E+01  -.21349230E+01  -.24521399E+01  -.26973124E+01  -.28727114E+01
+  -.29818731E+01  -.30294338E+01  -.30209405E+01  -.29626494E+01  -.28613151E+01
+  -.27239820E+01  -.25577810E+01  -.23697403E+01  -.21666137E+01  -.19547318E+01
+  -.17398778E+01  -.15271912E+01  -.13210998E+01  -.11252794E+01  -.94264027E+00
+  -.77533840E+00  -.62480912E+00  -.49181898E+00  -.37653290E+00  -.27859257E+00
+  -.19720204E+00  -.13121684E+00  -.79233160E-01  -.39673727E-01  -.10867846E-01
+   .88766723E-02   .21211315E-01   .27695477E-01   .29756402E-01   .28660470E-01
+   .25495368E-01   .21162335E-01   .16377305E-01   .11679600E-01   .74466403E-02
+ PAW radial sets
+ 311 1.20588293416284009
+(5E20.12)                                
+ augmentation charges (non sperical)
+   .378637605164E+00  -.486077197361E-01  -.164680904670E+00   .742017217161E-02  -.247503338040E+00
+   .113438694657E+00  -.486077197361E-01   .575257143956E-02   .142820857345E-01  -.561393271961E-03
+   .243965099956E-01  -.124375285059E-01  -.164680904670E+00   .142820857345E-01  -.138717223370E+00
+  -.306285883422E-02  -.615122950370E-01  -.351119861273E-01   .742017217161E-02  -.561393271961E-03
+  -.306285883422E-02  -.138005263691E-03  -.298465668133E-02   .951621313499E-03  -.247503338040E+00
+   .243965099956E-01  -.615122950370E-01  -.298465668133E-02   .138605920817E-01  -.557718621219E-01
+   .113438694657E+00  -.124375285059E-01  -.351119861273E-01   .951621313499E-03  -.557718621219E-01
+   .277120201159E-01
+ uccopancies in atom
+   .180000000752E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .999999999625E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .674052280246E-04   .695970778845E-04   .718602012338E-04   .741969157087E-04   .766096143089E-04
+   .791007678486E-04   .816729274867E-04   .843287273396E-04   .870708871782E-04   .899022152139E-04
+   .928256109741E-04   .958440682714E-04   .989606782699E-04   .102178632651E-03   .105501226880E-03
+   .108931863585E-03   .112474056037E-03   .116131431750E-03   .119907736198E-03   .123806836646E-03
+   .127832726114E-03   .131989527463E-03   .136281497623E-03   .140713031945E-03   .145288668708E-03
+   .150013093763E-03   .154891145335E-03   .159927818976E-03   .165128272678E-03   .170497832160E-03
+   .176041996322E-03   .181766442872E-03   .187677034142E-03   .193779823095E-03   .200081059521E-03
+   .206587196435E-03   .213304896691E-03   .220241039801E-03   .227402728981E-03   .234797298427E-03
+   .242432320824E-03   .250315615103E-03   .258455254445E-03   .266859574553E-03   .275537182184E-03
+   .284496963967E-03   .293748095502E-03   .303300050756E-03   .313162611766E-03   .323345878655E-03
+   .333860279980E-03   .344716583405E-03   .355925906735E-03   .367499729295E-03   .379449903692E-03
+   .391788667949E-03   .404528658037E-03   .417682920821E-03   .431264927414E-03   .445288586980E-03
+   .459768260969E-03   .474718777834E-03   .490155448211E-03   .506094080598E-03   .522550997549E-03
+   .539543052384E-03   .557087646452E-03   .575202746951E-03   .593906905327E-03   .613219276272E-03
+   .633159637341E-03   .653748409207E-03   .675006676572E-03   .696956209758E-03   .719619487006E-03
+   .743019717493E-03   .767180865098E-03   .792127672949E-03   .817885688756E-03   .844481290980E-03
+   .871941715839E-03   .900295085210E-03   .929570435419E-03   .959797746984E-03   .991007975314E-03
+   .102323308241E-02   .105650606959E-02   .109086101132E-02   .112633309004E-02   .116295863227E-02
+   .120077514576E-02   .123982135794E-02   .128013725552E-02   .132176412552E-02   .136474459748E-02
+   .140912268717E-02   .145494384163E-02   .150225498572E-02   .155110457018E-02   .160154262127E-02
+   .165362079196E-02   .170739241483E-02   .176291255674E-02   .182023807516E-02   .187942767642E-02
+   .194054197586E-02   .200364355985E-02   .206879704994E-02   .213606916899E-02   .220552880952E-02
+   .227724710429E-02   .235129749908E-02   .242775582798E-02   .250670039100E-02   .258821203426E-02
+   .267237423282E-02   .275927317611E-02   .284899785625E-02   .294164015916E-02   .303729495864E-02
+   .313606021357E-02   .323803706820E-02   .334332995574E-02   .345204670532E-02   .356429865237E-02
+   .368020075271E-02   .379987170021E-02   .392343404838E-02   .405101433586E-02   .418274321602E-02
+   .431875559073E-02   .445919074857E-02   .460419250739E-02   .475390936167E-02   .490849463456E-02
+   .506810663488E-02   .523290881927E-02   .540306995956E-02   .557876431563E-02   .576017181386E-02
+   .594747823138E-02   .614087538632E-02   .634056133427E-02   .654674057110E-02   .675962424235E-02
+   .697943035951E-02   .720638402325E-02   .744071765396E-02   .768267122975E-02   .793249253222E-02
+   .819043740022E-02   .845676999183E-02   .873176305490E-02   .901569820636E-02   .930886622062E-02
+   .961156732733E-02   .992411151889E-02   .102468188679E-01   .105800198548E-01   .109240557065E-01
+   .112792787459E-01   .116460527524E-01   .120247533345E-01   .124157683149E-01   .128194981269E-01
+   .132363562253E-01   .136667695090E-01   .141111787590E-01   .145700390892E-01   .150438204126E-01
+   .155330079227E-01   .160381025902E-01   .165596216762E-01   .170980992620E-01   .176540867954E-01
+   .182281536564E-01   .188208877397E-01   .194328960566E-01   .200648053572E-01   .207172627718E-01
+   .213909364739E-01   .220865163642E-01   .228047147773E-01   .235462672110E-01   .243119330800E-01
+   .251024964929E-01   .259187670557E-01   .267615807010E-01   .276318005434E-01   .285303177642E-01
+   .294580525234E-01   .304159549026E-01   .314050058775E-01   .324262183228E-01   .334806380491E-01
+   .345693448745E-01   .356934537298E-01   .368541158008E-01   .380525197069E-01   .392898927183E-01
+   .405675020133E-01   .418866559752E-01   .432487055331E-01   .446550455447E-01   .461071162251E-01
+   .476064046215E-01   .491544461364E-01   .507528260994E-01   .524031813913E-01   .541072021202E-01
+   .558666333522E-01   .576832768986E-01   .595589931612E-01   .614957030373E-01   .634953898870E-01
+   .655601015645E-01   .676919525150E-01   .698931259400E-01   .721658760335E-01   .745125302903E-01
+   .769354918893E-01   .794372421550E-01   .820203430982E-01   .846874400400E-01   .874412643208E-01
+   .902846360972E-01   .932204672305E-01   .962517642682E-01   .993816315234E-01   .102613274254E+00
+   .105950001944E+00   .109395231694E+00   .112952491721E+00   .116625424970E+00   .120417792845E+00
+   .124333479062E+00   .128376493627E+00   .132550976940E+00   .136861204036E+00   .141311588964E+00
+   .145906689308E+00   .150651210852E+00   .155550012400E+00   .160608110753E+00   .165830685847E+00
+   .171223086053E+00   .176790833662E+00   .182539630534E+00   .188475363938E+00   .194604112585E+00
+   .200932152848E+00   .207465965195E+00   .214212240818E+00   .221177888496E+00   .228370041658E+00
+   .235796065699E+00   .243463565517E+00   .251380393300E+00   .259554656573E+00   .267994726495E+00
+   .276709246435E+00   .285707140824E+00   .294997624292E+00   .304590211105E+00   .314494724910E+00
+   .324721308796E+00   .335280435677E+00   .346182919023E+00   .357439923929E+00   .369062978552E+00
+   .381063985915E+00   .393455236098E+00   .406249418825E+00   .419459636457E+00   .433099417411E+00
+   .447182730014E+00   .461723996810E+00   .476738109326E+00   .492240443325E+00   .508246874552E+00
+   .524773794991E+00   .541838129654E+00   .559457353910E+00   .577649511383E+00   .596433232434E+00
+   .615827753234E+00   .635852935467E+00   .656529286669E+00   .677877981231E+00   .699920882082E+00
+   .722680563079E+00   .746180332122E+00   .770444255031E+00   .795497180181E+00   .821364763958E+00
+   .848073497027E+00   .875650731466E+00   .904124708772E+00   .933524588786E+00   .963880479554E+00
+   .995223468161E+00   .102758565257E+01   .106100017448E+01   .109550125328E+01   .113112422109E+01
+   .116790555895E+01   .120588293416E+01   .124509523887E+01   .128558262991E+01   .132738656990E+01
+   .137054986972E+01
+ aepotential
+   .108488371557E+05   .108913437060E+05   .109268576104E+05   .109548996083E+05   .109750159174E+05
+   .109867831331E+05   .109898140283E+05   .109837627229E+05   .109683296916E+05   .109432664025E+05
+   .109083794885E+05   .108635343534E+05   .108086581231E+05   .107437418608E+05   .106688419828E+05
+   .105840808188E+05   .104896462883E+05   .103857906760E+05   .102728285124E+05   .101511335885E+05
+   .100211351505E+05   .988331333965E+04   .973819396454E+04   .958634270255E+04   .942835884190E+04
+   .926486868667E+04   .909651874885E+04   .892396885617E+04   .874788530167E+04   .856893415487E+04
+   .838777484791E+04   .820505413593E+04   .802140052123E+04   .783741921152E+04   .765368767031E+04
+   .747075179744E+04   .728912276447E+04   .710927451048E+04   .693164189268E+04   .675661946899E+04
+   .658456088169E+04   .641577879961E+04   .625054536911E+04   .608909311888E+04   .593161626002E+04
+   .577827232083E+04   .562918405572E+04   .548444156982E+04   .534410460253E+04   .520820491778E+04
+   .507674875269E+04   .494971928168E+04   .482707905804E+04   .470877240057E+04   .459472769823E+04
+   .448485961091E+04   .437907114928E+04   .427725562121E+04   .417929843650E+04   .408507876507E+04
+   .399447104698E+04   .390734635557E+04   .382357361683E+04   .374302069029E+04   .366555531787E+04
+   .359104594837E+04   .351936244571E+04   .345037668991E+04   .338396307948E+04   .331999894435E+04
+   .325836487809E+04   .319894499781E+04   .314162714005E+04   .308630300017E+04   .303286822244E+04
+   .298122244754E+04   .293126932345E+04   .288291648532E+04   .283607550937E+04   .279066184527E+04
+   .274659473096E+04   .270379709357E+04   .266219543951E+04   .262171973636E+04   .258230328910E+04
+   .254388261248E+04   .250639730156E+04   .246978990154E+04   .243400577841E+04   .239899299128E+04
+   .236470216731E+04   .233108637981E+04   .229810103018E+04   .226570373406E+04   .223385421200E+04
+   .220251418481E+04   .217164727394E+04   .214121890680E+04   .211119622717E+04   .208154801063E+04
+   .205224458510E+04   .202325775634E+04   .199456073833E+04   .196612808858E+04   .193793564810E+04
+   .190996048609E+04   .188218084914E+04   .185457611491E+04   .182712675019E+04   .179981427324E+04
+   .177262122034E+04   .174553111653E+04   .171852845046E+04   .169159865328E+04   .166472808166E+04
+   .163790400487E+04   .161111459595E+04   .158434892706E+04   .155759696905E+04   .153084959535E+04
+   .150409859033E+04   .147733666221E+04   .145055746076E+04   .142375559988E+04   .139692668538E+04
+   .137006734801E+04   .134317528205E+04   .131624928956E+04   .128928933034E+04   .126229657784E+04
+   .123527348057E+04   .120822382908E+04   .118115282772E+04   .115406717030E+04   .112697511850E+04
+   .109988658085E+04   .107281318974E+04   .104576837297E+04   .101876741508E+04   .991827502834E+03
+   .964967747775E+03   .938209177461E+03   .911574686099E+03   .885088934576E+03   .858778190203E+03
+   .832670098285E+03   .806793381600E+03   .781177471166E+03   .755852083285E+03   .730846775009E+03
+   .706190533678E+03   .681911485967E+03   .658036846111E+03   .634593256540E+03   .611607697180E+03
+   .589109135713E+03   .567131037091E+03   .545714719486E+03   .524913313373E+03   .504795750094E+03
+   .485449820431E+03   .466983013455E+03   .449519748532E+03   .433193958949E+03   .418136762163E+03
+   .404460633503E+03   .392242181113E+03   .381507397300E+03   .372222416821E+03   .364291929210E+03
+   .357565375693E+03   .351849281085E+03   .346923072255E+03   .342555690971E+03   .338520866554E+03
+   .334609590638E+03   .330638919121E+03   .326456791480E+03   .321943172310E+03   .317008350998E+03
+   .311589482714E+03   .305646373220E+03   .299157237390E+03   .292114868350E+03   .284523432129E+03
+   .276395959787E+03   .267752520667E+03   .258619005773E+03   .249026418878E+03   .239010558901E+03
+   .228611974700E+03   .217876077176E+03   .206853299594E+03   .195599205206E+03   .184174456404E+03
+   .172644591378E+03   .161079616160E+03   .149553523560E+03   .138143994094E+03   .126932681446E+03
+   .116006540223E+03   .105460449841E+03   .954007337351E+02   .859480109246E+02   .772364879250E+02
+   .694062052829E+02   .625860094158E+02   .568684190896E+02   .522817310031E+02   .487676147262E+02
+   .461734885565E+02   .442679622934E+02   .427808529838E+02   .414540856617E+02   .400787469251E+02
+   .385032391990E+02   .366201806992E+02   .343505072145E+02   .316355172567E+02   .284358270377E+02
+   .247318123856E+02   .205222988029E+02   .158215211370E+02   .106557540206E+02   .506074169311E+01
+  -.919700434822E+00  -.723409852089E+01  -.138231954995E+02  -.206198267913E+02  -.275493404787E+02
+  -.345309876325E+02  -.414802922620E+02  -.483114667030E+02  -.549374427770E+02  -.612637819205E+02
+  -.671737491030E+02  -.725082027619E+02  -.770559081981E+02  -.805796990002E+02  -.828986901942E+02
+  -.840164637813E+02  -.842176367177E+02  -.839920317740E+02  -.837759301728E+02  -.837656070293E+02
+  -.839675319426E+02  -.843411972388E+02  -.848786983650E+02  -.856106697333E+02  -.865814504765E+02
+  -.878251061392E+02  -.893545830218E+02  -.911626742872E+02  -.932282709804E+02  -.955226725876E+02
+  -.980138595493E+02  -.100668703894E+03  -.103453800001E+03  -.106335581330E+03  -.109280179956E+03
+  -.112253305157E+03  -.115220303948E+03  -.118146470209E+03  -.120997643250E+03  -.123740899512E+03
+  -.126345177410E+03  -.128781432673E+03  -.131022369997E+03  -.133041807323E+03  -.134815001160E+03
+  -.136321124412E+03  -.137548454538E+03  -.138500586571E+03  -.139199411673E+03  -.139682680930E+03
+  -.139994568506E+03  -.140175756162E+03  -.140256679129E+03  -.140255985756E+03  -.140182498623E+03
+  -.140038198508E+03  -.139820740745E+03  -.139525168799E+03  -.139145039135E+03  -.138673226002E+03
+  -.138102557704E+03  -.137426344171E+03  -.136638735509E+03  -.135735116038E+03  -.134712197461E+03
+  -.133568227887E+03  -.132302758935E+03  -.130917148265E+03  -.129413991552E+03  -.127797225869E+03
+  -.126072072439E+03  -.124244802888E+03  -.122322633435E+03  -.120313558433E+03  -.118226185478E+03
+  -.116069568686E+03  -.113853043867E+03  -.111586068813E+03  -.109278071985E+03  -.106938312864E+03
+  -.104575756905E+03  -.102198967559E+03  -.998160169231E+02  -.974344153277E+02  -.950610587249E+02
+  -.927021914437E+02
+ core charge-density
+   .206024078210E+00   .217017086542E+00   .228591448094E+00   .240777472553E+00   .253607011704E+00
+   .267113534544E+00   .281332205750E+00   .296299967643E+00   .312055625752E+00   .328639938131E+00
+   .346095708524E+00   .364467883544E+00   .383803653967E+00   .404152560279E+00   .425566602617E+00
+   .448100355209E+00   .471811085460E+00   .496758877796E+00   .523006762381E+00   .550620848835E+00
+   .579670465049E+00   .610228301205E+00   .642370559095E+00   .676177106814E+00   .711731638917E+00
+   .749121842076E+00   .788439566301E+00   .829781001737E+00   .873246861056E+00   .918942567420E+00
+   .966978447978E+00   .101746993283E+01   .107053775937E+01   .112630818183E+01   .118491318595E+01
+   .124649070842E+01   .131118486096E+01   .137914615869E+01   .145053175236E+01   .152550566407E+01
+   .160423902600E+01   .168691032151E+01   .177370562797E+01   .186481886066E+01   .196045201676E+01
+   .206081541861E+01   .216612795514E+01   .227661732026E+01   .239252024693E+01   .251408273552E+01
+   .264156027474E+01   .277521805347E+01   .291533116151E+01   .306218477717E+01   .321607433933E+01
+   .337730570142E+01   .354619526471E+01   .372307008772E+01   .390826796867E+01   .410213749735E+01
+   .430503807273E+01   .451733988219E+01   .473942383801E+01   .497168146644E+01   .521451474430E+01
+   .546833587791E+01   .573356701847E+01   .601063990795E+01   .629999544916E+01   .660208319312E+01
+   .691736073667E+01   .724629302288E+01   .758935153636E+01   .794701338543E+01   .831976026247E+01
+   .870807727391E+01   .911245163058E+01   .953337118922E+01   .997132283573E+01   .104267907004E+02
+   .109002541954E+02   .113921858652E+02   .119030490395E+02   .124332952805E+02   .129833616138E+02
+   .135536675359E+02   .141446117887E+02   .147565688953E+02   .153898854488E+02   .160448761508E+02
+   .167218195943E+02   .174209537898E+02   .181424714339E+02   .188865149225E+02   .196531711133E+02
+   .204424658450E+02   .212543582241E+02   .220887346941E+02   .229454029053E+02   .238240854093E+02
+   .247244132060E+02   .256459191778E+02   .265880314505E+02   .275500667280E+02   .285312236550E+02
+   .295305762682E+02   .305470676066E+02   .315795035576E+02   .326265470280E+02   .336867125331E+02
+   .347583613125E+02   .358396970861E+02   .369287625763E+02   .380234369305E+02   .391214341887E+02
+   .402203029483E+02   .413174273880E+02   .424100298189E+02   .434951749370E+02   .445697759554E+02
+   .456306027995E+02   .466742925439E+02   .476973622713E+02   .486962245270E+02   .496672055308E+02
+   .506065662980E+02   .515105267994E+02   .523752932692E+02   .531970887397E+02   .539721868439E+02
+   .546969488902E+02   .553678641572E+02   .559815933074E+02   .565350147483E+02   .570252737017E+02
+   .574498336614E+02   .578065298327E+02   .580936240542E+02   .583098606051E+02   .584545221925E+02
+   .585274853110E+02   .585292740542E+02   .584611113492E+02   .583249664795E+02   .581235976618E+02
+   .578605883496E+02   .575403758591E+02   .571682708532E+02   .567504661759E+02   .562940335216E+02
+   .558069064367E+02   .552978482084E+02   .547764032904E+02   .542528310550E+02   .537380208533E+02
+   .532433876110E+02   .527807474843E+02   .523621734626E+02   .519998312184E+02   .517057959798E+02
+   .514918517245E+02   .513692745764E+02   .513486029017E+02   .514393972609E+02   .516499940476E+02
+   .519872573808E+02   .524563343529E+02   .530604196474E+02   .538005358379E+02   .546753363550E+02
+   .556809384028E+02   .568107933213E+02   .580556019124E+02   .594032820484E+02   .608389954466E+02
+   .623452397884E+02   .639020113656E+02   .654870421438E+02   .670761135363E+02   .686434472818E+02
+   .701621716412E+02   .716048586814E+02   .729441257545E+02   .741532914491E+02   .752070733713E+02
+   .760823121923E+02   .767587035766E+02   .772195170135E+02   .774522783286E+02   .774493909162E+02
+   .772086696313E+02   .767337609869E+02   .760344239336E+02   .751266472083E+02   .740325821036E+02
+   .727802736259E+02   .714031783719E+02   .699394640537E+02   .684310933118E+02   .669227031087E+02
+   .654603003232E+02   .640898038214E+02   .628554728549E+02   .617982706836E+02   .609542203546E+02
+   .603528161509E+02   .600155588984E+02   .599546856527E+02   .601721638273E+02   .606590160253E+02
+   .613950346044E+02   .623489333995E+02   .634789678698E+02   .647340346650E+02   .660552381627E+02
+   .673778872061E+02   .686338633919E+02   .697542807793E+02   .706723365593E+02   .713262338088E+02
+   .716620434035E+02   .716363646298E+02   .712186441426E+02   .703930209089E+02   .691595804822E+02
+   .675349249735E+02   .655519947561E+02   .632591132078E+02   .607182652022E+02   .580026617088E+02
+   .551936845171E+02   .523773441968E+02   .496404181760E+02   .470664613525E+02   .447318961858E+02
+   .427023905023E+02   .410297183168E+02   .397492731074E+02   .388783678411E+02   .384154186844E+02
+   .383400748346E+02   .386143268364E+02   .391845825384E+02   .399846081228E+02   .409391013386E+02
+   .419676121523E+02   .429885688693E+02   .439232220496E+02   .446993185601E+02   .452543207256E+02
+   .455379968435E+02   .455142477538E+02   .451620905153E+02   .444757844020E+02   .434641454288E+02
+   .421491464544E+02   .405639377366E+02   .387504470650E+02   .367567296885E+02   .346342372474E+02
+   .324351633976E+02   .302100038866E+02   .280054426605E+02   .258626452947E+02   .238160110480E+02
+   .218924010905E+02   .201108330032E+02   .184826037401E+02   .170117873135E+02   .156960300998E+02
+   .145275657403E+02   .134943676886E+02   .125813628325E+02   .117716388331E+02   .110475783861E+02
+   .103918812979E+02   .978841769215E+01   .922288957930E+01   .868328594048E+01   .816013455903E+01
+   .764656734235E+01   .713822507356E+01   .663303294946E+01   .613088082619E+01   .563324240294E+01
+   .514276591171E+01   .466286549473E+01   .419733791148E+01   .375002231244E+01   .332451808647E+01
+   .292396554662E+01   .255089457754E+01   .220712732263E+01   .189374944254E+01   .161112357044E+01
+   .135893967825E+01   .113629641495E+01   .941798677241E+00   .773664681413E+00   .629834293014E+00
+   .508072407071E+00   .406062765146E+00   .321489134285E+00   .252102165401E+00   .195771434568E+00
+   .150523118470E+00   .114564457727E+00   .862966309037E-01   .643179231629E-01   .474191606013E-01
+   .345733315839E-01
+ kinetic energy-density
+   .555970637665E+07   .551371318806E+07   .546855115447E+07   .542422079122E+07   .538072261331E+07
+   .533805715068E+07   .529622496876E+07   .525522668683E+07   .521506299682E+07   .517573468216E+07
+   .513724263695E+07   .509958788498E+07   .506277159896E+07   .502679511952E+07   .499165997417E+07
+   .495736789590E+07   .492392084143E+07   .489132100895E+07   .485957085530E+07   .482867311234E+07
+   .479863080257E+07   .476944725386E+07   .474112611310E+07   .471367135888E+07   .468708731310E+07
+   .466137865142E+07   .463655041262E+07   .461260800694E+07   .458955722326E+07   .456740423536E+07
+   .454615560725E+07   .452581829762E+07   .450639966356E+07   .448790746359E+07   .447034986015E+07
+   .445373542155E+07   .443807312357E+07   .442337235074E+07   .440964289734E+07   .439689496822E+07
+   .438513917943E+07   .437438655878E+07   .436464854613E+07   .435593699368E+07   .434826416591E+07
+   .434164273940E+07   .433608580228E+07   .433160685325E+07   .432821980012E+07   .432593895769E+07
+   .432477904485E+07   .432475518074E+07   .432588287978E+07   .432817804542E+07   .433165696239E+07
+   .433633628722E+07   .434223303679E+07   .434936457474E+07   .435774859540E+07   .436740310498E+07
+   .437834639982E+07   .439059704123E+07   .440417382680E+07   .441909575763E+07   .443538200137E+07
+   .445305185048E+07   .447212467541E+07   .449261987238E+07   .451455680514E+07   .453795474047E+07
+   .456283277681E+07   .458920976557E+07   .461710422473E+07   .464653424400E+07   .467751738124E+07
+   .471007054938E+07   .474420989342E+07   .477995065690E+07   .481730703721E+07   .485629202919E+07
+   .489691725647E+07   .493919278987E+07   .498312695238E+07   .502872611013E+07   .507599444875E+07
+   .512493373474E+07   .517554306130E+07   .522781857817E+07   .528175320534E+07   .533733632999E+07
+   .539455348688E+07   .545338602186E+07   .551381073854E+07   .557579952846E+07   .563931898500E+07
+   .570433000154E+07   .577078735469E+07   .583863927342E+07   .590782699553E+07   .597828431269E+07
+   .604993710611E+07   .612270287481E+07   .619649025913E+07   .627119856238E+07   .634671727397E+07
+   .642292559780E+07   .649969199032E+07   .657687371298E+07   .665431640446E+07   .673185367867E+07
+   .680930675486E+07   .688648412710E+07   .696318128076E+07   .703918046415E+07   .711425052442E+07
+   .718814681689E+07   .726061119795E+07   .733137211185E+07   .740014478229E+07   .746663151999E+07
+   .753052215758E+07   .759149462360E+07   .764921566684E+07   .770334174265E+07   .775352007210E+07
+   .779938988437E+07   .784058385209E+07   .787672972813E+07   .790745219092E+07   .793237490391E+07
+   .795112279259E+07   .796332454015E+07   .796861530025E+07   .796663962213E+07   .795705457977E+07
+   .793953309315E+07   .791376742516E+07   .787947283337E+07   .783639135073E+07   .778429566448E+07
+   .772299305675E+07   .765232936544E+07   .757219291800E+07   .748251838558E+07   .738329050013E+07
+   .727454757177E+07   .715638474017E+07   .702895688971E+07   .689248115620E+07   .674723895119E+07
+   .659357743007E+07   .643191033142E+07   .626271811827E+07   .608654735611E+07   .590400926912E+07
+   .571577742328E+07   .552258449424E+07   .532521808763E+07   .512451559110E+07   .492135804968E+07
+   .471666307141E+07   .451137678877E+07   .430646492443E+07   .410290303908E+07   .390166606671E+07
+   .370371731462E+07   .350999701936E+07   .332141076761E+07   .313881789767E+07   .296302011862E+07
+   .279475053492E+07   .263466326446E+07   .248332383685E+07   .234120056136E+07   .220865705746E+07
+   .208594614038E+07   .197320524824E+07   .187045358278E+07   .177759111450E+07   .169439957263E+07
+   .162054550384E+07   .155558544072E+07   .149897317461E+07   .145006907806E+07   .140815137173E+07
+   .137242918020E+07   .134205717150E+07   .131615152776E+07   .129380695018E+07   .127411436127E+07
+   .125617893243E+07   .123913803626E+07   .122217870197E+07   .120455413980E+07   .118559889831E+07
+   .116474222724E+07   .114151924119E+07   .111557951573E+07   .108669279887E+07   .105475158835E+07
+   .101977040549E+07   .981881689582E+06   .941328336318E+06   .898453009109E+06   .853684460829E+06
+   .807521220018E+06   .760513122615E+06   .713241303098E+06   .666297372034E+06   .620262605455E+06
+   .575687909694E+06   .533075375406E+06   .492862089048E+06   .455406631545E+06   .420978869685E+06
+   .389753243769E+06   .361805860505E+06   .337115515966E+06   .315568617964E+06   .296967785391E+06
+   .281043708559E+06   .267469679617E+06   .255878062093E+06   .245877874801E+06   .237072622657E+06
+   .229077514497E+06   .221535261783E+06   .214129746051E+06   .206596970052E+06   .198732860218E+06
+   .190397659213E+06   .181516830677E+06   .172078588043E+06   .162128347205E+06   .151760573963E+06
+   .141108627344E+06   .130333263674E+06   .119610460422E+06   .109119209831E+06   .990299196190E+05
+   .894942024958E+05   .806368465268E+05   .725504854944E+05   .652932264852E+05   .588885843532E+05
+   .533272271614E+05   .485701047070E+05   .445531154524E+05   .411928147889E+05   .383927919461E+05
+   .360502018038E+05   .340619929810E+05   .323304345994E+05   .307676313768E+05   .292988287989E+05
+   .278644326694E+05   .264207819497E+05   .249398071792E+05   .234077724309E+05   .218233354342E+05
+   .201951705220E+05   .185393860995E+05   .168769473013E+05   .152312549900E+05   .136260271783E+05
+   .120835451745E+05   .106233316404E+05   .926122341763E+04   .800887778087E+04   .687361825713E+04
+   .585858042462E+04   .496308468416E+04   .418316731219E+04   .351222074709E+04   .294166407999E+04
+   .246161920644E+04   .206154286643E+04   .173077268673E+04   .145897333579E+04   .123647470516E+04
+   .105450609222E+04   .905336505288E+03   .782334211766E+03   .679959969220E+03   .593708799185E+03
+   .520014897157E+03   .456133270895E+03   .400010580879E+03   .350154841328E+03   .305511709062E+03
+   .265354273866E+03   .229183772370E+03   .196666332803E+03   .167550651585E+03   .141639873907E+03
+   .118754334371E+03   .987146599090E+02   .813313225797E+02   .664015195635E+02   .537105778601E+02
+   .430361059146E+02   .341534591145E+02   .268414557200E+02   .208876167627E+02   .160924907840E+02
+   .122728542662E+02   .926375063601E+01   .691944918946E+01   .511347769614E+01   .373791778748E+01
+   .270215976633E+01
+ pspotential
+  -.175704312535E+03  -.175704423606E+03  -.175704531176E+03  -.175704635355E+03  -.175704736250E+03
+  -.175704833964E+03  -.175704928597E+03  -.175705020246E+03  -.175705109004E+03  -.175705194962E+03
+  -.175705278209E+03  -.175705358828E+03  -.175705436903E+03  -.175705512513E+03  -.175705585735E+03
+  -.175705656645E+03  -.175705725314E+03  -.175705791814E+03  -.175705856211E+03  -.175705918571E+03
+  -.175705978958E+03  -.175706037433E+03  -.175706094057E+03  -.175706148886E+03  -.175706201976E+03
+  -.175706253382E+03  -.175706303155E+03  -.175706351346E+03  -.175706398004E+03  -.175706443177E+03
+  -.175706486909E+03  -.175706529246E+03  -.175706570229E+03  -.175706609901E+03  -.175706648300E+03
+  -.175706685467E+03  -.175706721437E+03  -.175706756247E+03  -.175706789931E+03  -.175706822524E+03
+  -.175706854057E+03  -.175706884562E+03  -.175706914068E+03  -.175706942606E+03  -.175706970201E+03
+  -.175706996882E+03  -.175707022674E+03  -.175707047603E+03  -.175707071690E+03  -.175707094961E+03
+  -.175707117435E+03  -.175707139135E+03  -.175707160081E+03  -.175707180290E+03  -.175707199783E+03
+  -.175707218574E+03  -.175707236682E+03  -.175707254121E+03  -.175707270907E+03  -.175707287052E+03
+  -.175707302570E+03  -.175707317472E+03  -.175707331769E+03  -.175707345472E+03  -.175707358590E+03
+  -.175707371131E+03  -.175707383102E+03  -.175707394510E+03  -.175707405360E+03  -.175707415656E+03
+  -.175707425403E+03  -.175707434602E+03  -.175707443255E+03  -.175707451362E+03  -.175707458922E+03
+  -.175707465933E+03  -.175707472392E+03  -.175707478294E+03  -.175707483634E+03  -.175707488404E+03
+  -.175707492596E+03  -.175707496199E+03  -.175707499203E+03  -.175707501593E+03  -.175707503355E+03
+  -.175707504472E+03  -.175707504926E+03  -.175707504695E+03  -.175707503758E+03  -.175707502088E+03
+  -.175707499660E+03  -.175707496442E+03  -.175707492403E+03  -.175707487508E+03  -.175707481719E+03
+  -.175707474994E+03  -.175707467289E+03  -.175707458556E+03  -.175707448743E+03  -.175707437796E+03
+  -.175707425654E+03  -.175707412253E+03  -.175707397524E+03  -.175707381395E+03  -.175707363784E+03
+  -.175707344608E+03  -.175707323776E+03  -.175707301190E+03  -.175707276747E+03  -.175707250336E+03
+  -.175707221836E+03  -.175707191122E+03  -.175707158056E+03  -.175707122495E+03  -.175707084282E+03
+  -.175707043252E+03  -.175706999228E+03  -.175706952021E+03  -.175706901429E+03  -.175706847237E+03
+  -.175706789215E+03  -.175706727118E+03  -.175706660683E+03  -.175706589632E+03  -.175706513667E+03
+  -.175706432469E+03  -.175706345700E+03  -.175706252997E+03  -.175706153976E+03  -.175706048224E+03
+  -.175705935302E+03  -.175705814742E+03  -.175705686046E+03  -.175705548680E+03  -.175705402077E+03
+  -.175705245631E+03  -.175705078697E+03  -.175704900586E+03  -.175704710564E+03  -.175704507849E+03
+  -.175704291605E+03  -.175704060943E+03  -.175703814915E+03  -.175703552508E+03  -.175703272644E+03
+  -.175702974173E+03  -.175702655868E+03  -.175702316424E+03  -.175701954445E+03  -.175701568446E+03
+  -.175701156844E+03  -.175700717948E+03  -.175700249960E+03  -.175699750958E+03  -.175699218897E+03
+  -.175698651595E+03  -.175698046726E+03  -.175697401810E+03  -.175696714205E+03  -.175695981091E+03
+  -.175695199464E+03  -.175694366123E+03  -.175693477651E+03  -.175692530410E+03  -.175691520520E+03
+  -.175690443842E+03  -.175689295969E+03  -.175688072199E+03  -.175686767521E+03  -.175685376592E+03
+  -.175683893719E+03  -.175682312831E+03  -.175680627456E+03  -.175678830698E+03  -.175676915201E+03
+  -.175674873129E+03  -.175672696126E+03  -.175670375286E+03  -.175667901116E+03  -.175665263495E+03
+  -.175662451637E+03  -.175659454046E+03  -.175656258466E+03  -.175652851835E+03  -.175649220230E+03
+  -.175645348813E+03  -.175641221767E+03  -.175636822235E+03  -.175632132250E+03  -.175627132666E+03
+  -.175621803074E+03  -.175616121728E+03  -.175610065448E+03  -.175603609537E+03  -.175596727671E+03
+  -.175589391803E+03  -.175581572045E+03  -.175573236547E+03  -.175564351375E+03  -.175554880371E+03
+  -.175544785011E+03  -.175534024252E+03  -.175522554365E+03  -.175510328769E+03  -.175497297839E+03
+  -.175483408717E+03  -.175468605098E+03  -.175452827014E+03  -.175436010595E+03  -.175418087824E+03
+  -.175398986269E+03  -.175378628803E+03  -.175356933307E+03  -.175333812355E+03  -.175309172874E+03
+  -.175282915796E+03  -.175254935675E+03  -.175225120293E+03  -.175193350236E+03  -.175159498448E+03
+  -.175123429759E+03  -.175085000386E+03  -.175044057402E+03  -.175000438186E+03  -.174953969827E+03
+  -.174904468509E+03  -.174851738855E+03  -.174795573240E+03  -.174735751063E+03  -.174672037989E+03
+  -.174604185143E+03  -.174531928271E+03  -.174454986857E+03  -.174373063200E+03  -.174285841440E+03
+  -.174192986551E+03  -.174094143276E+03  -.173988935029E+03  -.173876962737E+03  -.173757803645E+03
+  -.173631010069E+03  -.173496108099E+03  -.173352596261E+03  -.173199944125E+03  -.173037590869E+03
+  -.172864943798E+03  -.172681376820E+03  -.172486228873E+03  -.172278802316E+03  -.172058361283E+03
+  -.171824129998E+03  -.171575291062E+03  -.171310983712E+03  -.171030302063E+03  -.170732293333E+03
+  -.170415956071E+03  -.170080238390E+03  -.169724036226E+03  -.169346191637E+03  -.168945491169E+03
+  -.168520664316E+03  -.168070382108E+03  -.167593255873E+03  -.167087836228E+03  -.166552612357E+03
+  -.165986011662E+03  -.165386399878E+03  -.164752081756E+03  -.164081302446E+03  -.163372249715E+03
+  -.162623057177E+03  -.161831808693E+03  -.160996544157E+03  -.160115266876E+03  -.159185952782E+03
+  -.158206561753E+03  -.157175051347E+03  -.156089393351E+03  -.154947593618E+03  -.153747715902E+03
+  -.152487910579E+03  -.151166449599E+03  -.149781769410E+03  -.148332524271E+03  -.146817652964E+03
+  -.145236462503E+03  -.143588732649E+03  -.141874844456E+03  -.140095934177E+03  -.138254069802E+03
+  -.136352440738E+03  -.134395541012E+03  -.132389313067E+03  -.130341203285E+03  -.128260063269E+03
+  -.126155814905E+03  -.124038786992E+03  -.121918638487E+03  -.119802835640E+03  -.117694794341E+03
+  -.115592068676E+03  -.113485262476E+03  -.111358254181E+03  -.109189247020E+03  -.106950358027E+03
+  -.104604240578E+03  -.102120616769E+03  -.997980674422E+02  -.974484939215E+02  -.950638794150E+02
+  -.927021914437E+02
+ core charge-density (pseudized)
+   .285751904920E-07   .304637933567E-07   .324772185123E-07   .346237157630E-07   .369120801625E-07
+   .393516880503E-07   .419525354710E-07   .447252791313E-07   .476812800653E-07   .508326501852E-07
+   .541923019080E-07   .577740010636E-07   .615924232982E-07   .656632142066E-07   .700030534383E-07
+   .746297230406E-07   .795621803189E-07   .848206355118E-07   .904266346011E-07   .964031475935E-07
+   .102774662639E-06   .109567286365E-06   .116808850853E-06   .124529027668E-06   .132759449443E-06
+   .141533839483E-06   .150888149950E-06   .160860709167E-06   .171492378668E-06   .182826720624E-06
+   .194910176329E-06   .207792256495E-06   .221525744113E-06   .236166910727E-06   .251775746999E-06
+   .268416208515E-06   .286156477838E-06   .305069243874E-06   .325231999711E-06   .346727360135E-06
+   .369643400138E-06   .394074015793E-06   .420119308983E-06   .447885997556E-06   .477487852593E-06
+   .509046164567E-06   .542690240316E-06   .578557932870E-06   .616796206278E-06   .657561737780E-06
+   .701021559773E-06   .747353744206E-06   .796748132204E-06   .849407111922E-06   .905546447803E-06
+   .965396164644E-06   .102920149009E-05   .109722385944E-05   .116974198680E-05   .124705300713E-05
+   .132947369366E-05   .141734175588E-05   .151101722319E-05   .161088392012E-05   .171735103897E-05
+   .183085481641E-05   .195186032092E-05   .208086335826E-05   .221839250305E-05   .236501126444E-05
+   .252132039501E-05   .268796035227E-05   .286561392276E-05   .305500901972E-05   .325692166548E-05
+   .347217917113E-05   .370166352620E-05   .394631501245E-05   .420713605646E-05   .448519533683E-05
+   .478163216285E-05   .509766114249E-05   .543457715901E-05   .579376067633E-05   .617668339512E-05
+   .658491428268E-05   .702012600124E-05   .748410176123E-05   .797874262734E-05   .850607530749E-05
+   .906826045650E-05   .966760152857E-05   .103065542147E-04   .109877365041E-04   .117139394096E-04
+   .124881384033E-04   .133135056068E-04   .141934227870E-04   .151314952115E-04   .161315664191E-04
+   .171977339659E-04   .183343662130E-04   .195461202226E-04   .208379608372E-04   .222151810191E-04
+   .236834235342E-04   .252487040684E-04   .269174358720E-04   .286964560312E-04   .305930534769E-04
+   .326149988432E-04   .347705762985E-04   .370686174810E-04   .395185376741E-04   .421303743739E-04
+   .449148284031E-04   .478833077419E-04   .510479742539E-04   .544217934985E-04   .580185878344E-04
+   .618530930302E-04   .659410186142E-04   .702991122104E-04   .749452281236E-04   .798984004537E-04
+   .851789210389E-04   .908084225454E-04   .968099670440E-04   .103208140435E-03   .110029153107E-03
+   .117300947242E-03   .125053311204E-03   .133318001477E-03   .142128872650E-03   .151522015989E-03
+   .161535907139E-03   .172211563588E-03   .183592712506E-03   .195725969665E-03   .208661030159E-03
+   .222450871700E-03   .237151971322E-03   .252824536374E-03   .269532750736E-03   .287345037270E-03
+   .306334337562E-03   .326578410098E-03   .348160148075E-03   .371167918155E-03   .395695921511E-03
+   .421844578649E-03   .449720939548E-03   .479439120785E-03   .511120771415E-03   .544895569472E-03
+   .580901751116E-03   .619286674529E-03   .660207420863E-03   .703831434628E-03   .750337206102E-03
+   .799914998504E-03   .852767622830E-03   .909111263456E-03   .969176357801E-03   .103320853356E-02
+   .110146960720E-02   .117423864777E-02   .125181311008E-02   .133451004191E-02   .142266736986E-02
+   .151664526896E-02   .161682762140E-02   .172362357005E-02   .183746917289E-02   .195882916463E-02
+   .208819883251E-02   .222610601335E-02   .237311321956E-02   .252981990228E-02   .269686486009E-02
+   .287492880252E-02   .306473707801E-02   .326706257627E-02   .348272881610E-02   .371261322980E-02
+   .395765065627E-02   .421883705541E-02   .449723345716E-02   .479397015925E-02   .511025118826E-02
+   .544735903981E-02   .580665971376E-02   .618960806181E-02   .659775346518E-02   .703274586110E-02
+   .749634213746E-02   .799041291611E-02   .851694974554E-02   .907807272513E-02   .967603858321E-02
+   .103132492324E-01   .109922608258E-01   .117157933391E-01   .124867407026E-01   .133081815091E-01
+   .141833903224E-01   .151158496123E-01   .161092623412E-01   .171675652261E-01   .182949427005E-01
+   .194958415989E-01   .207749865844E-01   .221373963378E-01   .235884005251E-01   .251336575551E-01
+   .267791731360E-01   .285313196330E-01   .303968562249E-01   .323829498474E-01   .344971969053E-01
+   .367476457204E-01   .391428196749E-01   .416917409916E-01   .444039550761E-01   .472895553287E-01
+   .503592083065E-01   .536241790950E-01   .570963567147E-01   .607882793544E-01   .647131591850E-01
+   .688849064595E-01   .733181525566E-01   .780282715653E-01   .830313999418E-01   .883444536976E-01
+   .939851424916E-01   .999719799070E-01   .106324289087E+00   .113062202788E+00   .120206656776E+00
+   .127779375347E+00   .135802847597E+00   .144300292881E+00   .153295613718E+00   .162813334184E+00
+   .172878521593E+00   .183516689054E+00   .194753676176E+00   .206615504967E+00   .219128207634E+00
+   .232317622701E+00   .246209155549E+00   .260827499159E+00   .276196310512E+00   .292337837833E+00
+   .309272493550E+00   .327018367657E+00   .345590675953E+00   .365001137601E+00   .385257276435E+00
+   .406361640667E+00   .428310936031E+00   .451095068002E+00   .474696089708E+00   .499087053436E+00
+   .524230765454E+00   .550078446158E+00   .576568300580E+00   .603624008041E+00   .631153144405E+00
+   .659045556079E+00   .687171711779E+00   .715381066248E+00   .743500479733E+00   .771332748147E+00
+   .798655311595E+00   .825219223284E+00   .850748476717E+00   .874939806254E+00   .897463094281E+00
+   .917962536777E+00   .936058737081E+00   .951351914027E+00   .963426423585E+00   .971856800584E+00
+   .976215526197E+00   .976082714080E+00   .971057879139E+00   .960773902603E+00   .944913229577E+00
+   .923226223678E+00   .895551450668E+00   .861837461806E+00   .822165391200E+00   .776771364604E+00
+   .726067337554E+00   .670658541076E+00   .611355223291E+00   .549175855441E+00   .485338455764E+00
+   .421236227243E+00   .358393381811E+00   .298396937689E+00   .242800562569E+00   .192997359642E+00
+   .150060050995E+00   .114549518116E+00   .862966309037E-01   .643179231629E-01   .474191606013E-01
+   .345733315839E-01
+ pseudo wavefunction
+   .162798829420E-11   .179202286997E-11   .197258541589E-11   .217134127474E-11   .239012358766E-11
+   .263095020138E-11   .289604227897E-11   .318784478581E-11   .350904903968E-11   .386261753301E-11
+   .425181125620E-11   .468021977395E-11   .515179433214E-11   .567088430046E-11   .624227728699E-11
+   .687124329470E-11   .756358332708E-11   .832568289128E-11   .916457089210E-11   .100879844602E-10
+   .111044403121E-10   .122233133009E-10   .134549228806E-10   .148106282841E-10   .163029332896E-10
+   .179456015440E-10   .197537835065E-10   .217441561822E-10   .239350769351E-10   .263467527999E-10
+   .290014268530E-10   .319235833618E-10   .351401736053E-10   .386808644475E-10   .425783119573E-10
+   .468684625978E-10   .515908847632E-10   .567891337213E-10   .625111533265E-10   .688097182099E-10
+   .757429205236E-10   .833747057283E-10   .917754623677E-10   .101022671267E-09   .111201620142E-09
+   .122406190219E-09   .134739722101E-09   .148315968890E-09   .163260145340E-09   .179710082716E-09
+   .197817500030E-09   .217749403344E-09   .239689626089E-09   .263840524566E-09   .290424844291E-09
+   .319687774395E-09   .351899209015E-09   .387356236544E-09   .426385879697E-09   .469348111657E-09
+   .516639176129E-09   .568695241921E-09   .625996425746E-09   .689071220363E-09   .758501368899E-09
+   .834927230284E-09   .919053685314E-09   .101165663780E-08   .111359017074E-08   .122579442360E-08
+   .134930426321E-08   .148525882839E-08   .163491203625E-08   .179964414712E-08   .198097449470E-08
+   .218057549891E-08   .240028809064E-08   .264213869064E-08   .290835789926E-08   .320140106924E-08
+   .352397095140E-08   .387904262212E-08   .426989092237E-08   .470012066149E-08   .517369986426E-08
+   .569499636780E-08   .626881810594E-08   .690045745252E-08   .759574003261E-08   .836107845181E-08
+   .920353143917E-08   .101308689491E-07   .111516438231E-07   .122752706711E-07   .135121127016E-07
+   .148735772998E-07   .163722212360E-07   .180218664749E-07   .198377276520E-07   .218365523960E-07
+   .240367757873E-07   .264586903808E-07   .291246333579E-07   .320591925363E-07   .352894331350E-07
+   .388451473872E-07   .427591293033E-07   .470674771161E-07   .518099261988E-07   .570302155259E-07
+   .627764910546E-07   .691017497489E-07   .760643283386E-07   .837284413218E-07   .921647731712E-07
+   .101451130204E-06   .111673158131E-06   .122925131887E-06   .135310825053E-06   .148944466848E-06
+   .163951795553E-06   .180471218051E-06   .198655086188E-06   .218671101718E-06   .240703862785E-06
+   .264956566201E-06   .291652881212E-06   .321039012016E-06   .353385968070E-06   .388992063083E-06
+   .428185665748E-06   .471328227571E-06   .518817615683E-06   .571091781372E-06   .628632798133E-06
+   .691971306455E-06   .761691406288E-06   .838436042297E-06   .922912931492E-06   .101590108788E-05
+   .111825800418E-05   .123092755691E-05   .135494870741E-05   .149146507920E-05   .164173549972E-05
+   .180714560359E-05   .198922060412E-05   .218963935085E-05   .241024980235E-05   .265308605673E-05
+   .292038709671E-05   .321461742149E-05   .353848975559E-05   .389499004317E-05   .428740495804E-05
+   .471935218204E-05   .519481373045E-05   .571817263043E-05   .629425328984E-05   .692836592716E-05
+   .762635547055E-05   .839465537528E-05   .924034685333E-05   .101712240588E-04   .111958658274E-04
+   .123237146270E-04   .135651634444E-04   .149316514034E-04   .164357689902E-04   .180913738498E-04
+   .199137182128E-04   .219195891182E-04   .241274627135E-04   .265576740425E-04   .292326038703E-04
+   .321768842498E-04   .354176247045E-04   .389846610878E-04   .429108293835E-04   .472322669382E-04
+   .519887438619E-04   .572240276057E-04   .629862840205E-04   .693285185310E-04   .763090614136E-04
+   .839921015637E-04   .924482735653E-04   .101755303354E-03   .111998718277E-03   .123272627927E-03
+   .135680582743E-03   .149336518069E-03   .164365792079E-03   .180906326829E-03   .199109862559E-03
+   .219143336374E-03   .241190397474E-03   .265453072300E-03   .292153594206E-03   .321536413692E-03
+   .353870406721E-03   .389451300315E-03   .428604336424E-03   .471687197012E-03   .519093215439E-03
+   .571254901549E-03   .628647810356E-03   .691794786951E-03   .761270623227E-03   .837707165154E-03
+   .921798912809E-03   .101430915906E-02   .111607671678E-02   .122802328875E-02   .135116153899E-02
+   .148660392912E-02   .163557238866E-02   .179940889356E-02   .197958703323E-02   .217772465254E-02
+   .239559766154E-02   .263515511266E-02   .289853565194E-02   .318808545824E-02   .350637779146E-02
+   .385623427850E-02   .424074807277E-02   .466330903051E-02   .512763105371E-02   .563778175597E-02
+   .619821461305E-02   .681380376420E-02   .748988163348E-02   .823227954112E-02   .904737147393E-02
+   .994212117901E-02   .109241327372E-01   .120017047596E-01   .131838883327E-01   .144805488113E-01
+   .159024315265E-01   .174612314311E-01   .191696666516E-01   .210415558466E-01   .230918991872E-01
+   .253369626702E-01   .277943653540E-01   .304831689502E-01   .334239690316E-01   .366389868985E-01
+   .401521608997E-01   .439892357085E-01   .481778477145E-01   .527476042984E-01   .577301543011E-01
+   .631592464849E-01   .690707721923E-01   .755027877511E-01   .824955114298E-01   .900912889295E-01
+   .983345204982E-01   .107271541774E+00   .116950449418E+00   .127420861491E+00   .138733601396E+00
+   .150940293036E+00   .164092853753E+00   .178242870546E+00   .193440844224E+00   .209735285484E+00
+   .227171646670E+00   .245791073183E+00   .265628959420E+00   .286713295930E+00   .309062797352E+00
+   .332684805071E+00   .357572964523E+00   .383704685246E+00   .411038402298E+00   .439510671112E+00
+   .469033144429E+00   .499489500088E+00   .530732412287E+00   .562580686610E+00   .594816710302E+00
+   .627184403563E+00   .659387893867E+00   .691091171789E+00   .721919021065E+00   .751459543940E+00
+   .779268620561E+00   .804876641923E+00   .827797832050E+00   .847542417314E+00   .863631798551E+00
+   .875616723357E+00   .883098230204E+00   .885750832710E+00   .883347024772E+00   .875781715320E+00
+   .863094655027E+00   .845488321709E+00   .823338132203E+00   .797191318827E+00   .767750453213E+00
+   .735837560414E+00   .702335219380E+00   .668102199258E+00   .633863254851E+00   .600075238444E+00
+   .566858031425E+00
+ ae wavefunction
+   .433255977986E-07   .471967885458E-07   .513946221778E-07   .559482402994E-07   .608892701227E-07
+   .662520468318E-07   .720738551915E-07   .783951921205E-07   .852600521186E-07   .927162376007E-07
+   .100815696375E-06   .109614888701E-06   .119175186579E-06   .129563308159E-06   .140851790420E-06
+   .153119503546E-06   .166452210728E-06   .180943177486E-06   .196693834916E-06   .213814501734E-06
+   .232425170360E-06   .252656362809E-06   .274650062651E-06   .298560729868E-06   .324556406067E-06
+   .352819918158E-06   .383550189377E-06   .416963667299E-06   .453295879380E-06   .492803127527E-06
+   .535764334226E-06   .582483053895E-06   .633289664386E-06   .688543754897E-06   .748636728040E-06
+   .813994635429E-06   .885081267909E-06   .962401523466E-06   .104650507796E-05   .113799038610E-05
+   .123750904261E-05   .134577053621E-05   .146354743204E-05   .159168102143E-05   .173108748132E-05
+   .188276458980E-05   .204779904795E-05   .222737446342E-05   .242278005548E-05   .263542014736E-05
+   .286682451725E-05   .311865968609E-05   .339274122708E-05   .369104718993E-05   .401573274099E-05
+   .436914612972E-05   .475384610194E-05   .517262089112E-05   .562850893108E-05   .612482144599E-05
+   .666516708815E-05   .725347880880E-05   .789404316446E-05   .859153227900E-05   .935103870165E-05
+   .101781134226E-04   .110788073309E-04   .120597164262E-04   .131280311198E-04   .142915899967E-04
+   .155589384356E-04   .169393925252E-04   .184431087508E-04   .200811599654E-04   .218656182100E-04
+   .238096449894E-04   .259275896700E-04   .282350967180E-04   .307492225629E-04   .334885629351E-04
+   .364733916017E-04   .397258115029E-04   .432699193739E-04   .471319850339E-04   .513406466182E-04
+   .559271231386E-04   .609254458721E-04   .663727102012E-04   .723093496637E-04   .787794341106E-04
+   .858309940278E-04   .935163732403E-04   .101892612394E-03   .111021865801E-03   .120971854437E-03
+   .131816358097E-03   .143635749935E-03   .156517576883E-03   .170557189677E-03   .185858426525E-03
+   .202534354718E-03   .220708074816E-03   .240513592363E-03   .262096762444E-03   .285616312728E-03
+   .311244951068E-03   .339170564099E-03   .369597513706E-03   .402748038649E-03   .438863769117E-03
+   .478207362404E-03   .521064268409E-03   .567744634115E-03   .618585356726E-03   .673952295614E-03
+   .734242653719E-03   .799887539545E-03   .871354721358E-03   .949151585661E-03   .103382831242E-02
+   .112598127995E-02   .122625671264E-02   .133535458505E-02   .145403279611E-02   .158311162718E-02
+   .172347849778E-02   .187609303275E-02   .204199245420E-02   .222229731113E-02   .241821755902E-02
+   .263105900068E-02   .286223009857E-02   .311324916693E-02   .338575195081E-02   .368149959600E-02
+   .400238701177E-02   .435045162470E-02   .472788251806E-02   .513702994676E-02   .558041521269E-02
+   .606074087914E-02   .658090129626E-02   .714399340161E-02   .775332775105E-02   .841243972525E-02
+   .912510084598E-02   .989533012379E-02   .107274053451E-01   .116258741910E-01   .125955650646E-01
+   .136415974825E-01   .147693918710E-01   .159846785795E-01   .172935059073E-01   .187022469077E-01
+   .202176047132E-01   .218466160898E-01   .235966529016E-01   .254754211308E-01   .274909570587E-01
+   .296516201759E-01   .319660823421E-01   .344433126716E-01   .370925575740E-01   .399233153355E-01
+   .429453045935E-01   .461684260333E-01   .496027166267E-01   .532582957318E-01   .571453023865E-01
+   .612738231329E-01   .656538097211E-01   .702949860423E-01   .752067436496E-01   .803980252340E-01
+   .858771954457E-01   .916518984882E-01   .977289019685E-01   .104113926576E+00   .110811461275E+00
+   .117824563859E+00   .125154646890E+00   .132801249292E+00   .140761794092E+00   .149031333148E+00
+   .157602279994E+00   .166464132324E+00   .175603186074E+00   .185002243466E+00   .194640317916E+00
+   .204492339201E+00   .214528862837E+00   .224715788187E+00   .235014090398E+00   .245379571847E+00
+   .255762639342E+00   .266108113858E+00   .276355080109E+00   .286436783628E+00   .296280583353E+00
+   .305807967803E+00   .314934642721E+00   .323570697613E+00   .331620857794E+00   .338984827757E+00
+   .345557731273E+00   .351230654266E+00   .355891298410E+00   .359424756333E+00   .361714422046E+00
+   .362643051150E+00   .362093982419E+00   .359952524249E+00   .356107496888E+00   .350452909801E+00
+   .342889749204E+00   .333327853985E+00   .321687862470E+00   .307903211902E+00   .291922167703E+00
+   .273709854132E+00   .253250254300E+00   .230548145257E+00   .205630931830E+00   .178550340310E+00
+   .149383930032E+00   .118236377826E+00   .852404879910E-01   .505578792851E-01   .143793010398E-01
+  -.230754669176E-01  -.615581712029E-01  -.100793132790E+00  -.140478811356E+00  -.180289899018E+00
+  -.219879935561E+00  -.258884401856E+00  -.296924198206E+00  -.333609370899E+00  -.368542963349E+00
+  -.401324995874E+00  -.431556818247E+00  -.458846247013E+00  -.482813637617E+00  -.503098383065E+00
+  -.519365046274E+00  -.531308764341E+00  -.538660037333E+00  -.541189077410E+00  -.538709735385E+00
+  -.531082885764E+00  -.518219114600E+00  -.500080599733E+00  -.476682148186E+00  -.448091416541E+00
+  -.414428371996E+00  -.375864060396E+00  -.332618743819E+00  -.284959462048E+00  -.233197063549E+00
+  -.177682744941E+00  -.118804134693E+00  -.569809580714E-01   .733967400358E-02   .736883001825E-01
+   .141578404327E+00   .210511894042E+00   .279984666583E+00   .349492141438E+00   .418534609142E+00
+   .486622228819E+00   .553279539590E+00   .618049463913E+00   .680496954564E+00   .740212566442E+00
+   .796816212038E+00   .849961136235E+00   .899337897832E+00   .944678004565E+00   .985756886178E+00
+   .102239601749E+01   .105446412118E+01   .108187744914E+01   .110459917404E+01   .112263794391E+01
+   .113604567306E+01   .114491466417E+01   .114937417459E+01   .114958654839E+01   .114574304586E+01
+   .113805948749E+01   .112677183648E+01   .111213180947E+01   .109440262458E+01   .107385495727E+01
+   .105076316182E+01   .102540181264E+01   .998042607073E+00   .968951647935E+00   .938387121779E+00
+   .906597374693E+00   .873819377501E+00   .840277563572E+00   .806183014560E+00   .771732962824E+00
+   .737110574317E+00   .702484972318E+00   .668011460814E+00   .633831906337E+00   .600075238444E+00
+   .566858031425E+00
+ pseudo wavefunction
+  -.265011285443E-12  -.291713574280E-12  -.321106360705E-12  -.353460736732E-12  -.389075109348E-12
+  -.428277952748E-12  -.471430837878E-12  -.518931767233E-12  -.571218845663E-12  -.628774321051E-12
+  -.692129032121E-12  -.761867304408E-12  -.838632339536E-12  -.923132147515E-12  -.101614607678E-11
+  -.111853200217E-11  -.123123423719E-11  -.135529224348E-11  -.149185021784E-11  -.164216764526E-11
+  -.180763091526E-11  -.198976610862E-11  -.219025307259E-11  -.241094091423E-11  -.265386505487E-11
+  -.292126600294E-11  -.321561001837E-11  -.353961185908E-11  -.389625981941E-11  -.428884329137E-11
+  -.472098310293E-11  -.519666491324E-11  -.572027597261E-11  -.629664558646E-11  -.693108965637E-11
+  -.762945970898E-11  -.839819686512E-11  -.924439124665E-11  -.101758473692E-10  -.112011561238E-10
+  -.123297740111E-10  -.135721103597E-10  -.149396233317E-10  -.164449256022E-10  -.181019006870E-10
+  -.199258309911E-10  -.219335387595E-10  -.241435412292E-10  -.265762214158E-10  -.292540161065E-10
+  -.322016227965E-10  -.354462274749E-10  -.390177553635E-10  -.429491469179E-10  -.472766616398E-10
+  -.520402125001E-10  -.572837340580E-10  -.630555876724E-10  -.694090075401E-10  -.764025916780E-10
+  -.841008423748E-10  -.925747610983E-10  -.101902503345E-09  -.112170099469E-09  -.123472248148E-09
+  -.135913189786E-09  -.149607667928E-09  -.164681987542E-09  -.181275179935E-09  -.199540285035E-09
+  -.219645762885E-09  -.241777047348E-09  -.266138256366E-09  -.292954074539E-09  -.322471825384E-09
+  -.354963752405E-09  -.390729529981E-09  -.430099027258E-09  -.473435350520E-09  -.521138192103E-09
+  -.573647516734E-09  -.631447619306E-09  -.695071591488E-09  -.765106238395E-09  -.842197490633E-09
+  -.927056361657E-09  -.102046550537E-08  -.112328643442E-08  -.123646746585E-08  -.136105246725E-08
+  -.149819048419E-08  -.164914633764E-08  -.181531228915E-08  -.199822088141E-08  -.219955907249E-08
+  -.242118379419E-08  -.266513907805E-08  -.293367490677E-08  -.322926796509E-08  -.355464448131E-08
+  -.391280537025E-08  -.430705390942E-08  -.474102620364E-08  -.521872471905E-08  -.574455519572E-08
+  -.632336727929E-08  -.696049924629E-08  -.766182723554E-08  -.843381943964E-08  -.928359575616E-08
+  -.102189934487E-07  -.112486394231E-07  -.123820297853E-07  -.136296174144E-07  -.150029083584E-07
+  -.165145679410E-07  -.181785375585E-07  -.200101632428E-07  -.220263371762E-07  -.242456534623E-07
+  -.266885795896E-07  -.293776451675E-07  -.323376496756E-07  -.355958911398E-07  -.391824178448E-07
+  -.431303054013E-07  -.474759617229E-07  -.522594627222E-07  -.575249218208E-07  -.633208966777E-07
+  -.697008368844E-07  -.767235767512E-07  -.844538777255E-07  -.929630254393E-07  -.102329486886E-06
+  -.112639633780E-06  -.123988538763E-06  -.136480851783E-06  -.150231764735E-06  -.165368073217E-06
+  -.182029345210E-06  -.200369207409E-06  -.220556761074E-06  -.242778140413E-06  -.267238227841E-06
+  -.294162541908E-06  -.323799315256E-06  -.356421781710E-06  -.392330693557E-06  -.431857092143E-06
+  -.475365357257E-06  -.523256563342E-06  -.575972173356E-06  -.633998104226E-06  -.697869201235E-06
+  -.768174162411E-06  -.845560958129E-06  -.930742795651E-06  -.102450468331E-05  -.112771065453E-05
+  -.124131171792E-05  -.136635460620E-05  -.150399140420E-05  -.165549014395E-05  -.182224646387E-05
+  -.200579643862E-05  -.220783069694E-05  -.243020995624E-05  -.267498211602E-05  -.294440106568E-05
+  -.324094737847E-05  -.356735107974E-05  -.392661669689E-05  -.432205081863E-05  -.475729241383E-05
+  -.523634618511E-05  -.576361925938E-05  -.634396154750E-05  -.698271013790E-05  -.768573812496E-05
+  -.845950831245E-05  -.931113227531E-05  -.102484353107E-04  -.112800278608E-04  -.124153840474E-04
+  -.136649280193E-04  -.150401288834E-04  -.165536050629E-04  -.182192390109E-04  -.200523032914E-04
+  -.220695991449E-04  -.242896087537E-04  -.267326625458E-04  -.294211229982E-04  -.323795865405E-04
+  -.356351053115E-04  -.392174306812E-04  -.431592806362E-04  -.474966333113E-04  -.522690491696E-04
+  -.575200245539E-04  -.632973795850E-04  -.696536836456E-04  -.766467219807E-04  -.843400072541E-04
+  -.928033402373E-04  -.102113424166E-03  -.112354537690E-03  -.123619271741E-03  -.136009336110E-03
+  -.149636441963E-03  -.164623267044E-03  -.181104510821E-03  -.199228047403E-03  -.219156184599E-03
+  -.241067038118E-03  -.265156030518E-03  -.291637525117E-03  -.320746605758E-03  -.352741013922E-03
+  -.387903255317E-03  -.426542888681E-03  -.468999010063E-03  -.515642946370E-03  -.566881172352E-03
+  -.623158465470E-03  -.684961313252E-03  -.752821587608E-03  -.827320500315E-03  -.909092853153E-03
+  -.998831595176E-03  -.109729269806E-02  -.120530035833E-02  -.132375253238E-02  -.145362680671E-02
+  -.159598660076E-02  -.175198769401E-02  -.192288506164E-02  -.211003999373E-02  -.231492746224E-02
+  -.253914368613E-02  -.278441382928E-02  -.305259974632E-02  -.334570766855E-02  -.366589569501E-02
+  -.401548092201E-02  -.439694600679E-02  -.481294491778E-02  -.526630757310E-02  -.576004301115E-02
+  -.629734066987E-02  -.688156927531E-02  -.751627275311E-02  -.820516247897E-02  -.895210507404E-02
+  -.976110482920E-02  -.106362797070E-01  -.115818297222E-01  -.126019963411E-01  -.137010113694E-01
+  -.148830336167E-01  -.161520714382E-01  -.175118890673E-01  -.189658944644E-01  -.205170062373E-01
+  -.221674970366E-01  -.239188107165E-01  -.257713504872E-01  -.277242353028E-01  -.297750218336E-01
+  -.319193896157E-01  -.341507873740E-01  -.364600391186E-01  -.388349094716E-01  -.412596288316E-01
+  -.437143804748E-01  -.461747535844E-01  -.486111685264E-01  -.509882834828E-01  -.532643948421E-01
+  -.553908474888E-01  -.573114752987E-01  -.589620965973E-01  -.602700938825E-01  -.611541114558E-01
+  -.615239083195E-01  -.612804061994E-01  -.603159731098E-01  -.585149805504E-01  -.557546661028E-01
+  -.519063216343E-01  -.468368091653E-01  -.404103804530E-01  -.324907414555E-01  -.229432586463E-01
+  -.116371512291E-01   .155254611864E-02   .167435266648E-01   .340455932139E-01   .535612469749E-01
+   .753878541592E-01   .996217027365E-01   .126364114402E+00   .155729504541E+00   .187854847163E+00
+   .222909365657E+00   .261102407484E+00   .302686368793E+00   .347950252737E+00   .397200307980E+00
+   .450749675616E+00
+ ae wavefunction
+  -.634329222382E-08  -.691007308071E-08  -.752467767356E-08  -.819137262423E-08  -.891478847205E-08
+  -.969995223036E-08  -.105523227604E-07  -.114778292147E-07  -.124829128265E-07  -.135745723455E-07
+  -.147604134486E-07  -.160487024803E-07  -.174484249129E-07  -.189693489485E-07  -.206220947239E-07
+  -.224182096199E-07  -.243702502231E-07  -.264918715353E-07  -.287979240807E-07  -.313045596196E-07
+  -.340293462397E-07  -.369913936665E-07  -.402114897120E-07  -.437122488597E-07  -.475182740789E-07
+  -.516563330556E-07  -.561555501391E-07  -.610476154175E-07  -.663670124646E-07  -.721512664424E-07
+  -.784412143921E-07  -.852812997170E-07  -.927198930401E-07  -.100809641818E-06  -.109607851312E-06
+  -.119176899742E-06  -.129584690732E-06  -.140905146404E-06  -.153218744809E-06  -.166613105711E-06
+  -.181183629105E-06  -.197034191249E-06  -.214277903420E-06  -.233037939098E-06  -.253448435769E-06
+  -.275655478141E-06  -.299818170145E-06  -.326109803796E-06  -.354719133712E-06  -.385851766880E-06
+  -.419731678152E-06  -.456602862877E-06  -.496731139145E-06  -.540406113230E-06  -.587943323045E-06
+  -.639686575792E-06  -.696010497429E-06  -.757323313192E-06  -.824069880123E-06  -.896734994475E-06
+  -.975846998917E-06  -.106198171669E-05  -.115576674231E-05  -.125788612118E-05  -.136908545306E-05
+  -.149017745798E-05  -.162204804605E-05  -.176566293682E-05  -.192207487757E-05  -.209243151439E-05
+  -.227798397484E-05  -.248009622584E-05  -.270025527635E-05  -.294008230038E-05  -.320134476250E-05
+  -.348596963509E-05  -.379605780463E-05  -.413389977234E-05  -.450199276397E-05  -.490305937317E-05
+  -.534006787359E-05  -.581625434644E-05  -.633514678263E-05  -.690059133203E-05  -.751678088712E-05
+  -.818828620343E-05  -.892008977668E-05  -.971762271418E-05  -.105868048576E-04  -.115340884358E-04
+  -.125665055473E-04  -.136917197992E-04  -.149180824511E-04  -.162546934442E-04  -.177114677229E-04
+  -.192992072889E-04  -.210296794619E-04  -.229157018552E-04  -.249712346155E-04  -.272114805150E-04
+  -.296529935259E-04  -.323137965579E-04  -.352135090802E-04  -.383734854072E-04  -.418169644759E-04
+  -.455692320012E-04  -.496577959531E-04  -.541125763614E-04  -.589661105153E-04  -.642537746948E-04
+  -.700140236331E-04  -.762886489837E-04  -.831230581338E-04  -.905665747784E-04  -.986727627418E-04
+  -.107499774604E-03  -.117110726765E-03  -.127574102640E-03  -.138964185762E-03  -.151361524602E-03
+  -.164853431016E-03  -.179534514225E-03  -.195507252330E-03  -.212882603351E-03  -.231780657805E-03
+  -.252331334872E-03  -.274675124113E-03  -.298963874726E-03  -.325361634216E-03  -.354045538276E-03
+  -.385206753521E-03  -.419051474566E-03  -.455801976685E-03  -.495697725036E-03  -.538996541090E-03
+  -.585975826484E-03  -.636933844065E-03  -.692191055293E-03  -.752091512537E-03  -.817004304022E-03
+  -.887325048289E-03  -.963477434050E-03  -.104591480016E-02  -.113512174913E-02  -.123161578610E-02
+  -.133594897373E-02  -.144870959131E-02  -.157052378475E-02  -.170205719163E-02  -.184401652300E-02
+  -.199715108123E-02  -.216225418981E-02  -.234016450840E-02  -.253176720241E-02  -.273799493314E-02
+  -.295982863044E-02  -.319829800522E-02  -.345448175512E-02  -.372950741095E-02  -.402455076639E-02
+  -.434083482738E-02  -.467962821083E-02  -.504224291595E-02  -.543003138416E-02  -.584438275784E-02
+  -.628671824254E-02  -.675848547449E-02  -.726115179320E-02  -.779619631977E-02  -.836510074230E-02
+  -.896933871173E-02  -.961036375180E-02  -.102895955883E-01  -.110084048028E-01  -.117680957185E-01
+  -.125698874283E-01  -.134148928810E-01  -.143040959500E-01  -.152383264219E-01  -.162182328579E-01
+  -.172442533072E-01  -.183165838742E-01  -.194351451798E-01  -.205995467913E-01  -.218090497398E-01
+  -.230625272955E-01  -.243584242237E-01  -.256947148069E-01  -.270688599845E-01  -.284777640350E-01
+  -.299177312998E-01  -.313844235304E-01  -.328728185251E-01  -.343771708044E-01  -.358909751616E-01
+  -.374069340093E-01  -.389169295206E-01  -.404120016387E-01  -.418823330899E-01  -.433172425776E-01
+  -.447051873492E-01  -.460337763055E-01  -.472897947460E-01  -.484592417369E-01  -.495273809637E-01
+  -.504788058814E-01  -.512975200596E-01  -.519670339068E-01  -.524704793819E-01  -.527907447048E-01
+  -.529106312025E-01  -.528130340036E-01  -.524811470922E-01  -.518986914023E-01  -.510501629354E-01
+  -.499210972552E-01  -.484983471774E-01  -.467703710750E-01  -.447275291357E-01  -.423623841869E-01
+  -.396700029067E-01  -.366482526876E-01  -.332980890836E-01  -.296238284582E-01  -.256334000572E-01
+  -.213385712675E-01  -.167551393607E-01  -.119030826639E-01  -.680666391989E-02  -.149447867508E-02
+   .400055809717E-02   .964129325744E-02   .153864898113E-01   .211910581684E-01   .270063664082E-01
+   .327806285361E-01   .384593644960E-01   .439859183787E-01   .493020149608E-01   .543483367884E-01
+   .590651229297E-01   .633928257334E-01   .672728861086E-01   .706486486983E-01   .734663415470E-01
+   .756760038418E-01   .772323091664E-01   .780953011480E-01   .782310671891E-01   .776123524791E-01
+   .762190965883E-01   .740388697383E-01   .710671925903E-01   .673077344109E-01   .627723933164E-01
+   .574812668231E-01   .514625220561E-01   .447521743106E-01   .373937813606E-01   .294380595883E-01
+   .209424270155E-01   .119704778763E-01   .259139362723E-02  -.712070377687E-02  -.170874490148E-01
+  -.272269717542E-01  -.374546648225E-01  -.476839679132E-01  -.578271485941E-01  -.677960579155E-01
+  -.775028356890E-01  -.868605462297E-01  -.957837431656E-01  -.104188988012E+00  -.111995364933E+00
+  -.119125027670E+00  -.125503778222E+00  -.131061638648E+00  -.135733357426E+00  -.139458799136E+00
+  -.142183186524E+00  -.143857181850E+00  -.144436804619E+00  -.143883187627E+00  -.142162176299E+00
+  -.139243779460E+00  -.135101482764E+00  -.129711438420E+00  -.123051545819E+00  -.115100438384E+00
+  -.105836389380E+00  -.952361491595E-01  -.832737211467E-01  -.699190839867E-01  -.551368608705E-01
+  -.388849340538E-01  -.211129979868E-01  -.176104043967E-02   .192422659544E-01   .419812848685E-01
+   .665552806880E-01   .930804651344E-01   .121692274663E+00   .152547938314E+00   .185829408576E+00
+   .221746742756E+00   .260542039905E+00   .302494058971E+00   .347923668529E+00   .397200307980E+00
+   .450749675616E+00
+ pseudo wavefunction
+   .663972351511E-04   .685563075965E-04   .707855876916E-04   .730873584138E-04   .754639769777E-04
+   .779178772481E-04   .804515722335E-04   .830676566589E-04   .857688096233E-04   .885577973434E-04
+   .914374759863E-04   .944107945946E-04   .974807981062E-04   .100650630473E-03   .103923537880E-03
+   .107302872072E-03   .110792093780E-03   .114394776273E-03   .118114609013E-03   .121955401433E-03
+   .125921086841E-03   .130015726445E-03   .134243513513E-03   .138608777669E-03   .143115989324E-03
+   .147769764258E-03   .152574868341E-03   .157536222422E-03   .162658907359E-03   .167948169229E-03
+   .173409424699E-03   .179048266572E-03   .184870469513E-03   .190881995968E-03   .197089002264E-03
+   .203497844918E-03   .210115087146E-03   .216947505579E-03   .224002097213E-03   .231286086565E-03
+   .238806933076E-03   .246572338749E-03   .254590256039E-03   .262868895992E-03   .271416736659E-03
+   .280242531775E-03   .289355319725E-03   .298764432799E-03   .308479506749E-03   .318510490661E-03
+   .328867657137E-03   .339561612819E-03   .350603309251E-03   .362004054094E-03   .373775522705E-03
+   .385929770095E-03   .398479243274E-03   .411436793997E-03   .424815691925E-03   .438629638218E-03
+   .452892779560E-03   .467619722651E-03   .482825549165E-03   .498525831193E-03   .514736647193E-03
+   .531474598451E-03   .548756826088E-03   .566601028610E-03   .585025480034E-03   .604049048601E-03
+   .623691216101E-03   .643972097822E-03   .664912463151E-03   .686533756842E-03   .708858120980E-03
+   .731908417651E-03   .755708252362E-03   .780281998210E-03   .805654820842E-03   .831852704228E-03
+   .858902477274E-03   .886831841288E-03   .915669398359E-03   .945444680641E-03   .976188180596E-03
+   .100793138223E-02   .104070679331E-02   .107454797870E-02   .110948959468E-02   .114556742448E-02
+   .118281841490E-02   .122128071416E-02   .126099371095E-02   .130199807480E-02   .134433579767E-02
+   .138805023702E-02   .143318616017E-02   .147978979016E-02   .152790885307E-02   .157759262691E-02
+   .162889199208E-02   .168185948348E-02   .173654934429E-02   .179301758154E-02   .185132202346E-02
+   .191152237869E-02   .197368029742E-02   .203785943455E-02   .210412551486E-02   .217254640030E-02
+   .224319215952E-02   .231613513957E-02   .239145004004E-02   .246921398954E-02   .254950662467E-02
+   .263241017156E-02   .271800953012E-02   .280639236091E-02   .289764917497E-02   .299187342648E-02
+   .308916160844E-02   .318961335151E-02   .329333152601E-02   .340042234727E-02   .351099548439E-02
+   .362516417253E-02   .374304532888E-02   .386475967237E-02   .399043184727E-02   .412019055082E-02
+   .425416866505E-02   .439250339277E-02   .453533639811E-02   .468281395158E-02   .483508707977E-02
+   .499231172005E-02   .515464888020E-02   .532226480327E-02   .549533113777E-02   .567402511344E-02
+   .585852972266E-02   .604903390782E-02   .624573275476E-02   .644882769247E-02   .665852669932E-02
+   .687504451593E-02   .709860286506E-02   .732943067851E-02   .756776433150E-02   .781384788462E-02
+   .806793333361E-02   .833028086733E-02   .860115913403E-02   .888084551630E-02   .916962641496E-02
+   .946779754213E-02   .977566422386E-02   .100935417125E-01   .104217555095E-01   .107606416979E-01
+   .111105472870E-01   .114718305664E-01   .118448614734E-01   .122300219709E-01   .126277064379E-01
+   .130383220736E-01   .134622893128E-01   .139000422567E-01   .143520291161E-01   .148187126701E-01
+   .153005707386E-01   .157980966711E-01   .163117998507E-01   .168422062147E-01   .173898587916E-01
+   .179553182560E-01   .185391635014E-01   .191419922307E-01   .197644215670E-01   .204070886833E-01
+   .210706514523E-01   .217557891184E-01   .224632029894E-01   .231936171525E-01   .239477792120E-01
+   .247264610512E-01   .255304596185E-01   .263605977393E-01   .272177249535E-01   .281027183795E-01
+   .290164836067E-01   .299599556162E-01   .309340997302E-01   .319399125928E-01   .329784231813E-01
+   .340506938500E-01   .351578214068E-01   .363009382240E-01   .374812133849E-01   .386998538651E-01
+   .399581057530E-01   .412572555066E-01   .425986312511E-01   .439836041165E-01   .454135896170E-01
+   .468900490727E-01   .484144910762E-01   .499884730036E-01   .516136025719E-01   .532915394445E-01
+   .550239968844E-01   .568127434585E-01   .586596047920E-01   .605664653754E-01   .625352704248E-01
+   .645680277971E-01   .666668099598E-01   .688337560186E-01   .710710738010E-01   .733810419996E-01
+   .757660123736E-01   .782284120103E-01   .807707456472E-01   .833955980533E-01   .861056364728E-01
+   .889036131274E-01   .917923677798E-01   .947748303558E-01   .978540236246E-01   .101033065935E+00
+   .104315174005E+00   .107703665766E+00   .111201963250E+00   .114813595520E+00   .118542201644E+00
+   .122391533694E+00   .126365459767E+00   .130467967028E+00   .134703164744E+00   .139075287311E+00
+   .143588697258E+00   .148247888199E+00   .153057487717E+00   .158022260155E+00   .163147109286E+00
+   .168437080816E+00   .173897364694E+00   .179533297167E+00   .185350362536E+00   .191354194542E+00
+   .197550577302E+00   .203945445729E+00   .210544885303E+00   .217355131108E+00   .224382565978E+00
+   .231633717615E+00   .239115254473E+00   .246833980234E+00   .254796826609E+00   .263010844201E+00
+   .271483191116E+00   .280221118948E+00   .289231955732E+00   .298523085373E+00   .308101923018E+00
+   .317975885725E+00   .328152357731E+00   .338638649492E+00   .349441949567E+00   .360569268298E+00
+   .372027372087E+00   .383822706919E+00   .395961309627E+00   .408448705169E+00   .421289788039E+00
+   .434488685651E+00   .448048601378E+00   .461971634606E+00   .476258574976E+00   .490908667691E+00
+   .505919346537E+00   .521285931020E+00   .537001283822E+00   .553055424604E+00   .569435096110E+00
+   .586123278501E+00   .603098647998E+00   .620334976177E+00   .637800466815E+00   .655457027942E+00
+   .673259477906E+00   .691154685819E+00   .709080648820E+00   .726965511287E+00   .744726534506E+00
+   .762269029552E+00   .779485271246E+00   .796253417256E+00   .812436463599E+00   .827881276214E+00
+   .842417747689E+00   .855858138618E+00   .867996674229E+00   .878609478332E+00   .887454937835E+00
+   .894274601109E+00   .898794721238E+00   .900728559178E+00   .899779560163E+00   .895641685835E+00
+   .888099081715E+00
+ ae wavefunction
+  -.624992279524E-02  -.641428796845E-02  -.658288650903E-02  -.675582275626E-02  -.693320332034E-02
+  -.711513711367E-02  -.730173538111E-02  -.749311172932E-02  -.768938215489E-02  -.789066507128E-02
+  -.809708133431E-02  -.830875426607E-02  -.852580967704E-02  -.874837588632E-02  -.897658373963E-02
+  -.921056662500E-02  -.945046048583E-02  -.969640383108E-02  -.994853774244E-02  -.102070058780E-01
+  -.104719544722E-01  -.107435323320E-01  -.110218908288E-01  -.113071838848E-01  -.115995679557E-01
+  -.118992020069E-01  -.122062474842E-01  -.125208682781E-01  -.128432306817E-01  -.131735033407E-01
+  -.135118571964E-01  -.138584654193E-01  -.142135033352E-01  -.145771483405E-01  -.149495798082E-01
+  -.153309789824E-01  -.157215288619E-01  -.161214140711E-01  -.165308207175E-01  -.169499362362E-01
+  -.173789492183E-01  -.178180492246E-01  -.182674265818E-01  -.187272721613E-01  -.191977771391E-01
+  -.196791327352E-01  -.201715299326E-01  -.206751591728E-01  -.211902100283E-01  -.217168708497E-01
+  -.222553283855E-01  -.228057673747E-01  -.233683701091E-01  -.239433159640E-01  -.245307808962E-01
+  -.251309369066E-01  -.257439514665E-01  -.263699869043E-01  -.270091997521E-01  -.276617400490E-01
+  -.283277505995E-01  -.290073661839E-01  -.297007127195E-01  -.304079063698E-01  -.311290525982E-01
+  -.318642451652E-01  -.326135650651E-01  -.333770794010E-01  -.341548401931E-01  -.349468831198E-01
+  -.357532261874E-01  -.365738683255E-01  -.374087879056E-01  -.382579411794E-01  -.391212606344E-01
+  -.399986532632E-01  -.408899987435E-01  -.417951475263E-01  -.427139188289E-01  -.436460985296E-01
+  -.445914369627E-01  -.455496466086E-01  -.465203996789E-01  -.475033255934E-01  -.484980083453E-01
+  -.495039837554E-01  -.505207366118E-01  -.515476976935E-01  -.525842406793E-01  -.536296789390E-01
+  -.546832622086E-01  -.557441731494E-01  -.568115237928E-01  -.578843518729E-01  -.589616170488E-01
+  -.600421970222E-01  -.611248835534E-01  -.622083783826E-01  -.632912890639E-01  -.643721247198E-01
+  -.654492917267E-01  -.665210893442E-01  -.675857052995E-01  -.686412113449E-01  -.696855588050E-01
+  -.707165741328E-01  -.717319544997E-01  -.727292634424E-01  -.737059265956E-01  -.746592275435E-01
+  -.755863038219E-01  -.764841431125E-01  -.773495796697E-01  -.781792910269E-01  -.789697950333E-01
+  -.797174472760E-01  -.804184389491E-01  -.810687952325E-01  -.816643742544E-01  -.822008667110E-01
+  -.826737962271E-01  -.830785205444E-01  -.834102336335E-01  -.836639688272E-01  -.838346030850E-01
+  -.839168624994E-01  -.839053291647E-01  -.837944495347E-01  -.835785443997E-01  -.832518206221E-01
+  -.828083847731E-01  -.822422588205E-01  -.815473980181E-01  -.807177111560E-01  -.797470833298E-01
+  -.786294013906E-01  -.773585822372E-01  -.759286041114E-01  -.743335410533E-01  -.725676006713E-01
+  -.706251653693E-01  -.685008371698E-01  -.661894862541E-01  -.636863033267E-01  -.609868558912E-01
+  -.580871485002E-01  -.549836870149E-01  -.516735468753E-01  -.481544453439E-01  -.444248176429E-01
+  -.404838968502E-01  -.363317973668E-01  -.319696017003E-01  -.273994502372E-01  -.226246335983E-01
+  -.176496870821E-01  -.124804866085E-01  -.712434547298E-02  -.159011111788E-02   .411173897912E-02
+   .996900330816E-02   .159676653375E-01   .220918067568E-01   .283235262955E-01   .346428655910E-01
+   .410277437315E-01   .474539022852E-01   .538948628205E-01   .603218991429E-01   .667040266644E-01
+   .730080114885E-01   .791984019067E-01   .852375850627E-01   .910858715513E-01   .967016106879E-01
+   .102041339105E+00   .107059965226E+00   .111710992006E+00   .115946780153E+00   .119718853791E+00
+   .122978250272E+00   .125675915450E+00   .127763145337E+00   .129192074513E+00   .129916211071E+00
+   .129891017145E+00   .129074533272E+00   .127428043904E+00   .124916780382E+00   .121510656545E+00
+   .117185030934E+00   .111921488267E+00   .105708631455E+00   .985428740581E-01   .904292215879E-01
+   .813820286615E-01   .714257175818E-01   .605954426125E-01   .489376830014E-01   .365107467745E-01
+   .233851665261E-01   .964396795251E-02  -.461720816713E-02  -.192901493329E-01  -.342542977026E-01
+  -.493771755008E-01  -.645150235655E-01  -.795136654273E-01  -.942096081710E-01  -.108431390696E+00
+  -.122001189221E+00  -.134736687676E+00  -.146453215401E+00  -.156966145244E+00  -.166093533394E+00
+  -.173658971796E+00  -.179494617516E+00  -.183444359239E+00  -.185367076119E+00  -.185139937302E+00
+  -.182661683243E+00  -.177855823935E+00  -.170673684860E+00  -.161097228353E+00  -.149141575677E+00
+  -.134857153494E+00  -.118331387870E+00  -.996898700293E-01  -.790969212432E-01  -.567554900384E-01
+  -.329063236460E-01  -.782636737468E-02   .181736397515E-01   .447523873920E-01   .715420279865E-01
+   .981529900186E-01   .124179502642E+00   .149205719346E+00   .172812287217E+00   .194583201826E+00
+   .214112852091E+00   .231013293004E+00   .244921875525E+00   .255509203640E+00   .262487003787E+00
+   .265615331374E+00   .264708795184E+00   .259641761174E+00   .250352543664E+00   .236846517626E+00
+   .219198032812E+00   .197551019697E+00   .172118232248E+00   .143179138775E+00   .111076524364E+00
+   .762119000160E-01   .390398301725E-01   .612989728750E-04  -.401837588008E-01  -.811246309431E-01
+  -.122168567930E+00  -.162709945080E+00  -.202139693118E+00  -.239854834463E+00  -.275267954796E+00
+  -.307816434102E+00  -.336971258315E+00  -.362245231053E+00  -.383200404451E+00  -.399454556066E+00
+  -.410686569014E+00  -.416640644646E+00  -.417129384892E+00  -.412035880312E+00  -.401314952966E+00
+  -.384993605593E+00  -.363170562154E+00  -.336014696144E+00  -.303762176926E+00  -.266712291930E+00
+  -.225222034639E+00  -.179699632666E+00  -.130597228696E+00  -.784029407743E-01  -.236325322673E-01
+   .331790804865E-01   .914862643488E-01   .150740848492E+00   .210399869975E+00   .269932739225E+00
+   .328827709489E+00   .386597568285E+00   .442784494822E+00   .496964063957E+00   .548748397940E+00
+   .597788489366E+00   .643775740123E+00   .686442781409E+00   .725563645399E+00   .760953372499E+00
+   .792467142480E+00   .819999018415E+00   .843480390364E+00   .862878200035E+00   .878193018915E+00
+   .889457041526E+00   .896732043037E+00   .900107337513E+00   .899697760281E+00   .895641685835E+00
+   .888099081715E+00
+ pseudo wavefunction
+   .292991384431E-05   .302518733494E-05   .312355888197E-05   .322512922650E-05   .333000238544E-05
+   .343828575811E-05   .355009023616E-05   .366553031720E-05   .378472422198E-05   .390779401552E-05
+   .403486573208E-05   .416606950426E-05   .430153969623E-05   .444141504136E-05   .458583878430E-05
+   .473495882765E-05   .488892788345E-05   .504790362953E-05   .521204887106E-05   .538153170720E-05
+   .555652570331E-05   .573721006864E-05   .592376983993E-05   .611639607082E-05   .631528602757E-05
+   .652064339107E-05   .673267846540E-05   .695160839322E-05   .717765737816E-05   .741105691439E-05
+   .765204602373E-05   .790087150042E-05   .815778816384E-05   .842305911951E-05   .869695602848E-05
+   .897975938561E-05   .927175880677E-05   .957325332547E-05   .988455169907E-05   .102059727250E-04
+   .105378455673E-04   .108805100935E-04   .112343172230E-04   .115996292863E-04   .119768203960E-04
+   .123662768300E-04   .127683974270E-04   .131835939952E-04   .136122917338E-04   .140549296686E-04
+   .145119611016E-04   .149838540751E-04   .154710918511E-04   .159741734064E-04   .164936139434E-04
+   .170299454179E-04   .175837170837E-04   .181554960554E-04   .187458678890E-04   .193554371815E-04
+   .199848281904E-04   .206346854730E-04   .213056745461E-04   .219984825683E-04   .227138190433E-04
+   .234524165465E-04   .242150314757E-04   .250024448256E-04   .258154629875E-04   .266549185756E-04
+   .275216712794E-04   .284166087445E-04   .293406474818E-04   .302947338059E-04   .312798448048E-04
+   .322969893404E-04   .333472090820E-04   .344315795732E-04   .355512113338E-04   .367072509970E-04
+   .379008824844E-04   .391333282183E-04   .404058503743E-04   .417197521741E-04   .430763792204E-04
+   .444771208760E-04   .459234116863E-04   .474167328497E-04   .489586137349E-04   .505506334476E-04
+   .521944224486E-04   .538916642247E-04   .556440970131E-04   .574535155828E-04   .593217730741E-04
+   .612507828971E-04   .632425206929E-04   .652990263584E-04   .674224061367E-04   .696148347763E-04
+   .718785577602E-04   .742158936075E-04   .766292362506E-04   .791210574892E-04   .816939095248E-04
+   .843504275777E-04   .870933325894E-04   .899254340128E-04   .928496326940E-04   .958689238481E-04
+   .989864001312E-04   .102205254814E-03   .105528785059E-03   .108960395302E-03   .112503600749E-03
+   .116162030984E-03   .119939433695E-03   .123839678522E-03   .127866761031E-03   .132024806823E-03
+   .136318075766E-03   .140750966377E-03   .145328020344E-03   .150053927194E-03   .154933529114E-03
+   .159971825938E-03   .165173980287E-03   .170545322885E-03   .176091358049E-03   .181817769359E-03
+   .187730425513E-03   .193835386379E-03   .200138909244E-03   .206647455273E-03   .213367696175E-03
+   .220306521099E-03   .227471043749E-03   .234868609746E-03   .242506804224E-03   .250393459687E-03
+   .258536664125E-03   .266944769402E-03   .275626399922E-03   .284590461590E-03   .293846151074E-03
+   .303402965370E-03   .313270711705E-03   .323459517763E-03   .333979842258E-03   .344842485878E-03
+   .356058602586E-03   .367639711322E-03   .379597708096E-03   .391944878502E-03   .404693910666E-03
+   .417857908638E-03   .431450406251E-03   .445485381471E-03   .459977271241E-03   .474940986855E-03
+   .490391929875E-03   .506346008614E-03   .522819655211E-03   .539829843321E-03   .557394106443E-03
+   .575530556919E-03   .594257905632E-03   .613595482426E-03   .633563257294E-03   .654181862351E-03
+   .675472614650E-03   .697457539854E-03   .720159396831E-03   .743601703193E-03   .767808761842E-03
+   .792805688563E-03   .818618440718E-03   .845273847101E-03   .872799639009E-03   .901224482596E-03
+   .930578012581E-03   .960890867371E-03   .992194725694E-03   .102452234482E-02   .105790760044E-02
+   .109238552837E-02   .112799236803E-02   .116476560804E-02   .120274403384E-02   .124196777753E-02
+   .128247837020E-02   .132431879665E-02   .136753355288E-02   .141216870642E-02   .145827195971E-02
+   .150589271673E-02   .155508215306E-02   .160589328971E-02   .165838107083E-02   .171260244569E-02
+   .176861645515E-02   .182648432296E-02   .188626955223E-02   .194803802744E-02   .201185812234E-02
+   .207780081420E-02   .214593980490E-02   .221635164918E-02   .228911589080E-02   .236431520691E-02
+   .244203556146E-02   .252236636807E-02   .260540066311E-02   .269123528973E-02   .277997109349E-02
+   .287171313041E-02   .296657088829E-02   .306465852197E-02   .316609510368E-02   .327100488914E-02
+   .337951760032E-02   .349176872599E-02   .360789984065E-02   .372805894296E-02   .385240081435E-02
+   .398108739857E-02   .411428820288E-02   .425218072126E-02   .439495087999E-02   .454279350553E-02
+   .469591281451E-02   .485452292486E-02   .501884838707E-02   .518912473330E-02   .536559904186E-02
+   .554853051306E-02   .573819105160E-02   .593486584886E-02   .613885395701E-02   .635046884433E-02
+   .657003891893E-02   .679790800470E-02   .703443574972E-02   .727999794326E-02   .753498671173E-02
+   .779981055858E-02   .807489420527E-02   .836067818227E-02   .865761810898E-02   .896618358961E-02
+   .928685663846E-02   .962012953179E-02   .996650196489E-02   .103264773709E-01   .107005582329E-01
+   .110892401909E-01   .114930047123E-01   .119123100531E-01   .123475801956E-01   .127991913918E-01
+   .132674558872E-01   .137526023274E-01   .142547522771E-01   .147738921911E-01   .153098400780E-01
+   .158622059901E-01   .164303453449E-01   .170133039485E-01   .176097534396E-01   .182179157040E-01
+   .188354746307E-01   .194594733851E-01   .200861951673E-01   .207110252101E-01   .213282915465E-01
+   .219310818608E-01   .225110335212E-01   .230580937060E-01   .235602463754E-01   .240032027406E-01
+   .243700518597E-01   .246408680714E-01   .247922722155E-01   .247969440092E-01   .246230836317E-01
+   .242338215616E-01   .235865771077E-01   .226323679637E-01   .213150756032E-01   .195706745451E-01
+   .173264375795E-01   .145001341099E-01   .109992449659E-01   .672022453185E-02   .154784993340E-02
+  -.464529257226E-02  -.119991219099E-01  -.206661016641E-01  -.308109144052E-01  -.426096647735E-01
+  -.562484890293E-01  -.719214329968E-01  -.898274461995E-01  -.110166329176E+00  -.133133465664E+00
+  -.158913174340E+00  -.187670529487E+00  -.219541530379E+00  -.254621549820E+00  -.292946549488E+00
+  -.334529061939E+00
+ ae wavefunction
+   .722286842597E-04   .741282296313E-04   .760767020703E-04   .780753076077E-04   .801252785334E-04
+   .822278737576E-04   .843843791624E-04   .865961079412E-04   .888644009251E-04   .911906268954E-04
+   .935761828793E-04   .960224944272E-04   .985310158700E-04   .101103230554E-03   .103740651052E-03
+   .106444819342E-03   .109217306965E-03   .112059715141E-03   .114973674856E-03   .117960846905E-03
+   .121022921893E-03   .124161620196E-03   .127378691864E-03   .130675916476E-03   .134055102931E-03
+   .137518089184E-03   .141066741909E-03   .144702956088E-03   .148428654527E-03   .152245787287E-03
+   .156156331021E-03   .160162288221E-03   .164265686359E-03   .168468576918E-03   .172773034307E-03
+   .177181154656E-03   .181695054463E-03   .186316869117E-03   .191048751258E-03   .195892868981E-03
+   .200851403865E-03   .205926548824E-03   .211120505763E-03   .216435483029E-03   .221873692644E-03
+   .227437347305E-03   .233128657146E-03   .238949826230E-03   .244903048777E-03   .250990505094E-03
+   .257214357199E-03   .263576744126E-03   .270079776877E-03   .276725533020E-03   .283516050901E-03
+   .290453323452E-03   .297539291577E-03   .304775837090E-03   .312164775182E-03   .319707846389E-03
+   .327406708050E-03   .335262925205E-03   .343277960931E-03   .351453166069E-03   .359789768325E-03
+   .368288860712E-03   .376951389296E-03   .385778140224E-03   .394769726001E-03   .403926570976E-03
+   .413248896010E-03   .422736702293E-03   .432389754269E-03   .442207561642E-03   .452189360425E-03
+   .462334092993E-03   .472640387117E-03   .483106533928E-03   .493730464793E-03   .504509727059E-03
+   .515441458638E-03   .526522361399E-03   .537748673344E-03   .549116139531E-03   .560619981726E-03
+   .572254866766E-03   .584014873599E-03   .595893459009E-03   .607883421992E-03   .619976866801E-03
+   .632165164639E-03   .644438914030E-03   .656787899864E-03   .669201051150E-03   .681666397516E-03
+   .694171024481E-03   .706701027575E-03   .719241465369E-03   .731776311486E-03   .744288405714E-03
+   .756759404323E-03   .769169729723E-03   .781498519622E-03   .793723575862E-03   .805821313142E-03
+   .817766707847E-03   .829533247255E-03   .841092879403E-03   .852415963946E-03   .863471224358E-03
+   .874225701889E-03   .884644711705E-03   .894691801709E-03   .904328714558E-03   .913515353482E-03
+   .922209752518E-03   .930368051858E-03   .937944479064E-03   .944891336947E-03   .951158998991E-03
+   .956695913264E-03   .961448615807E-03   .965361754596E-03   .968378125200E-03   .970438719382E-03
+   .971482787908E-03   .971447918940E-03   .970270133445E-03   .967883999127E-03   .964222764436E-03
+   .959218514309E-03   .952802349306E-03   .944904589898E-03   .935455007672E-03   .924383085268E-03
+   .911618306866E-03   .897090481065E-03   .880730097942E-03   .862468722099E-03   .842239423385E-03
+   .819977246950E-03   .795619724133E-03   .769107425557E-03   .740384557618E-03   .709399603304E-03
+   .676106008048E-03   .640462910950E-03   .602435921338E-03   .561997940227E-03   .519130025668E-03
+   .473822300462E-03   .426074900025E-03   .375898957461E-03   .323317622101E-03   .268367106836E-03
+   .211097758605E-03   .151575145345E-03   .898811515478E-04   .261150734478E-04  -.396052963542E-04
+  -.107142606212E-03  -.176338917259E-03  -.247014723494E-03  -.318968035169E-03  -.391973541929E-03
+  -.465781873819E-03  -.540118980300E-03  -.614685649536E-03  -.689157192621E-03  -.763183319503E-03
+  -.836388235146E-03  -.908370985608E-03  -.978706084317E-03  -.104694444878E-02  -.111261467742E-02
+  -.117522469527E-02  -.123426379573E-02  -.128920510394E-02  -.133950848462E-02  -.138462391499E-02
+  -.142399533963E-02  -.145706502029E-02  -.148327838870E-02  -.150208940450E-02  -.151296641380E-02
+  -.151539849561E-02  -.150890227493E-02  -.149302917073E-02  -.146737303660E-02  -.143157813927E-02
+  -.138534740771E-02  -.132845087155E-02  -.126073419354E-02  -.118212718602E-02  -.109265218684E-02
+  -.992432155682E-03  -.881698338308E-03  -.760797333527E-03  -.630197386728E-03  -.490493725091E-03
+  -.342412743501E-03  -.186814847928E-03  -.246957657313E-04   .142813858835E-03   .314450749789E-03
+   .488823309202E-03   .664418070748E-03   .839608393842E-03   .101266547990E-02   .118177178429E-02
+   .134503689010E-02   .150051588957E-02   .164623026656E-02   .178019117806E-02   .190042490827E-02
+   .200500016080E-02   .209205679207E-02   .215983555824E-02   .220670841194E-02   .223120883111E-02
+   .223206160670E-02   .220821147712E-02   .215884998025E-02   .208343989330E-02   .198173664086E-02
+   .185380607075E-02   .170003802795E-02   .152115520338E-02   .131821680015E-02   .109261664915E-02
+   .846075520576E-03   .580627517543E-03   .298600598561E-03   .259145268025E-05  -.304564854690E-03
+  -.619829814491E-03  -.940000019377E-03  -.126174793039E-02  -.158166303056E-02  -.189629138781E-02
+  -.220217227617E-02  -.249587209671E-02  -.277401742246E-02  -.303332810422E-02  -.327064745369E-02
+  -.348296415491E-02  -.366742287758E-02  -.382132395929E-02  -.394211361681E-02  -.402736563823E-02
+  -.407475493082E-02  -.408202329311E-02  -.404693833816E-02  -.396724730553E-02  -.384062823321E-02
+  -.366464146996E-02  -.343668480013E-02  -.315395558531E-02  -.281342334740E-02  -.241181613386E-02
+  -.194562387834E-02  -.141112171505E-02  -.804415952738E-03  -.121515075235E-03   .641572241279E-03
+   .148871051314E-02   .242348108781E-02   .344899528036E-02   .456767651643E-02   .578101107777E-02
+   .708926713049E-02   .849118234302E-02   .998362232301E-02   .115612155336E-01   .132159740165E-01
+   .149369110875E-01   .167096652334E-01   .185161356145E-01   .203341310414E-01   .221370332623E-01
+   .238934761000E-01   .255670429427E-01   .271159854355E-01   .284929659639E-01   .296448261290E-01
+   .305123832025E-01   .310302566061E-01   .311267267546E-01   .307236289689E-01   .297362858793E-01
+   .280734820389E-01   .256374856179E-01   .223241222738E-01   .180229081144E-01   .126172489166E-01
+   .598471442572E-02  -.200260299111E-02  -.114776340912E-01  -.225777717511E-01  -.354441914234E-01
+  -.502210411722E-01  -.670544903457E-01  -.860916273469E-01  -.107479199193E+00  -.131362188635E+00
+  -.157882228456E+00  -.187175857055E+00  -.219372624576E+00  -.254593064275E+00  -.292946549488E+00
+  -.334529061939E+00
+ pseudo wavefunction
+   .227533763851E-08   .242572016231E-08   .258604182800E-08   .275695953736E-08   .293917360834E-08
+   .313343064461E-08   .334052659468E-08   .356131001319E-08   .379668553781E-08   .404761759589E-08
+   .431513435610E-08   .460033194125E-08   .490437891954E-08   .522852109268E-08   .557408660039E-08
+   .594249136235E-08   .633524487978E-08   .675395642049E-08   .720034161266E-08   .767622947448E-08
+   .818356990838E-08   .872444169051E-08   .930106098839E-08   .991579044140E-08   .105711488415E-07
+   .112698214535E-07   .120146710182E-07   .128087494816E-07   .136553105003E-07   .145578227729E-07
+   .155199842528E-07   .165457373000E-07   .176392848347E-07   .188051075583E-07   .200479823127E-07
+   .213730016528E-07   .227855947130E-07   .242915494524E-07   .258970363704E-07   .276086337897E-07
+   .294333548107E-07   .313786760466E-07   .334525682584E-07   .356635290144E-07   .380206175078E-07
+   .405334916765E-07   .432124477753E-07   .460684625639E-07   .491132382836E-07   .523592506054E-07
+   .558197997489E-07   .595090649784E-07   .634421627010E-07   .676352084056E-07   .721053826940E-07
+   .768710016774E-07   .819515920255E-07   .873679709751E-07   .931423316275E-07   .992983338828E-07
+   .105861201385E-06   .112857824874E-06   .120316872369E-06   .128268906633E-06   .136746510401E-06
+   .145784419891E-06   .155419667126E-06   .165691731677E-06   .176642702425E-06   .188317450019E-06
+   .200763810734E-06   .214032782474E-06   .228178733738E-06   .243259626391E-06   .259337253162E-06
+   .276477490839E-06   .294750570195E-06   .314231363764E-06   .334999692625E-06   .357140653472E-06
+   .380744967298E-06   .405909351125E-06   .432736914307E-06   .461337581022E-06   .491828540689E-06
+   .524334728163E-06   .558989335659E-06   .595934358517E-06   .635321177043E-06   .677311176802E-06
+   .722076409912E-06   .769800300053E-06   .820678394067E-06   .874919163243E-06   .932744857564E-06
+   .994392416419E-06   .106011443951E-05   .113018022194E-05   .120487685770E-05   .128451041617E-05
+   .136940719625E-05   .145991506353E-05   .155640487580E-05   .165927200273E-05   .176893794611E-05
+   .188585206714E-05   .201049342787E-05   .214337275445E-05   .228503453010E-05   .243605922646E-05
+   .259706568248E-05   .276871364051E-05   .295170645015E-05   .314679395074E-05   .335477554456E-05
+   .357650347308E-05   .381288630989E-05   .406489268461E-05   .433355525295E-05   .461997492929E-05
+   .492532539922E-05   .525085793034E-05   .559790650127E-05   .596789326984E-05   .636233440288E-05
+   .678284629158E-05   .723115217789E-05   .770908921925E-05   .821861602054E-05   .876182066436E-05
+   .934092927238E-05   .995831513317E-05   .106165084339E-04   .113182066359E-04   .120662855368E-04
+   .128638110646E-04   .137140518523E-04   .146204926450E-04   .155868485937E-04   .166170804966E-04
+   .177154110479E-04   .188863421635E-04   .201346734538E-04   .214655219196E-04   .228843429529E-04
+   .243969527288E-04   .260095520808E-04   .277287519585E-04   .295616005727E-04   .315156123396E-04
+   .335987987440E-04   .358197012500E-04   .381874263940E-04   .407116832063E-04   .434028231160E-04
+   .462718825054E-04   .493306280895E-04   .525916053098E-04   .560681899438E-04   .597746431449E-04
+   .637261701413E-04   .679389828398E-04   .724303665962E-04   .772187514294E-04   .823237879806E-04
+   .877664285330E-04   .935690134342E-04   .997553632840E-04   .106350877277E-03   .113382638111E-03
+   .120879523914E-03   .128872327652E-03   .137393884535E-03   .146479207954E-03   .156165634542E-03
+   .166492978964E-03   .177503699110E-03   .189243072400E-03   .201759383961E-03   .215104127486E-03
+   .229332219652E-03   .244502229038E-03   .260676620527E-03   .277922016287E-03   .296309474458E-03
+   .315914786810E-03   .336818796670E-03   .359107738558E-03   .382873601052E-03   .408214514536E-03
+   .435235165572E-03   .464047239827E-03   .494769895568E-03   .527530269946E-03   .562464020413E-03
+   .599715903856E-03   .639440396161E-03   .681802355211E-03   .726977730497E-03   .775154322810E-03
+   .826532597764E-03   .881326557181E-03   .939764672726E-03   .100209088654E-02   .106856568398E-02
+   .113946724411E-02   .121509267393E-02   .129575933290E-02   .138180625504E-02   .147359567622E-02
+   .157151467522E-02   .167597693773E-02   .178742465342E-02   .190633055703E-02   .203320012545E-02
+   .216857394401E-02   .231303025633E-02   .246718771334E-02   .263170833888E-02   .280730073076E-02
+   .299472351790E-02   .319478909656E-02   .340836767063E-02   .363639162353E-02   .387986025216E-02
+   .413984489628E-02   .441749450020E-02   .471404164734E-02   .503080911265E-02   .536921698208E-02
+   .573079039397E-02   .611716796250E-02   .653011094982E-02   .697151326054E-02   .744341233969E-02
+   .794800106417E-02   .848764072675E-02   .906487522231E-02   .968244655731E-02   .103433118159E-01
+   .110506617306E-01   .118079410187E-01   .126188706653E-01   .134874723475E-01   .144180952188E-01
+   .154154452889E-01   .164846176609E-01   .176311319101E-01   .188609709161E-01   .201806234864E-01
+   .215971311394E-01   .231181394461E-01   .247519543597E-01   .265076039945E-01   .283949063484E-01
+   .304245434924E-01   .326081427809E-01   .349583656614E-01   .374890046830E-01   .402150893179E-01
+   .431530012117E-01   .463205994733E-01   .497373565848E-01   .534245054709E-01   .574051981872E-01
+   .617046765834E-01   .663504551453E-01   .713725160190E-01   .768035159572E-01   .826790045885E-01
+   .890376529834E-01   .959214909553E-01   .103376150877E+00   .111451114987E+00   .120199962194E+00
+   .129680609215E+00   .139955539528E+00   .151092011960E+00   .163162238921E+00   .176243522049E+00
+   .190418330651E+00   .205774305520E+00   .222404167669E+00   .240405508212E+00   .259880432091E+00
+   .280935024671E+00   .303678606600E+00   .328222738802E+00   .354679936492E+00   .383162048747E+00
+   .413778259142E+00   .446632663542E+00   .481821384186E+00   .519429185380E+00   .559525566374E+00
+   .602160322402E+00   .647358586454E+00   .695115393374E+00   .745389845285E+00   .798099004150E+00
+   .853111693905E+00   .910242460882E+00   .969246016115E+00   .102981256403E+01   .109156450449E+01
+   .115405507257E+01   .121676954274E+01   .127912965826E+01   .134050193560E+01   .140021041642E+01
+   .145767836256E+01
+ ae wavefunction
+   .465681878388E-04   .491295660944E-04   .518265866133E-04   .546667149933E-04   .576578152313E-04
+   .608081717563E-04   .641265126545E-04   .676220341508E-04   .713044264143E-04   .751839007648E-04
+   .792712183553E-04   .835777204148E-04   .881153601361E-04   .928967363016E-04   .979351287422E-04
+   .103244535732E-03   .108839713425E-03   .114736217445E-03   .120950446753E-03   .127499689913E-03
+   .134402173886E-03   .141677115497E-03   .149344775722E-03   .157426516942E-03   .165944863334E-03
+   .174923564566E-03   .184387662978E-03   .194363564440E-03   .204879113082E-03   .215963670110E-03
+   .227648196927E-03   .239965342792E-03   .252949537262E-03   .266637087669E-03   .281066281908E-03
+   .296277496811E-03   .312313312417E-03   .329218632433E-03   .347040811226E-03   .365829787690E-03
+   .385638226335E-03   .406521665989E-03   .428538676504E-03   .451751023870E-03   .476223844188E-03
+   .502025826936E-03   .529229408009E-03   .557910973030E-03   .588151071431E-03   .620034641864E-03
+   .653651249474E-03   .689095335639E-03   .726466480757E-03   .765869680733E-03   .807415637789E-03
+   .851221066295E-03   .897409014297E-03   .946109201475E-03   .997458374262E-03   .105160067890E-02
+   .110868805320E-02   .116888063784E-02   .123234720796E-02   .129926562601E-02   .136982331653E-02
+   .144421776396E-02   .152265703410E-02   .160536032034E-02   .169255851537E-02   .178449480936E-02
+   .188142531543E-02   .198361972336E-02   .209136198221E-02   .220495101294E-02   .232470145160E-02
+   .245094442384E-02   .258402835167E-02   .272431979279E-02   .287220431324E-02   .302808739376E-02
+   .319239537026E-02   .336557640856E-02   .354810151354E-02   .374046557258E-02   .394318843310E-02
+   .415681601360E-02   .438192144759E-02   .461910625934E-02   .486900157017E-02   .513226933369E-02
+   .540960359788E-02   .570173179163E-02   .600941603275E-02   .633345445414E-02   .667468254395E-02
+   .703397449518E-02   .741224455932E-02   .781044839798E-02   .822958442547E-02   .867069513453E-02
+   .913486839631E-02   .962323872466E-02   .101369884936E-01   .106773490953E-01   .112456020256E-01
+   .118430798804E-01   .124711672472E-01   .131313014729E-01   .138249732863E-01   .145537272548E-01
+   .153191620488E-01   .161229304874E-01   .169667393372E-01   .178523488305E-01   .187815718700E-01
+   .197562728813E-01   .207783662742E-01   .218498144678E-01   .229726254338E-01   .241488497075E-01
+   .253805768127E-01   .266699310440E-01   .280190665447E-01   .294301616172E-01   .309054121960E-01
+   .324470244132E-01   .340572061797E-01   .357381577036E-01   .374920608632E-01   .393210673496E-01
+   .412272854891E-01   .432127656568E-01   .452794841860E-01   .474293256811E-01   .496640636387E-01
+   .519853392805E-01   .543946385072E-01   .568932668790E-01   .594823225368E-01   .621626669807E-01
+   .649348936289E-01   .677992940919E-01   .707558221023E-01   .738040550608E-01   .769431531682E-01
+   .801718161380E-01   .834882375018E-01   .868900565505E-01   .903743079796E-01   .939373693453E-01
+   .975749064743E-01   .101281817014E+00   .105052172360E+00   .108879158252E+00   .112755014376E+00
+   .116670973398E+00   .120617199881E+00   .124582729649E+00   .128555410191E+00   .132521842794E+00
+   .136467327160E+00   .140375809345E+00   .144229833942E+00   .148010501562E+00   .151697432779E+00
+   .155268739884E+00   .158701007981E+00   .161969287126E+00   .165047097398E+00   .167906448922E+00
+   .170517878943E+00   .172850508103E+00   .174872118038E+00   .176549252419E+00   .177847343481E+00
+   .178730866017E+00   .179163520745E+00   .179108448834E+00   .178528479285E+00   .177386410688E+00
+   .175645328699E+00   .173268960336E+00   .170222065853E+00   .166470868580E+00   .161983522604E+00
+   .156730617624E+00   .150685719652E+00   .143825945458E+00   .136132567850E+00   .127591647906E+00
+   .118194689282E+00   .107939308596E+00   .968299147296E-01   .848783886353E-01   .721047540127E-01
+   .585378278983E-01   .442158389790E-01   .291870002113E-01   .135100211977E-01  -.274545523255E-02
+  -.194985085982E-01  -.366567053813E-01  -.541159896908E-01  -.717607166131E-01  -.894638439967E-01
+  -.107087297181E+00  -.124482520000E+00  -.141491224794E+00  -.157946354484E+00  -.173673270714E+00
+  -.188491182736E+00  -.202214830347E+00  -.214656428911E+00  -.225627874362E+00  -.234943193441E+00
+  -.242421214515E+00  -.247888429642E+00  -.251182016511E+00  -.252152985029E+00  -.250669406546E+00
+  -.246619676159E+00  -.239915752191E+00  -.230496312287E+00  -.218329761674E+00  -.203417025598E+00
+  -.185794054472E+00  -.165533967451E+00  -.142748758423E+00  -.117590488487E+00  -.902518914106E-01
+  -.609663238312E-01  -.300070002108E-01   .231453624548E-02   .356507414718E-01   .696212143521E-01
+   .103816649340E+00   .137803554941E+00   .171129646013E+00   .203329768930E+00   .233932207643E+00
+   .262465294098E+00   .288464416037E+00   .311479650198E+00   .331084079378E+00   .346882371027E+00
+   .358518952496E+00   .365685402111E+00   .368127024844E+00   .365648647704E+00   .358119571496E+00
+   .345477530522E+00   .327731500985E+00   .304963249858E+00   .277327588632E+00   .245051356570E+00
+   .208431194407E+00   .167830187008E+00   .123673460569E+00   .764428230990E-01   .266705393359E-01
+  -.250676646994E-01  -.781602657695E-01  -.131968164740E+00  -.185833341800E+00  -.239087809208E+00
+  -.291062712423E+00  -.341097418087E+00  -.388548413922E+00  -.432797829891E+00  -.473261378886E+00
+  -.509395526555E+00  -.540703764307E+00  -.566741984980E+00  -.587123104449E+00  -.601521133526E+00
+  -.609674811588E+00  -.611390695651E+00  -.606545417805E+00  -.595086793852E+00  -.577033579062E+00
+  -.552473822906E+00  -.521561891560E+00  -.484514290113E+00  -.441604447148E+00  -.393156643507E+00
+  -.339539281751E+00  -.281157701837E+00  -.218446749208E+00  -.151863292329E+00  -.818788719048E-01
+  -.897263925134E-02   .663752810308E-01   .143689898151E+00   .222506850836E+00   .302377239872E+00
+   .382871767677E+00   .463584180186E+00   .544134029344E+00   .624168791576E+00   .703365396380E+00
+   .781431233295E+00   .858104716523E+00   .933155494635E+00   .100638439729E+01   .107762321171E+01
+   .114673437936E+01   .121361069741E+01   .127817510230E+01   .134038060236E+01   .140021041642E+01
+   .145767836256E+01
+ pseudo wavefunction
+   .331147670034E-08   .353034013832E-08   .376366878585E-08   .401241868329E-08   .427760905805E-08
+   .456032650069E-08   .486172941715E-08   .518305277520E-08   .552561316459E-08   .589081419164E-08
+   .628015223038E-08   .669522255377E-08   .713772587021E-08   .760947529197E-08   .811240376425E-08
+   .864857198525E-08   .922017684964E-08   .982956045011E-08   .104792196739E-07   .111718164334E-07
+   .119101885734E-07   .126973614984E-07   .135365605692E-07   .144312243184E-07   .153850185396E-07
+   .164018513073E-07   .174858889900E-07   .186415733216E-07   .198736396006E-07   .211871360929E-07
+   .225874447163E-07   .240803030924E-07   .256718280558E-07   .273685407175E-07   .291773931843E-07
+   .311057970442E-07   .331616537348E-07   .353533869185E-07   .376899769978E-07   .401809979113E-07
+   .428366563620E-07   .456678336382E-07   .486861301987E-07   .519039132038E-07   .553343671893E-07
+   .589915480879E-07   .628904408225E-07   .670470207053E-07   .714783188944E-07   .762024921777E-07
+   .812388973685E-07   .866081706172E-07   .923323119666E-07   .984347754942E-07   .104940565413E-06
+   .111876338522E-06   .119270513434E-06   .127153387012E-06   .135557258510E-06   .144516561917E-06
+   .154068007044E-06   .164250729939E-06   .175106453244E-06   .186679657146E-06   .199017761633E-06
+   .212171320788E-06   .226194229933E-06   .241143946454E-06   .257081725228E-06   .274072869610E-06
+   .292186999002E-06   .311498334112E-06   .332086001062E-06   .354034355600E-06   .377433328738E-06
+   .402378795229E-06   .428972966404E-06   .457324808968E-06   .487550491480E-06   .519773860334E-06
+   .554126947205E-06   .590750510030E-06   .629794609742E-06   .671419225127E-06   .715794908309E-06
+   .763103483564E-06   .813538792318E-06   .867307487380E-06   .924629879669E-06   .985740840902E-06
+   .105089076594E-05   .112034659875E-05   .119439292614E-05   .127333314380E-05   .135749069944E-05
+   .144721041803E-05   .154285991466E-05   .164483110074E-05   .175354178982E-05   .186943740946E-05
+   .199299282627E-05   .212471429157E-05   .226514151563E-05   .241484987898E-05   .257445278991E-05
+   .274460419771E-05   .292600127206E-05   .311938725945E-05   .332555452845E-05   .354534781611E-05
+   .377966768904E-05   .402947423315E-05   .429579098720E-05   .457970913640E-05   .488239198308E-05
+   .520507971280E-05   .554909447545E-05   .591584580215E-05   .630683638009E-05   .672366820897E-05
+   .716804916434E-05   .764179999459E-05   .814686178035E-05   .868530388681E-05   .925933244149E-05
+   .987129937228E-05   .105237120426E-04   .112192435234E-04   .119607435436E-04   .127512501643E-04
+   .135940022244E-04   .144924526084E-04   .154502823909E-04   .164714159153E-04   .175600368694E-04
+   .187206054224E-04   .199578764946E-04   .212769192335E-04   .226831377769E-04   .241822933875E-04
+   .257805280499E-04   .274843896257E-04   .293008586705E-04   .312373770225E-04   .333018782788E-04
+   .355028202843E-04   .378492197669E-04   .403506892595E-04   .430174764599E-04   .458605061898E-04
+   .488914251245E-04   .521226494752E-04   .555674158191E-04   .592398352856E-04   .631549513179E-04
+   .673288012483E-04   .717784819356E-04   .765222197350E-04   .815794450839E-04   .869708720089E-04
+   .927185828767E-04   .988461187359E-04   .105378575616E-03   .112342707175E-03   .119767034119E-03
+   .127681960827E-03   .136119899668E-03   .145115403507E-03   .154705306941E-03   .164928876838E-03
+   .175827972789E-03   .187447218118E-03   .199834182158E-03   .213039574510E-03   .227117452086E-03
+   .242125439764E-03   .258124965546E-03   .275181511176E-03   .293364879209E-03   .312749477619E-03
+   .333414623095E-03   .355444864213E-03   .378930325811E-03   .403967075929E-03   .430657516767E-03
+   .459110801245E-03   .489443276800E-03   .521778958186E-03   .556250031154E-03   .592997389003E-03
+   .632171204097E-03   .673931536619E-03   .718448982930E-03   .765905366066E-03   .816494471062E-03
+   .870422827955E-03   .927910545478E-03   .989192198663E-03   .105451777374E-02   .112415367392E-02
+   .119838378989E-02   .127751063904E-02   .136185657763E-02   .145176509050E-02   .154760216297E-02
+   .164975773999E-02   .175864727782E-02   .187471339379E-02   .199842761993E-02   .213029226677E-02
+   .227084240357E-02   .242064796179E-02   .258031596889E-02   .275049291978E-02   .293186729356E-02
+   .312517222349E-02   .333118832846E-02   .355074671441E-02   .378473215441E-02   .403408645633E-02
+   .429981202712E-02   .458297564294E-02   .488471243421E-02   .520623009471E-02   .554881332368E-02
+   .591382850940E-02   .630272866248E-02   .671705860601E-02   .715846042928E-02   .762867920997E-02
+   .812956900857E-02   .866309913644E-02   .923136069661E-02   .983657339296E-02   .104810925999E-01
+   .111674166795E-01   .118981945277E-01   .126762333235E-01   .135045064478E-01   .143861615263E-01
+   .153245285419E-01   .163231279426E-01   .173856786593E-01   .185161059218E-01   .197185487394E-01
+   .209973668817E-01   .223571471619E-01   .238027087797E-01   .253391074365E-01   .269716378719E-01
+   .287058344069E-01   .305474689928E-01   .325025461724E-01   .345772942455E-01   .367781517967E-01
+   .391117485888E-01   .415848796395E-01   .442044710855E-01   .469775361839E-01   .499111195095E-01
+   .530122270593E-01   .562877395806E-01   .597443059716E-01   .633882130701E-01   .672252275238E-01
+   .712604047267E-01   .754978589851E-01   .799404881518E-01   .845896449027E-01   .894447456417E-01
+   .945028066786E-01   .997578958365E-01   .105200486002E+00   .110816695343E+00   .116587396995E+00
+   .122487178978E+00   .128483133024E+00   .134533448854E+00   .140585788480E+00   .146575413263E+00
+   .152423035061E+00   .158032362024E+00   .163287309685E+00   .168048849420E+00   .172151469537E+00
+   .175399229791E+00   .177561398725E+00   .178367675800E+00   .177503017760E+00   .174602112202E+00
+   .169243572283E+00   .160943966100E+00   .149151844077E+00   .133241988958E+00   .112510186821E+00
+   .861689047238E-01   .533443609875E-01   .130755866890E-01  -.356838010120E-01  -.940602664982E-01
+  -.163250493546E+00  -.244505913599E+00  -.339110465606E+00  -.448350400173E+00  -.573474989044E+00
+  -.715647157054E+00  -.875883353486E+00  -.105498246092E+01  -.125344423883E+01  -.147137874513E+01
+  -.170855080006E+01
+ ae wavefunction
+  -.167527481276E-04  -.176741929867E-04  -.186444346902E-04  -.196661589572E-04  -.207421948293E-04
+  -.218755225976E-04  -.230692821574E-04  -.243267818155E-04  -.256515075739E-04  -.270471329168E-04
+  -.285175291294E-04  -.300667761775E-04  -.316991741793E-04  -.334192555019E-04  -.352317975180E-04
+  -.371418360579E-04  -.391546795975E-04  -.412759242199E-04  -.435114693968E-04  -.458675346318E-04
+  -.483506770150E-04  -.509678097382E-04  -.537262216237E-04  -.566335977222E-04  -.596980410381E-04
+  -.629280954439E-04  -.663327698488E-04  -.699215636895E-04  -.737044938142E-04  -.776921228376E-04
+  -.818955890432E-04  -.863266379191E-04  -.909976554134E-04  -.959217030029E-04  -.101112554670E-03
+  -.106584735894E-03  -.112353564753E-03  -.118435195270E-03  -.124846663090E-03  -.131605933644E-03
+  -.138731952906E-03  -.146244700889E-03  -.154165248020E-03  -.162515814544E-03  -.171319833109E-03
+  -.180602014697E-03  -.190388418077E-03  -.200706522942E-03  -.211585306931E-03  -.223055326722E-03
+  -.235148803396E-03  -.247899712277E-03  -.261343877486E-03  -.275519071398E-03  -.290465119277E-03
+  -.306224009298E-03  -.322840008223E-03  -.340359782992E-03  -.358832528482E-03  -.378310101725E-03
+  -.398847162851E-03  -.420501323063E-03  -.443333299923E-03  -.467407080266E-03  -.492790091034E-03
+  -.519553378361E-03  -.547771795208E-03  -.577524197875E-03  -.608893651707E-03  -.641967646315E-03
+  -.676838320621E-03  -.713602698051E-03  -.752362932176E-03  -.793226563088E-03  -.836306784818E-03
+  -.881722724040E-03  -.929599730331E-03  -.980069678202E-03  -.103327128110E-02  -.108935041758E-02
+  -.114846046967E-02  -.121076267369E-02  -.127642648337E-02  -.134562994539E-02  -.141856008713E-02
+  -.149541331651E-02  -.157639583372E-02  -.166172405437E-02  -.175162504367E-02  -.184633696103E-02
+  -.194610951434E-02  -.205120442313E-02  -.216189588940E-02  -.227847107509E-02  -.240123058457E-02
+  -.253048895060E-02  -.266657512181E-02  -.280983294943E-02  -.296062167090E-02  -.311931638745E-02
+  -.328630853249E-02  -.346200632722E-02  -.364683521951E-02  -.384123830151E-02  -.404567670112E-02
+  -.426062994174E-02  -.448659626434E-02  -.472409290498E-02  -.497365632062E-02  -.523584235494E-02
+  -.551122633554E-02  -.580040309262E-02  -.610398688881E-02  -.642261124865E-02  -.675692867528E-02
+  -.710761024091E-02  -.747534503672E-02  -.786083946630E-02  -.826481636614E-02  -.868801393501E-02
+  -.913118445302E-02  -.959509276987E-02  -.100805145405E-01  -.105882341849E-01  -.111190425476E-01
+  -.116737342313E-01  -.122531045772E-01  -.128579462637E-01  -.134890454941E-01  -.141471777425E-01
+  -.148331030262E-01  -.155475606715E-01  -.162912635409E-01  -.170648916862E-01  -.178690853947E-01
+  -.187044375937E-01  -.195714855805E-01  -.204707020442E-01  -.214024853485E-01  -.223671490449E-01
+  -.233649105905E-01  -.243958792446E-01  -.254600431251E-01  -.265572554085E-01  -.276872196644E-01
+  -.288494743211E-01  -.300433762678E-01  -.312680836082E-01  -.325225375907E-01  -.338054437514E-01
+  -.351152523245E-01  -.364501379836E-01  -.378079790018E-01  -.391863359305E-01  -.405824299254E-01
+  -.419931208617E-01  -.434148854114E-01  -.448437952745E-01  -.462754957829E-01  -.477051851218E-01
+  -.491275944367E-01  -.505369691272E-01  -.519270516581E-01  -.532910662611E-01  -.546217059476E-01
+  -.559111223112E-01  -.571509186666E-01  -.583321471344E-01  -.594453103477E-01  -.604803684984E-01
+  -.614267524786E-01  -.622733838771E-01  -.630087025965E-01  -.636207028389E-01  -.640969781924E-01
+  -.644247765212E-01  -.645910653366E-01  -.645826082845E-01  -.643860533464E-01  -.639880332961E-01
+  -.633752788855E-01  -.625347451443E-01  -.614537510617E-01  -.601201327776E-01  -.585224102385E-01
+  -.566499670703E-01  -.544932431868E-01  -.520439393837E-01  -.492952328706E-01  -.462420023571E-01
+  -.428810609496E-01  -.392113947228E-01  -.352344044126E-01  -.309541472465E-01  -.263775754793E-01
+  -.215147677520E-01  -.163791489513E-01  -.109876938195E-01  -.536110916813E-02   .476010793613E-03
+   .649506178713E-02   .126633453903E-01   .189440295351E-01   .252961594022E-01   .316747242028E-01
+   .380307848802E-01   .443116673177E-01   .504612254169E-01   .564201785009E-01   .621265278450E-01
+   .675160573710E-01   .725229230819E-01   .770803339480E-01   .811213233527E-01   .845796057180E-01
+   .873905093884E-01   .894919752229E-01   .908256096823E-01   .913377798931E-01   .909807358494E-01
+   .897137423056E-01   .875042007795E-01   .843287405358E-01   .801742562137E-01   .750388686444E-01
+   .689327843694E-01   .618790285272E-01   .539140253550E-01   .450880007448E-01   .354651823200E-01
+   .251237745054E-01   .141556891224E-01   .266601610547E-02  -.922777604342E-02  -.213969142167E-01
+  -.337026647727E-01  -.459979309024E-01  -.581290691766E-01  -.699378735493E-01  -.812636703993E-01
+  -.919454940877E-01  -.101824372991E+00  -.110745806961E+00  -.118562461933E+00  -.125136938595E+00
+  -.130344382034E+00  -.134074796703E+00  -.136235056520E+00  -.136750626880E+00  -.135566982298E+00
+  -.132650673434E+00  -.127989992816E+00  -.121595206669E+00  -.113498346667E+00  -.103752578134E+00
+  -.924311755562E-01  -.796261437840E-01  -.654465269117E-01  -.500164486322E-01  -.334729291566E-01
+  -.159635251955E-01   .235615854965E-02   .213250352811E-01   .407791250541E-01   .605541090473E-01
+   .804877882470E-01   .100422382695E+00   .120206604076E+00   .139697429774E+00   .158761502083E+00
+   .177276077777E+00   .195129472466E+00   .212220987960E+00   .228460369576E+00   .243766882496E+00
+   .258068077230E+00   .271298258717E+00   .283396592031E+00   .294304755923E+00   .303964080397E+00
+   .312312153674E+00   .319278925507E+00   .324782357416E+00   .328723681679E+00   .330982338203E+00
+   .331410665916E+00   .329828433504E+00   .326017302643E+00   .319715324070E+00   .310611576627E+00
+   .298341064767E+00   .282480004970E+00   .262541638431E+00   .237972733121E+00   .208150951582E+00
+   .172383287954E+00   .129905805594E+00   .798849419058E-01   .214206759132E-01  -.464481092030E-01
+  -.124735703553E+00  -.214498695448E+00  -.316821730393E+00  -.432799481798E+00  -.563514418396E+00
+  -.710009982166E+00  -.873258846739E+00  -.105412601665E+01  -.125332665962E+01  -.147137874513E+01
+  -.170855080006E+01
+ End of Dataset
+ PAW_PBE C 08Apr2002
+ 4.00000000000000000
+ parameters from PSCTR are:
+   VRHFIN =C: s2p2
+   LEXCH  = PE
+   EATOM  =   147.1560 eV,   10.8157 Ry
+
+   TITEL  = PAW_PBE C 08Apr2002
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        0    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =     .000    partial core radius
+   POMASS =   12.011; ZVAL   =    4.000    mass and valenz
+   RCORE  =    1.500    outmost cutoff radius
+   RWIGS  =    1.630; RWIGS  =     .863    wigner-seitz radius (au A)
+   ENMAX  =  400.000; ENMIN  =  300.000 eV
+   ICORE  =        2    local potential
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  644.873
+   DEXC   =     .000
+   RMAX   =    2.266    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    1.501    radius for radial grids
+   RDEPT  =    1.300    core radius for aug-charge
+   QCUT   =   -5.516; QGAM   =   11.032    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     0   .000     23  1.200
+     0   .000     23  1.200
+     1   .000     23  1.500
+     1  2.500     23  1.500
+     2   .000      7  1.500
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  51.3      49.5      48.6      46.8      45.9      44.1      42.4      41.6
+  39.9      38.2      37.4      35.8      34.3      32.8      31.4      30.0
+  28.6      27.3      26.1      24.3      23.2      22.1      20.5      19.6
+  18.6      17.3      16.0      15.2      14.1      13.1      12.1      11.1
+  10.3      9.47      8.72      8.02      7.15      6.55      5.82      5.31
+  4.69      4.13      3.63      3.17      2.76      2.40      2.07      1.72
+  1.47      1.20      .971      .815      .650      .512      .380      .292
+  .222      .158      .110      .748E-01  .504E-01  .337E-01  .227E-01  .149E-01
+  .111E-01  .869E-02  .756E-02  .700E-02  .657E-02  .614E-02  .551E-02  .474E-02
+  .392E-02  .314E-02  .237E-02  .184E-02  .143E-02  .118E-02  .104E-02  .993E-03
+  .959E-03  .910E-03  .829E-03  .707E-03  .570E-03  .442E-03  .343E-03  .275E-03
+  .245E-03  .238E-03  .236E-03  .227E-03  .202E-03  .169E-03  .131E-03  .102E-03
+  .851E-04  .796E-04  .787E-04  .761E-04
+END of PSCTR-controll parameters
+ local part
+ 124.721915246208937
+   .20370041E+02   .20367047E+02   .20363065E+02   .20356432E+02   .20347149E+02
+   .20335222E+02   .20320655E+02   .20303451E+02   .20283615E+02   .20261149E+02
+   .20236054E+02   .20208330E+02   .20177973E+02   .20144979E+02   .20109342E+02
+   .20071052E+02   .20030100E+02   .19986473E+02   .19940156E+02   .19891131E+02
+   .19839380E+02   .19784881E+02   .19727608E+02   .19667533E+02   .19604624E+02
+   .19538848E+02   .19470165E+02   .19398533E+02   .19323907E+02   .19246238E+02
+   .19165474E+02   .19081559E+02   .18994436E+02   .18904042E+02   .18810316E+02
+   .18713191E+02   .18612600E+02   .18508475E+02   .18400746E+02   .18289342E+02
+   .18174194E+02   .18055230E+02   .17932383E+02   .17805584E+02   .17674770E+02
+   .17539878E+02   .17400851E+02   .17257634E+02   .17110178E+02   .16958440E+02
+   .16802384E+02   .16641980E+02   .16477205E+02   .16308046E+02   .16134498E+02
+   .15956565E+02   .15774263E+02   .15587618E+02   .15396667E+02   .15201458E+02
+   .15002052E+02   .14798523E+02   .14590957E+02   .14379453E+02   .14164124E+02
+   .13945096E+02   .13722507E+02   .13496509E+02   .13267269E+02   .13034964E+02
+   .12799787E+02   .12561941E+02   .12321643E+02   .12079119E+02   .11834608E+02
+   .11588360E+02   .11340633E+02   .11091695E+02   .10841823E+02   .10591299E+02
+   .10340414E+02   .10089462E+02   .98387442E+01   .95885628E+01   .93392235E+01
+   .90910332E+01   .88442985E+01   .85993254E+01   .83564171E+01   .81158740E+01
+   .78779914E+01   .76430593E+01   .74113606E+01   .71831703E+01   .69587545E+01
+   .67383690E+01   .65222587E+01   .63106564E+01   .61037820E+01   .59018416E+01
+   .57050266E+01   .55135133E+01   .53274620E+01   .51470163E+01   .49723031E+01
+   .48034315E+01   .46404931E+01   .44835614E+01   .43326919E+01   .41879218E+01
+   .40492700E+01   .39167374E+01   .37903070E+01   .36699442E+01   .35555971E+01
+   .34471969E+01   .33446585E+01   .32478812E+01   .31567490E+01   .30711318E+01
+   .29908859E+01   .29158549E+01   .28458705E+01   .27807538E+01   .27203159E+01
+   .26643592E+01   .26126782E+01   .25650608E+01   .25212894E+01   .24811415E+01
+   .24443918E+01   .24108123E+01   .23801739E+01   .23522476E+01   .23268052E+01
+   .23036204E+01   .22824701E+01   .22631352E+01   .22454013E+01   .22290599E+01
+   .22139090E+01   .21997540E+01   .21864085E+01   .21736945E+01   .21614436E+01
+   .21494971E+01   .21377065E+01   .21259340E+01   .21140529E+01   .21019474E+01
+   .20895134E+01   .20766579E+01   .20632996E+01   .20493686E+01   .20348062E+01
+   .20195649E+01   .20036082E+01   .19869100E+01   .19694548E+01   .19512365E+01
+   .19322589E+01   .19125343E+01   .18920837E+01   .18709357E+01   .18491262E+01
+   .18266977E+01   .18036985E+01   .17801824E+01   .17562075E+01   .17318361E+01
+   .17071335E+01   .16821677E+01   .16570086E+01   .16317270E+01   .16063948E+01
+   .15810833E+01   .15558635E+01   .15308050E+01   .15059756E+01   .14814409E+01
+   .14572636E+01   .14335032E+01   .14102158E+01   .13874532E+01   .13652631E+01
+   .13436886E+01   .13227681E+01   .13025351E+01   .12830178E+01   .12642394E+01
+   .12462178E+01   .12289658E+01   .12124909E+01   .11967956E+01   .11818774E+01
+   .11677289E+01   .11543381E+01   .11416888E+01   .11297604E+01   .11185286E+01
+   .11079653E+01   .10980394E+01   .10887169E+01   .10799609E+01   .10717326E+01
+   .10639913E+01   .10566949E+01   .10498000E+01   .10432627E+01   .10370386E+01
+   .10310836E+01   .10253536E+01   .10198054E+01   .10143970E+01   .10090873E+01
+   .10038372E+01   .99860926E+00   .99336835E+00   .98808151E+00   .98271838E+00
+   .97725128E+00   .97165536E+00   .96590871E+00   .95999244E+00   .95389076E+00
+   .94759097E+00   .94108348E+00   .93436178E+00   .92742240E+00   .92026483E+00
+   .91289140E+00   .90530719E+00   .89751990E+00   .88953964E+00   .88137882E+00
+   .87305193E+00   .86457534E+00   .85596709E+00   .84724670E+00   .83843488E+00
+   .82955338E+00   .82062468E+00   .81167180E+00   .80271806E+00   .79378687E+00
+   .78490146E+00   .77608471E+00   .76735895E+00   .75874572E+00   .75026562E+00
+   .74193815E+00   .73378153E+00   .72581255E+00   .71804650E+00   .71049701E+00
+   .70317595E+00   .69609343E+00   .68925768E+00   .68267502E+00   .67634989E+00
+   .67028480E+00   .66448037E+00   .65893536E+00   .65364672E+00   .64860965E+00
+   .64381770E+00   .63926282E+00   .63493551E+00   .63082489E+00   .62691886E+00
+   .62320423E+00   .61966683E+00   .61629170E+00   .61306320E+00   .60996518E+00
+   .60698114E+00   .60409438E+00   .60128812E+00   .59854571E+00   .59585071E+00
+   .59318709E+00   .59053928E+00   .58789240E+00   .58523230E+00   .58254567E+00
+   .57982020E+00   .57704459E+00   .57420869E+00   .57130350E+00   .56832130E+00
+   .56525559E+00   .56210123E+00   .55885435E+00   .55551241E+00   .55207418E+00
+   .54853970E+00   .54491030E+00   .54118846E+00   .53737787E+00   .53348329E+00
+   .52951049E+00   .52546620E+00   .52135799E+00   .51719421E+00   .51298385E+00
+   .50873649E+00   .50446213E+00   .50017117E+00   .49587419E+00   .49158197E+00
+   .48730527E+00   .48305479E+00   .47884106E+00   .47467432E+00   .47056446E+00
+   .46652089E+00   .46255249E+00   .45866752E+00   .45487354E+00   .45117740E+00
+   .44758510E+00   .44410183E+00   .44073191E+00   .43747871E+00   .43434471E+00
+   .43133146E+00   .42843957E+00   .42566872E+00   .42301770E+00   .42048440E+00
+   .41806590E+00   .41575842E+00   .41355747E+00   .41145782E+00   .40945360E+00
+   .40753838E+00   .40570518E+00   .40394661E+00   .40225491E+00   .40062201E+00
+   .39903965E+00   .39749944E+00   .39599292E+00   .39451167E+00   .39304737E+00
+   .39159186E+00   .39013724E+00   .38867593E+00   .38720073E+00   .38570485E+00
+   .38418204E+00   .38262655E+00   .38103324E+00   .37939758E+00   .37771570E+00
+   .37598438E+00   .37420112E+00   .37236410E+00   .37047222E+00   .36852508E+00
+   .36652295E+00   .36446680E+00   .36235825E+00   .36019954E+00   .35799352E+00
+   .35574356E+00   .35345359E+00   .35112797E+00   .34877149E+00   .34638929E+00
+   .34398685E+00   .34156984E+00   .33914418E+00   .33671586E+00   .33429099E+00
+   .33187566E+00   .32947591E+00   .32709768E+00   .32474675E+00   .32242866E+00
+   .32014872E+00   .31791189E+00   .31572278E+00   .31358561E+00   .31150416E+00
+   .30948175E+00   .30752120E+00   .30562483E+00   .30379444E+00   .30203129E+00
+   .30033609E+00   .29870903E+00   .29714975E+00   .29565737E+00   .29423051E+00
+   .29286727E+00   .29156532E+00   .29032187E+00   .28913372E+00   .28799732E+00
+   .28690876E+00   .28586386E+00   .28485818E+00   .28388708E+00   .28294575E+00
+   .28202929E+00   .28113270E+00   .28025099E+00   .27937919E+00   .27851241E+00
+   .27764585E+00   .27677490E+00   .27589514E+00   .27500240E+00   .27409276E+00
+   .27316263E+00   .27220876E+00   .27122823E+00   .27021853E+00   .26917754E+00
+   .26810355E+00   .26699528E+00   .26585187E+00   .26467290E+00   .26345836E+00
+   .26220868E+00   .26092468E+00   .25960760E+00   .25825903E+00   .25688093E+00
+   .25547560E+00   .25404564E+00   .25259392E+00   .25112354E+00   .24963785E+00
+   .24814034E+00   .24663464E+00   .24512451E+00   .24361375E+00   .24210618E+00
+   .24060565E+00   .23911592E+00   .23764068E+00   .23618352E+00   .23474787E+00
+   .23333695E+00   .23195382E+00   .23060127E+00   .22928182E+00   .22799774E+00
+   .22675098E+00   .22554318E+00   .22437564E+00   .22324935E+00   .22216493E+00
+   .22112269E+00   .22012257E+00   .21916418E+00   .21824680E+00   .21736940E+00
+   .21653062E+00   .21572884E+00   .21496215E+00   .21422840E+00   .21352520E+00
+   .21284996E+00   .21219995E+00   .21157224E+00   .21096382E+00   .21037158E+00
+   .20979234E+00   .20922293E+00   .20866013E+00   .20810079E+00   .20754181E+00
+   .20698018E+00   .20641301E+00   .20583754E+00   .20525119E+00   .20465158E+00
+   .20403650E+00   .20340400E+00   .20275237E+00   .20208013E+00   .20138608E+00
+   .20066930E+00   .19992913E+00   .19916520E+00   .19837742E+00   .19756595E+00
+   .19673127E+00   .19587408E+00   .19499535E+00   .19409629E+00   .19317833E+00
+   .19224309E+00   .19129242E+00   .19032831E+00   .18935289E+00   .18836843E+00
+   .18737730E+00   .18638193E+00   .18538484E+00   .18438853E+00   .18339554E+00
+   .18240837E+00   .18142949E+00   .18046127E+00   .17950602E+00   .17856592E+00
+   .17764303E+00   .17673925E+00   .17585631E+00   .17499577E+00   .17415898E+00
+   .17334710E+00   .17256106E+00   .17180158E+00   .17106916E+00   .17036405E+00
+   .16968629E+00   .16903568E+00   .16841183E+00   .16781409E+00   .16724163E+00
+   .16669341E+00   .16616823E+00   .16566469E+00   .16518125E+00   .16471622E+00
+   .16426780E+00   .16383409E+00   .16341308E+00   .16300273E+00   .16260093E+00
+   .16220555E+00   .16181447E+00   .16142557E+00   .16103678E+00   .16064608E+00
+   .16025153E+00   .15985127E+00   .15944356E+00   .15902679E+00   .15859947E+00
+   .15816027E+00   .15770802E+00   .15724172E+00   .15676055E+00   .15626388E+00
+   .15575124E+00   .15522237E+00   .15467721E+00   .15411586E+00   .15353862E+00
+   .15294597E+00   .15233856E+00   .15171720E+00   .15108286E+00   .15043664E+00
+   .14977979E+00   .14911366E+00   .14843970E+00   .14775946E+00   .14707455E+00
+   .14638664E+00   .14569742E+00   .14500863E+00   .14432199E+00   .14363921E+00
+   .14296197E+00   .14229192E+00   .14163061E+00   .14097955E+00   .14034014E+00
+   .13971369E+00   .13910136E+00   .13850424E+00   .13792323E+00   .13735913E+00
+   .13681257E+00   .13628404E+00   .13577385E+00   .13528217E+00   .13480903E+00
+   .13435426E+00   .13391756E+00   .13349850E+00   .13309646E+00   .13271073E+00
+   .13234044E+00   .13198461E+00   .13164217E+00   .13131192E+00   .13099261E+00
+   .13068290E+00   .13038140E+00   .13008665E+00   .12979721E+00   .12951159E+00
+   .12922830E+00   .12894587E+00   .12866286E+00   .12837787E+00   .12808956E+00
+   .12779664E+00   .12749792E+00   .12719228E+00   .12687871E+00   .12655630E+00
+   .12622426E+00   .12588192E+00   .12552874E+00   .12516431E+00   .12478835E+00
+   .12440070E+00   .12400137E+00   .12359046E+00   .12316825E+00   .12273510E+00
+   .12229152E+00   .12183812E+00   .12137563E+00   .12090488E+00   .12042677E+00
+   .11994231E+00   .11945257E+00   .11895866E+00   .11846177E+00   .11796310E+00
+   .11746388E+00   .11696536E+00   .11646879E+00   .11597539E+00   .11548637E+00
+   .11500290E+00   .11452609E+00   .11405702E+00   .11359666E+00   .11314594E+00
+   .11270569E+00   .11227663E+00   .11185942E+00   .11145458E+00   .11106252E+00
+   .11068358E+00   .11031793E+00   .10996566E+00   .10962674E+00   .10930101E+00
+   .10898822E+00   .10868798E+00   .10839983E+00   .10812320E+00   .10785742E+00
+   .10760174E+00   .10735533E+00   .10711730E+00   .10688669E+00   .10666251E+00
+   .10644371E+00   .10622921E+00   .10601792E+00   .10580875E+00   .10560060E+00
+   .10539239E+00   .10518306E+00   .10497157E+00   .10475696E+00   .10453828E+00
+   .10431468E+00   .10408535E+00   .10384957E+00   .10360669E+00   .10335617E+00
+   .10309753E+00   .10283041E+00   .10255454E+00   .10226976E+00   .10197599E+00
+   .10167327E+00   .10136174E+00   .10104161E+00   .10071322E+00   .10037698E+00
+   .10003339E+00   .99683035E-01   .99326560E-01   .98964686E-01   .98598192E-01
+   .98227905E-01   .97854696E-01   .97479469E-01   .97103153E-01   .96726690E-01
+   .96351032E-01   .95977122E-01   .95605896E-01   .95238263E-01   .94875104E-01
+   .94517262E-01   .94165530E-01   .93820648E-01   .93483297E-01   .93154087E-01
+   .92833560E-01   .92522178E-01   .92220322E-01   .91928290E-01   .91646293E-01
+   .91374453E-01   .91112806E-01   .90861296E-01   .90619782E-01   .90388037E-01
+   .90165753E-01   .89952541E-01   .89747938E-01   .89551415E-01   .89362374E-01
+   .89180165E-01   .89004083E-01   .88833381E-01   .88667275E-01   .88504954E-01
+   .88345585E-01   .88188323E-01   .88032318E-01   .87876726E-01   .87720712E-01
+   .87563465E-01   .87404199E-01   .87242164E-01   .87076653E-01   .86907006E-01
+   .86732619E-01   .86552947E-01   .86367508E-01   .86175890E-01   .85977752E-01
+   .85772829E-01   .85560931E-01   .85341946E-01   .85115842E-01   .84882662E-01
+   .84642528E-01   .84395638E-01   .84142261E-01   .83882734E-01   .83617462E-01
+   .83346910E-01   .83071598E-01   .82792096E-01   .82509020E-01   .82223022E-01
+   .81934789E-01   .81645029E-01   .81354469E-01   .81063847E-01   .80773905E-01
+   .80485378E-01   .80198993E-01   .79915456E-01   .79635450E-01   .79359624E-01
+   .79088592E-01   .78822923E-01   .78563138E-01   .78309707E-01   .78063040E-01
+   .77823487E-01   .77591337E-01   .77366809E-01   .77150057E-01   .76941167E-01
+   .76740152E-01   .76546960E-01   .76361469E-01   .76183493E-01   .76012780E-01
+   .75849017E-01   .75691837E-01   .75540816E-01   .75395484E-01   .75255324E-01
+   .75119783E-01   .74988274E-01   .74860182E-01   .74734871E-01   .74611692E-01
+   .74489984E-01   .74369085E-01   .74248340E-01   .74127101E-01   .74004738E-01
+   .73880645E-01   .73754243E-01   .73624987E-01   .73492372E-01   .73355935E-01
+   .73215260E-01   .73069982E-01   .72919790E-01   .72764430E-01   .72603706E-01
+   .72437483E-01   .72265685E-01   .72088299E-01   .71905371E-01   .71717010E-01
+   .71523379E-01   .71324701E-01   .71121250E-01   .70913351E-01   .70701375E-01
+   .70485738E-01   .70266892E-01   .70045324E-01   .69821549E-01   .69596105E-01
+   .69369549E-01   .69142452E-01   .68915389E-01   .68688937E-01   .68463671E-01
+   .68240152E-01   .68018928E-01   .67800526E-01   .67585445E-01   .67374156E-01
+   .67167094E-01   .66964656E-01   .66767195E-01   .66575021E-01   .66388395E-01
+   .66207526E-01   .66032573E-01   .65863641E-01   .65700781E-01   .65543991E-01
+   .65393213E-01   .65248338E-01   .65109204E-01   .64975603E-01   .64847276E-01
+   .64723922E-01   .64605200E-01   .64490731E-01   .64380102E-01   .64272872E-01
+   .64168575E-01   .64066726E-01   .63966823E-01   .63868355E-01   .63770806E-01
+   .63673660E-01   .63576405E-01   .63478540E-01   .63379580E-01   .63279057E-01
+   .63176528E-01   .63071579E-01   .62963827E-01   .62852923E-01   .62738558E-01
+   .62620462E-01   .62498412E-01   .62372226E-01   .62241770E-01   .62106960E-01
+   .61967756E-01   .61824170E-01   .61676259E-01   .61524129E-01   .61367929E-01
+   .61207855E-01   .61044141E-01   .60877060E-01   .60706923E-01   .60534070E-01
+   .60358873E-01   .60181727E-01   .60003048E-01   .59823270E-01   .59642838E-01
+   .59462206E-01   .59281831E-01   .59102169E-01   .58923670E-01   .58746775E-01
+   .58571909E-01   .58399479E-01   .58229870E-01   .58063440E-01   .57900520E-01
+   .57741407E-01   .57586363E-01   .57435612E-01   .57289341E-01   .57147695E-01
+   .57010775E-01   .56878642E-01   .56751311E-01   .56628757E-01   .56510908E-01
+   .56397655E-01   .56288844E-01   .56184286E-01   .56083754E-01   .55986987E-01
+   .55893693E-01   .55803552E-01   .55716218E-01   .55631325E-01   .55548488E-01
+   .55467309E-01   .55387379E-01   .55308284E-01   .55229607E-01   .55150934E-01
+   .55071857E-01   .54991978E-01   .54910915E-01   .54828302E-01   .54743793E-01
+   .54657071E-01   .54567841E-01   .54475842E-01   .54380842E-01   .54282647E-01
+   .54181097E-01   .54076069E-01   .53967480E-01   .53855285E-01   .53739479E-01
+   .53620095E-01   .53497207E-01   .53370924E-01   .53241394E-01   .53108796E-01
+   .52973345E-01   .52835284E-01   .52694885E-01   .52552444E-01   .52408280E-01
+   .52262728E-01   .52116142E-01   .51968885E-01   .51821329E-01   .51673851E-01
+   .51526828E-01   .51380634E-01   .51235637E-01   .51092192E-01   .50950643E-01
+   .50811317E-01   .50674519E-01   .50540531E-01   .50409612E-01   .50281988E-01
+   .50157861E-01   .50037397E-01   .49920729E-01   .49807956E-01   .49699143E-01
+   .49594318E-01   .49493471E-01   .49396560E-01   .49303505E-01   .49214193E-01
+   .49128478E-01   .49046182E-01   .48967100E-01   .48890996E-01   .48817613E-01
+   .48746669E-01   .48677865E-01   .48610885E-01   .48545398E-01   .48481065E-01
+   .48417539E-01   .48354471E-01   .48291511E-01   .48228314E-01   .48164541E-01
+   .48099863E-01   .48033964E-01   .47966547E-01   .47897331E-01   .47826058E-01
+   .47752495E-01   .47676435E-01   .47597697E-01   .47516131E-01   .47431619E-01
+   .47344073E-01   .47253440E-01   .47159697E-01   .47062858E-01   .46962965E-01
+ gradient corrections used for XC
+ 5
+ atomic pseudo charge-density
+   .40000000E+01   .39894900E+01   .39582020E+01   .39068475E+01   .38365676E+01
+   .37488701E+01   .36455522E+01   .35286148E+01   .34001764E+01   .32623924E+01
+   .31173852E+01   .29671861E+01   .28136923E+01   .26586361E+01   .25035670E+01
+   .23498438E+01   .21986345E+01   .20509225E+01   .19075176E+01   .17690689E+01
+   .16360799E+01   .15089238E+01   .13878591E+01   .12730444E+01   .11645520E+01
+   .10623816E+01   .96647127E+00   .87670875E+00   .79294050E+00   .71498025E+00
+   .64261635E+00   .57561818E+00   .51374165E+00   .45673396E+00   .40433763E+00
+   .35629386E+00   .31234537E+00   .27223873E+00   .23572619E+00   .20256723E+00
+   .17252965E+00   .14539051E+00   .12093668E+00   .98965284E-01   .79283926E-01
+   .61710762E-01   .46074455E-01   .32214036E-01   .19978673E-01   .92273858E-02
+  -.17129911E-03  -.83397200E-02  -.15391484E-01  -.21431883E-01  -.26558326E-01
+  -.30860765E-01  -.34422125E-01  -.37318724E-01  -.39620689E-01  -.41392351E-01
+  -.42692632E-01  -.43575414E-01  -.44089892E-01  -.44280909E-01  -.44189275E-01
+  -.43852064E-01  -.43302903E-01  -.42572229E-01  -.41687545E-01  -.40673652E-01
+  -.39552862E-01  -.38345208E-01  -.37068625E-01  -.35739131E-01  -.34370987E-01
+  -.32976850E-01  -.31567908E-01  -.30154015E-01  -.28743807E-01  -.27344813E-01
+  -.25963554E-01  -.24605642E-01  -.23275859E-01  -.21978245E-01  -.20716161E-01
+  -.19492364E-01  -.18309064E-01  -.17167982E-01  -.16070400E-01  -.15017212E-01
+  -.14008960E-01  -.13045883E-01  -.12127944E-01  -.11254869E-01  -.10426176E-01
+  -.96411985E-02  -.88991161E-02  -.81989728E-02  -.75396992E-02  -.69201309E-02
+  -.63390252E-02  -.57950768E-02  -.52869306E-02  -.48131948E-02  -.43724520E-02
+  -.39632685E-02  -.35842039E-02  -.32338185E-02  -.29106807E-02  -.26133730E-02
+  -.23404975E-02  -.20906808E-02  -.18625779E-02  -.16548763E-02  -.14662983E-02
+  -.12956043E-02  -.11415948E-02  -.10031117E-02  -.87904038E-03  -.76831031E-03
+  -.66989594E-03  -.58281725E-03  -.50613997E-03  -.43897557E-03  -.38048116E-03
+  -.32985907E-03  -.28635640E-03  -.24926428E-03  -.21791713E-03  -.19169172E-03
+  -.17000618E-03  -.15231889E-03  -.13812728E-03  -.12696662E-03  -.11840868E-03
+  -.11206038E-03  -.10756243E-03  -.10458788E-03  -.10284067E-03  -.10205420E-03
+  -.10198983E-03  -.10243541E-03  -.10320382E-03  -.10413150E-03  -.10507701E-03
+  -.10591958E-03  -.10655770E-03  -.10690776E-03  -.10690264E-03  -.10649045E-03
+  -.10563321E-03  -.10430558E-03  -.10249368E-03  -.10019394E-03  -.97411903E-04
+  -.94161239E-04  -.90462658E-04  -.86342952E-04  -.81834062E-04  -.76972202E-04
+  -.71797027E-04  -.66350863E-04  -.60677976E-04  -.54823902E-04  -.48834824E-04
+  -.42757002E-04  -.36636248E-04  -.30517455E-04  -.24444170E-04  -.18458220E-04
+  -.12599377E-04  -.69050699E-05  -.14101411E-05   .38533596E-05   .88563384E-05
+   .13572784E-04   .17979862E-04   .22057967E-04   .25790753E-04   .29165127E-04
+   .32171219E-04   .34802321E-04   .37054812E-04   .38928050E-04   .40424254E-04
+   .41548366E-04   .42307895E-04   .42712753E-04   .42775078E-04   .42509044E-04
+   .41930672E-04   .41057628E-04   .39909024E-04   .38505210E-04   .36867574E-04
+   .35018335E-04   .32980347E-04   .30776900E-04   .28431531E-04   .25967839E-04
+   .23409308E-04   .20779141E-04   .18100099E-04   .15394352E-04   .12683343E-04
+   .99876602E-05   .73269199E-05   .47196652E-05   .21832738E-05  -.26612093E-06
+  -.26136966E-05  -.48459962E-05  -.69509705E-05  -.89180082E-05  -.10737955E-04
+  -.12403120E-04  -.13907274E-04  -.15245635E-04  -.16414842E-04  -.17412925E-04
+  -.18239262E-04  -.18894531E-04  -.19380647E-04  -.19700707E-04  -.19858913E-04
+  -.19860497E-04  -.19711649E-04  -.19419423E-04  -.18991661E-04  -.18436897E-04
+  -.17764271E-04  -.16983436E-04  -.16104469E-04  -.15137779E-04  -.14094018E-04
+  -.12983994E-04  -.11818584E-04  -.10608653E-04  -.93649753E-05  -.80981563E-05
+  -.68185635E-05  -.55362587E-05  -.42609358E-05  -.30018642E-05  -.17678364E-05
+  -.56712210E-06   .59257268E-06   .17041408E-05   .27611032E-05   .37576329E-05
+   .46885729E-05   .55494485E-05   .63364747E-05   .70465576E-05   .76772913E-05
+   .82269492E-05   .86944718E-05   .90794484E-05   .93820966E-05   .96032364E-05
+   .97442618E-05   .98071092E-05   .97942222E-05   .97085150E-05   .95533334E-05
+   .93324133E-05   .90498395E-05   .87100017E-05   .83175510E-05   .78773561E-05
+   .73944586E-05   .68740299E-05   .63213278E-05   .57416545E-05   .51403160E-05
+   .45225820E-05   .38936493E-05   .32586050E-05   .26223937E-05   .19897859E-05
+   .13653490E-05   .75342120E-06   .15808773E-06  -.41683995E-06  -.96784232E-06
+  -.14917071E-05  -.19855416E-05  -.24467826E-05  -.28732026E-05  -.32629148E-05
+  -.36143737E-05  -.39263743E-05  -.41980485E-05  -.44288590E-05  -.46185911E-05
+  -.47673421E-05  -.48755097E-05  -.49437772E-05  -.49730984E-05  -.49646802E-05
+  -.49199645E-05  -.48406086E-05  -.47284651E-05  -.45855609E-05  -.44140755E-05
+  -.42163195E-05  -.39947123E-05  -.37517602E-05  -.34900346E-05  -.32121506E-05
+  -.29207457E-05  -.26184596E-05  -.23079144E-05  -.19916960E-05  -.16723361E-05
+  -.13522955E-05  -.10339484E-05  -.71956822E-06  -.41131424E-06  -.11122015E-06
+   .17881646E-06   .45704305E-06   .72185964E-06   .97182491E-06   .12056609E-05
+   .14222565E-05   .16206688E-05   .18001243E-05   .19600182E-05   .20999118E-05
+   .22195301E-05   .23187575E-05   .23976321E-05   .24563400E-05   .24952081E-05
+   .25146961E-05   .25153883E-05   .24979843E-05   .24632891E-05   .24122036E-05
+   .23457138E-05   .22648803E-05   .21708277E-05   .20647336E-05   .19478179E-05
+   .18213320E-05   .16865487E-05   .15447516E-05   .13972253E-05   .12452459E-05
+   .10900719E-05   .93293577E-06   .77503581E-06   .61752862E-06   .46152239E-06
+   .30807066E-06   .15816677E-06   .12739005E-07  -.12735356E-06  -.26132457E-06
+  -.38846317E-06  -.50813609E-06  -.61978918E-06  -.72294809E-06  -.81721854E-06
+  -.90228580E-06  -.97791371E-06  -.10439431E-05  -.11002898E-05  -.11469419E-05
+  -.11839571E-05  -.12114589E-05  -.12296334E-05  -.12387248E-05  -.12390316E-05
+  -.12309018E-05  -.12147281E-05  -.11909435E-05  -.11600163E-05  -.11224449E-05
+  -.10787535E-05  -.10294863E-05  -.97520367E-06  -.91647663E-06  -.85388276E-06
+  -.78800156E-06  -.71941031E-06  -.64868001E-06  -.57637166E-06  -.50303265E-06
+  -.42919358E-06  -.35536526E-06  -.28203600E-06  -.20966924E-06  -.13870146E-06
+  -.69540363E-07  -.25634316E-08   .61883314E-07   .12348619E-06   .18196450E-06
+   .23707084E-06   .28859122E-06   .33634491E-06   .38018401E-06   .41999287E-06
+   .45568726E-06   .48721338E-06   .51454669E-06   .53769062E-06   .55667507E-06
+   .57155493E-06   .58240839E-06   .58933523E-06   .59245505E-06   .59190547E-06
+   .58784023E-06   .58042744E-06   .56984766E-06   .55629214E-06   .53996100E-06
+   .52106152E-06   .49980645E-06   .47641242E-06   .45109836E-06   .42408409E-06
+   .39558893E-06   .36583041E-06   .33502312E-06   .30337757E-06   .27109929E-06
+   .23838785E-06   .20543614E-06   .17242964E-06   .13954584E-06   .10695374E-06
+   .74813405E-07   .43275666E-07   .12481843E-07  -.17436428E-07  -.46357310E-07
+  -.74168811E-07  -.10076878E-06  -.12606483E-06  -.14997427E-06  -.17242391E-06
+  -.19334994E-06  -.21269766E-06  -.23042128E-06  -.24648367E-06  -.26085607E-06
+  -.27351786E-06  -.28445619E-06  -.29366577E-06  -.30114856E-06  -.30691344E-06
+  -.31097596E-06  -.31335807E-06  -.31408779E-06  -.31319900E-06  -.31073113E-06
+  -.30672891E-06  -.30124215E-06  -.29432545E-06  -.28603797E-06  -.27644321E-06
+  -.26560872E-06  -.25360594E-06  -.24050989E-06  -.22639893E-06  -.21135456E-06
+  -.19546112E-06  -.17880555E-06  -.16147710E-06  -.14356706E-06  -.12516847E-06
+  -.10637578E-06  -.87284562E-07  -.67991183E-07  -.48592423E-07  -.29185139E-07
+  -.98658847E-08   .92694738E-08   .28126154E-07   .46610864E-07   .64632213E-07
+   .82101130E-07   .98931289E-07   .11503953E-06   .13034627E-06   .14477595E-06
+   .15825741E-06   .17072429E-06   .18211544E-06   .19237526E-06   .20145407E-06
+   .20930840E-06   .21590130E-06   .22120261E-06   .22518921E-06   .22784515E-06
+   .22916188E-06   .22913831E-06   .22778091E-06   .22510374E-06   .22112841E-06
+   .21588403E-06   .20940707E-06   .20174125E-06   .19293726E-06   .18305256E-06
+   .17215102E-06   .16030261E-06   .14758298E-06   .13407304E-06   .11985844E-06
+   .10502911E-06   .89678674E-07   .73903880E-07   .57803998E-07   .41480189E-07
+   .25034862E-07   .85710175E-08  -.78084252E-08  -.24001293E-07  -.39906833E-07
+  -.55426374E-07  -.70463977E-07  -.84927079E-07  -.98727103E-07  -.11178005E-06
+  -.12400706E-06  -.13533495E-06  -.14569668E-06  -.15503180E-06  -.16328690E-06
+  -.17041589E-06  -.17638034E-06  -.18114974E-06  -.18470165E-06  -.18702187E-06
+  -.18810450E-06  -.18795193E-06  -.18657487E-06  -.18399215E-06  -.18023064E-06
+  -.17532500E-06  -.16931738E-06  -.16225716E-06  -.15420051E-06  -.14520998E-06
+  -.13535407E-06  -.12470665E-06  -.11334649E-06  -.10135660E-06  -.88823690E-07
+  -.75837495E-07  -.62490139E-07  -.48875466E-07  -.35088367E-07  -.21224102E-07
+  -.73776225E-08   .63570979E-08   .19887723E-07   .33124194E-07   .45979356E-07
+   .58369547E-07   .70215167E-07   .81441213E-07   .91977763E-07   .10176044E-06
+   .11073081E-06   .11883676E-06   .12603278E-06   .13228025E-06   .13754765E-06
+   .14181067E-06   .14505237E-06   .14726318E-06   .14844092E-06   .14859068E-06
+   .14772477E-06   .14586250E-06   .14303000E-06   .13925989E-06   .13459104E-06
+   .12906817E-06   .12274144E-06   .11566608E-06   .10790186E-06   .99512635E-07
+   .90565833E-07   .81131898E-07   .71283751E-07   .61096228E-07   .50645504E-07
+   .40008531E-07   .29262457E-07   .18484072E-07   .77492476E-08  -.28675974E-08
+  -.13294019E-07  -.23460046E-07  -.33298652E-07  -.42746200E-07  -.51742853E-07
+  -.60232950E-07  -.68165351E-07  -.75493733E-07  -.82176855E-07  -.88178773E-07
+  -.93469019E-07  -.98022732E-07  -.10182074E-06  -.10484962E-06  -.10710169E-06
+  -.10857493E-06  -.10927298E-06  -.10920494E-06  -.10838523E-06  -.10683340E-06
+  -.10457390E-06  -.10163577E-06  -.98052390E-07  -.93861130E-07  -.89103007E-07
+  -.83822319E-07  -.78066251E-07  -.71884480E-07  -.65328756E-07  -.58452488E-07
+  -.51310317E-07  -.43957688E-07  -.36450431E-07  -.28844344E-07  -.21194780E-07
+  -.13556254E-07  -.59820564E-08   .14761063E-08   .87684629E-08   .15847499E-07
+   .22668258E-07   .29188613E-07   .35369518E-07   .41175223E-07   .46573463E-07
+   .51535618E-07   .56036840E-07   .60056145E-07   .63576484E-07   .66584772E-07
+   .69071889E-07   .71032659E-07   .72465786E-07   .73373776E-07   .73762822E-07
+   .73642668E-07   .73026451E-07   .71930518E-07   .70374224E-07   .68379717E-07
+   .65971700E-07   .63177183E-07   .60025227E-07   .56546677E-07   .52773883E-07
+   .48740429E-07   .44480847E-07   .40030343E-07   .35424518E-07   .30699094E-07
+   .25889652E-07   .21031375E-07   .16158799E-07   .11305583E-07   .65042830E-08
+   .17861505E-08  -.28190595E-08  -.72832606E-08  -.11580190E-07  -.15685545E-07
+  -.19577099E-07  -.23234801E-07  -.26640852E-07  -.29779764E-07  -.32638398E-07
+  -.35205985E-07  -.37474124E-07  -.39436770E-07  -.41090193E-07  -.42432932E-07
+  -.43465724E-07  -.44191427E-07  -.44614921E-07  -.44743004E-07  -.44584271E-07
+  -.44148993E-07  -.43448973E-07  -.42497411E-07  -.41308752E-07  -.39898536E-07
+  -.38283245E-07  -.36480143E-07  -.34507126E-07  -.32382565E-07  -.30125155E-07
+  -.27753768E-07  -.25287308E-07  -.22744577E-07  -.20144140E-07  -.17504207E-07
+  -.14842515E-07  -.12176224E-07  -.95218170E-08  -.68950172E-08  -.43107085E-08
+  -.17828698E-08   .67548171E-09   .30523361E-08   .53367266E-08   .75187554E-08
+   .95896091E-08   .11541566E-07   .13367991E-07   .15063329E-07   .16623082E-07
+   .18043783E-07   .19322963E-07   .20459115E-07   .21451641E-07   .22300813E-07
+   .23007713E-07   .23574175E-07   .24002733E-07   .24296554E-07   .24459380E-07
+   .24495461E-07   .24409502E-07   .24206590E-07   .23892145E-07   .23471858E-07
+   .22951633E-07   .22337542E-07   .21635766E-07   .20852560E-07   .19994202E-07
+   .19066961E-07   .18077060E-07   .17030647E-07   .15933771E-07   .14792357E-07
+   .13612192E-07   .12398908E-07   .11157975E-07   .98946952E-08   .86141953E-08
+   .73214307E-08   .60211860E-08   .47180798E-08   .34165713E-08   .21209687E-08
+   .83543781E-09  -.43598720E-09  -.16893937E-08  -.29209799E-08  -.41270446E-08
+  -.53039777E-08  -.64482516E-08  -.75564137E-08  -.86250803E-08  -.96509327E-08
+  -.10630715E-07  -.11561233E-07  -.12439359E-07  -.13262030E-07  -.14026264E-07
+  -.14729158E-07  -.15367907E-07  -.15939815E-07  -.16442307E-07  -.16872954E-07
+  -.17229484E-07  -.17509805E-07  -.17712031E-07  -.17834498E-07  -.17875790E-07
+  -.17834765E-07  -.17710574E-07  -.17502687E-07  -.17210914E-07  -.16835429E-07
+  -.16376786E-07  -.15835939E-07  -.15214259E-07  -.14513545E-07  -.13736037E-07
+  -.12884424E-07  -.11961847E-07  -.10971900E-07  -.99186285E-08  -.88065248E-08
+  -.76405142E-08  -.64259427E-08  -.51685588E-08  -.38744910E-08  -.25502216E-08
+  -.12025568E-08   .16140726E-09   .15343218E-08   .29086260E-08   .42765908E-08
+   .56303649E-08   .69620244E-08   .82636232E-08   .95272464E-08   .10745064E-07
+   .11909386E-07   .13012718E-07   .14047815E-07   .15007739E-07   .15885909E-07
+   .16676160E-07   .17372786E-07   .17970592E-07   .18464940E-07   .18851790E-07
+   .19127737E-07   .19290048E-07   .19336692E-07   .19266363E-07   .19078501E-07
+   .18773310E-07   .18351763E-07   .17815610E-07   .17167373E-07   .16410342E-07
+   .15548559E-07   .14586799E-07   .13530548E-07   .12385969E-07   .11159868E-07
+   .98596519E-08   .84932852E-08   .70692366E-08   .55964254E-08   .40841624E-08
+   .25420881E-08   .98010759E-09  -.59167741E-09  -.21630380E-08  -.37236897E-08
+  -.52633642E-08  -.67718825E-08  -.82392266E-08  -.96556114E-08  -.11011555E-07
+  -.12297948E-07  -.13506118E-07  -.14627896E-07  -.15655673E-07  -.16582459E-07
+  -.17401931E-07  -.18108486E-07  -.18697277E-07  -.19164252E-07  -.19506188E-07
+  -.19720711E-07  -.19806318E-07  -.19762387E-07  -.19589185E-07  -.19287868E-07
+  -.18860471E-07  -.18309900E-07  -.17639907E-07  -.16855065E-07  -.15960739E-07
+  -.14963046E-07  -.13868811E-07  -.12685520E-07  -.11421268E-07  -.10084700E-07
+  -.86849467E-08  -.72315646E-08  -.57344642E-08  -.42038405E-08  -.26501008E-08
+  -.10837905E-08   .48448204E-09   .20441206E-08   .35846164E-08   .50956218E-08
+   .65670232E-08   .79890116E-08   .93521515E-08   .10647446E-07   .11866399E-07
+   .13001074E-07   .14044148E-07   .14988961E-07   .15829560E-07   .16560736E-07
+   .17178062E-07   .17677917E-07   .18057509E-07   .18314892E-07   .18448971E-07
+   .18459512E-07   .18347132E-07   .18113294E-07   .17760291E-07   .17291226E-07
+   .16709983E-07   .16021195E-07   .15230210E-07   .14343043E-07   .13366334E-07
+   .12307295E-07   .11173655E-07   .99736045E-08   .87157315E-08   .74089595E-08
+   .60624825E-08   .46856976E-08   .32881383E-08   .18794063E-08   .46910370E-09
+  -.93323375E-09  -.23182037E-08  -.36766016E-08  -.49994838E-08  -.62782273E-08
+  -.75045873E-08  -.86707511E-08  -.97693884E-08  -.10793699E-07  -.11737453E-07
+  -.12595033E-07  -.13361463E-07  -.14032440E-07  -.14604354E-07  -.15074308E-07
+  -.15440129E-07  -.15700380E-07  -.15854357E-07  -.15902089E-07  -.15844329E-07
+  -.15682542E-07  -.15418884E-07  -.15056181E-07  -.14597904E-07  -.14048132E-07
+  -.13411522E-07  -.12693269E-07  -.11899062E-07  -.11035039E-07  -.10107739E-07
+  -.91240519E-08  -.80911681E-08  -.70165238E-08  -.59077471E-08  -.47726033E-08
+  -.36189393E-08  -.24546283E-08  -.12875154E-08  -.12536420E-09   .10241948E-08
+   .21537149E-08   .32559810E-08   .43240565E-08   .53513264E-08   .63315385E-08
+   .72588407E-08   .81278148E-08   .89335067E-08   .96714534E-08   .10337705E-07
+   .10928847E-07   .11442010E-07   .11874887E-07   .12225737E-07   .12493388E-07
+   .12677236E-07   .12777240E-07   .12793915E-07   .12728316E-07   .12582026E-07
+   .12357137E-07   .12056223E-07   .11682320E-07   .11238896E-07   .10729818E-07
+   .10159324E-07   .95319832E-08   .88526655E-08   .81265011E-08   .73588426E-08
+   .65552249E-08   .57213260E-08   .48629257E-08   .39858667E-08   .30960146E-08
+ 25.1333556480996805 T
+ Non local Part
+ 0 2 1.19916030564286080
+ 6.64147139257665753 -0.902950942393947048E-01 -0.902950942393947048E-01 -0.494570754788003619E-02
+ Reciprocal Space Part
+   .55817778E+01   .55705292E+01   .55368742E+01   .54810842E+01   .54036090E+01
+   .53050722E+01   .51862655E+01   .50481413E+01   .48918033E+01   .47184965E+01
+   .45295951E+01   .43265891E+01   .41110702E+01   .38847161E+01   .36492746E+01
+   .34065459E+01   .31583653E+01   .29065851E+01   .26530561E+01   .23996093E+01
+   .21480380E+01   .19000796E+01   .16573990E+01   .14215722E+01   .11940710E+01
+   .97624910E+00   .76932962E+00   .57439430E+00   .39237433E+00   .22404317E+00
+   .70011403E-01  -.69276357E-01  -.19354238E+00  -.30267462E+00  -.39672330E+00
+  -.47589550E+00  -.54054769E+00  -.59117641E+00  -.62840720E+00  -.65298201E+00
+  -.66574526E+00  -.66762884E+00  -.65963619E+00  -.64282584E+00  -.61829466E+00
+  -.58716098E+00  -.55054809E+00  -.50956809E+00  -.46530668E+00  -.41880877E+00
+  -.37106549E+00  -.32300249E+00  -.27546984E+00  -.22923368E+00  -.18496959E+00
+  -.14325789E+00  -.10458070E+00  -.69320980E-01  -.37763250E-01  -.10096082E-01
+   .13583844E-01   .33266241E-01   .49020451E-01   .60987606E-01   .69371922E-01
+   .74431341E-01   .76467752E-01   .75816996E-01   .72838896E-01   .67907498E-01
+   .61401725E-01   .53696622E-01   .45155343E-01   .36122003E-01   .26915516E-01
+   .17824469E-01   .91031031E-02   .96841293E-03  -.64016513E-02  -.12868900E-01
+  -.18334607E-01  -.22738262E-01  -.26055498E-01  -.28295268E-01  -.29496423E-01
+  -.29723817E-01  -.29064057E-01  -.27621053E-01  -.25511488E-01  -.22860336E-01
+  -.19796541E-01  -.16448962E-01  -.12942675E-01  -.93957003E-02  -.59162147E-02
+  -.26002886E-02   .46983200E-03   .32268923E-02   .56192551E-02   .76110128E-02
+ Real Space Part
+  -.69534111E+01  -.69008643E+01  -.67439149E+01  -.64846258E+01  -.61264015E+01
+  -.56739369E+01  -.51331487E+01  -.45110871E+01  -.38158316E+01  -.30563714E+01
+  -.22424722E+01  -.13845316E+01  -.49342616E+00   .41964975E+00   .13433478E+01
+   .22663320E+01   .31774436E+01   .40658621E+01   .49212597E+01   .57339466E+01
+   .64950054E+01   .71964102E+01   .78311315E+01   .83932221E+01   .88778851E+01
+   .92815206E+01   .96017523E+01   .98374329E+01   .99886278E+01   .10056579E+02
+   .10043651E+02   .99532522E+01   .97897493E+01   .95583598E+01   .92650354E+01
+   .89163354E+01   .85192934E+01   .80812800E+01   .76098643E+01   .71126773E+01
+   .65972797E+01   .60710370E+01   .55410038E+01   .50138200E+01   .44956195E+01
+   .39919547E+01   .35077354E+01   .30471850E+01   .26138123E+01   .22103999E+01
+   .18390082E+01   .15009937E+01   .11970412E+01   .92720705E+00   .69097321E+00
+   .48730908E+00   .31473956E+00   .17141725E+00   .55196666E-01  -.36291350E-01
+  -.10556696E+00  -.15523202E+00  -.18790557E+00  -.20616537E+00  -.21249645E+00
+  -.20924726E+00  -.19859404E+00  -.18251343E+00  -.16276324E+00  -.14087115E+00
+  -.11813077E+00  -.95604363E-01  -.74131485E-01  -.54342573E-01  -.36676532E-01
+  -.21401321E-01  -.86365671E-02   .16227553E-02   .94824334E-02   .15125707E-01
+   .18791209E-01   .20752711E-01   .21301098E-01   .20728862E-01   .19317303E-01
+   .17326466E-01   .14987782E-01   .12499256E-01   .10022986E-01   .76847243E-02
+   .55751736E-02   .37526593E-02   .22468383E-02   .10630977E-02   .18732362E-03
+  -.40924829E-03  -.76534653E-03  -.92534563E-03  -.93546876E-03  -.84061581E-03
+ Reciprocal Space Part
+  -.18050704E+02  -.17834272E+02  -.17186760E+02  -.16113521E+02  -.14623482E+02
+  -.12729146E+02  -.10446591E+02  -.77954652E+01  -.47989573E+01  -.14837576E+01
+   .21200169E+01   .59789299E+01   .10056375E+02   .14312772E+02   .18705823E+02
+   .23190815E+02   .27720993E+02   .32247989E+02   .36722309E+02   .41093883E+02
+   .45312654E+02   .49329224E+02   .53095520E+02   .56565493E+02   .59695819E+02
+   .62446596E+02   .64782024E+02   .66671043E+02   .68087925E+02   .69012796E+02
+   .69432071E+02   .69338806E+02   .68732931E+02   .67621372E+02   .66018053E+02
+   .63943765E+02   .61425910E+02   .58498115E+02   .55199729E+02   .51575201E+02
+   .47673357E+02   .43546587E+02   .39249955E+02   .34840257E+02   .30375044E+02
+   .25911622E+02   .21506061E+02   .17212234E+02   .13080900E+02   .91588530E+01
+   .54881601E+01   .21055001E+01  -.95838227E+00  -.36790948E+01  -.60388808E+01
+  -.80267626E+01  -.96385435E+01  -.10876670E+02  -.11749959E+02  -.12273201E+02
+  -.12466648E+02  -.12355399E+02  -.11968702E+02  -.11339191E+02  -.10502073E+02
+  -.94942880E+01  -.83536641E+01  -.71180804E+01  -.58246663E+01  -.45090480E+01
+  -.32046618E+01  -.19421464E+01  -.74882792E+00   .35169526E+00   .13398601E+01
+   .22003369E+01   .29221161E+01   .34984875E+01   .39269162E+01   .42088235E+01
+   .43492818E+01   .43566365E+01   .42420665E+01   .40190991E+01   .37030930E+01
+   .33107050E+01   .28593554E+01   .23667065E+01   .18501663E+01   .13264317E+01
+   .81107916E+00   .31821257E+00  -.13982499E+00  -.55267182E+00  -.91209780E+00
+  -.12120841E+01  -.14488344E+01  -.16207210E+01  -.17281718E+01  -.17735043E+01
+ Real Space Part
+   .10651139E+04   .10644690E+04   .10625081E+04   .10591538E+04   .10542809E+04
+   .10477220E+04   .10392749E+04   .10287116E+04   .10157888E+04   .10002596E+04
+   .98188486E+03   .96044581E+03   .93575544E+03   .90766958E+03   .87609671E+03
+   .84100623E+03   .80243497E+03   .76049163E+03   .71535894E+03   .66729356E+03
+   .61662359E+03   .56374381E+03   .50910879E+03   .45322409E+03   .39663573E+03
+   .33991847E+03   .28366297E+03   .22846251E+03   .17489949E+03   .12353223E+03
+   .74882375E+02   .29423356E+02  -.12429823E+02  -.50329150E+02  -.84000326E+02
+  -.11324746E+03  -.13795569E+03  -.15809158E+03  -.17370155E+03  -.18490823E+03
+  -.19190502E+03  -.19494902E+03  -.19435265E+03  -.19047419E+03  -.18370756E+03
+  -.17447167E+03  -.16319972E+03  -.15032861E+03  -.13628891E+03  -.12149559E+03
+  -.10633967E+03  -.91181076E+02  -.76342788E+02  -.62106350E+02  -.48708813E+02
+  -.36341096E+02  -.25147706E+02  -.15227736E+02  -.66370019E+01   .60880866E+00
+   .65301792E+01   .11179163E+02   .14634341E+02   .16995528E+02   .18378415E+02
+   .18909313E+02   .18720165E+02   .17943940E+02   .16710533E+02   .15143243E+02
+   .13355885E+02   .11450557E+02   .95160752E+01   .76270408E+01   .58435107E+01
+   .42112018E+01   .27621624E+01   .15158297E+01   .48038513E+00  -.34567781E+00
+  -.97186072E+00  -.14139210E+01  -.16921593E+01  -.18297962E+01  -.18514895E+01
+  -.17820313E+01  -.16452525E+01  -.14631487E+01  -.12552329E+01  -.10381074E+01
+  -.82524120E+00  -.62692995E+00  -.45041348E+00  -.30011899E+00  -.17799937E+00
+  -.83934893E-01  -.16168161E-01   .28254623E-01   .53059773E-01   .62358715E-01
+ Non local Part
+ 1 2 1.19916030564286080
+ -1.25459306742451093 0.228100760454737587E-01 0.228100760454737587E-01 -0.700981276733592118
+ Reciprocal Space Part
+   .00000000E+00   .23510789E+00   .46836234E+00   .69793402E+00   .92204139E+00
+   .11389735E+01   .13471118E+01   .15449501E+01   .17311126E+01   .19043703E+01
+   .20636539E+01   .22080652E+01   .23368850E+01   .24495780E+01   .25457954E+01
+   .26253740E+01   .26883327E+01   .27348663E+01   .27653367E+01   .27802619E+01
+   .27803027E+01   .27662478E+01   .27389977E+01   .26995471E+01   .26489663E+01
+   .25883833E+01   .25189648E+01   .24418976E+01   .23583711E+01   .22695607E+01
+   .21766115E+01   .20806245E+01   .19826438E+01   .18836459E+01   .17845301E+01
+   .16861121E+01   .15891184E+01   .14941834E+01   .14018480E+01   .13125600E+01
+   .12266766E+01   .11444678E+01   .10661213E+01   .99174936E+00   .92139498E+00
+   .85504034E+00   .79261477E+00   .73400336E+00   .67905551E+00   .62759336E+00
+   .57941985E+00   .53432639E+00   .49209973E+00   .45252826E+00   .41540736E+00
+   .38054389E+00   .34775980E+00   .31689471E+00   .28780770E+00   .26037813E+00
+   .23450569E+00   .21010971E+00   .18712783E+00   .16551415E+00   .14523693E+00
+   .12627598E+00   .10861987E+00   .92263068E-01   .77203056E-01   .63437602E-01
+   .50962234E-01   .39767981E-01   .29839474E-01   .21153417E-01   .13677481E-01
+   .73696341E-02   .21778907E-02  -.19595132E-02  -.51135603E-02  -.73635388E-02
+  -.87958246E-02  -.95024151E-02  -.95792707E-02  -.91245303E-02  -.82366629E-02
+  -.70126172E-02  -.55460307E-02  -.39255516E-02  -.22333231E-02  -.54367111E-03
+   .10779713E-02   .25758793E-02   .39045755E-02   .50290887E-02   .59249343E-02
+   .65778287E-02   .69831577E-02   .71452240E-02   .70763059E-02   .67955637E-02
+ Real Space Part
+   .00000000E+00   .23584444E+01   .46905809E+01   .69705668E+01   .91734793E+01
+   .11275748E+02   .13255558E+02   .15093213E+02   .16771445E+02   .18275680E+02
+   .19594235E+02   .20718452E+02   .21642774E+02   .22364748E+02   .22884966E+02
+   .23206950E+02   .23336969E+02   .23283822E+02   .23058561E+02   .22674189E+02
+   .22145325E+02   .21487856E+02   .20718572E+02   .19854810E+02   .18914098E+02
+   .17913820E+02   .16870901E+02   .15801528E+02   .14720895E+02   .13643000E+02
+   .12580468E+02   .11544435E+02   .10544456E+02   .95884707E+01   .86828003E+01
+   .78321846E+01   .70398518E+01   .63076171E+01   .56360052E+01   .50243916E+01
+   .44711564E+01   .39738471E+01   .35293436E+01   .31340209E+01   .27839065E+01
+   .24748267E+01   .22025405E+01   .19628579E+01   .17517407E+01   .15653850E+01
+   .14002853E+01   .12532803E+01   .11215805E+01   .10027809E+01   .89485770E+00
+   .79615357E+00   .70535222E+00   .62144491E+00   .54369142E+00   .47157738E+00
+   .40477041E+00   .34307664E+00   .28639943E+00   .23470160E+00   .18797213E+00
+   .14619822E+00   .10934294E+00   .77328764E-01   .50026788E-01   .27251291E-01
+   .87591178E-02  -.57467833E-02  -.16610463E-01  -.24213511E-01  -.28963878E-01
+  -.31283785E-01  -.31597457E-01  -.30319360E-01  -.27843477E-01  -.24534068E-01
+  -.20718243E-01  -.16680503E-01  -.12659360E-01  -.88459612E-02  -.53846167E-02
+  -.23749991E-02   .12423795E-03   .20907329E-02   .35329050E-02   .44839862E-02
+   .49959065E-02   .51333191E-02   .49680098E-02   .45738887E-02   .40227146E-02
+   .33806453E-02   .27056586E-02   .20458418E-02   .14385027E-02   .91002329E-03
+ Reciprocal Space Part
+   .00000000E+00   .29272926E+00   .57843399E+00   .85023484E+00   .11015397E+01
+   .13261794E+01   .15185341E+01   .16736479E+01   .17873284E+01   .18562306E+01
+   .18779215E+01   .18509255E+01   .17747492E+01   .16498856E+01   .14777963E+01
+   .12608754E+01   .10023919E+01   .70641614E+00   .37772921E+00   .21718724E-01
+  -.35573657E+00  -.74839098E+00  -.11497619E+01  -.15532628E+01  -.19523357E+01
+  -.23405817E+01  -.27118843E+01  -.30605258E+01  -.33812917E+01  -.36695632E+01
+  -.39213948E+01  -.41335755E+01  -.43036740E+01  -.44300652E+01  -.45119403E+01
+  -.45492988E+01  -.45429232E+01  -.44943396E+01  -.44057620E+01  -.42800250E+01
+  -.41205058E+01  -.39310365E+01  -.37158106E+01  -.34792853E+01  -.32260817E+01
+  -.29608856E+01  -.26883505E+01  -.24130063E+01  -.21391741E+01  -.18708888E+01
+  -.16118327E+01  -.13652790E+01  -.11340470E+01  -.92047055E+00  -.72637731E+00
+  -.55308185E+00  -.40138970E+00  -.27161305E+00  -.16359660E+00  -.76752772E-01
+  -.10104639E-01   .37664549E-01   .68156995E-01   .83202612E-01   .84799534E-01
+   .75054428E-01   .56124091E-01   .30159711E-01  -.74497392E-03  -.34600541E-01
+  -.69562879E-01  -.10396763E+00  -.13635759E+00  -.16550280E+00  -.19041323E+00
+  -.21034427E+00  -.22479520E+00  -.23350134E+00  -.23642027E+00  -.23371303E+00
+  -.22572115E+00  -.21294033E+00  -.19599172E+00  -.17559194E+00  -.15252250E+00
+  -.12759976E+00  -.10164610E+00  -.75463148E-01  -.49807632E-01  -.25370407E-01
+  -.27590838E-02   .17515510E-01   .35048873E-01   .49548366E-01   .60834843E-01
+   .68840593E-01   .73603904E-01   .75260639E-01   .74033291E-01   .70218015E-01
+ Real Space Part
+   .00000000E+00  -.44565316E+01  -.88736793E+01  -.13212431E+02  -.17434518E+02
+  -.21502784E+02  -.25381550E+02  -.29036977E+02  -.32437420E+02  -.35553771E+02
+  -.38359789E+02  -.40832411E+02  -.42952041E+02  -.44702811E+02  -.46072803E+02
+  -.47054238E+02  -.47643617E+02  -.47841801E+02  -.47654050E+02  -.47089992E+02
+  -.46163524E+02  -.44892661E+02  -.43299301E+02  -.41408940E+02  -.39250314E+02
+  -.36854984E+02  -.34256876E+02  -.31491766E+02  -.28596733E+02  -.25609588E+02
+  -.22568287E+02  -.19510342E+02  -.16472240E+02  -.13488886E+02  -.10593077E+02
+  -.78150297E+01  -.51819498E+01  -.27176791E+01  -.44240695E+00   .16275384E+01
+   .34798180E+01   .51061276E+01   .65021612E+01   .76674960E+01   .86054018E+01
+   .93225838E+01   .98288640E+01   .10136814E+02   .10261344E+02   .10219273E+02
+   .10028865E+02   .97093782E+01   .92806093E+01   .87624554E+01   .81745059E+01
+   .75356666E+01   .68638280E+01   .61755803E+01   .54859812E+01   .48083782E+01
+   .41542863E+01   .35333200E+01   .29531777E+01   .24196742E+01   .19368174E+01
+   .15069225E+01   .11307583E+01   .80771818E+00   .53600812E+00   .31284662E+00
+   .13466788E+00  -.26769640E-02  -.10372651E+00  -.17322843E+00  -.21597563E+00
+  -.23666226E+00  -.23976167E+00  -.22942775E+00  -.20941978E+00  -.18305043E+00
+  -.15315567E+00  -.12208482E+00  -.91708380E-01  -.63441081E-01  -.38277137E-01
+  -.16834879E-01   .59226634E-03   .13981221E-01   .23523731E-01   .29572128E-01
+   .32588335E-01   .33097637E-01   .31648362E-01   .28778214E-01   .24987606E-01
+   .20720005E-01   .16348990E-01   .12171480E-01   .84063741E-02   .51977359E-02
+ PAW radial sets
+ 323 0.699084555240741423
+(5E20.12)                                
+ augmentation charges (non sperical)
+  -.610085085999E-01  -.186338196202E-02  -.286321339088E-01   .165933387291E-01  -.186338196202E-02
+  -.601132130549E-04   .464666195505E-04   .217264853682E-03  -.286321339088E-01   .464666195505E-04
+   .535065865316E-01   .383319399150E-03   .165933387291E-01   .217264853682E-03   .383319399150E-03
+   .119224496368E-02
+ uccopancies in atom
+   .200000000005E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .666666666439E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .266163843696E-04   .274818827895E-04   .283755250589E-04   .292982263456E-04   .302509315762E-04
+   .312346164042E-04   .322502882088E-04   .332989871268E-04   .343817871173E-04   .354997970623E-04
+   .366541619016E-04   .378460638057E-04   .390767233863E-04   .403474009463E-04   .416593977706E-04
+   .430140574586E-04   .444127673002E-04   .458569596965E-04   .473481136267E-04   .488877561628E-04
+   .504774640331E-04   .521188652376E-04   .538136407145E-04   .555635260619E-04   .573703133154E-04
+   .592358527830E-04   .611620549401E-04   .631508923861E-04   .652044018643E-04   .673246863478E-04
+   .695139171933E-04   .717743363644E-04   .741082587279E-04   .765180744243E-04   .790062513153E-04
+   .815753375116E-04   .842279639819E-04   .869668472475E-04   .897947921642E-04   .927146947948E-04
+   .957295453747E-04   .988424313742E-04   .102056540661E-03   .105375164763E-03   .108801702242E-03
+   .112339662172E-03   .115992667733E-03   .119764459921E-03   .123658901382E-03   .127679980364E-03
+   .131831814803E-03   .136118656540E-03   .140544895676E-03   .145115065067E-03   .149833844965E-03
+   .154706067814E-03   .159736723194E-03   .164930962938E-03   .170294106401E-03   .175831645909E-03
+   .181549252388E-03   .187452781165E-03   .193548277971E-03   .199841985127E-03   .206340347939E-03
+   .213050021297E-03   .219977876495E-03   .227131008261E-03   .234516742027E-03   .242142641430E-03
+   .250016516057E-03   .258146429445E-03   .266540707334E-03   .275207946198E-03   .284157022049E-03
+   .293397099521E-03   .302937641261E-03   .312788417618E-03   .322959516647E-03   .333461354443E-03
+   .344304685805E-03   .355500615252E-03   .367060608395E-03   .378996503676E-03   .391320524495E-03
+   .404045291726E-03   .417183836643E-03   .430749614264E-03   .444756517131E-03   .459218889537E-03
+   .474151542213E-03   .489569767503E-03   .505489355015E-03   .521926607798E-03   .538898359036E-03
+   .556421989285E-03   .574515444273E-03   .593197253280E-03   .612486548111E-03   .632403082688E-03
+   .652967253285E-03   .674200119407E-03   .696123425367E-03   .718759622544E-03   .742131892384E-03
+   .766264170131E-03   .791181169349E-03   .816908407220E-03   .843472230686E-03   .870899843422E-03
+   .899219333701E-03   .928459703155E-03   .958650896478E-03   .989823832089E-03   .102201043380E-02
+   .105524366350E-02   .108955755493E-02   .112498724850E-02   .116156902732E-02   .119934035433E-02
+   .123833991067E-02   .127860763528E-02   .132018476584E-02   .136311388097E-02   .140743894383E-02
+   .145320534715E-02   .150045995974E-02   .154925117444E-02   .159962895772E-02   .165164490084E-02
+   .170535227266E-02   .176080607424E-02   .181806309510E-02   .187718197144E-02   .193822324615E-02
+   .200124943084E-02   .206632506983E-02   .213351680625E-02   .220289345031E-02   .227452604977E-02
+   .234848796266E-02   .242485493244E-02   .250370516557E-02   .258511941158E-02   .266918104576E-02
+   .275597615457E-02   .284559362380E-02   .293812522956E-02   .303366573230E-02   .313231297384E-02
+   .323416797759E-02   .333933505196E-02   .344792189722E-02   .356003971581E-02   .367580332615E-02
+   .379533128031E-02   .391874598535E-02   .404617382872E-02   .417774530766E-02   .431359516287E-02
+   .445386251646E-02   .459869101447E-02   .474822897393E-02   .490262953478E-02   .506205081668E-02
+   .522665608097E-02   .539661389781E-02   .557209831886E-02   .575328905551E-02   .594037166289E-02
+   .613353772995E-02   .633298507563E-02   .653891795142E-02   .675154725060E-02   .697109072414E-02
+   .719777320374E-02   .743182683208E-02   .767349130052E-02   .792301409459E-02   .818065074744E-02
+   .844666510152E-02   .872132957877E-02   .900492545962E-02   .929774317102E-02   .960008258391E-02
+   .991225332026E-02   .102345750702E-01   .105673779193E-01   .109110026869E-01   .112658012746E-01
+   .116321370274E-01   .120103851049E-01   .124009328662E-01   .128041802665E-01   .132205402662E-01
+   .136504392545E-01   .140943174853E-01   .145526295289E-01   .150258447369E-01   .155144477228E-01
+   .160189388589E-01   .165398347883E-01   .170776689537E-01   .176329921445E-01   .182063730601E-01
+   .187983988927E-01   .194096759284E-01   .200408301684E-01   .206925079697E-01   .213653767074E-01
+   .220601254578E-01   .227774657044E-01   .235181320663E-01   .242828830506E-01   .250725018290E-01
+   .258877970402E-01   .267296036178E-01   .275987836452E-01   .284962272388E-01   .294228534593E-01
+   .303796112527E-01   .313674804228E-01   .323874726339E-01   .334406324470E-01   .345280383900E-01
+   .356508040616E-01   .368100792718E-01   .380070512198E-01   .392429457094E-01   .405190284047E-01
+   .418366061258E-01   .431970281875E-01   .446016877807E-01   .460520233998E-01   .475495203150E-01
+   .490957120941E-01   .506921821726E-01   .523405654753E-01   .540425500908E-01   .557998790001E-01
+   .576143518615E-01   .594878268538E-01   .614222225791E-01   .634195200277E-01   .654817646066E-01
+   .676110682346E-01   .698096115046E-01   .720796459171E-01   .744234961856E-01   .768435626176E-01
+   .793423235727E-01   .819223380004E-01   .845862480609E-01   .873367818310E-01   .901767560975E-01
+   .931090792423E-01   .961367542205E-01   .992628816359E-01   .102490662916E+00   .105823403591E+00
+   .109264516679E+00   .112817526180E+00   .116486070686E+00   .120273907107E+00   .124184914520E+00
+   .128223098136E+00   .132392593410E+00   .136697670269E+00   .141142737487E+00   .145732347202E+00
+   .150471199575E+00   .155364147606E+00   .160416202100E+00   .165632536802E+00   .171018493697E+00
+   .176579588473E+00   .182321516178E+00   .188250157047E+00   .194371582528E+00   .200692061494E+00
+   .207218066668E+00   .213956281250E+00   .220913605761E+00   .228097165108E+00   .235514315885E+00
+   .243172653901E+00   .251080021964E+00   .259244517910E+00   .267674502897E+00   .276378609965E+00
+   .285365752880E+00   .294645135264E+00   .304226260013E+00   .314118939037E+00   .324333303303E+00
+   .334879813214E+00   .345769269317E+00   .357012823366E+00   .368621989744E+00   .380608657251E+00
+   .392985101282E+00   .405763996398E+00   .418958429304E+00   .432581912251E+00   .446648396878E+00
+   .461172288493E+00   .476168460830E+00   .491652271281E+00   .507639576621E+00   .524146749247E+00
+   .541190693946E+00   .558788865208E+00   .576959285097E+00   .595720561711E+00   .615091908236E+00
+   .635093162626E+00   .655744807911E+00   .677067993181E+00   .699084555241E+00   .721817040975E+00
+   .745288730434E+00   .769523660679E+00   .794546650398E+00
+ aepotential
+   .383317401350E+05   .370760521630E+05   .358215427817E+05   .345723614372E+05   .333329235581E+05
+   .321072411919E+05   .308989386383E+05   .297112470463E+05   .285470076453E+05   .274086798574E+05
+   .262983535166E+05   .252177644407E+05   .241683130613E+05   .231510852278E+05   .221668746907E+05
+   .212162067494E+05   .202993625032E+05   .194164032472E+05   .185671946044E+05   .177514300587E+05
+   .169686535705E+05   .162182810557E+05   .154996205585E+05   .148118909766E+05   .141542392477E+05
+   .135257560060E+05   .129254896671E+05   .123524589625E+05   .118056640518E+05   .112840961958E+05
+   .107867460148E+05   .103126107938E+05   .986070033795E+04   .943004200499E+04   .901968485448E+04
+   .862870276244E+04   .825619708807E+04   .790129849413E+04   .756316831746E+04   .724099943751E+04
+   .693401678227E+04   .664147745305E+04   .636267057252E+04   .609691689646E+04   .584356827969E+04
+   .560200695715E+04   .537164466484E+04   .515192177660E+04   .494230629451E+04   .474229278168E+04
+   .455140136800E+04   .436917663011E+04   .419518652364E+04   .402902138329E+04   .387029279002E+04
+   .371863253072E+04   .357369179155E+04   .343513992726E+04   .330266368403E+04   .317596636331E+04
+   .305476672301E+04   .293879844635E+04   .282780911686E+04   .272155961227E+04   .261982329965E+04
+   .252238545902E+04   .242904250854E+04   .233960151475E+04   .225387951953E+04   .217170307075E+04
+   .209290762256E+04   .201733712284E+04   .194484348396E+04   .187528618728E+04   .180853185036E+04
+   .174445383460E+04   .168293188934E+04   .162385178535E+04   .156710500646E+04   .151258842233E+04
+   .146020400231E+04   .140985854502E+04   .136146340998E+04   .131493427670E+04   .127019091146E+04
+   .122715695065E+04   .118575969310E+04   .114592990721E+04   .110760164901E+04   .107071208076E+04
+   .103520132763E+04   .100101229465E+04   .968090551732E+03   .936384173502E+03   .905843624873E+03
+   .876421626702E+03   .848073052039E+03   .820754808212E+03   .794425739614E+03   .769046524597E+03
+   .744579591633E+03   .720989023054E+03   .698240480930E+03   .676301124330E+03   .655139537739E+03
+   .634725661561E+03   .615030725674E+03   .596027188030E+03   .577688674777E+03   .559989924704E+03
+   .542906737097E+03   .526415920536E+03   .510495246165E+03   .495123402472E+03   .480279952596E+03
+   .465945293766E+03   .452100619670E+03   .438727882504E+03   .425809760163E+03   .413329622066E+03
+   .401271498932E+03   .389620052484E+03   .378360547788E+03   .367478826286E+03   .356961280721E+03
+   .346794830362E+03   .336966898773E+03   .327465391112E+03   .318278674497E+03   .309395556619E+03
+   .300805268514E+03   .292497445394E+03   .284462110100E+03   .276689656664E+03   .269170834721E+03
+   .261896734731E+03   .254858773865E+03   .248048682373E+03   .241458490845E+03   .235080517842E+03
+   .228907358231E+03   .222931871878E+03   .217147172978E+03   .211546619837E+03   .206123805074E+03
+   .200872546185E+03   .195786876778E+03   .190861037791E+03   .186089469450E+03   .181466803375E+03
+   .176987855056E+03   .172647616682E+03   .168441250263E+03   .164364080974E+03   .160411590899E+03
+   .156579412924E+03   .152863324933E+03   .149259244204E+03   .145763222136E+03   .142371439012E+03
+   .139080199145E+03   .135885926133E+03   .132785158305E+03   .129774544362E+03   .126850839236E+03
+   .124010899974E+03   .121251681982E+03   .118570235228E+03   .115963700738E+03   .113429307103E+03
+   .110964367262E+03   .108566275250E+03   .106232503230E+03   .103960598509E+03   .101748180767E+03
+   .995929393180E+02   .974926305371E+02   .954450753531E+02   .934481568477E+02   .914998179451E+02
+   .895980592072E+02   .877409366956E+02   .859265599431E+02   .841530899713E+02   .824187374331E+02
+   .807217607940E+02   .790604646145E+02   .774331978845E+02   .758383524512E+02   .742743614975E+02
+   .727396980970E+02   .712328738357E+02   .697524374914E+02   .682969737885E+02   .668651022009E+02
+   .654554758266E+02   .640667803164E+02   .626977328633E+02   .613470812491E+02   .600136029490E+02
+   .586961042929E+02   .573934196797E+02   .561044108453E+02   .548279661925E+02   .535630001670E+02
+   .523084526805E+02   .510632886094E+02   .498264973080E+02   .485970922131E+02   .473741104651E+02
+   .461566125988E+02   .449436822753E+02   .437344260616E+02   .425279732599E+02   .413234757805E+02
+   .401201080623E+02   .389170670348E+02   .377135721249E+02   .365088653029E+02   .353022111734E+02
+   .340928970973E+02   .328802333592E+02   .316635533635E+02   .304422138675E+02   .292155952447E+02
+   .279831017783E+02   .267441619801E+02   .254982289382E+02   .242447806833E+02   .229833205798E+02
+   .217133777326E+02   .204345074131E+02   .191462914991E+02   .178483389287E+02   .165402861685E+02
+   .152217976926E+02   .138925664776E+02   .125523145105E+02   .112007933164E+02   .983778450878E+01
+   .846310036873E+01   .707658446486E+01   .567811232366E+01   .426759216912E+01   .284496575141E+01
+   .141020929284E+01  -.366654156141E-01  -.149560972345E+01  -.296653658322E+01  -.444931870035E+01
+  -.594378629039E+01  -.744972434548E+01  -.896686929182E+01  -.104949048950E+02  -.120334572435E+02
+  -.135820886085E+02  -.151402899440E+02  -.167074717553E+02  -.182829530266E+02  -.198659478663E+02
+  -.214555495031E+02  -.230507112591E+02  -.246502241472E+02  -.262526908046E+02  -.278564956091E+02
+  -.294597710474E+02  -.310603607592E+02  -.326557801918E+02  -.342431765070E+02  -.358192903045E+02
+  -.373804228649E+02  -.389224139265E+02  -.404406363995E+02  -.419300157173E+02  -.433850824888E+02
+  -.448000674747E+02  -.461690474478E+02  -.474861491702E+02  -.487458171466E+02  -.499431492767E+02
+  -.510743075199E+02  -.521370165321E+02  -.531311804649E+02  -.540596711832E+02  -.549293630873E+02
+  -.557524764820E+02  -.565481668190E+02  -.573439201000E+02  -.581754998773E+02  -.590828862883E+02
+  -.600984575072E+02  -.612246894042E+02  -.624054073495E+02  -.635079321979E+02  -.643429503546E+02
+  -.647341328244E+02  -.646074102868E+02  -.640374460998E+02  -.632091682825E+02  -.623198210793E+02
+  -.614972752813E+02  -.607833039180E+02  -.601643928333E+02  -.596083077577E+02  -.590852924460E+02
+  -.585747945374E+02  -.580649267477E+02  -.575497821306E+02  -.570268364802E+02  -.564950806221E+02
+  -.559539033021E+02  -.554025550570E+02  -.548399930324E+02  -.542649352801E+02  -.536760011707E+02
+  -.530718627739E+02  -.524513698695E+02  -.518136362967E+02  -.511580889113E+02  -.504844862598E+02
+  -.497929152047E+02  -.490837727492E+02  -.483577385574E+02
+ core charge-density
+   .210201471976E-05   .224075664592E-05   .238865458685E-05   .254631262205E-05   .271437467066E-05
+   .289352711738E-05   .308450161127E-05   .328807804893E-05   .350508775400E-05   .373641686609E-05
+   .398300995265E-05   .424587385875E-05   .452608181007E-05   .482477778602E-05   .514318118056E-05
+   .548259176971E-05   .584439500577E-05   .623006765990E-05   .664118383576E-05   .707942137855E-05
+   .754656870563E-05   .804453208605E-05   .857534339869E-05   .914116840034E-05   .974431553701E-05
+   .103872453343E-04   .110725804047E-04   .118031161120E-04   .125818319365E-04   .134119035859E-04
+   .142967159018E-04   .152398766133E-04   .162452309925E-04   .173168774727E-04   .184591842904E-04
+   .196768072185E-04   .209747084634E-04   .223581767995E-04   .238328490247E-04   .254047328205E-04
+   .270802311103E-04   .288661680134E-04   .307698164969E-04   .327989278389E-04   .349617630191E-04
+   .372671261631E-04   .397244001732E-04   .423435846899E-04   .451353365329E-04   .481110127855E-04
+   .512827166925E-04   .546633465537E-04   .582666478101E-04   .621072685268E-04   .662008184941E-04
+   .705639321818E-04   .752143357953E-04   .801709186982E-04   .854538094856E-04   .910844570067E-04
+   .970857166572E-04   .103481942281E-03   .110299084044E-03   .117564792660E-03   .125308530387E-03
+   .133561689217E-03   .142357716729E-03   .151732250102E-03   .161723258793E-03   .172371196456E-03
+   .183719162681E-03   .195813075181E-03   .208701853104E-03   .222437612158E-03   .237075872332E-03
+   .252675778986E-03   .269300338178E-03   .287016667117E-03   .305896260713E-03   .326015275242E-03
+   .347454830188E-03   .370301329441E-03   .394646803036E-03   .420589270757E-03   .448233128946E-03
+   .477689562001E-03   .509076980088E-03   .542521484709E-03   .578157363861E-03   .616127618631E-03
+   .656584523168E-03   .699690220109E-03   .745617353632E-03   .794549742481E-03   .846683095389E-03
+   .902225771526E-03   .961399588699E-03   .102444068224E-02   .109160041766E-02   .116314636027E-02
+   .123936330534E-02   .132055437229E-02   .140704216687E-02   .149917001532E-02   .159730327486E-02
+   .170183072500E-02   .181316604445E-02   .193174937867E-02   .205804900338E-02   .219256308964E-02
+   .233582157635E-02   .248838815641E-02   .265086238310E-02   .282388190341E-02   .300812482576E-02
+   .320431222944E-02   .341321082396E-02   .363563576644E-02   .387245364601E-02   .412458564415E-02
+   .439301088078E-02   .467876995601E-02   .498296869806E-02   .530678212831E-02   .565145865486E-02
+   .601832450658E-02   .640878841994E-02   .682434659150E-02   .726658790948E-02   .773719947818E-02
+   .823797244965E-02   .877080817735E-02   .933772470722E-02   .994086362171E-02   .105824972531E-01
+   .112650362829E-01   .119910377433E-01   .127632134399E-01   .135844388111E-01   .144577622441E-01
+   .153864148634E-01   .163738208122E-01   .174236080432E-01   .185396196377E-01   .197259256706E-01
+   .209868356391E-01   .223269114720E-01   .237509811369E-01   .252641528593E-01   .268718299708E-01
+   .285797263970E-01   .303938828004E-01   .323206833847E-01   .343668733724E-01   .365395771581E-01
+   .388463171429E-01   .412950332480E-01   .438941031033E-01   .466523629042E-01   .495791289213E-01
+   .526842196464E-01   .559779785495E-01   .594712974148E-01   .631756402191E-01   .671030675022E-01
+   .712662611768E-01   .756785497076E-01   .803539335844E-01   .853071109979E-01   .905535036149E-01
+   .961092823336E-01   .101991392886E+00   .108217581135E+00   .114806417891E+00   .121777323066E+00
+   .129150588943E+00   .136947402324E+00   .145189865301E+00   .153901014352E+00   .163104837444E+00
+   .172826288805E+00   .183091300959E+00   .193926793635E+00   .205360679071E+00   .217421863247E+00
+   .230140242492E+00   .243546694913E+00   .257673066026E+00   .272552147933E+00   .288217651336E+00
+   .304704169664E+00   .322047134505E+00   .340282761512E+00   .359447985923E+00   .379580386761E+00
+   .400718098759E+00   .422899711034E+00   .446164151471E+00   .470550555773E+00   .496098120117E+00
+   .522845936323E+00   .550832808460E+00   .580097049822E+00   .610676259202E+00   .642607075471E+00
+   .675924909479E+00   .710663652389E+00   .746855359642E+00   .784529909868E+00   .823714638198E+00
+   .864433943582E+00   .906708869968E+00   .950556661362E+00   .995990291124E+00   .104301796611E+01
+   .109164260662E+01   .114186130363E+01   .119366475488E+01   .124703668237E+01   .130195323380E+01
+   .135838237157E+01   .141628325299E+01   .147560560672E+01   .153628911031E+01   .159826277524E+01
+   .166144434602E+01   .172573972093E+01   .179104240281E+01   .185723298887E+01   .192417870953E+01
+   .199173302679E+01   .205973530355E+01   .212801055564E+01   .219636929928E+01   .226460750671E+01
+   .233250668330E+01   .239983407940E+01   .246634305053E+01   .253177357856E+01   .259585296684E+01
+   .265829672076E+01   .271880962463E+01   .277708702399E+01   .283281632099E+01   .288567868813E+01
+   .293535100324E+01   .298150800565E+01   .302382467008E+01   .306197879136E+01   .309565376868E+01
+   .312454157393E+01   .314834588399E+01   .316678535168E+01   .317959698537E+01   .318653960172E+01
+   .318739731108E+01   .318198299002E+01   .317014169081E+01   .315175393296E+01   .312673881878E+01
+   .309505691121E+01   .305671281039E+01   .301175736428E+01   .296028944858E+01   .290245725290E+01
+   .283845901318E+01   .276854313492E+01   .269300765859E+01   .261219902697E+01   .252651012442E+01
+   .243637757071E+01   .234227826612E+01   .224472520064E+01   .214426255778E+01   .204146016233E+01
+   .193690734109E+01   .183120628548E+01   .172496502364E+01   .161879013072E+01   .151327931436E+01
+   .140901403108E+01   .130655229498E+01   .120642184091E+01   .110911380351E+01   .101507706536E+01
+   .924713415287E+00   .838373638738E+00   .756354633201E+00   .678897594052E+00   .606187236400E+00
+   .538351896408E+00   .475464205924E+00   .417541937254E+00   .364548734839E+00   .316394938044E+00
+   .272939426364E+00   .233993809082E+00   .199329712305E+00   .168688507967E+00   .141791603202E+00
+   .118349382811E+00   .980680113325E-01   .806544733117E-01   .658206202508E-01   .532867336649E-01
+   .427847431325E-01   .340610365648E-01   .268787587943E-01   .210195270993E-01   .162845404577E-01
+   .124951006767E-01   .949259334725E-02   .713799599173E-02   .531099208522E-02   .390877477541E-02
+   .284462447957E-02   .204634106180E-02   .145460473349E-02   .102133087525E-02   .708073374340E-03
+   .484519560765E-03   .327108148624E-03   .217790419037E-03
+ kinetic energy-density
+   .187149272566E-01   .190029016528E-01   .193021383520E-01   .196131445331E-01   .199364668482E-01
+   .202726831041E-01   .206224041703E-01   .209862753360E-01   .213649778729E-01   .217592307042E-01
+   .221697921893E-01   .225974620544E-01   .230430834585E-01   .235075452233E-01   .239917842237E-01
+   .244967879609E-01   .250235973262E-01   .255733095592E-01   .261470814287E-01   .267461326327E-01
+   .273717494355E-01   .280252885669E-01   .287081813606E-01   .294219382048E-01   .301681532636E-01
+   .309485095218E-01   .317647841490E-01   .326188542310E-01   .335127028323E-01   .344484255235E-01
+   .354282371948E-01   .364544794691E-01   .375296284508E-01   .386563030240E-01   .398372736687E-01
+   .410754718683E-01   .423740000125E-01   .437361420645E-01   .451653748014E-01   .466653797901E-01
+   .482400561570E-01   .498935341207E-01   .516301894220E-01   .534546586408E-01   .553718554950E-01
+   .573869882016E-01   .595055778913E-01   .617334782350E-01   .640768963281E-01   .665424148420E-01
+   .691370156842E-01   .718681050854E-01   .747435402840E-01   .777716580423E-01   .809613048245E-01
+   .843218689283E-01   .878633147711E-01   .915962193527E-01   .955318108150E-01   .996820098605E-01
+   .104059473466E+00   .108677641585E+00   .113550786803E+00   .118694067089E+00   .124123581995E+00
+   .129856432521E+00   .135910784469E+00   .142305936459E+00   .149062391504E+00   .156201933897E+00
+   .163747710518E+00   .171724317478E+00   .180157892402E+00   .189076212387E+00   .198508798378E+00
+   .208487026104E+00   .219044244082E+00   .230215899162E+00   .242039670048E+00   .254555609264E+00
+   .267806294183E+00   .281836987641E+00   .296695808659E+00   .312433914112E+00   .329105691757E+00
+   .346768965584E+00   .365485214034E+00   .385319802119E+00   .406342228041E+00   .428626385361E+00
+   .452250841902E+00   .477299135691E+00   .503860089876E+00   .532028147324E+00   .561903725927E+00
+   .593593596265E+00   .627211282887E+00   .662877490414E+00   .700720556173E+00   .740876931071E+00
+   .783491690049E+00   .828719074092E+00   .876723065934E+00   .927678000833E+00   .981769215175E+00
+   .103919373456E+01   .110016100428E+01   .116489366388E+01   .123362836932E+01   .130661666466E+01
+   .138412590656E+01   .146644024463E+01   .155386166052E+01   .164671106948E+01   .174532948751E+01
+   .185007926809E+01   .196134541224E+01   .207953695573E+01   .220508843837E+01   .233846145866E+01
+   .248014631989E+01   .263066377108E+01   .279056684906E+01   .296044282603E+01   .314091526877E+01
+   .333264621471E+01   .353633847128E+01   .375273804390E+01   .398263670078E+01   .422687467799E+01
+   .448634353582E+01   .476198916903E+01   .505481498233E+01   .536588523522E+01   .569632856593E+01
+   .604734170172E+01   .642019336275E+01   .681622836857E+01   .723687195545E+01   .768363431125E+01
+   .815811533885E+01   .866200965348E+01   .919711182443E+01   .976532186826E+01   .103686510014E+02
+   .110092276605E+02   .116893037974E+02   .124112614561E+02   .131776196376E+02   .139910414599E+02
+   .148543416164E+02   .157704941386E+02   .167426404663E+02   .177740978254E+02   .188683679172E+02
+   .200291459156E+02   .212603297708E+02   .225660298148E+02   .239505786611E+02   .254185413897E+02
+   .269747260040E+02   .286241941448E+02   .303722720411E+02   .322245616746E+02   .341869521299E+02
+   .362656310986E+02   .384670964953E+02   .407981681485E+02   .432659995054E+02   .458780893047E+02
+   .486422931402E+02   .515668348501E+02   .546603176435E+02   .579317348741E+02   .613904803553E+02
+   .650463581030E+02   .689095913788E+02   .729908308934E+02   .773011620136E+02   .818521108089E+02
+   .866556487471E+02   .917241958441E+02   .970706220433E+02   .102708246595E+03   .108650835174E+03
+   .114912594467E+03   .121508163936E+03   .128452604432E+03   .135761383343E+03   .143450355903E+03
+   .151535742297E+03   .160034100166E+03   .168962292084E+03   .178337447588E+03   .188176919311E+03
+   .198498232731E+03   .209319029088E+03   .220657000954E+03   .232529819984E+03   .244955056327E+03
+   .257950089232E+03   .271532008341E+03   .285717505210E+03   .300522754616E+03   .315963285221E+03
+   .332053839245E+03   .348808220795E+03   .366239132631E+03   .384358001152E+03   .403174789553E+03
+   .422697799137E+03   .442933458957E+03   .463886104051E+03   .485557742726E+03   .507947813511E+03
+   .531052932602E+03   .554866632844E+03   .579379095524E+03   .604576876521E+03   .630442628632E+03
+   .656954822183E+03   .684087466359E+03   .711809833998E+03   .740086192954E+03   .768875547433E+03
+   .798131393124E+03   .827801490198E+03   .857827658668E+03   .888145600844E+03   .918684755966E+03
+   .949368192307E+03   .980112542272E+03   .101082798616E+04   .104141829035E+04   .107178090569E+04
+   .110180713178E+04   .113138235255E+04   .116038634853E+04   .118869369036E+04   .121617421790E+04
+   .124269360841E+04   .126811403643E+04   .129229492698E+04   .131509380267E+04   .133636722370E+04
+   .135597181862E+04   .137376540192E+04   .138960817268E+04   .140336398711E+04   .141490169540E+04
+   .142409653185E+04   .143083154490E+04   .143499905206E+04   .143650210272E+04   .143525593026E+04
+   .143118937310E+04   .142424624329E+04   .141438661985E+04   .140158804370E+04   .138584659017E+04
+   .136717779557E+04   .134561741424E+04   .132122198382E+04   .129406917745E+04   .126425792364E+04
+   .123190827657E+04   .119716102241E+04   .116017701014E+04   .112113619867E+04   .108023641603E+04
+   .103769182992E+04   .993731133613E+03   .948595455686E+03   .902536007070E+03   .855811484921E+03
+   .808685259103E+03   .761422374678E+03   .714286418279E+03   .667536262337E+03   .621422839436E+03
+   .576185893199E+03   .532050869837E+03   .489225992577E+03   .447899597254E+03   .408237795951E+03
+   .370382528452E+03   .334450063979E+03   .300530043795E+03   .268685225931E+03   .238952207524E+03
+   .211343498908E+03   .185851228955E+03   .162452188076E+03   .141112750295E+03   .121791110838E+03
+   .104434777422E+03   .889742185649E+02   .753170557585E+02   .633476452647E+02   .529332849578E+02
+   .439337166174E+02   .362092956323E+02   .296256559217E+02   .240555383153E+02   .193793214078E+02
+   .154852579587E+02   .122697443525E+02   .963761241955E+01   .750235296988E+01   .578620180549E+01
+   .442005836368E+01   .334323786417E+01   .250307633395E+01   .185441692586E+01   .135900893055E+01
+   .984850383892E+00   .705502793867E+00   .499403134414E+00   .349194331708E+00   .241091270573E+00
+   .164295079104E+00   .110464301462E+00   .732477232375E-01
+ pspotential
+  -.688889563991E+02  -.688859867412E+02  -.688831106037E+02  -.688803250462E+02  -.688776272155E+02
+  -.688750143495E+02  -.688724837717E+02  -.688700328911E+02  -.688676591977E+02  -.688653602608E+02
+  -.688631337259E+02  -.688609773126E+02  -.688588888128E+02  -.688568660880E+02  -.688549070663E+02
+  -.688530097420E+02  -.688511721715E+02  -.688493924735E+02  -.688476688255E+02  -.688459994619E+02
+  -.688443826738E+02  -.688428168048E+02  -.688413002519E+02  -.688398314619E+02  -.688384089307E+02
+  -.688370312015E+02  -.688356968633E+02  -.688344045501E+02  -.688331529381E+02  -.688319407457E+02
+  -.688307667317E+02  -.688296296939E+02  -.688285284677E+02  -.688274619257E+02  -.688264289758E+02
+  -.688254285599E+02  -.688244596540E+02  -.688235212658E+02  -.688226124343E+02  -.688217322292E+02
+  -.688208797490E+02  -.688200541209E+02  -.688192544994E+02  -.688184800661E+02  -.688177300278E+02
+  -.688170036167E+02  -.688163000890E+02  -.688156187246E+02  -.688149588259E+02  -.688143197171E+02
+  -.688137007442E+02  -.688131012737E+02  -.688125206918E+02  -.688119584042E+02  -.688114138354E+02
+  -.688108864282E+02  -.688103756429E+02  -.688098809565E+02  -.688094018632E+02  -.688089378725E+02
+  -.688084885101E+02  -.688080533160E+02  -.688076318451E+02  -.688072236665E+02  -.688068283628E+02
+  -.688064455298E+02  -.688060747762E+02  -.688057157231E+02  -.688053680035E+02  -.688050312622E+02
+  -.688047051553E+02  -.688043893497E+02  -.688040835233E+02  -.688037873638E+02  -.688035005692E+02
+  -.688032228471E+02  -.688029539143E+02  -.688026934969E+02  -.688024413298E+02  -.688021971563E+02
+  -.688019607282E+02  -.688017318051E+02  -.688015101547E+02  -.688012955520E+02  -.688010877797E+02
+  -.688008866271E+02  -.688006918910E+02  -.688005033747E+02  -.688003208880E+02  -.688001442470E+02
+  -.687999732743E+02  -.687998077983E+02  -.687996476534E+02  -.687994926793E+02  -.687993427220E+02
+  -.687991976321E+02  -.687990572661E+02  -.687989214854E+02  -.687987901564E+02  -.687986631505E+02
+  -.687985403441E+02  -.687984216179E+02  -.687983068576E+02  -.687981959533E+02  -.687980887993E+02
+  -.687979852948E+02  -.687978853428E+02  -.687977888509E+02  -.687976957307E+02  -.687976058980E+02
+  -.687975192728E+02  -.687974357789E+02  -.687973553444E+02  -.687972779013E+02  -.687972033858E+02
+  -.687971317377E+02  -.687970629013E+02  -.687969968247E+02  -.687969334599E+02  -.687968727634E+02
+  -.687968146954E+02  -.687967592203E+02  -.687967063072E+02  -.687966559290E+02  -.687966080633E+02
+  -.687965626919E+02  -.687965198015E+02  -.687964793834E+02  -.687964414333E+02  -.687964059529E+02
+  -.687963729482E+02  -.687963424307E+02  -.687963144176E+02  -.687962889318E+02  -.687962660020E+02
+  -.687962456634E+02  -.687962279573E+02  -.687962129321E+02  -.687962006431E+02  -.687961911532E+02
+  -.687961845329E+02  -.687961808611E+02  -.687961802249E+02  -.687961827209E+02  -.687961884551E+02
+  -.687961975430E+02  -.687962101115E+02  -.687962262982E+02  -.687962462524E+02  -.687962701361E+02
+  -.687962981243E+02  -.687963304059E+02  -.687963671847E+02  -.687964086798E+02  -.687964551267E+02
+  -.687965067786E+02  -.687965639071E+02  -.687966268030E+02  -.687966957780E+02  -.687967711656E+02
+  -.687968533224E+02  -.687969426296E+02  -.687970394944E+02  -.687971443510E+02  -.687972576630E+02
+  -.687973799246E+02  -.687975116623E+02  -.687976534371E+02  -.687978058460E+02  -.687979695244E+02
+  -.687981451479E+02  -.687983334348E+02  -.687985351483E+02  -.687987510986E+02  -.687989821460E+02
+  -.687992292029E+02  -.687994932367E+02  -.687997752724E+02  -.688000763957E+02  -.688003977551E+02
+  -.688007405658E+02  -.688011061119E+02  -.688014957490E+02  -.688019109084E+02  -.688023530983E+02
+  -.688028239076E+02  -.688033250079E+02  -.688038581565E+02  -.688044251982E+02  -.688050280672E+02
+  -.688056687886E+02  -.688063494797E+02  -.688070723499E+02  -.688078397012E+02  -.688086539268E+02
+  -.688095175087E+02  -.688104330157E+02  -.688114030976E+02  -.688124304797E+02  -.688135179554E+02
+  -.688146683756E+02  -.688158846362E+02  -.688171696637E+02  -.688185263960E+02  -.688199577609E+02
+  -.688214666496E+02  -.688230558862E+02  -.688247281917E+02  -.688264861406E+02  -.688283321139E+02
+  -.688302682412E+02  -.688322963363E+02  -.688344178226E+02  -.688366336488E+02  -.688389441915E+02
+  -.688413491467E+02  -.688438474061E+02  -.688464369177E+02  -.688491145307E+02  -.688518758209E+02
+  -.688547148965E+02  -.688576241830E+02  -.688605941845E+02  -.688636132213E+02  -.688666671413E+02
+  -.688697390053E+02  -.688728087433E+02  -.688758527834E+02  -.688788436509E+02  -.688817495389E+02
+  -.688845338502E+02  -.688871547130E+02  -.688895644711E+02  -.688917091518E+02  -.688935279164E+02
+  -.688949524978E+02  -.688959066317E+02  -.688963054887E+02  -.688960551185E+02  -.688950519153E+02
+  -.688931821176E+02  -.688903213577E+02  -.688863342755E+02  -.688810742143E+02  -.688743830182E+02
+  -.688660909491E+02  -.688560167451E+02  -.688439678398E+02  -.688297407627E+02  -.688131217405E+02
+  -.687938875149E+02  -.687718063933E+02  -.687466395421E+02  -.687181425318E+02  -.686860671328E+02
+  -.686501633622E+02  -.686101817683E+02  -.685658759377E+02  -.685170052013E+02  -.684633375073E+02
+  -.684046524231E+02  -.683407442210E+02  -.682714249958E+02  -.681965277544E+02  -.681159094160E+02
+  -.680294536485E+02  -.679370734684E+02  -.678387135183E+02  -.677343519329E+02  -.676240016930E+02
+  -.675077113559E+02  -.673855650367E+02  -.672576814981E+02  -.671242121853E+02  -.669853380203E+02
+  -.668412647466E+02  -.666922165917E+02  -.665384279966E+02  -.663801331537E+02  -.662175531029E+02
+  -.660508801689E+02  -.658802595975E+02  -.657057683725E+02  -.655273913819E+02  -.653449953790E+02
+  -.651583015419E+02  -.649668578963E+02  -.647700134098E+02  -.645668961557E+02  -.643563985316E+02
+  -.641371729807E+02  -.639076418840E+02  -.636660250861E+02  -.634103877206E+02  -.631387094822E+02
+  -.628489742078E+02  -.625392757157E+02  -.622079326486E+02  -.618536021106E+02  -.614753798876E+02
+  -.610728746490E+02  -.606462452159E+02  -.601961937686E+02  -.597239132786E+02  -.592309935141E+02
+  -.587192955012E+02  -.581908081958E+02  -.576475026417E+02  -.570911979412E+02  -.565234504120E+02
+  -.559454731997E+02  -.553580892927E+02  -.547617171356E+02  -.541563853081E+02  -.535413959031E+02
+  -.529440596403E+02  -.523371726302E+02  -.517437282672E+02  -.511316376789E+02  -.504857670576E+02
+  -.498097462626E+02  -.491001980528E+02  -.483609990814E+02
+ core charge-density (pseudized)
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00
+ pseudo wavefunction
+   .717870223758E-04   .741213572537E-04   .765315988782E-04   .790202155471E-04   .815897558215E-04
+   .842428511349E-04   .869822184888E-04   .898106632347E-04   .927310819471E-04   .957464653899E-04
+   .988599015791E-04   .102074578945E-03   .105393789599E-03   .108820932702E-03   .112359517948E-03
+   .116013169158E-03   .119785627989E-03   .123680757769E-03   .127702547451E-03   .131855115698E-03
+   .136142715104E-03   .140569736545E-03   .145140713676E-03   .149860327579E-03   .154733411549E-03
+   .159764956050E-03   .164960113823E-03   .170324205164E-03   .175862723369E-03   .181581340366E-03
+   .187485912517E-03   .193582486619E-03   .199877306096E-03   .206376817394E-03   .213087676578E-03
+   .220016756154E-03   .227171152104E-03   .234558191154E-03   .242185438276E-03   .250060704436E-03
+   .258192054594E-03   .266587815961E-03   .275256586530E-03   .284207243875E-03   .293448954252E-03
+   .302991181977E-03   .312843699121E-03   .323016595522E-03   .333520289111E-03   .344365536584E-03
+   .355563444420E-03   .367125480251E-03   .379063484606E-03   .391389683042E-03   .404116698657E-03
+   .417257565021E-03   .430825739524E-03   .444835117154E-03   .459300044732E-03   .474235335597E-03
+   .489656284785E-03   .505578684683E-03   .522018841210E-03   .538993590510E-03   .556520316196E-03
+   .574616967150E-03   .593302075909E-03   .612594777639E-03   .632514829730E-03   .653082632036E-03
+   .674319247758E-03   .696246425021E-03   .718886619138E-03   .742263015616E-03   .766399553891E-03
+   .791320951847E-03   .817052731131E-03   .843621243284E-03   .871053696732E-03   .899378184647E-03
+   .928623713715E-03   .958820233842E-03   .989998668827E-03   .102219094803E-02   .105543003905E-02
+   .108974998154E-02   .112518592198E-02   .116177414977E-02   .119955213430E-02   .123855856337E-02
+   .127883338282E-02   .132041783739E-02   .136335451299E-02   .140768738032E-02   .145346183985E-02
+   .150072476836E-02   .154952456692E-02   .159991121047E-02   .165193629897E-02   .170565311025E-02
+   .176111665459E-02   .181838373103E-02   .187751298552E-02   .193856497102E-02   .200160220943E-02
+   .206668925571E-02   .213389276389E-02   .220328155539E-02   .227492668944E-02   .234890153590E-02
+   .242528185032E-02   .250414585157E-02   .258557430190E-02   .266965058962E-02   .275646081454E-02
+   .284609387606E-02   .293864156425E-02   .303419865378E-02   .313286300101E-02   .323473564415E-02
+   .333992090671E-02   .344852650429E-02   .356066365493E-02   .367644719288E-02   .379599568624E-02
+   .391943155828E-02   .404688121284E-02   .417847516365E-02   .431434816801E-02   .445463936466E-02
+   .459949241628E-02   .474905565649E-02   .490348224167E-02   .506293030778E-02   .522756313214E-02
+   .539754930056E-02   .557306287991E-02   .575428359618E-02   .594139701845E-02   .613459474876E-02
+   .633407461814E-02   .654004088904E-02   .675270446428E-02   .697228310286E-02   .719900164264E-02
+   .743309223039E-02   .767479455916E-02   .792435611347E-02   .818203242234E-02   .844808732062E-02
+   .872279321870E-02   .900643138100E-02   .929929221346E-02   .960167556038E-02   .991389101080E-02
+   .102362582149E-01   .105691072103E-01   .109127787597E-01   .112676246982E-01   .116340082934E-01
+   .120123046152E-01   .124029009196E-01   .128061970435E-01   .132226058123E-01   .136525534616E-01
+   .140964800712E-01   .145548400143E-01   .150281024199E-01   .155167516514E-01   .160212877994E-01
+   .165422271909E-01   .170801029149E-01   .176354653644E-01   .182088827962E-01   .188009419083E-01
+   .194122484359E-01   .200434277663E-01   .206951255733E-01   .213680084719E-01   .220627646942E-01
+   .227801047854E-01   .235207623239E-01   .242854946618E-01   .250750836907E-01   .258903366305E-01
+   .267320868433E-01   .276011946728E-01   .284985483096E-01   .294250646840E-01   .303816903863E-01
+   .313694026150E-01   .323892101552E-01   .334421543865E-01   .345293103217E-01   .356517876776E-01
+   .368107319777E-01   .380073256888E-01   .392427893909E-01   .405183829834E-01   .418354069253E-01
+   .431952035137E-01   .445991581984E-01   .460487009354E-01   .475453075791E-01   .490905013146E-01
+   .506858541297E-01   .523329883290E-01   .540335780891E-01   .557893510568E-01   .576020899897E-01
+   .594736344407E-01   .614058824867E-01   .634007925008E-01   .654603849697E-01   .675867443550E-01
+   .697820209999E-01   .720484330798E-01   .743882685971E-01   .768038874195E-01   .792977233616E-01
+   .818722863080E-01   .845301643767E-01   .872740261228E-01   .901066227780E-01   .930307905261E-01
+   .960494528102E-01   .991656226692E-01   .102382405100E+00   .105702999438E+00   .109130701763E+00
+   .112668907299E+00   .116321112836E+00   .120090919136E+00   .123982033332E+00   .127998271308E+00
+   .132143560039E+00   .136421939896E+00   .140837566886E+00   .145394714824E+00   .150097777413E+00
+   .154951270210E+00   .159959832471E+00   .165128228827E+00   .170461350794E+00   .175964218054E+00
+   .181641979506E+00   .187499914020E+00   .193543430884E+00   .199778069861E+00   .206209500841E+00
+   .212843523008E+00   .219686063465E+00   .226743175253E+00   .234021034673E+00   .241525937847E+00
+   .249264296391E+00   .257242632131E+00   .265467570712E+00   .273945833995E+00   .282684231081E+00
+   .291689647822E+00   .300969034623E+00   .310529392355E+00   .320377756172E+00   .330521176968E+00
+   .340966700246E+00   .351721342092E+00   .362792061937E+00   .374185731763E+00   .385909101372E+00
+   .397968759274E+00   .410371088750E+00   .423122218558E+00   .436227967737E+00   .449693783864E+00
+   .463524674112E+00   .477725128349E+00   .492299033480E+00   .507249578134E+00   .522579146740E+00
+   .538289201953E+00   .554380154284E+00   .570851217722E+00   .587700250025E+00   .604923576284E+00
+   .622515794241E+00   .640469559787E+00   .658775350959E+00   .677421208693E+00   .696392452526E+00
+   .715671369429E+00   .735236873906E+00   .755064137588E+00   .775124186577E+00   .795383465008E+00
+   .815803363485E+00   .836339711416E+00   .856942232728E+00   .877553965049E+00   .898110643238E+00
+   .918540049169E+00   .938761330896E+00   .958684295874E+00   .978208684778E+00   .997223434628E+00
+   .101560594258E+01   .103322134468E+01   .104992182737E+01   .106554599325E+01   .107991830700E+01
+   .109284865167E+01   .110413203038E+01   .111354845314E+01   .112086305318E+01   .112582648089E+01
+   .112815826033E+01   .112766526986E+01   .112429219396E+01   .111806470671E+01   .110902663553E+01
+   .109723971270E+01   .108278313973E+01   .106575297316E+01
+ ae wavefunction
+  -.435742517947E-03  -.449893177036E-03  -.464503226381E-03  -.479587570063E-03  -.495161595061E-03
+  -.511241186854E-03  -.527842745526E-03  -.544983202382E-03  -.562680037106E-03  -.580951295461E-03
+  -.599815607567E-03  -.619292206750E-03  -.639400949017E-03  -.660162333128E-03  -.681597521339E-03
+  -.703728360783E-03  -.726577405556E-03  -.750167939497E-03  -.774523999699E-03  -.799670400771E-03
+  -.825632759880E-03  -.852437522580E-03  -.880111989478E-03  -.908684343740E-03  -.938183679480E-03
+  -.968640031044E-03  -.100008440323E-02  -.103254880249E-02  -.106606626906E-02  -.110067091020E-02
+  -.113639793438E-02  -.117328368669E-02  -.121136568521E-02  -.125068265865E-02  -.129127458513E-02
+  -.133318273222E-02  -.137644969815E-02  -.142111945447E-02  -.146723738990E-02  -.151485035564E-02
+  -.156400671213E-02  -.161475637720E-02  -.166715087575E-02  -.172124339103E-02  -.177708881751E-02
+  -.183474381533E-02  -.189426686652E-02  -.195571833299E-02  -.201916051623E-02  -.208465771892E-02
+  -.215227630849E-02  -.222208478256E-02  -.229415383644E-02  -.236855643275E-02  -.244536787308E-02
+  -.252466587200E-02  -.260653063319E-02  -.269104492797E-02  -.277829417628E-02  -.286836652997E-02
+  -.296135295881E-02  -.305734733898E-02  -.315644654424E-02  -.325875053997E-02  -.336436247986E-02
+  -.347338880566E-02  -.358593934981E-02  -.370212744121E-02  -.382207001408E-02  -.394588772003E-02
+  -.407370504355E-02  -.420565042075E-02  -.434185636172E-02  -.448245957638E-02  -.462760110401E-02
+  -.477742644658E-02  -.493208570585E-02  -.509173372452E-02  -.525653023127E-02  -.542663999011E-02
+  -.560223295378E-02  -.578348442162E-02  -.597057520176E-02  -.616369177789E-02  -.636302648065E-02
+  -.656877766365E-02  -.678114988445E-02  -.700035409032E-02  -.722660780908E-02  -.746013534500E-02
+  -.770116797996E-02  -.794994417981E-02  -.820670980623E-02  -.847171833394E-02  -.874523107357E-02
+  -.902751740010E-02  -.931885498706E-02  -.961953004655E-02  -.992983757504E-02  -.102500816052E-01
+  -.105805754637E-01  -.109216420351E-01  -.112736140315E-01  -.116368342691E-01  -.120116559500E-01
+  -.123984429509E-01  -.127975701174E-01  -.132094235654E-01  -.136344009872E-01  -.140729119656E-01
+  -.145253782923E-01  -.149922342937E-01  -.154739271620E-01  -.159709172922E-01  -.164836786248E-01
+  -.170126989948E-01  -.175584804848E-01  -.181215397845E-01  -.187024085548E-01  -.193016337964E-01
+  -.199197782231E-01  -.205574206391E-01  -.212151563204E-01  -.218935973989E-01  -.225933732497E-01
+  -.233151308810E-01  -.240595353255E-01  -.248272700327E-01  -.256190372626E-01  -.264355584778E-01
+  -.272775747364E-01  -.281458470807E-01  -.290411569250E-01  -.299643064382E-01  -.309161189217E-01
+  -.318974391810E-01  -.329091338894E-01  -.339520919425E-01  -.350272248024E-01  -.361354668290E-01
+  -.372777755970E-01  -.384551321973E-01  -.396685415195E-01  -.409190325138E-01  -.422076584303E-01
+  -.435354970318E-01  -.449036507795E-01  -.463132469854E-01  -.477654379319E-01  -.492614009518E-01
+  -.508023384670E-01  -.523894779821E-01  -.540240720271E-01  -.557073980463E-01  -.574407582283E-01
+  -.592254792716E-01  -.610629120806E-01  -.629544313867E-01  -.649014352884E-01  -.669053447033E-01
+  -.689676027260E-01  -.710896738847E-01  -.732730432877E-01  -.755192156539E-01  -.778297142169E-01
+  -.802060794943E-01  -.826498679133E-01  -.851626502822E-01  -.877460100970E-01  -.904015416732E-01
+  -.931308480896E-01  -.959355389333E-01  -.988172278336E-01  -.101777529769E+00  -.104818058135E+00
+  -.107940421563E+00  -.111146220461E+00  -.114437043280E+00  -.117814462472E+00  -.121280030132E+00
+  -.124835273308E+00  -.128481688949E+00  -.132220738490E+00  -.136053842035E+00  -.139982372135E+00
+  -.144007647128E+00  -.148130924032E+00  -.152353390950E+00  -.156676158992E+00  -.161100253670E+00
+  -.165626605748E+00  -.170256041537E+00  -.174989272593E+00  -.179826884815E+00  -.184769326900E+00
+  -.189816898153E+00  -.194969735618E+00  -.200227800511E+00  -.205590863939E+00  -.211058491884E+00
+  -.216630029429E+00  -.222304584222E+00  -.228081009153E+00  -.233957884239E+00  -.239933497701E+00
+  -.246005826237E+00  -.252172514476E+00  -.258430853626E+00  -.264777759312E+00  -.271209748616E+00
+  -.277722916340E+00  -.284312910504E+00  -.290974907116E+00  -.297703584239E+00  -.304493095405E+00
+  -.311337042424E+00  -.318228447646E+00  -.325159725750E+00  -.332122655133E+00  -.339108349001E+00
+  -.346107226258E+00  -.353108982305E+00  -.360102559894E+00  -.367076120170E+00  -.374017014061E+00
+  -.380911754200E+00  -.387745987563E+00  -.394504469032E+00  -.401171036125E+00  -.407728585119E+00
+  -.414159048843E+00  -.420443376428E+00  -.426561515308E+00  -.432492395804E+00  -.438213918634E+00
+  -.443702945710E+00  -.448935294606E+00  -.453885737104E+00  -.458528002233E+00  -.462834784249E+00
+  -.466777755996E+00  -.470327588142E+00  -.473453974758E+00  -.476125665740E+00  -.478310506592E+00
+  -.479975486076E+00  -.481086792249E+00  -.481609877413E+00  -.481509532496E+00  -.480749971371E+00
+  -.479294925619E+00  -.477107750216E+00  -.474151540602E+00  -.470389261561E+00  -.465783888302E+00
+  -.460298560072E+00  -.453896746594E+00  -.446542427526E+00  -.438200285079E+00  -.428835909804E+00
+  -.418416019475E+00  -.406908690835E+00  -.394283603848E+00  -.380512297898E+00  -.365568439236E+00
+  -.349428098716E+00  -.332070038708E+00  -.313476007769E+00  -.293631041509E+00  -.272523767779E+00
+  -.250146714166E+00  -.226496615562E+00  -.201574719441E+00  -.175387086446E+00  -.147944883820E+00
+  -.119264669340E+00  -.893686635019E-01  -.582850078665E-01  -.260480075826E-01   .730164389810E-02
+   .417166601866E-01   .771429803763E-01   .113519614909E+00   .150778525779E+00   .188844552184E+00
+   .227635399600E+00   .267061721085E+00   .307027335378E+00   .347429645854E+00   .388160339023E+00
+   .429106427031E+00   .470151609649E+00   .511177717128E+00   .552065672491E+00   .592695180096E+00
+   .632942588996E+00   .672677320253E+00   .711758452074E+00   .750033482899E+00   .787340238686E+00
+   .823511018127E+00   .858377021983E+00   .891771646742E+00   .923532423259E+00   .953502106838E+00
+   .981529483979E+00   .100747023338E+01   .103118796300E+01   .105255541998E+01   .107145581493E+01
+   .108778418556E+01   .110144872741E+01   .111237203157E+01   .112049218446E+01   .112576369931E+01
+   .112815826033E+01   .112766526986E+01   .112429219396E+01   .111806470671E+01   .110902663553E+01
+   .109723971270E+01   .108278313973E+01   .106575297316E+01
+ pseudo wavefunction
+   .343855759999E-05   .355037091431E-05   .366582011861E-05   .378502344294E-05   .390810296192E-05
+   .403518471972E-05   .416639885916E-05   .430187975496E-05   .444176615139E-05   .458620130432E-05
+   .473533312795E-05   .488931434630E-05   .504830264954E-05   .521246085559E-05   .538195707675E-05
+   .555696489195E-05   .573766352444E-05   .592423802539E-05   .611687946334E-05   .631578511993E-05
+   .652115869188E-05   .673321049961E-05   .695215770267E-05   .717822452205E-05   .741164246986E-05
+   .765265058641E-05   .790149568498E-05   .815843260462E-05   .842372447107E-05   .869764296629E-05
+   .898046860662E-05   .927249103011E-05   .957400929309E-05   .988533217644E-05   .102067785018E-04
+   .105386774582E-04   .108813689389E-04   .112352038896E-04   .116005446680E-04   .119777654148E-04
+   .123672524366E-04   .127694046018E-04   .131846337490E-04   .136133651087E-04   .140560377388E-04
+   .145131049742E-04   .149850348913E-04   .154723107868E-04   .159754316731E-04   .164949127894E-04
+   .170312861287E-04   .175851009835E-04   .181569245074E-04   .187473422966E-04   .193569589894E-04
+   .199863988852E-04   .206363065839E-04   .213073476463E-04   .220002092752E-04   .227156010196E-04
+   .234542555009E-04   .242169291636E-04   .250044030495E-04   .258174835978E-04   .266570034709E-04
+   .275238224070E-04   .284188281007E-04   .293429371118E-04   .302970958040E-04   .312822813141E-04
+   .322995025525E-04   .333498012366E-04   .344342529572E-04   .355539682800E-04   .367100938833E-04
+   .379038137315E-04   .391363502881E-04   .404089657674E-04   .417229634265E-04   .430796889008E-04
+   .444805315809E-04   .459269260360E-04   .474203534828E-04   .489623433018E-04   .505544746039E-04
+   .521983778470E-04   .538957365056E-04   .556482887945E-04   .574578294490E-04   .593262115619E-04
+   .612553484816E-04   .632472157708E-04   .653038532291E-04   .674273669822E-04   .696199316373E-04
+   .718837925106E-04   .742212679252E-04   .766347515854E-04   .791267150267E-04   .816997101468E-04
+   .843563718176E-04   .870994205827E-04   .899316654427E-04   .928560067304E-04   .958754390803E-04
+   .989930544934E-04   .102212045502E-03   .105535708440E-03   .108967446812E-03   .112510774780E-03
+   .116169320763E-03   .119946831142E-03   .123847174103E-03   .127874343589E-03   .132032463391E-03
+   .136325791364E-03   .140758723789E-03   .145335799862E-03   .150061706349E-03   .154941282370E-03
+   .159979524357E-03   .165181591158E-03   .170552809320E-03   .176098678529E-03   .181824877239E-03
+   .187737268477E-03   .193841905835E-03   .200145039660E-03   .206653123444E-03   .213372820413E-03
+   .220311010347E-03   .227474796596E-03   .234871513348E-03   .242508733111E-03   .250394274453E-03
+   .258536209979E-03   .266942874576E-03   .275622873916E-03   .284585093239E-03   .293838706418E-03
+   .303393185310E-03   .313258309418E-03   .323444175857E-03   .333961209642E-03   .344820174308E-03
+   .356032182868E-03   .367608709128E-03   .379561599355E-03   .391903084331E-03   .404645791781E-03
+   .417802759207E-03   .431387447123E-03   .445413752722E-03   .459896023967E-03   .474849074139E-03
+   .490288196839E-03   .506229181472E-03   .522688329216E-03   .539682469498E-03   .557228976984E-03
+   .575345789108E-03   .594051424152E-03   .613364999882E-03   .633306252776E-03   .653895557846E-03
+   .675153949069E-03   .697103140461E-03   .719765547788E-03   .743164310953E-03   .767323317057E-03
+   .792267224172E-03   .818021485824E-03   .844612376222E-03   .872067016233E-03   .900413400142E-03
+   .929680423194E-03   .959897909947E-03   .991096643458E-03   .102330839531E-02   .105656595649E-02
+   .109090316917E-02   .112635495935E-02   .116295737043E-02   .120074759770E-02   .123976402378E-02
+   .128004625494E-02   .132163515849E-02   .136457290103E-02   .140890298774E-02   .145467030259E-02
+   .150192114958E-02   .155070329491E-02   .160106601018E-02   .165306011643E-02   .170673802930E-02
+   .176215380493E-02   .181936318694E-02   .187842365412E-02   .193939446909E-02   .200233672767E-02
+   .206731340898E-02   .213438942628E-02   .220363167832E-02   .227510910123E-02   .234889272086E-02
+   .242505570531E-02   .250367341765E-02   .258482346872E-02   .266858576958E-02   .275504258375E-02
+   .284427857874E-02   .293638087674E-02   .303143910420E-02   .312954543990E-02   .323079466121E-02
+   .333528418807E-02   .344311412431E-02   .355438729574E-02   .366920928440E-02   .378768845849E-02
+   .390993599701E-02   .403606590856E-02   .416619504321E-02   .430044309660E-02   .443893260498E-02
+   .458178893018E-02   .472914023288E-02   .488111743283E-02   .503785415421E-02   .519948665428E-02
+   .536615373310E-02   .553799662213E-02   .571515884885E-02   .589778607469E-02   .608602590282E-02
+   .628002765238E-02   .647994209485E-02   .668592114830E-02   .689811752438E-02   .711668432243E-02
+   .734177456465E-02   .757354066520E-02   .781213382564E-02   .805770334804E-02   .831039585610E-02
+   .857035441362E-02   .883771752832E-02   .911261802757E-02   .939518179119E-02   .968552632449E-02
+   .998375915303E-02   .102899760181E-01   .106042588496E-01   .109266734901E-01   .112572671412E-01
+   .115960654985E-01   .119430695398E-01   .122982519240E-01   .126615529556E-01   .130328760625E-01
+   .134120827296E-01   .137989868226E-01   .141933482297E-01   .145948657392E-01   .150031690611E-01
+   .154178098909E-01   .158382518989E-01   .162638595185E-01   .166938853859E-01   .171274562738E-01
+   .175635573352E-01   .180010144584E-01   .184384745075E-01   .188743831996E-01   .193069603411E-01
+   .197341721149E-01   .201537000800E-01   .205629065081E-01   .209587956454E-01   .213379704514E-01
+   .216965843224E-01   .220302872721E-01   .223341659983E-01   .226026772302E-01   .228295737141E-01
+   .230078221730E-01   .231295125546E-01   .231857578830E-01   .231665840450E-01   .230608088842E-01
+   .228559100556E-01   .225378812130E-01   .220910762784E-01   .214980417913E-01   .207393376687E-01
+   .197933471468E-01   .186360772443E-01   .172409518109E-01   .155786001262E-01   .136166451323E-01
+   .113194967438E-01   .864815731154E-02   .556004826093E-02   .200886919547E-02  -.205549662129E-02
+  -.668701351940E-02  -.119434412162E-01  -.178861753538E-01  -.245799531729E-01  -.320923928314E-01
+  -.404933311070E-01  -.498539208502E-01  -.602454469396E-01  -.717378181025E-01  -.843976923881E-01
+  -.982572463524E-01  -.113431938710E+00  -.129962815882E+00  -.147925476302E+00  -.167397789939E+00
+  -.188460087115E+00  -.211195414457E+00  -.235689872331E+00
+ ae wavefunction
+  -.655609122826E-05  -.676899905707E-05  -.698881876848E-05  -.721577460561E-05  -.745009807708E-05
+  -.769202819182E-05  -.794181170128E-05  -.819970334956E-05  -.846596613143E-05  -.874087155877E-05
+  -.902469993540E-05  -.931774064088E-05  -.962029242330E-05  -.993266370149E-05  -.102551728769E-04
+  -.105881486555E-04  -.109319303798E-04  -.112868683719E-04  -.116533242870E-04  -.120316714784E-04
+  -.124222953746E-04  -.128255938674E-04  -.132419777136E-04  -.136718709483E-04  -.141157113126E-04
+  -.145739506937E-04  -.150470555800E-04  -.155355075299E-04  -.160398036561E-04  -.165604571246E-04
+  -.170979976704E-04  -.176529721286E-04  -.182259449831E-04  -.188174989321E-04  -.194282354715E-04
+  -.200587754973E-04  -.207097599266E-04  -.213818503374E-04  -.220757296304E-04  -.227921027095E-04
+  -.235316971854E-04  -.242952641000E-04  -.250835786742E-04  -.258974410793E-04  -.267376772313E-04
+  -.276051396118E-04  -.285007081127E-04  -.294252909085E-04  -.303798253547E-04  -.313652789153E-04
+  -.323826501176E-04  -.334329695376E-04  -.345173008153E-04  -.356367417016E-04  -.367924251370E-04
+  -.379855203641E-04  -.392172340733E-04  -.404888115843E-04  -.418015380630E-04  -.431567397764E-04
+  -.445557853843E-04  -.460000872716E-04  -.474911029196E-04  -.490303363191E-04  -.506193394267E-04
+  -.522597136637E-04  -.539531114602E-04  -.557012378455E-04  -.575058520856E-04  -.593687693689E-04
+  -.612918625421E-04  -.632770638971E-04  -.653263670098E-04  -.674418286331E-04  -.696255706450E-04
+  -.718797820523E-04  -.742067210534E-04  -.766087171588E-04  -.790881733733E-04  -.816475684398E-04
+  -.842894591464E-04  -.870164826988E-04  -.898313591585E-04  -.927368939490E-04  -.957359804318E-04
+  -.988316025516E-04  -.102026837556E-03  -.105324858785E-03  -.108728938541E-03  -.112242451028E-03
+  -.115868875379E-03  -.119611798746E-03  -.123474919492E-03  -.127462050444E-03  -.131577122245E-03
+  -.135824186777E-03  -.140207420684E-03  -.144731128964E-03  -.149399748666E-03  -.154217852659E-03
+  -.159190153505E-03  -.164321507411E-03  -.169616918274E-03  -.175081541821E-03  -.180720689835E-03
+  -.186539834474E-03  -.192544612684E-03  -.198740830698E-03  -.205134468627E-03  -.211731685146E-03
+  -.218538822262E-03  -.225562410173E-03  -.232809172212E-03  -.240286029877E-03  -.248000107945E-03
+  -.255958739656E-03  -.264169471988E-03  -.272640070992E-03  -.281378527207E-03  -.290393061126E-03
+  -.299692128739E-03  -.309284427116E-03  -.319178900041E-03  -.329384743692E-03  -.339911412345E-03
+  -.350768624109E-03  -.361966366669E-03  -.373514903040E-03  -.385424777308E-03  -.397706820349E-03
+  -.410372155518E-03  -.423432204288E-03  -.436898691816E-03  -.450783652438E-03  -.465099435041E-03
+  -.479858708330E-03  -.495074465933E-03  -.510760031337E-03  -.526929062624E-03  -.543595556979E-03
+  -.560773854929E-03  -.578478644299E-03  -.596724963824E-03  -.615528206394E-03  -.634904121890E-03
+  -.654868819544E-03  -.675438769809E-03  -.696630805649E-03  -.718462123219E-03  -.740950281862E-03
+  -.764113203357E-03  -.787969170353E-03  -.812536823912E-03  -.837835160080E-03  -.863883525392E-03
+  -.890701611245E-03  -.918309447002E-03  -.946727391760E-03  -.975976124644E-03  -.100607663352E-02
+  -.103705020200E-02  -.106891839458E-02  -.110170303984E-02  -.113542621144E-02  -.117011020683E-02
+  -.120577752349E-02  -.124245083250E-02  -.128015294925E-02  -.131890680108E-02  -.135873539162E-02
+  -.139966176162E-02  -.144170894603E-02  -.148489992701E-02  -.152925758270E-02  -.157480463127E-02
+  -.162156357022E-02  -.166955661033E-02  -.171880560409E-02  -.176933196815E-02  -.182115659954E-02
+  -.187429978504E-02  -.192878110354E-02  -.198461932073E-02  -.204183227580E-02  -.210043675960E-02
+  -.216044838374E-02  -.222188144014E-02  -.228474875047E-02  -.234906150491E-02  -.241482908954E-02
+  -.248205890193E-02  -.255075615403E-02  -.262092366194E-02  -.269256162168E-02  -.276566737035E-02
+  -.284023513193E-02  -.291625574691E-02  -.299371638508E-02  -.307260024061E-02  -.315288620865E-02
+  -.323454854268E-02  -.331755649172E-02  -.340187391669E-02  -.348745888500E-02  -.357426324264E-02
+  -.366223216298E-02  -.375130367145E-02  -.384140814546E-02  -.393246778878E-02  -.402439607977E-02
+  -.411709719292E-02  -.421046539309E-02  -.430438440215E-02  -.439872673758E-02  -.449335302300E-02
+  -.458811127043E-02  -.468283613456E-02  -.477734813917E-02  -.487145287652E-02  -.496494018016E-02
+  -.505758327255E-02  -.514913788875E-02  -.523934137790E-02  -.532791178486E-02  -.541454691445E-02
+  -.549892338155E-02  -.558069565077E-02  -.565949507000E-02  -.573492890299E-02  -.580657936668E-02
+  -.587400268005E-02  -.593672813220E-02  -.599425717818E-02  -.604606257264E-02  -.609158755219E-02
+  -.613024507917E-02  -.616141716066E-02  -.618445425853E-02  -.619867480789E-02  -.620336486339E-02
+  -.619777789497E-02  -.618113475679E-02  -.615262385580E-02  -.611140154893E-02  -.605659280069E-02
+  -.598729213647E-02  -.590256492957E-02  -.580144906401E-02  -.568295701860E-02  -.554607842196E-02
+  -.538978313216E-02  -.521302489904E-02  -.501474567204E-02  -.479388062066E-02  -.454936393997E-02
+  -.428013551813E-02  -.398514854792E-02  -.366337816942E-02  -.331383123541E-02  -.293555729625E-02
+  -.252766090487E-02  -.208931534729E-02  -.161977790723E-02  -.111840677698E-02  -.584679729454E-03
+  -.182146683025E-04   .581207825300E-03   .121361982960E-02   .187883918292E-02   .257644022787E-02
+   .330572207936E-02   .406567429712E-02   .485493984432E-02   .567177521530E-02   .651400761775E-02
+   .737898909896E-02   .826354751388E-02   .916393424625E-02   .100757686173E-01   .109939789522E-01
+   .119127403294E-01   .128254091164E-01   .137244545094E-01   .146013874512E-01   .154466875247E-01
+   .162497287251E-01   .169987054222E-01   .176805603012E-01   .182809164509E-01   .187840155702E-01
+   .191726625170E-01   .194281718035E-01   .195303036636E-01   .194571691115E-01   .191850840508E-01
+   .186883725185E-01   .179391559182E-01   .169071927011E-01   .155598196063E-01   .138619906720E-01
+   .117763573181E-01   .926332827185E-02   .628108658620E-02   .278557796959E-02  -.126950532033E-02
+  -.593272908570E-02  -.112549051725E-01  -.172890643319E-01  -.240904181795E-01  -.317163150650E-01
+  -.402261943607E-01  -.496815431480E-01  -.601458588641E-01  -.716846213574E-01  -.843652780355E-01
+  -.982572463524E-01  -.113431938710E+00  -.129962815882E+00  -.147925476302E+00  -.167397789939E+00
+  -.188460087115E+00  -.211195414457E+00  -.235689872331E+00
+ pseudo wavefunction
+   .563540859347E-08   .600786626449E-08   .640494055630E-08   .682825844040E-08   .727955441873E-08
+   .776067763064E-08   .827359942951E-08   .882042146020E-08   .940338427033E-08   .100248764907E-07
+   .106874446223E-07   .113938034707E-07   .121468472693E-07   .129496615384E-07   .138055357278E-07
+   .147179766947E-07   .156907230730E-07   .167277605920E-07   .178333384073E-07   .190119865113E-07
+   .202685342946E-07   .216081303335E-07   .230362634864E-07   .245587853833E-07   .261819344024E-07
+   .279123612313E-07   .297571561175E-07   .317238779199E-07   .338205850803E-07   .360558686425E-07
+   .384388874527E-07   .409794056871E-07   .436878328599E-07   .465752664748E-07   .496535374959E-07
+   .529352588242E-07   .564338769774E-07   .601637271855E-07   .641400921283E-07   .683792645541E-07
+   .728986140379E-07   .777166581514E-07   .828531383365E-07   .883291007943E-07   .941669827191E-07
+   .100390704233E-06   .107025766396E-06   .114099355693E-06   .121640455429E-06   .129679964484E-06
+   .138250823918E-06   .147388151945E-06   .157129387824E-06   .167514445263E-06   .178585875960E-06
+   .190389043959E-06   .202972311517E-06   .216387237268E-06   .230688787478E-06   .245935561260E-06
+   .262190030684E-06   .279518796742E-06   .297992862244E-06   .317687922738E-06   .338684676672E-06
+   .361069156038E-06   .384933078884E-06   .410374225117E-06   .437496837143E-06   .466412046989E-06
+   .497238331653E-06   .530101998551E-06   .565137703044E-06   .602489000172E-06   .642308932854E-06
+   .684760658963E-06   .730018119842E-06   .778266753009E-06   .829704251961E-06   .884541376196E-06
+   .943002814778E-06   .100532810696E-05   .107177262367E-05   .114260861386E-05   .121812631999E-05
+   .129863516728E-05   .138446503151E-05   .147596759065E-05   .157351776580E-05   .167751525736E-05
+   .178838618277E-05   .190658482240E-05   .203259548094E-05   .216693447172E-05   .231015223223E-05
+   .246283557942E-05   .262561011405E-05   .279914278403E-05   .298414461703E-05   .318137363380E-05
+   .339163795400E-05   .361579910726E-05   .385477556313E-05   .410954649424E-05   .438115578827E-05
+   .467071632493E-05   .497941453575E-05   .530851526509E-05   .565936695252E-05   .603340715757E-05
+   .643216844969E-05   .685728468745E-05   .731049771266E-05   .779366448694E-05   .830876469991E-05
+   .885790888011E-05   .944334704203E-05   .100674779045E-04   .107328587184E-04   .114422157435E-04
+   .121984554180E-04   .130046762663E-04   .138641815928E-04   .147804930159E-04   .157573648950E-04
+   .167987997114E-04   .179090644660E-04   .190927081599E-04   .203545804298E-04   .216998514160E-04
+   .231340329418E-04   .246630010932E-04   .262930202900E-04   .280307689477E-04   .298833668347E-04
+   .318584042369E-04   .339639730489E-04   .362086999200E-04   .386017815894E-04   .411530225552E-04
+   .438728752333E-04   .467724827673E-04   .498637246677E-04   .531592654645E-04   .566726065746E-04
+   .604181415935E-04   .644112152397E-04   .686681861917E-04   .732064940741E-04   .780447308677E-04
+   .832027170341E-04   .887015826677E-04   .945638540041E-04   .100813545640E-03   .107476258843E-03
+   .114579286345E-03   .122151724057E-03   .130224590157E-03   .138830952031E-03   .148006061597E-03
+   .157787499549E-03   .168215329124E-03   .179332260004E-03   .191183823034E-03   .203818556458E-03
+   .217288204431E-03   .231647928618E-03   .246956533745E-03   .263276708003E-03   .280675279299E-03
+   .299223488379E-03   .318997279940E-03   .340077612913E-03   .362550791159E-03   .386508815934E-03
+   .412049761538E-03   .439278175667E-03   .468305506086E-03   .499250555342E-03   .532239965345E-03
+   .567408733777E-03   .604900764394E-03   .644869453427E-03   .687478314448E-03   .732901644181E-03
+   .781325231931E-03   .832947115462E-03   .887978386315E-03   .946644047793E-03   .100918392899E-02
+   .107585365849E-02   .114692570159E-02   .122269046511E-02   .130345747413E-02   .138955662526E-02
+   .148133952139E-02   .157918089300E-02   .168348011159E-02   .179466280119E-02   .191318255387E-02
+   .203952275611E-02   .217419853284E-02   .231775881644E-02   .247078854874E-02   .263391102401E-02
+   .280779038181E-02   .299313425896E-02   .319069661014E-02   .340128070773E-02   .362574233140E-02
+   .386499315908E-02   .412000437119E-02   .439181048093E-02   .468151340366E-02   .499028677951E-02
+   .531938056376E-02   .567012590008E-02   .604394029290E-02   .644233309519E-02   .686691132922E-02
+   .731938585814E-02   .780157792698E-02   .831542609246E-02   .886299356117E-02   .944647595673E-02
+   .100682095365E-01   .107306798791E-01   .114365310642E-01   .121885753659E-01   .129898034814E-01
+   .138433953166E-01   .147527313479E-01   .157214045830E-01   .167532331366E-01   .178522734413E-01
+   .190228341077E-01   .202694904477E-01   .215970996717E-01   .230108167655E-01   .245161110510E-01
+   .261187834253E-01   .278249842710E-01   .296412320197E-01   .315744323432E-01   .336318979367E-01
+   .358213688444E-01   .381510332672E-01   .406295487722E-01   .432660638073E-01   .460702394023E-01
+   .490522709130E-01   .522229096357E-01   .555934840907E-01   .591759207332E-01   .629827638118E-01
+   .670271940485E-01   .713230457611E-01   .758848219909E-01   .807277071372E-01   .858675765219E-01
+   .913210022355E-01   .971052545202E-01   .103238297856E+00   .109738780808E+00   .116626018567E+00
+   .123919967025E+00   .131641187044E+00   .139810797483E+00   .148450415362E+00   .157582081422E+00
+   .167228169129E+00   .177411275073E+00   .188154088481E+00   .199479237473E+00   .211409109499E+00
+   .223965643295E+00   .237170089603E+00   .251042737822E+00   .265602605784E+00   .280867089905E+00
+   .296851573107E+00   .313568988194E+00   .331029334775E+00   .349239148393E+00   .368200921309E+00
+   .387912475432E+00   .408366289161E+00   .429548781600E+00   .451439559571E+00   .474010635347E+00
+   .497225625895E+00   .521038947873E+00   .545395026559E+00   .570227541389E+00   .595458735794E+00
+   .620998824523E+00   .646745537472E+00   .672583845076E+00   .698385916287E+00   .724011365684E+00
+   .749307850846E+00   .774112084099E+00   .798251323299E+00   .821545403372E+00   .843809362604E+00
+   .864856703695E+00   .884503307608E+00   .902571986389E+00   .918897617394E+00   .933332743909E+00
+   .945753454235E+00   .956065262074E+00   .964208605323E+00   .970163460013E+00   .973952434941E+00
+   .975641577861E+00   .975337997314E+00   .973183302052E+00   .969341805567E+00   .963982466511E+00
+   .957253674228E+00   .949250286078E+00   .939967137898E+00
+ ae wavefunction
+   .345880269803E-07   .368147396271E-07   .391630877573E-07   .416408806975E-07   .442563796648E-07
+   .470183275065E-07   .499359803346E-07   .530191411165E-07   .562781953533E-07   .597241489837E-07
+   .633686686638E-07   .672241245792E-07   .713036359587E-07   .756211194698E-07   .801913406860E-07
+   .850299688307E-07   .901536350141E-07   .955799941953E-07   .101327791116E-06   .107416930467E-06
+   .113868551572E-06   .120705107882E-06   .127950451600E-06   .135629923775E-06   .143770450234E-06
+   .152400643718E-06   .161550912651E-06   .171253576971E-06   .181542991487E-06   .192455677263E-06
+   .204030461550E-06   .216308626838E-06   .229334069623E-06   .243153469531E-06   .257816469471E-06
+   .273375867567E-06   .289887821608E-06   .307412066875E-06   .326012148197E-06   .345755667189E-06
+   .366714545666E-06   .388965306283E-06   .412589371555E-06   .437673382450E-06   .464309537843E-06
+   .492595956204E-06   .522637060981E-06   .554543991229E-06   .588435039152E-06   .624436116314E-06
+   .662681250411E-06   .703313114606E-06   .746483591562E-06   .792354374454E-06   .841097607392E-06
+   .892896567826E-06   .947946393699E-06   .100645485829E-05   .106864319584E-05   .113474698138E-05
+   .120501706815E-05   .127972058660E-05   .135914200881E-05   .144358428278E-05   .153337004103E-05
+   .162884288848E-05   .173036877475E-05   .183833745647E-05   .195316405540E-05   .207529071870E-05
+   .220518838808E-05   .234335868479E-05   .249033591827E-05   .264668922633E-05   .281302485559E-05
+   .298998859133E-05   .317826834648E-05   .337859692020E-05   .359175493710E-05   .381857397892E-05
+   .405993992120E-05   .431679648841E-05   .459014904167E-05   .488106861436E-05   .519069621170E-05
+   .552024739158E-05   .587101714484E-05   .624438509476E-05   .664182103620E-05   .706489083686E-05
+   .751526272388E-05   .799471398120E-05   .850513808399E-05   .904855229890E-05   .962710578015E-05
+   .102430881938E-04   .108989389041E-04   .115972567594E-04   .123408105145E-04   .131325499332E-04
+   .139756176126E-04   .148733615779E-04   .158293486960E-04   .168473789614E-04   .179315007108E-04
+   .190860268264E-04   .203155519905E-04   .216249710612E-04   .230194986388E-04   .245046899018E-04
+   .260864627920E-04   .277711216371E-04   .295653823016E-04   .314763989640E-04   .335117926256E-04
+   .356796814598E-04   .379887131204E-04   .404480991341E-04   .430676515087E-04   .458578216993E-04
+   .488297420813E-04   .519952700901E-04   .553670351951E-04   .589584888889E-04   .627839578816E-04
+   .668587007013E-04   .711989679173E-04   .758220662119E-04   .807464265434E-04   .859916766568E-04
+   .915787182129E-04   .975298088258E-04   .103868649313E-03   .110620476484E-03   .117812161806E-03
+   .125472316323E-03   .133631402195E-03   .142321851285E-03   .151578191213E-03   .161437179343E-03
+   .171937945185E-03   .183122141720E-03   .195034106204E-03   .207721031012E-03   .221233145136E-03
+   .235623906972E-03   .250950209091E-03   .267272595685E-03   .284655493464E-03   .303167456795E-03
+   .322881427931E-03   .343875013202E-03   .366230776132E-03   .390036548445E-03   .415385760012E-03
+   .442377788834E-03   .471118332212E-03   .501719800316E-03   .534301733429E-03   .568991244209E-03
+   .605923486367E-03   .645242151254E-03   .687099993885E-03   .731659390044E-03   .779092926154E-03
+   .829584023705E-03   .883327600092E-03   .940530767818E-03   .100141357408E-02   .106620978285E-02
+   .113516770174E-02   .120855105577E-02   .128663991061E-02   .136973164774E-02   .145814199397E-02
+   .155220610817E-02   .165227972784E-02   .175874037846E-02   .187198864842E-02   .199244953274E-02
+   .212057384858E-02   .225683972563E-02   .240175417491E-02   .255585473900E-02   .271971122729E-02
+   .289392753957E-02   .307914358152E-02   .327603727554E-02   .348532667035E-02   .370777215312E-02
+   .394417876724E-02   .419539863956E-02   .446233352010E-02   .474593743783E-02   .504721947541E-02
+   .536724666607E-02   .570714701529E-02   .606811265001E-02   .645140309744E-02   .685834869576E-02
+   .729035413788E-02   .774890214992E-02   .823555730457E-02   .875196996978E-02   .929988039215E-02
+   .988112291363E-02   .104976303197E-01   .111514383156E-01   .118446901277E-01   .125796412233E-01
+   .133586641445E-01   .141842534468E-01   .150590307347E-01   .159857497830E-01   .169673017313E-01
+   .180067203384E-01   .191071872789E-01   .202720374648E-01   .215047643706E-01   .228090253387E-01
+   .241886468392E-01   .256476296546E-01   .271901539582E-01   .288205842499E-01   .305434741118E-01
+   .323635707393E-01   .342858192035E-01   .363153663933E-01   .384575645820E-01   .407179745612E-01
+   .431023682761E-01   .456167308958E-01   .482672622432E-01   .510603775081E-01   .540027071583E-01
+   .571010959597E-01   .603626010131E-01   .637944887051E-01   .674042304707E-01   .711994972565E-01
+   .751881525675E-01   .793782439807E-01   .837779929965E-01   .883957831019E-01   .932401459101E-01
+   .983197452423E-01   .103643359011E+00   .109219858768E+00   .115058186771E+00   .121167330436E+00
+   .127556294036E+00   .134234067512E+00   .141209592272E+00   .148491723865E+00   .156089191418E+00
+   .164010553754E+00   .172264152109E+00   .180858059409E+00   .189800026080E+00   .199097422382E+00
+   .208757177326E+00   .218785714228E+00   .229188883025E+00   .239971889488E+00   .251139221539E+00
+   .262694572877E+00   .274640764188E+00   .286979662183E+00   .299712096784E+00   .312837776678E+00
+   .326355203518E+00   .340261584915E+00   .354552746333E+00   .369223041887E+00   .384265263953E+00
+   .399670551406E+00   .415428296305E+00   .431526048923E+00   .447949421271E+00   .464681989806E+00
+   .481705198910E+00   .498998268148E+00   .516538108581E+00   .534299256830E+00   .552253840873E+00
+   .570371599694E+00   .588619990658E+00   .606964434030E+00   .625368759241E+00   .643795919193E+00
+   .662208997143E+00   .680572398679E+00   .698852865629E+00   .717019633899E+00   .735042944768E+00
+   .752890589331E+00   .770523296286E+00   .787890909173E+00   .804931355401E+00   .821572952966E+00
+   .837738646284E+00   .853350000447E+00   .868329655898E+00   .882602263867E+00   .896094573156E+00
+   .908735288781E+00   .920455036227E+00   .931186536235E+00   .940864977431E+00   .949428530232E+00
+   .956818937764E+00   .962982127564E+00   .967868801554E+00   .971434976111E+00   .973642456203E+00
+   .974459236487E+00   .973859827995E+00   .971825512270E+00   .968344526450E+00   .963412183401E+00
+   .957030931285E+00   .949210356990E+00   .939967137898E+00
+ pseudo wavefunction
+  -.279100332060E-08  -.297546742365E-08  -.317212320158E-08  -.338177643140E-08  -.360528614584E-08
+  -.384356815318E-08  -.409759878966E-08  -.436841891992E-08  -.465713820182E-08  -.496493963318E-08
+  -.529308439896E-08  -.564291703887E-08  -.601587095646E-08  -.641347429233E-08  -.683735618556E-08
+  -.728925344894E-08  -.777101768534E-08  -.828462287450E-08  -.883217346120E-08  -.941591297798E-08
+  -.100382332378E-07  -.107016841344E-07  -.114089840897E-07  -.121630311930E-07  -.129669150751E-07
+  -.138239295678E-07  -.147375862001E-07  -.157116285863E-07  -.167500477652E-07  -.178570985526E-07
+  -.190373169755E-07  -.202955388575E-07  -.216369196333E-07  -.230669554724E-07  -.245915057993E-07
+  -.262168173018E-07  -.279495495259E-07  -.297968021628E-07  -.317661441390E-07  -.338656446294E-07
+  -.361039061195E-07  -.384900996534E-07  -.410340024109E-07  -.437460377687E-07  -.466373180090E-07
+  -.497196898505E-07  -.530057829893E-07  -.565090618476E-07  -.602438807426E-07  -.642255427017E-07
+  -.684703621646E-07  -.729957318304E-07  -.778201939216E-07  -.829635161588E-07  -.884467727567E-07
+  -.942924307731E-07  -.100524442165E-06  -.107168341928E-06  -.114251352723E-06  -.121802496421E-06
+  -.129852713009E-06  -.138434987371E-06  -.147584484433E-06  -.157338693248E-06  -.167737580606E-06
+  -.178823754787E-06  -.190642640146E-06  -.203242663231E-06  -.216675451205E-06  -.230996043379E-06
+  -.246263116728E-06  -.262539226313E-06  -.279891061585E-06  -.298389719639E-06  -.318110996522E-06
+  -.339135697790E-06  -.361549969599E-06  -.385445651673E-06  -.410920653597E-06  -.438079355985E-06
+  -.467033038159E-06  -.497900334092E-06  -.530807718486E-06  -.565890024977E-06  -.603290998579E-06
+  -.643163884653E-06  -.685672056786E-06  -.730989686178E-06  -.779302455259E-06  -.830808318475E-06
+  -.885718313346E-06  -.944257425134E-06  -.100666550865E-05  -.107319827097E-05  -.114412831913E-05
+  -.121974627702E-05  -.130036197611E-05  -.138630572487E-05  -.147792966206E-05  -.157560919949E-05
+  -.167974456009E-05  -.179076241763E-05  -.190911764480E-05  -.203529517683E-05  -.216981199824E-05
+  -.231321926086E-05  -.246610454188E-05  -.262909425103E-05  -.280285619688E-05  -.298810232272E-05
+  -.318559162316E-05  -.339613325358E-05  -.362058984486E-05  -.385988103730E-05  -.411498724795E-05
+  -.438695368687E-05  -.467689463877E-05  -.498599802752E-05  -.531553028225E-05  -.566684152493E-05
+  -.604137110065E-05  -.644065347328E-05  -.686632451062E-05  -.732012818467E-05  -.780392371464E-05
+  -.831969318161E-05  -.886954964637E-05  -.945574580324E-05  -.100806832056E-04  -.107469221007E-04
+  -.114571919139E-04  -.122144024253E-04  -.130216556843E-04  -.138822587115E-04  -.147997370379E-04
+  -.157778491399E-04  -.168206018252E-04  -.179322666362E-04  -.191173973350E-04  -.203808485423E-04
+  -.217277956078E-04  -.231637557902E-04  -.246946108353E-04  -.263266310442E-04  -.280665009288E-04
+  -.299213465589E-04  -.318987647140E-04  -.340068539568E-04  -.362542477552E-04  -.386501497879E-04
+  -.412043715772E-04  -.439273726015E-04  -.468303030501E-04  -.499250493950E-04  -.532242829633E-04
+  -.567415117076E-04  -.604911353844E-04  -.644885043632E-04  -.687499823040E-04  -.732930129577E-04
+  -.781361913574E-04  -.832993396886E-04  -.888035881438E-04  -.946714610865E-04  -.100926968871E-03
+  -.107595705689E-03  -.114704953825E-03  -.122283794757E-03  -.130363227527E-03  -.138976294859E-03
+  -.148158217538E-03  -.157946537565E-03  -.168381270675E-03  -.179505068800E-03  -.191363393143E-03
+  -.204004698523E-03  -.217480629723E-03  -.231846230618E-03  -.247160166882E-03  -.263484963153E-03
+  -.280887255575E-03  -.299438060680E-03  -.319213061663E-03  -.340292913127E-03  -.362763565471E-03
+  -.386716610145E-03  -.412249647075E-03  -.439466675641E-03  -.468478510647E-03  -.499403224845E-03
+  -.532366619614E-03  -.567502725527E-03  -.604954334604E-03  -.644873566158E-03  -.687422468234E-03
+  -.732773656763E-03  -.781110994622E-03  -.832630312942E-03  -.887540177094E-03  -.946062699880E-03
+  -.100843440462E-02  -.107490714085E-02  -.114574905561E-02  -.122124562321E-02  -.130170073660E-02
+  -.138743786363E-02  -.147880127134E-02  -.157615732184E-02  -.167989584301E-02  -.179043157778E-02
+  -.190820571524E-02  -.203368750745E-02  -.216737597522E-02  -.230980170646E-02  -.246152875055E-02
+  -.262315661189E-02  -.279532234574E-02  -.297870275910E-02  -.317401671921E-02  -.338202757143E-02
+  -.360354566834E-02  -.383943101045E-02  -.409059599886E-02  -.435800829868E-02  -.464269381116E-02
+  -.494573975085E-02  -.526829782285E-02  -.561158749277E-02  -.597689934018E-02  -.636559848360E-02
+  -.677912806178E-02  -.721901275286E-02  -.768686230858E-02  -.818437507615E-02  -.871334147500E-02
+  -.927564738919E-02  -.987327742939E-02  -.105083180100E-01  -.111829601782E-01  -.118995021197E-01
+  -.126603512567E-01  -.134680258372E-01  -.143251559008E-01  -.152344834894E-01  -.161988619506E-01
+  -.172212541600E-01  -.183047294655E-01  -.194524591272E-01  -.206677099968E-01  -.219538361483E-01
+  -.233142681308E-01  -.247524994748E-01  -.262720700375E-01  -.278765457220E-01  -.295694940484E-01
+  -.313544549982E-01  -.332349064866E-01  -.352142237462E-01  -.372956318335E-01  -.394821503891E-01
+  -.417765296978E-01  -.441811770102E-01  -.466980719964E-01  -.493286701138E-01  -.520737925813E-01
+  -.549335015674E-01  -.579069591200E-01  -.609922683005E-01  -.641862949312E-01  -.674844683360E-01
+  -.708805594534E-01  -.743664347429E-01  -.779317843870E-01  -.815638234472E-01  -.852469648520E-01
+  -.889624634163E-01  -.926880305187E-01  -.963974196265E-01  -.100059983574E+00  -.103640205399E+00
+  -.107097205642E+00  -.110384230348E+00  -.113448125613E+00  -.116228806356E+00  -.118658729208E+00
+  -.120662381827E+00  -.122155803741E+00  -.123046156855E+00  -.123231367001E+00  -.122599861329E+00
+  -.121030429774E+00  -.118392242085E+00  -.114545054827E+00  -.109339644965E+00  -.102618507758E+00
+  -.942168562765E-01  -.839639573143E-01  -.716848331267E-01  -.572023496269E-01  -.403396986013E-01
+  -.209232634852E-01   .121416534536E-02   .262298892774E-01   .542676129321E-01   .854537073972E-01
+   .119893607610E+00   .157668569643E+00   .198833051986E+00   .243413010949E+00   .291405404078E+00
+   .342779164013E+00   .397477822421E+00   .455423810756E+00   .516524221269E+00   .580677457773E+00
+   .647779725320E+00   .717729694069E+00   .790428935263E+00   .865774902453E+00   .943642393869E+00
+   .102384870860E+01   .110609729177E+01   .118988811168E+01
+ ae wavefunction
+  -.116542067594E-07  -.124044977761E-07  -.131957736016E-07  -.140306656112E-07  -.149119574462E-07
+  -.158425950344E-07  -.168256972502E-07  -.178645672328E-07  -.189627044082E-07  -.201238172617E-07
+  -.213518369099E-07  -.226509315269E-07  -.240255216803E-07  -.254802966387E-07  -.270202317135E-07
+  -.286506067059E-07  -.303770255296E-07  -.322054370900E-07  -.341421575006E-07  -.361938937267E-07
+  -.383677687500E-07  -.406713483551E-07  -.431126696449E-07  -.457002713986E-07  -.484432263953E-07
+  -.513511758310E-07  -.544343659691E-07  -.577036871700E-07  -.611707154577E-07  -.648477567899E-07
+  -.687478942106E-07  -.728850380733E-07  -.772739795394E-07  -.819304475651E-07  -.868711696074E-07
+  -.921139362941E-07  -.976776703179E-07  -.103582499833E-06  -.109849836650E-06  -.116502459544E-06
+  -.123564603011E-06  -.131062051839E-06  -.139022241858E-06  -.147474367297E-06  -.156449495165E-06
+  -.165980687121E-06  -.176103129339E-06  -.186854270866E-06  -.198273971060E-06  -.210404656679E-06
+  -.223291489277E-06  -.236982543566E-06  -.251528997468E-06  -.266985334637E-06  -.283409560247E-06
+  -.300863430940E-06  -.319412699843E-06  -.339127377657E-06  -.360082010861E-06  -.382355978163E-06
+  -.406033806394E-06  -.431205507107E-06  -.457966935252E-06  -.486420171376E-06  -.516673928875E-06
+  -.548843987947E-06  -.583053658010E-06  -.619434270419E-06  -.658125703492E-06  -.699276941957E-06
+  -.743046673053E-06  -.789603921719E-06  -.839128727392E-06  -.891812865166E-06  -.947860614192E-06
+  -.100748957643E-05  -.107093154901E-05  -.113843345377E-05  -.121025832760E-05  -.128668637772E-05
+  -.136801610591E-05  -.145456550650E-05  -.154667334260E-05  -.164470050592E-05  -.174903146549E-05
+  -.186007581124E-05  -.197826989835E-05  -.210407859921E-05  -.223799716990E-05  -.238055323851E-05
+  -.253230892350E-05  -.269386309025E-05  -.286585375507E-05  -.304896064599E-05  -.324390793075E-05
+  -.345146712267E-05  -.367246017595E-05  -.390776278282E-05  -.415830788548E-05  -.442508941676E-05
+  -.470916628434E-05  -.501166661428E-05  -.533379227057E-05  -.567682366857E-05  -.604212490128E-05
+  -.643114919862E-05  -.684544474122E-05  -.728666085140E-05  -.775655458580E-05  -.825699775532E-05
+  -.878998439987E-05  -.935763874710E-05  -.996222368613E-05  -.106061497892E-04  -.112919849164E-04
+  -.120224644406E-04  -.128005021321E-04  -.136292017456E-04  -.145118693528E-04  -.154520264704E-04
+  -.164534240312E-04  -.175200572543E-04  -.186561814691E-04  -.198663289557E-04  -.211553268635E-04
+  -.225283162782E-04  -.239907725076E-04  -.255485266641E-04  -.272077886245E-04  -.289751714536E-04
+  -.308577173829E-04  -.328629254418E-04  -.349987808435E-04  -.372737862353E-04  -.396969949279E-04
+  -.422780462274E-04  -.450272029982E-04  -.479553915954E-04  -.510742443111E-04  -.543961444887E-04
+  -.579342744694E-04  -.617026665405E-04  -.657162570707E-04  -.699909440230E-04  -.745436480496E-04
+  -.793923773845E-04  -.845562967609E-04  -.900558005919E-04  -.959125906717E-04  -.102149758660E-03
+  -.108791873636E-03  -.115865075016E-03  -.123397171149E-03  -.131417743923E-03  -.139958259726E-03
+  -.149052187125E-03  -.158735121661E-03  -.169044918139E-03  -.180021830872E-03  -.191708662286E-03
+  -.204150920391E-03  -.217396985582E-03  -.231498287289E-03  -.246509491031E-03  -.262488696406E-03
+  -.279497646635E-03  -.297601950258E-03  -.316871315613E-03  -.337379798797E-03  -.359206065760E-03
+  -.382433669297E-03  -.407151341649E-03  -.433453303517E-03  -.461439590281E-03  -.491216396253E-03
+  -.522896437828E-03  -.556599336408E-03  -.592452022021E-03  -.630589158538E-03  -.671153591471E-03
+  -.714296819297E-03  -.760179489312E-03  -.808971919000E-03  -.860854643940E-03  -.916018993258E-03
+  -.974667693643E-03  -.103701550293E-02  -.110328987428E-02  -.117373165185E-02  -.124859579904E-02
+  -.132815216011E-02  -.141268625609E-02  -.150250011577E-02  -.159791314254E-02  -.169926301765E-02
+  -.180690664054E-02  -.192122110648E-02  -.204260472202E-02  -.217147805810E-02  -.230828504096E-02
+  -.245349408034E-02  -.260759923450E-02  -.277112141118E-02  -.294460960335E-02  -.312864215812E-02
+  -.332382807689E-02  -.353080834438E-02  -.375025728348E-02  -.398288393254E-02  -.422943344082E-02
+  -.449068847740E-02  -.476747064777E-02  -.506064191174E-02  -.537110599514E-02  -.569980978681E-02
+  -.604774471137E-02  -.641594806671E-02  -.680550431407E-02  -.721754630679E-02  -.765325644248E-02
+  -.811386772120E-02  -.860066469065E-02  -.911498425698E-02  -.965821633760E-02  -.102318043300E-01
+  -.108372453676E-01  -.114760903311E-01  -.121499435805E-01  -.128604623686E-01  -.136093558956E-01
+  -.143983839573E-01  -.152293551373E-01  -.161041244889E-01  -.170245906457E-01  -.179926922974E-01
+  -.190104039593E-01  -.200797309592E-01  -.212027035591E-01  -.223813701213E-01  -.236177892228E-01
+  -.249140206129E-01  -.262721149025E-01  -.276941018621E-01  -.291819772014E-01  -.307376876894E-01
+  -.323631144669E-01  -.340600543932E-01  -.358301992573E-01  -.376751126749E-01  -.395962044805E-01
+  -.415947024138E-01  -.436716208885E-01  -.458277266219E-01  -.480635008913E-01  -.503790981760E-01
+  -.527743009314E-01  -.552484702362E-01  -.578004920430E-01  -.604287187595E-01  -.631309058800E-01
+  -.659041433832E-01  -.687447816140E-01  -.716483513616E-01  -.746094778523E-01  -.776217883748E-01
+  -.806778132642E-01  -.837688799724E-01  -.868849999614E-01  -.900147481647E-01  -.931451347659E-01
+  -.962614690568E-01  -.993472151489E-01  -.102383839329E+00  -.105350648884E+00  -.108224622255E+00
+  -.110980230477E+00  -.113589249961E+00  -.116020566855E+00  -.118239973483E+00  -.120209957715E+00
+  -.121889486565E+00  -.123233785983E+00  -.124194119546E+00  -.124717569791E+00  -.124746827215E+00
+  -.124219993528E+00  -.123070407576E+00  -.121226503932E+00  -.118611714138E+00  -.115144416120E+00
+  -.110737923637E+00  -.105300480905E+00  -.987351922876E-01  -.909397990956E-01  -.818062623135E-01
+  -.712202497639E-01  -.590607954837E-01  -.452004418151E-01  -.295059878331E-01  -.118396629322E-01
+   .793961119861E-02   .299750801289E-01   .544111019193E-01   .813920105918E-01   .111060751685E+00
+   .143557217466E+00   .179016260798E+00   .217565385042E+00   .259322106952E+00   .304390982216E+00
+   .352860275065E+00   .404798246896E+00   .460249035383E+00   .519228095764E+00   .581717179741E+00
+   .647658834662E+00   .716950416187E+00   .789437621611E+00   .864907568857E+00   .943081468528E+00
+   .102360696409E+01   .110605024916E+01   .118988811168E+01
+ End of Dataset
+ PAW_PBE O 08Apr2002
+ 6.00000000000000000
+ parameters from PSCTR are:
+   VRHFIN =O: s2p4
+   LEXCH  = PE
+   EATOM  =   432.3788 eV,   31.7789 Ry
+
+   TITEL  = PAW_PBE O 08Apr2002
+   LULTRA =        F    use ultrasoft PP ?
+   IUNSCR =        0    unscreen: 0-lin 1-nonlin 2-no
+   RPACOR =     .000    partial core radius
+   POMASS =   16.000; ZVAL   =    6.000    mass and valenz
+   RCORE  =    1.520    outmost cutoff radius
+   RWIGS  =    1.550; RWIGS  =     .820    wigner-seitz radius (au A)
+   ENMAX  =  400.000; ENMIN  =  300.000 eV
+   ICORE  =        2    local potential
+   LCOR   =        T    correct aug charges
+   LPAW   =        T    paw PP
+   EAUG   =  605.392
+   DEXC   =     .000
+   RMAX   =    2.264    core radius for proj-oper
+   RAUG   =    1.300    factor for augmentation sphere
+   RDEP   =    1.550    radius for radial grids
+   QCUT   =   -5.520; QGAM   =   11.041    optimization parameters
+ 
+   Description
+     l     E      TYP  RCUT    TYP  RCUT
+     0   .000     23  1.200
+     0  -.700     23  1.200
+     1   .000     23  1.520
+     1   .600     23  1.520
+     2   .000      7  1.500
+   Error from kinetic energy argument (eV)
+   NDATA  =      100
+   STEP   =   20.000   1.050
+  163.      160.      159.      156.      154.      151.      148.      146.
+  142.      139.      137.      134.      130.      126.      123.      119.
+  115.      111.      108.      102.      98.8      95.2      90.0      86.6
+  83.2      78.3      73.5      70.4      65.9      61.6      57.4      53.4
+  49.6      46.0      42.6      39.3      35.3      32.4      28.9      26.4
+  23.4      20.6      18.1      15.8      13.7      11.9      10.3      8.47
+  7.22      5.87      4.73      3.95      3.13      2.45      1.80      1.37
+  1.03      .721      .493      .329      .215      .138      .882E-01  .534E-01
+  .367E-01  .267E-01  .223E-01  .205E-01  .193E-01  .181E-01  .162E-01  .138E-01
+  .112E-01  .878E-02  .646E-02  .490E-02  .370E-02  .300E-02  .259E-02  .238E-02
+  .219E-02  .196E-02  .167E-02  .132E-02  .100E-02  .764E-03  .617E-03  .544E-03
+  .522E-03  .507E-03  .467E-03  .403E-03  .312E-03  .236E-03  .181E-03  .157E-03
+  .152E-03  .150E-03  .139E-03  .118E-03
+END of PSCTR-controll parameters
+ local part
+ 122.832189257630020
+   .23155445E+02   .23152693E+02   .23149261E+02   .23143544E+02   .23135541E+02
+   .23125253E+02   .23112681E+02   .23097823E+02   .23080677E+02   .23061237E+02
+   .23039495E+02   .23015440E+02   .22989059E+02   .22960335E+02   .22929249E+02
+   .22895777E+02   .22859896E+02   .22821578E+02   .22780793E+02   .22737509E+02
+   .22691690E+02   .22643299E+02   .22592293E+02   .22538630E+02   .22482260E+02
+   .22423132E+02   .22361190E+02   .22296376E+02   .22228625E+02   .22157873E+02
+   .22084048E+02   .22007079E+02   .21926890E+02   .21843403E+02   .21756538E+02
+   .21666211E+02   .21572340E+02   .21474838E+02   .21373619E+02   .21268597E+02
+   .21159684E+02   .21046794E+02   .20929842E+02   .20808743E+02   .20683417E+02
+   .20553785E+02   .20419772E+02   .20281308E+02   .20138327E+02   .19990769E+02
+   .19838580E+02   .19681713E+02   .19520129E+02   .19353797E+02   .19182693E+02
+   .19006804E+02   .18826128E+02   .18640671E+02   .18450451E+02   .18255500E+02
+   .18055858E+02   .17851580E+02   .17642733E+02   .17429396E+02   .17211664E+02
+   .16989641E+02   .16763448E+02   .16533218E+02   .16299098E+02   .16061247E+02
+   .15819840E+02   .15575061E+02   .15327109E+02   .15076196E+02   .14822544E+02
+   .14566388E+02   .14307973E+02   .14047552E+02   .13785392E+02   .13521763E+02
+   .13256948E+02   .12991234E+02   .12724915E+02   .12458289E+02   .12191659E+02
+   .11925331E+02   .11659614E+02   .11394816E+02   .11131245E+02   .10869211E+02
+   .10609017E+02   .10350966E+02   .10095354E+02   .98424727E+01   .95926072E+01
+   .93460340E+01   .91030212E+01   .88638270E+01   .86286987E+01   .83978722E+01
+   .81715707E+01   .79500043E+01   .77333688E+01   .75218455E+01   .73156002E+01
+   .71147829E+01   .69195273E+01   .67299503E+01   .65461519E+01   .63682145E+01
+   .61962037E+01   .60301671E+01   .58701350E+01   .57161205E+01   .55681193E+01
+   .54261103E+01   .52900556E+01   .51599012E+01   .50355773E+01   .49169989E+01
+   .48040663E+01   .46966659E+01   .45946711E+01   .44979426E+01   .44063297E+01
+   .43196709E+01   .42377948E+01   .41605214E+01   .40876627E+01   .40190236E+01
+   .39544034E+01   .38935965E+01   .38363932E+01   .37825814E+01   .37319469E+01
+   .36842749E+01   .36393508E+01   .35969612E+01   .35568949E+01   .35189437E+01
+   .34829034E+01   .34485744E+01   .34157630E+01   .33842813E+01   .33539488E+01
+   .33245924E+01   .32960472E+01   .32681572E+01   .32407752E+01   .32137639E+01
+   .31869956E+01   .31603530E+01   .31337289E+01   .31070267E+01   .30801603E+01
+   .30530540E+01   .30256429E+01   .29978721E+01   .29696971E+01   .29410832E+01
+   .29120056E+01   .28824486E+01   .28524057E+01   .28218788E+01   .27908779E+01
+   .27594206E+01   .27275318E+01   .26952425E+01   .26625901E+01   .26296170E+01
+   .25963704E+01   .25629018E+01   .25292661E+01   .24955211E+01   .24617268E+01
+   .24279449E+01   .23942383E+01   .23606701E+01   .23273035E+01   .22942010E+01
+   .22614239E+01   .22290318E+01   .21970823E+01   .21656302E+01   .21347276E+01
+   .21044231E+01   .20747616E+01   .20457843E+01   .20175281E+01   .19900255E+01
+   .19633044E+01   .19373883E+01   .19122957E+01   .18880405E+01   .18646316E+01
+   .18420733E+01   .18203652E+01   .17995024E+01   .17794755E+01   .17602707E+01
+   .17418705E+01   .17242532E+01   .17073938E+01   .16912639E+01   .16758320E+01
+   .16610641E+01   .16469237E+01   .16333722E+01   .16203693E+01   .16078735E+01
+   .15958421E+01   .15842318E+01   .15729988E+01   .15620996E+01   .15514907E+01
+   .15411295E+01   .15309742E+01   .15209843E+01   .15111206E+01   .15013460E+01
+   .14916249E+01   .14819243E+01   .14722133E+01   .14624637E+01   .14526498E+01
+   .14427487E+01   .14327405E+01   .14226081E+01   .14123373E+01   .14019171E+01
+   .13913392E+01   .13805984E+01   .13696923E+01   .13586213E+01   .13473883E+01
+   .13359990E+01   .13244615E+01   .13127860E+01   .13009850E+01   .12890728E+01
+   .12770654E+01   .12649804E+01   .12528367E+01   .12406544E+01   .12284542E+01
+   .12162578E+01   .12040872E+01   .11919646E+01   .11799123E+01   .11679522E+01
+   .11561062E+01   .11443952E+01   .11328397E+01   .11214589E+01   .11102712E+01
+   .10992936E+01   .10885419E+01   .10780303E+01   .10677713E+01   .10577759E+01
+   .10480534E+01   .10386110E+01   .10294545E+01   .10205875E+01   .10120120E+01
+   .10037281E+01   .99573405E+00   .98802637E+00   .98059993E+00   .97344797E+00
+   .96656217E+00   .95993281E+00   .95354881E+00   .94739790E+00   .94146671E+00
+   .93574091E+00   .93020536E+00   .92484425E+00   .91964123E+00   .91457956E+00
+   .90964227E+00   .90481229E+00   .90007260E+00   .89540637E+00   .89079709E+00
+   .88622870E+00   .88168571E+00   .87715333E+00   .87261756E+00   .86806530E+00
+   .86348444E+00   .85886393E+00   .85419386E+00   .84946550E+00   .84467136E+00
+   .83980521E+00   .83486211E+00   .82983841E+00   .82473177E+00   .81954111E+00
+   .81426662E+00   .80890973E+00   .80347303E+00   .79796024E+00   .79237615E+00
+   .78672657E+00   .78101820E+00   .77525858E+00   .76945600E+00   .76361942E+00
+   .75775831E+00   .75188262E+00   .74600265E+00   .74012893E+00   .73427215E+00
+   .72844301E+00   .72265218E+00   .71691014E+00   .71122715E+00   .70561310E+00
+   .70007743E+00   .69462911E+00   .68927647E+00   .68402723E+00   .67888835E+00
+   .67386605E+00   .66896570E+00   .66419185E+00   .65954814E+00   .65503733E+00
+   .65066125E+00   .64642082E+00   .64231605E+00   .63834605E+00   .63450904E+00
+   .63080240E+00   .62722268E+00   .62376568E+00   .62042644E+00   .61719934E+00
+   .61407817E+00   .61105614E+00   .60812599E+00   .60528004E+00   .60251030E+00
+   .59980849E+00   .59716614E+00   .59457468E+00   .59202550E+00   .58951003E+00
+   .58701980E+00   .58454654E+00   .58208221E+00   .57961910E+00   .57714987E+00
+   .57466763E+00   .57216594E+00   .56963895E+00   .56708132E+00   .56448837E+00
+   .56185603E+00   .55918091E+00   .55646027E+00   .55369208E+00   .55087499E+00
+   .54800835E+00   .54509219E+00   .54212720E+00   .53911474E+00   .53605675E+00
+   .53295582E+00   .52981506E+00   .52663812E+00   .52342909E+00   .52019253E+00
+   .51693334E+00   .51365677E+00   .51036832E+00   .50707371E+00   .50377881E+00
+   .50048961E+00   .49721211E+00   .49395232E+00   .49071615E+00   .48750942E+00
+   .48433774E+00   .48120651E+00   .47812083E+00   .47508551E+00   .47210497E+00
+   .46918326E+00   .46632398E+00   .46353029E+00   .46080485E+00   .45814984E+00
+   .45556693E+00   .45305727E+00   .45062147E+00   .44825964E+00   .44597137E+00
+   .44375571E+00   .44161126E+00   .43953613E+00   .43752797E+00   .43558402E+00
+   .43370110E+00   .43187571E+00   .43010401E+00   .42838185E+00   .42670486E+00
+   .42506848E+00   .42346796E+00   .42189845E+00   .42035503E+00   .41883273E+00
+   .41732664E+00   .41583186E+00   .41434364E+00   .41285733E+00   .41136849E+00
+   .40987289E+00   .40836657E+00   .40684582E+00   .40530728E+00   .40374789E+00
+   .40216498E+00   .40055624E+00   .39891975E+00   .39725399E+00   .39555786E+00
+   .39383066E+00   .39207210E+00   .39028230E+00   .38846177E+00   .38661143E+00
+   .38473254E+00   .38282674E+00   .38089598E+00   .37894254E+00   .37696897E+00
+   .37497807E+00   .37297287E+00   .37095659E+00   .36893261E+00   .36690442E+00
+   .36487563E+00   .36284989E+00   .36083085E+00   .35882219E+00   .35682749E+00
+   .35485030E+00   .35289401E+00   .35096191E+00   .34905706E+00   .34718238E+00
+   .34534052E+00   .34353392E+00   .34176471E+00   .34003479E+00   .33834572E+00
+   .33669879E+00   .33509493E+00   .33353480E+00   .33201871E+00   .33054663E+00
+   .32911826E+00   .32773295E+00   .32638975E+00   .32508743E+00   .32382450E+00
+   .32259918E+00   .32140947E+00   .32025315E+00   .31912781E+00   .31803085E+00
+   .31695955E+00   .31591105E+00   .31488241E+00   .31387062E+00   .31287264E+00
+   .31188540E+00   .31090587E+00   .30993106E+00   .30895805E+00   .30798401E+00
+   .30700625E+00   .30602221E+00   .30502951E+00   .30402592E+00   .30300946E+00
+   .30197832E+00   .30093095E+00   .29986602E+00   .29878246E+00   .29767946E+00
+   .29655644E+00   .29541311E+00   .29424942E+00   .29306559E+00   .29186206E+00
+   .29063955E+00   .28939897E+00   .28814149E+00   .28686844E+00   .28558136E+00
+   .28428197E+00   .28297213E+00   .28165382E+00   .28032916E+00   .27900034E+00
+   .27766963E+00   .27633933E+00   .27501179E+00   .27368934E+00   .27237430E+00
+   .27106894E+00   .26977549E+00   .26849606E+00   .26723268E+00   .26598726E+00
+   .26476157E+00   .26355722E+00   .26237566E+00   .26121818E+00   .26008586E+00
+   .25897959E+00   .25790008E+00   .25684781E+00   .25582306E+00   .25482591E+00
+   .25385623E+00   .25291367E+00   .25199772E+00   .25110764E+00   .25024254E+00
+   .24940133E+00   .24858278E+00   .24778552E+00   .24700803E+00   .24624869E+00
+   .24550578E+00   .24477747E+00   .24406190E+00   .24335715E+00   .24266125E+00
+   .24197226E+00   .24128820E+00   .24060715E+00   .23992721E+00   .23924657E+00
+   .23856345E+00   .23787620E+00   .23718326E+00   .23648318E+00   .23577464E+00
+   .23505648E+00   .23432765E+00   .23358730E+00   .23283470E+00   .23206930E+00
+   .23129074E+00   .23049880E+00   .22969344E+00   .22887479E+00   .22804315E+00
+   .22719895E+00   .22634282E+00   .22547549E+00   .22459785E+00   .22371090E+00
+   .22281576E+00   .22191365E+00   .22100589E+00   .22009385E+00   .21917899E+00
+   .21826279E+00   .21734679E+00   .21643251E+00   .21552151E+00   .21461531E+00
+   .21371541E+00   .21282327E+00   .21194030E+00   .21106783E+00   .21020712E+00
+   .20935932E+00   .20852550E+00   .20770662E+00   .20690351E+00   .20611688E+00
+   .20534731E+00   .20459524E+00   .20386099E+00   .20314472E+00   .20244647E+00
+   .20176612E+00   .20110343E+00   .20045804E+00   .19982942E+00   .19921696E+00
+   .19861993E+00   .19803748E+00   .19746867E+00   .19691247E+00   .19636779E+00
+   .19583345E+00   .19530823E+00   .19479088E+00   .19428008E+00   .19377454E+00
+   .19327293E+00   .19277395E+00   .19227630E+00   .19177873E+00   .19128003E+00
+   .19077902E+00   .19027463E+00   .18976581E+00   .18925164E+00   .18873125E+00
+   .18820390E+00   .18766893E+00   .18712580E+00   .18657407E+00   .18601343E+00
+   .18544366E+00   .18486468E+00   .18427653E+00   .18367934E+00   .18307336E+00
+   .18245897E+00   .18183663E+00   .18120690E+00   .18057043E+00   .17992795E+00
+   .17928028E+00   .17862829E+00   .17797292E+00   .17731514E+00   .17665599E+00
+   .17599649E+00   .17533773E+00   .17468077E+00   .17402668E+00   .17337651E+00
+   .17273128E+00   .17209201E+00   .17145962E+00   .17083504E+00   .17021908E+00
+   .16961253E+00   .16901607E+00   .16843034E+00   .16785584E+00   .16729304E+00
+   .16674226E+00   .16620377E+00   .16567772E+00   .16516416E+00   .16466305E+00
+   .16417424E+00   .16369750E+00   .16323250E+00   .16277882E+00   .16233597E+00
+   .16190338E+00   .16148038E+00   .16106628E+00   .16066029E+00   .16026161E+00
+   .15986936E+00   .15948266E+00   .15910059E+00   .15872220E+00   .15834656E+00
+   .15797274E+00   .15759979E+00   .15722681E+00   .15685292E+00   .15647729E+00
+   .15609910E+00   .15571761E+00   .15533214E+00   .15494205E+00   .15454679E+00
+   .15414587E+00   .15373889E+00   .15332551E+00   .15290550E+00   .15247869E+00
+   .15204501E+00   .15160447E+00   .15115717E+00   .15070328E+00   .15024306E+00
+   .14977685E+00   .14930505E+00   .14882814E+00   .14834665E+00   .14786118E+00
+   .14737238E+00   .14688092E+00   .14638754E+00   .14589300E+00   .14539806E+00
+   .14490354E+00   .14441021E+00   .14391889E+00   .14343036E+00   .14294540E+00
+   .14246476E+00   .14198915E+00   .14151925E+00   .14105571E+00   .14059910E+00
+   .14014996E+00   .13970877E+00   .13927593E+00   .13885178E+00   .13843659E+00
+   .13803056E+00   .13763383E+00   .13724643E+00   .13686835E+00   .13649948E+00
+   .13613966E+00   .13578864E+00   .13544611E+00   .13511171E+00   .13478500E+00
+   .13446548E+00   .13415263E+00   .13384585E+00   .13354452E+00   .13324799E+00
+   .13295557E+00   .13266656E+00   .13238023E+00   .13209586E+00   .13181273E+00
+   .13153012E+00   .13124732E+00   .13096365E+00   .13067845E+00   .13039111E+00
+   .13010103E+00   .12980768E+00   .12951055E+00   .12920922E+00   .12890329E+00
+   .12859244E+00   .12827640E+00   .12795499E+00   .12762805E+00   .12729554E+00
+   .12695744E+00   .12661382E+00   .12626482E+00   .12591063E+00   .12555151E+00
+   .12518776E+00   .12481975E+00   .12444790E+00   .12407269E+00   .12369460E+00
+   .12331418E+00   .12293200E+00   .12254866E+00   .12216478E+00   .12178098E+00
+   .12139790E+00   .12101618E+00   .12063646E+00   .12025935E+00   .11988545E+00
+   .11951535E+00   .11914960E+00   .11878872E+00   .11843318E+00   .11808343E+00
+   .11773986E+00   .11740281E+00   .11707256E+00   .11674936E+00   .11643337E+00
+   .11612472E+00   .11582347E+00   .11552960E+00   .11524306E+00   .11496374E+00
+   .11469144E+00   .11442595E+00   .11416697E+00   .11391417E+00   .11366717E+00
+   .11342554E+00   .11318884E+00   .11295655E+00   .11272816E+00   .11250313E+00
+   .11228088E+00   .11206084E+00   .11184242E+00   .11162503E+00   .11140810E+00
+   .11119104E+00   .11097329E+00   .11075431E+00   .11053359E+00   .11031063E+00
+   .11008499E+00   .10985625E+00   .10962403E+00   .10938800E+00   .10914789E+00
+   .10890345E+00   .10865450E+00   .10840093E+00   .10814264E+00   .10787962E+00
+   .10761191E+00   .10733958E+00   .10706278E+00   .10678170E+00   .10649658E+00
+   .10620769E+00   .10591537E+00   .10561998E+00   .10532192E+00   .10502162E+00
+   .10471954E+00   .10441617E+00   .10411201E+00   .10380756E+00   .10350335E+00
+   .10319991E+00   .10289777E+00   .10259743E+00   .10229940E+00   .10200418E+00
+   .10171222E+00   .10142397E+00   .10113985E+00   .10086023E+00   .10058546E+00
+   .10031584E+00   .10005162E+00   .99793034E-01   .99540245E-01   .99293377E-01
+   .99052504E-01   .98817651E-01   .98588793E-01   .98365858E-01   .98148724E-01
+   .97937225E-01   .97731147E-01   .97530237E-01   .97334202E-01   .97142709E-01
+   .96955397E-01   .96771871E-01   .96591713E-01   .96414480E-01   .96239713E-01
+   .96066940E-01   .95895679E-01   .95725442E-01   .95555746E-01   .95386107E-01
+   .95216055E-01   .95045131E-01   .94872896E-01   .94698932E-01   .94522846E-01
+   .94344276E-01   .94162891E-01   .93978395E-01   .93790532E-01   .93599082E-01
+   .93403871E-01   .93204764E-01   .93001674E-01   .92794556E-01   .92583411E-01
+   .92368286E-01   .92149271E-01   .91926498E-01   .91700141E-01   .91470413E-01
+   .91237566E-01   .91001884E-01   .90763683E-01   .90523308E-01   .90281128E-01
+   .90037534E-01   .89792935E-01   .89547752E-01   .89302418E-01   .89057370E-01
+   .88813047E-01   .88569884E-01   .88328311E-01   .88088743E-01   .87851584E-01
+   .87617217E-01   .87386003E-01   .87158276E-01   .86934344E-01   .86714482E-01
+   .86498932E-01   .86287900E-01   .86081555E-01   .85880026E-01   .85683402E-01
+   .85491732E-01   .85305023E-01   .85123242E-01   .84946313E-01   .84774125E-01
+   .84606523E-01   .84443320E-01   .84284292E-01   .84129183E-01   .83977708E-01
+   .83829555E-01   .83684387E-01   .83541847E-01   .83401561E-01   .83263141E-01
+   .83126188E-01   .82990297E-01   .82855060E-01   .82720073E-01   .82584933E-01
+   .82449250E-01   .82312643E-01   .82174750E-01   .82035227E-01   .81893753E-01
+   .81750031E-01   .81603794E-01   .81454803E-01   .81302851E-01   .81147768E-01
+   .80989416E-01   .80827694E-01   .80662540E-01   .80493929E-01   .80321872E-01
+   .80146420E-01   .79967660E-01   .79785713E-01   .79600737E-01   .79412920E-01
+   .79222482E-01   .79029671E-01   .78834760E-01   .78638045E-01   .78439844E-01
+   .78240491E-01   .78040334E-01   .77839732E-01   .77639049E-01   .77438658E-01
+   .77238926E-01   .77040221E-01   .76842902E-01   .76647319E-01   .76453807E-01
+   .76262685E-01   .76074254E-01   .75888790E-01   .75706547E-01   .75527750E-01
+   .75352598E-01   .75181256E-01   .75013859E-01   .74850509E-01   .74691274E-01
+   .74536187E-01   .74385246E-01   .74238414E-01   .74095622E-01   .73956766E-01
+   .73821710E-01   .73690288E-01   .73562306E-01   .73437542E-01   .73315749E-01
+   .73196658E-01   .73079982E-01   .72965415E-01   .72852638E-01   .72741320E-01
+   .72631122E-01   .72521701E-01   .72412713E-01   .72303815E-01   .72194667E-01
+ gradient corrections used for XC
+ 5
+ atomic pseudo charge-density
+   .60000000E+01   .59917682E+01   .59671789E+01   .59265479E+01   .58703891E+01
+   .57993990E+01   .57144341E+01   .56164855E+01   .55066511E+01   .53861066E+01
+   .52560766E+01   .51178084E+01   .49725469E+01   .48215134E+01   .46658876E+01
+   .45067929E+01   .43452859E+01   .41823479E+01   .40188803E+01   .38557025E+01
+   .36935506E+01   .35330797E+01   .33748662E+01   .32194109E+01   .30671444E+01
+   .29184307E+01   .27735730E+01   .26328185E+01   .24963632E+01   .23643571E+01
+   .22369087E+01   .21140897E+01   .19959388E+01   .18824658E+01   .17736551E+01
+   .16694691E+01   .15698510E+01   .14747279E+01   .13840130E+01   .12976078E+01
+   .12154045E+01   .11372872E+01   .10631344E+01   .99281940E+00   .92621249E+00
+   .86318152E+00   .80359313E+00   .74731357E+00   .69420942E+00   .64414831E+00
+   .59699943E+00   .55263402E+00   .51092580E+00   .47175127E+00   .43498998E+00
+   .40052480E+00   .36824205E+00   .33803164E+00   .30978717E+00   .28340598E+00
+   .25878921E+00   .23584178E+00   .21447237E+00   .19459343E+00   .17612108E+00
+   .15897509E+00   .14307879E+00   .12835897E+00   .11474584E+00   .10217290E+00
+   .90576828E-01   .79897428E-01   .70077479E-01   .61062654E-01   .52801404E-01
+   .45244856E-01   .38346707E-01   .32063120E-01   .26352622E-01   .21176003E-01
+   .16496215E-01   .12278281E-01   .84891979E-02   .50978486E-02   .20749112E-02
+  -.60722392E-03  -.29745366E-02  -.50514558E-02  -.68609362E-02  -.84245308E-02
+  -.97624615E-02  -.10893686E-01  -.11835965E-01  -.12605919E-01  -.13219093E-01
+  -.13690009E-01  -.14032225E-01  -.14258381E-01  -.14380251E-01  -.14408793E-01
+  -.14354189E-01  -.14225891E-01  -.14032660E-01  -.13782607E-01  -.13483228E-01
+  -.13141441E-01  -.12763619E-01  -.12355619E-01  -.11922818E-01  -.11470137E-01
+  -.11002072E-01  -.10522716E-01  -.10035788E-01  -.95446538E-02  -.90523500E-02
+  -.85616040E-02  -.80748545E-02  -.75942711E-02  -.71217719E-02  -.66590412E-02
+  -.62075454E-02  -.57685488E-02  -.53431281E-02  -.49321863E-02  -.45364660E-02
+  -.41565619E-02  -.37929322E-02  -.34459103E-02  -.31157151E-02  -.28024608E-02
+  -.25061667E-02  -.22267656E-02  -.19641127E-02  -.17179931E-02  -.14881294E-02
+  -.12741886E-02  -.10757886E-02  -.89250485E-03  -.72387531E-03  -.56940653E-03
+  -.42857839E-03  -.30084889E-03  -.18565853E-03  -.82434402E-04   .94060408E-05
+   .90451458E-04   .16129340E-03   .22252332E-03   .27472986E-03   .31849633E-03
+   .35439845E-03   .38300228E-03   .40486239E-03   .42052015E-03   .43050232E-03
+   .43531967E-03   .43546591E-03   .43141669E-03   .42362876E-03   .41253930E-03
+   .39856538E-03   .38210349E-03   .36352929E-03   .34319737E-03   .32144120E-03
+   .29857309E-03   .27488433E-03   .25064534E-03   .22610596E-03   .20149575E-03
+   .17702443E-03   .15288230E-03   .12924076E-03   .10625290E-03   .84054063E-04
+   .62762536E-04   .42480190E-04   .23293206E-04   .52728069E-05  -.11523997E-04
+  -.27053634E-04  -.41285196E-04  -.54199648E-04  -.65789036E-04  -.76055698E-04
+  -.85011472E-04  -.92676912E-04  -.99080513E-04  -.10425795E-03  -.10825132E-03
+  -.11110843E-03  -.11288204E-03  -.11362924E-03  -.11341070E-03  -.11229009E-03
+  -.11033340E-03  -.10760841E-03  -.10418409E-03  -.10013005E-03  -.95516074E-04
+  -.90411625E-04  -.84885403E-04  -.79004941E-04  -.72836222E-04  -.66443339E-04
+  -.59888174E-04  -.53230123E-04  -.46525844E-04  -.39829037E-04  -.33190254E-04
+  -.26656746E-04  -.20272330E-04  -.14077288E-04  -.81082945E-05  -.23983708E-05
+   .30231404E-05   .81305709E-05   .12901903E-04   .17318722E-04   .21366154E-04
+   .25032774E-04   .28310510E-04   .31194523E-04   .33683071E-04   .35777367E-04
+   .37481423E-04   .38801876E-04   .39747820E-04   .40330618E-04   .40563715E-04
+   .40462443E-04   .40043828E-04   .39326388E-04   .38329937E-04   .37075387E-04
+   .35584548E-04   .33879943E-04   .31984612E-04   .29921930E-04   .27715431E-04
+   .25388634E-04   .22964881E-04   .20467181E-04   .17918061E-04   .15339435E-04
+   .12752470E-04   .10177472E-04   .76337790E-05   .51396670E-05   .27122626E-05
+   .36747166E-06  -.18800836E-05  -.40171154E-05  -.60317107E-05  -.79133600E-05
+  -.96529757E-05  -.11242900E-04  -.12676905E-04  -.13950176E-04  -.15059296E-04
+  -.16002213E-04  -.16778201E-04  -.17387818E-04  -.17832850E-04  -.18116252E-04
+  -.18242083E-04  -.18215435E-04  -.18042359E-04  -.17729783E-04  -.17285432E-04
+  -.16717741E-04  -.16035770E-04  -.15249111E-04  -.14367805E-04  -.13402245E-04
+  -.12363095E-04  -.11261198E-04  -.10107488E-04  -.89129121E-05  -.76883443E-05
+  -.64445099E-05  -.51919113E-05  -.39407569E-05  -.27008960E-05  -.14817571E-05
+  -.29229229E-06   .85907414E-06   .19644910E-05   .30167200E-05   .40091707E-05
+   .49359281E-05   .57917760E-05   .65722140E-05   .72734684E-05   .78924981E-05
+   .84269947E-05   .88753771E-05   .92367814E-05   .95110452E-05   .96986879E-05
+   .98008862E-05   .98194454E-05   .97567671E-05   .96158136E-05   .94000686E-05
+   .91134958E-05   .87604949E-05   .83458553E-05   .78747087E-05   .73524802E-05
+   .67848387E-05   .61776463E-05   .55369089E-05   .48687256E-05   .41792398E-05
+   .34745909E-05   .27608672E-05   .20440608E-05   .13300240E-05   .62442817E-06
+  -.67274844E-07  -.73988911E-06  -.13885077E-05  -.20085430E-05  -.25957536E-05
+  -.31462683E-05  -.36566061E-05  -.41236935E-05  -.45448774E-05  -.49179355E-05
+  -.52410820E-05  -.55129711E-05  -.57326961E-05  -.58997856E-05  -.60141966E-05
+  -.60763041E-05  -.60868881E-05  -.60471176E-05  -.59585325E-05  -.58230221E-05
+  -.56428027E-05  -.54203921E-05  -.51585832E-05  -.48604156E-05  -.45291462E-05
+  -.41682184E-05  -.37812318E-05  -.33719094E-05  -.29440665E-05  -.25015785E-05
+  -.20483491E-05  -.15882795E-05  -.11252375E-05  -.66302845E-06  -.20536640E-06
+   .24415270E-06   .68207665E-06   .11051209E-05   .15101907E-05   .18944013E-05
+   .22550957E-05   .25898612E-05   .28965426E-05   .31732540E-05   .34183878E-05
+   .36306212E-05   .38089213E-05   .39525463E-05   .40610461E-05   .41342594E-05
+   .41723089E-05   .41755949E-05   .41447863E-05   .40808098E-05   .39848377E-05
+   .38582733E-05   .37027357E-05   .35200423E-05   .33121910E-05   .30813405E-05
+   .28297905E-05   .25599605E-05   .22743685E-05   .19756094E-05   .16663331E-05
+   .13492220E-05   .10269701E-05   .70226093E-06   .37774670E-06   .56028197E-07
+  -.26036489E-06  -.56899253E-06  -.86752192E-06  -.11537438E-05  -.14255877E-05
+  -.16811355E-05  -.19186339E-05  -.21365050E-05  -.23333557E-05  -.25079852E-05
+  -.26593909E-05  -.27867730E-05  -.28895365E-05  -.29672929E-05  -.30198589E-05
+  -.30472548E-05  -.30496999E-05  -.30276079E-05  -.29815799E-05  -.29123962E-05
+  -.28210073E-05  -.27085230E-05  -.25762012E-05  -.24254351E-05  -.22577400E-05
+  -.20747392E-05  -.18781493E-05  -.16697650E-05  -.14514439E-05  -.12250901E-05
+  -.99263919E-06  -.75604189E-06  -.51724870E-06  -.27819440E-06  -.40783164E-07
+   .19312596E-06   .42173291E-06   .64330979E-06   .85621327E-06   .10588960E-05
+   .12499175E-05   .14279530E-05   .15918027E-05   .17403988E-05   .18728116E-05
+   .19882544E-05   .20860878E-05   .21658217E-05   .22271172E-05   .22697861E-05
+   .22937907E-05   .22992407E-05   .22863909E-05   .22556358E-05   .22075048E-05
+   .21426558E-05   .20618676E-05   .19660321E-05   .18561454E-05   .17332978E-05
+   .15986645E-05   .14534943E-05   .12990990E-05   .11368416E-05   .96812543E-06
+   .79438183E-06   .61705882E-06   .43760937E-06   .25747988E-06   .78098960E-07
+  -.99133517E-07  -.27285691E-06  -.44175989E-06  -.60458990E-06  -.76016206E-06
+  -.90736736E-06  -.10451802E-05  -.11726648E-05  -.12889818E-05  -.13933923E-05
+  -.14852629E-05  -.15640686E-05  -.16293950E-05  -.16809403E-05  -.17185153E-05
+  -.17420434E-05  -.17515594E-05  -.17472073E-05  -.17292375E-05  -.16980032E-05
+  -.16539558E-05  -.15976400E-05  -.15296880E-05  -.14508129E-05  -.13618024E-05
+  -.12635108E-05  -.11568517E-05  -.10427895E-05  -.92233154E-06  -.79651917E-06
+  -.66641916E-06  -.53311498E-06  -.39769801E-06  -.26125892E-06  -.12487913E-06
+   .10377485E-07   .14347264E-06   .27340134E-06   .39919922E-06   .51994941E-06
+   .63478896E-06   .74291471E-06   .84358862E-06   .93614249E-06   .10199820E-05
+   .10945904E-05   .11595310E-05   .12144494E-05   .12590751E-05   .12932221E-05
+   .13167890E-05   .13297585E-05   .13321964E-05   .13242491E-05   .13061420E-05
+   .12781757E-05   .12407232E-05   .11942252E-05   .11391859E-05   .10761679E-05
+   .10057870E-05   .92870654E-06   .84563134E-06   .75730164E-06   .66448672E-06
+   .56797846E-06   .46858480E-06   .36712315E-06   .26441394E-06   .16127411E-06
+   .58510840E-07  -.43084584E-07  -.14274268E-06  -.23972139E-06  -.33331146E-06
+  -.42284137E-06  -.50768199E-06  -.58725077E-06  -.66101551E-06  -.72849772E-06
+  -.78927542E-06  -.84298553E-06  -.88932573E-06  -.92805581E-06  -.95899854E-06
+  -.98204001E-06  -.99712946E-06  -.10042787E-05  -.10035609E-05  -.99510908E-06
+  -.97911412E-06  -.95582224E-06  -.92553223E-06  -.88859224E-06  -.84539628E-06
+  -.79638041E-06  -.74201862E-06  -.68281852E-06  -.61931691E-06  -.55207504E-06
+  -.48167388E-06  -.40870931E-06  -.33378719E-06  -.25751852E-06  -.18051463E-06
+  -.10338237E-06  -.26719534E-07   .48889673E-07   .12287892E-06   .19470384E-06
+   .26384591E-06   .32981604E-06   .39215784E-06   .45045066E-06   .50431220E-06
+   .55340089E-06   .59741779E-06   .63610824E-06   .66926307E-06   .69671942E-06
+   .71836129E-06   .73411956E-06   .74397180E-06   .74794162E-06   .74609770E-06
+   .73855250E-06   .72546064E-06   .70701697E-06   .68345439E-06   .65504139E-06
+   .62207935E-06   .58489965E-06   .54386058E-06   .49934410E-06   .45175249E-06
+   .40150487E-06   .34903364E-06   .29478097E-06   .23919513E-06   .18272695E-06
+   .12582629E-06   .68938549E-07   .12501322E-07  -.43058875E-07  -.97329706E-07
+  -.14991596E-06  -.20044230E-06  -.24855584E-06  -.29392849E-06  -.33625901E-06
+  -.37527494E-06  -.41073416E-06  -.44242622E-06  -.47017345E-06  -.49383173E-06
+  -.51329101E-06  -.52847558E-06  -.53934403E-06  -.54588897E-06  -.54813649E-06
+  -.54614532E-06  -.54000588E-06  -.52983894E-06  -.51579416E-06  -.49804846E-06
+  -.47680410E-06  -.45228674E-06  -.42474318E-06  -.39443917E-06  -.36165694E-06
+  -.32669276E-06  -.28985441E-06  -.25145854E-06  -.21182812E-06  -.17128979E-06
+  -.13017128E-06  -.88798891E-07  -.47494935E-07  -.65753680E-08   .33652554E-07
+   .72892492E-07   .11086111E-06   .14729002E-06   .18192762E-06   .21454067E-06
+   .24491580E-06   .27286079E-06   .29820565E-06   .32080356E-06   .34053152E-06
+   .35729090E-06   .37100778E-06   .38163299E-06   .38914209E-06   .39353509E-06
+   .39483599E-06   .39309215E-06   .38837349E-06   .38077154E-06   .37039831E-06
+   .35738509E-06   .34188101E-06   .32405161E-06   .30407723E-06   .28215135E-06
+   .25847886E-06   .23327422E-06   .20675970E-06   .17916344E-06   .15071762E-06
+   .12165660E-06   .92215039E-07   .62626105E-07   .33119689E-07   .39206951E-08
+  -.24752597E-07  -.52690095E-07  -.79691358E-07  -.10556696E-06  -.13013974E-06
+  -.15324595E-06  -.17473624E-06  -.19447656E-06  -.21234887E-06  -.22825180E-06
+  -.24210104E-06  -.25382974E-06  -.26338863E-06  -.27074611E-06  -.27588811E-06
+  -.27881792E-06  -.27955575E-06  -.27813834E-06  -.27461828E-06  -.26906337E-06
+  -.26155573E-06  -.25219095E-06  -.24107705E-06  -.22833345E-06  -.21408978E-06
+  -.19848472E-06  -.18166473E-06  -.16378279E-06  -.14499707E-06  -.12546963E-06
+  -.10536508E-06  -.84849265E-07  -.64087970E-07  -.43245621E-07  -.22484060E-07
+  -.19613409E-08   .18169418E-07   .37761115E-07   .56673688E-07   .74775054E-07
+   .91941974E-07   .10806083E-06   .12302832E-06   .13675204E-06   .14915099E-06
+   .16015600E-06   .16970998E-06   .17776817E-06   .18429822E-06   .18928021E-06
+   .19270655E-06   .19458179E-06   .19492237E-06   .19375623E-06   .19112240E-06
+   .18707045E-06   .18165991E-06   .17495962E-06   .16704703E-06   .15800738E-06
+   .14793295E-06   .13692218E-06   .12507877E-06   .11251081E-06   .99329838E-07
+   .85649915E-07   .71586695E-07   .57256498E-07   .42775398E-07   .28258334E-07
+   .13818240E-07  -.43478729E-09  -.14394282E-07  -.27958162E-07  -.41029432E-07
+  -.53516833E-07  -.65335434E-07  -.76407165E-07  -.86661288E-07  -.96034794E-07
+  -.10447275E-06  -.11192854E-06  -.11836410E-06  -.12375001E-06  -.12806557E-06
+  -.13129879E-06  -.13344629E-06  -.13451320E-06  -.13451290E-06  -.13346681E-06
+  -.13140400E-06  -.12836090E-06  -.12438080E-06  -.11951341E-06  -.11381435E-06
+  -.10734461E-06  -.10016996E-06  -.92360356E-07  -.83989297E-07  -.75133217E-07
+  -.65870815E-07  -.56282407E-07  -.46449269E-07  -.36452990E-07  -.26374834E-07
+  -.16295114E-07  -.62925859E-08   .35561287E-08   .13177100E-07   .22499609E-07
+   .31456639E-07   .39985322E-07   .48027346E-07   .55529326E-07   .62443121E-07
+   .68726111E-07   .74341419E-07   .79258092E-07   .83451231E-07   .86902064E-07
+   .89597984E-07   .91532524E-07   .92705296E-07   .93121878E-07   .92793663E-07
+   .91737653E-07   .89976232E-07   .87536883E-07   .84451885E-07   .80757970E-07
+   .76495956E-07   .71710350E-07   .66448940E-07   .60762354E-07   .54703620E-07
+   .48327702E-07   .41691044E-07   .34851096E-07   .27865848E-07   .20793373E-07
+   .13691366E-07   .66167019E-08  -.37499308E-09  -.72297542E-08  -.13895671E-07
+  -.20323255E-07  -.26465788E-07  -.32279633E-07  -.37724526E-07  -.42763829E-07
+  -.47364755E-07  -.51498560E-07  -.55140694E-07  -.58270921E-07  -.60873410E-07
+  -.62936773E-07  -.64454090E-07  -.65422877E-07  -.65845040E-07  -.65726779E-07
+  -.65078469E-07  -.63914512E-07  -.62253155E-07  -.60116282E-07  -.57529183E-07
+  -.54520303E-07  -.51120960E-07  -.47365060E-07  -.43288783E-07  -.38930265E-07
+  -.34329266E-07  -.29526833E-07  -.24564953E-07  -.19486211E-07  -.14333446E-07
+  -.91494082E-08  -.39764231E-08   .11439326E-08   .61711490E-08   .11066085E-07
+   .15791256E-07   .20311104E-07   .24592250E-07   .28603725E-07   .32317176E-07
+   .35707053E-07   .38750770E-07   .41428839E-07   .43724980E-07   .45626202E-07
+   .47122860E-07   .48208684E-07   .48880781E-07   .49139608E-07   .48988926E-07
+   .48435724E-07   .47490115E-07   .46165220E-07   .44477022E-07   .42444198E-07
+   .40087938E-07   .37431747E-07   .34501224E-07   .31323833E-07   .27928668E-07
+   .24346193E-07   .20607989E-07   .16746490E-07   .12794713E-07   .87859919E-08
+   .47537088E-08   .73102898E-09  -.32493587E-08  -.71554951E-08  -.10956395E-07
+  -.14622282E-07  -.18124808E-07  -.21437265E-07  -.24534773E-07  -.27394460E-07
+  -.29995620E-07  -.32319853E-07  -.34351183E-07  -.36076162E-07  -.37483945E-07
+  -.38566352E-07  -.39317902E-07  -.39735828E-07  -.39820072E-07  -.39573258E-07
+  -.39000641E-07  -.38110042E-07  -.36911758E-07  -.35418458E-07  -.33645056E-07
+  -.31608577E-07  -.29327996E-07  -.26824071E-07  -.24119164E-07  -.21237046E-07
+  -.18202698E-07  -.15042101E-07  -.11782020E-07  -.84497905E-08  -.50730892E-08
+  -.16797180E-08   .17026196E-08   .50465364E-08   .83251756E-08   .11512419E-07
+   .14583088E-07   .17513133E-07   .20279819E-07   .22861888E-07   .25239723E-07
+   .27395485E-07   .29313242E-07   .30979082E-07   .32381206E-07   .33510003E-07
+   .34358115E-07   .34920476E-07   .35194336E-07   .35179264E-07   .34877139E-07
+   .34292118E-07   .33430584E-07   .32301084E-07   .30914248E-07   .29282688E-07
+   .27420888E-07   .25345076E-07   .23073086E-07   .20624207E-07   .18019022E-07
+   .15279237E-07   .12427505E-07   .94872409E-08   .64824308E-08   .34374431E-08
+   .37683268E-09  -.26748531E-08  -.56932672E-08  -.86544532E-08  -.11535032E-07
+  -.14312380E-07  -.16964808E-07  -.19471719E-07  -.21813770E-07  -.23973015E-07
+  -.25933039E-07  -.27679077E-07  -.29198125E-07  -.30479028E-07  -.31512564E-07
+  -.32291502E-07  -.32810648E-07  -.33066883E-07  -.33059167E-07  -.32788546E-07
+  -.32258130E-07  -.31473058E-07  -.30440450E-07  -.29169342E-07  -.27670607E-07
+  -.25956858E-07  -.24042349E-07  -.21942849E-07  -.19675514E-07  -.17258751E-07
+  -.14712064E-07  -.12055899E-07  -.93114809E-08  -.65006434E-08  -.36456576E-08
+  -.76905595E-09   .21065446E-08   .49586189E-08   .77649082E-08   .10503593E-07
+   .13153461E-07   .15694069E-07   .18105899E-07   .20370507E-07   .22470662E-07
+ 24.7554104503838985 T
+ Non local Part
+ 0 2 1.19823013906127396
+ 1.10994077959183524 1.53342233373160219 1.53342233373160219 -0.291376959654070899
+ Reciprocal Space Part
+   .41916247E+01   .41825847E+01   .41555387E+01   .41107084E+01   .40484610E+01
+   .39693053E+01   .38738873E+01   .37629841E+01   .36374959E+01   .34984375E+01
+   .33469290E+01   .31841841E+01   .30114991E+01   .28302395E+01   .26418272E+01
+   .24477262E+01   .22494282E+01   .20484379E+01   .18462583E+01   .16443755E+01
+   .14442443E+01   .12472735E+01   .10548126E+01   .86813848E+00   .68844301E+00
+   .51682202E+00   .35426518E+00   .20164722E+00   .59720666E-01  -.70890044E-01
+  -.18969273E+00  -.29633001E+00  -.39058015E+00  -.47235620E+00  -.54170338E+00
+  -.59879486E+00  -.64392596E+00  -.67750676E+00  -.70005339E+00  -.71217809E+00
+  -.71457813E+00  -.70802382E+00  -.69334585E+00  -.67142204E+00  -.64316388E+00
+  -.60950289E+00  -.57137716E+00  -.52971824E+00  -.48543852E+00  -.43941937E+00
+  -.39250026E+00  -.34546882E+00  -.29905223E+00  -.25390984E+00  -.21062725E+00
+  -.16971183E+00  -.13158971E+00  -.96604303E-01  -.65016283E-01  -.37004945E-01
+  -.12670925E-01   .79598551E-02   .24931149E-01   .38350371E-01   .48381788E-01
+   .55239058E-01   .59177307E-01   .60484919E-01   .59475206E-01   .56478136E-01
+   .51832277E-01   .45877121E-01   .38945906E-01   .31359071E-01   .23418444E-01
+   .15402235E-01   .75609010E-02   .11392130E-03  -.67525066E-02  -.12886855E-01
+  -.18172761E-01  -.22528680E-01  -.25906755E-01  -.28290977E-01  -.29694738E-01
+  -.30157854E-01  -.29743190E-01  -.28532968E-01  -.26624897E-01  -.24128204E-01
+  -.21159697E-01  -.17839940E-01  -.14289626E-01  -.10626249E-01  -.69611057E-02
+  -.33967125E-02  -.24653651E-04   .30761027E-02   .58404133E-02   .82176957E-02
+ Real Space Part
+  -.12209911E+02  -.12156465E+02  -.11996746E+02  -.11732600E+02  -.11367080E+02
+  -.10904404E+02  -.10349903E+02  -.97099514E+01  -.89918873E+01  -.82039151E+01
+  -.73550000E+01  -.64547502E+01  -.55132907E+01  -.45411287E+01  -.35490140E+01
+  -.25477947E+01  -.15482719E+01  -.56105360E+00   .40358764E+00   .13358530E+01
+   .22265484E+01   .30672055E+01   .38501921E+01   .45688082E+01   .52173671E+01
+   .57912593E+01   .62869985E+01   .67022486E+01   .70358309E+01   .72877116E+01
+   .74589701E+01   .75517488E+01   .75691844E+01   .75153242E+01   .73950278E+01
+   .72138561E+01   .69779520E+01   .66939128E+01   .63686597E+01   .60093047E+01
+   .56230197E+01   .52169103E+01   .47978951E+01   .43725954E+01   .39472355E+01
+   .35275565E+01   .31187441E+01   .27253720E+01   .23513613E+01   .19999558E+01
+   .16737134E+01   .13745126E+01   .11035728E+01   .86148821E+00   .64827189E+00
+   .46341029E+00   .30592455E+00   .17443747E+00   .67243739E-01  -.17618413E-01
+  -.82296239E-01  -.12905384E+00  -.16020751E+00  -.17806636E+00  -.18487943E+00
+  -.18279001E+00  -.17379778E+00  -.15972907E+00  -.14221522E+00  -.12267879E+00
+  -.10232730E+00  -.82153699E-01  -.62942943E-01  -.45283648E-01  -.29583985E-01
+  -.16090730E-01  -.49105123E-02   .39677126E-02   .10649843E-01   .15314281E-01
+   .18190739E-01   .19540772E-01   .19640479E-01   .18765672E-01   .17179704E-01
+   .15123994E-01   .12811214E-01   .10420974E-01   .80977811E-02   .59509921E-02
+   .40564286E-02   .24593019E-02   .11780974E-02   .20907384E-03  -.46894317E-03
+  -.88975727E-03  -.10952287E-02  -.11311262E-02  -.10435471E-02  -.87599685E-03
+ Reciprocal Space Part
+   .74573153E+01   .74205324E+01   .73105035E+01   .71281866E+01   .68751723E+01
+   .65536755E+01   .61665220E+01   .57171327E+01   .52095018E+01   .46481714E+01
+   .40382008E+01   .33851306E+01   .26949407E+01   .19740037E+01   .12290314E+01
+   .46701580E+00  -.30483477E+00  -.10791659E+01  -.18485513E+01  -.26055719E+01
+  -.33428971E+01  -.40533700E+01  -.47300925E+01  -.53665105E+01  -.59564989E+01
+  -.64944419E+01  -.69753105E+01  -.73947331E+01  -.77490593E+01  -.80354149E+01
+  -.82517461E+01  -.83968535E+01  -.84704128E+01  -.84729835E+01  -.84060025E+01
+  -.82717655E+01  -.80733934E+01  -.78147852E+01  -.75005585E+01  -.71359771E+01
+  -.67268679E+01  -.62795286E+01  -.58006267E+01  -.52970927E+01  -.47760092E+01
+  -.42444981E+01  -.37096071E+01  -.31781994E+01  -.26568473E+01  -.21517323E+01
+  -.16685537E+01  -.12124471E+01  -.78791534E+00  -.39877098E+00  -.48094094E-01
+   .26179610E+00   .52935445E+00   .75380808E+00   .93513994E+00   .10740583E+01
+   .11719530E+01   .12308401E+01   .12532955E+01   .12423801E+01   .12015583E+01
+   .11346105E+01   .10455433E+01   .93849855E+00   .81766341E+00   .68718315E+00
+   .55107898E+00   .41317216E+00   .27701602E+00   .14583714E+00   .22486520E-01
+  -.90598413E-01  -.19142056E+00  -.27843862E+00  -.35057128E+00  -.40719064E+00
+  -.44810548E+00  -.47353521E+00  -.48407567E+00  -.48065789E+00  -.46450122E+00
+  -.43706235E+00  -.39998148E+00  -.35502741E+00  -.30404270E+00  -.24889052E+00
+  -.19140434E+00  -.13334157E+00  -.76342240E-01  -.21893397E-01   .28700093E-01
+   .74337975E-01   .11414004E+00   .14745461E+00   .17386013E+00   .19316046E+00
+ Real Space Part
+  -.14450582E+03  -.14434158E+03  -.14384692E+03  -.14301613E+03  -.14184006E+03
+  -.14030674E+03  -.13840209E+03  -.13611089E+03  -.13341784E+03  -.13030866E+03
+  -.12677136E+03  -.12279734E+03  -.11838257E+03  -.11352859E+03  -.10824339E+03
+  -.10254210E+03  -.96447492E+02  -.89990226E+02  -.83208815E+02  -.76149381E+02
+  -.68865127E+02  -.61415564E+02  -.53865525E+02  -.46283974E+02  -.38742660E+02
+  -.31314650E+02  -.24072789E+02  -.17088132E+02  -.10428398E+02  -.41564905E+01
+   .16708644E+01   .70043321E+01   .11802990E+02   .16035133E+02   .19678836E+02
+   .22722270E+02   .25163755E+02   .27011560E+02   .28283456E+02   .29006050E+02
+   .29213914E+02   .28948539E+02   .28257163E+02   .27191494E+02   .25806374E+02
+   .24158431E+02   .22304747E+02   .20301581E+02   .18203183E+02   .16060736E+02
+   .13921425E+02   .11827682E+02   .98165975E+01   .79195094E+01   .61617801E+01
+   .45627407E+01   .31358031E+01   .18887196E+01   .82397384E+00  -.60720401E-01
+  -.77183450E+00  -.13193800E+01  -.17162274E+01  -.19774128E+01  -.21194552E+01
+  -.21597028E+01  -.21157294E+01  -.20047908E+01  -.18433559E+01  -.16467180E+01
+  -.14286910E+01  -.12013912E+01  -.97510211E+00  -.75821818E+00  -.55725868E+00
+  -.37694436E+00  -.22032548E+00  -.88950652E-01   .16934939E-01   .98173080E-01
+   .15646828E+00   .19416536E+00   .21403714E+00   .21908924E+00   .21238723E+00
+   .19691002E+00   .17543163E+00   .15043210E+00   .12403694E+00   .97983416E-01
+   .73610913E-01   .51872133E-01   .33361169E-01   .18354475E-01   .68606192E-02
+  -.13250790E-02  -.65645922E-02  -.93230150E-02  -.10118734E-01  -.94798863E-02
+ Non local Part
+ 1 2 1.19823013906127396
+ 6.12884028017874360 -3.81892483499089330 -3.81892483499089330 1.42081284536133179
+ Reciprocal Space Part
+   .00000000E+00   .24190713E+00   .48134296E+00   .71587281E+00   .94313460E+00
+   .11608735E+01   .13669746E+01   .15594931E+01   .17366816E+01   .18970136E+01
+   .20392032E+01   .21622207E+01   .22653035E+01   .23479626E+01   .24099842E+01
+   .24514270E+01   .24726145E+01   .24741237E+01   .24567692E+01   .24215837E+01
+   .23697959E+01   .23028052E+01   .22221538E+01   .21294985E+01   .20265799E+01
+   .19151923E+01   .17971534E+01   .16742740E+01   .15483304E+01   .14210370E+01
+   .12940221E+01   .11688056E+01   .10467802E+01   .92919538E+00   .81714463E+00
+   .71155640E+00   .61318834E+00   .52262508E+00   .44027930E+00   .36639596E+00
+   .30105950E+00   .24420362E+00   .19562346E+00   .15498971E+00   .12186422E+00
+   .95716908E-01   .75943293E-01   .61882440E-01   .52834833E-01   .48079811E-01
+   .46892228E-01   .48558017E-01   .52388387E-01   .57732421E-01   .63987899E-01
+   .70610211E-01   .77119283E-01   .83104495E-01   .88227596E-01   .92223688E-01
+   .94900397E-01   .96135352E-01   .95872176E-01   .94115169E-01   .90922917E-01
+   .86401051E-01   .80694419E-01   .73978879E-01   .66452981E-01   .58329740E-01
+   .49828715E-01   .41168581E-01   .32560350E-01   .24201382E-01   .16270280E-01
+   .89227536E-02   .22884849E-02  -.35309816E-02  -.84633498E-02  -.12465719E-01
+  -.15523834E-01  -.17650532E-01  -.18883476E-01  -.19282310E-01  -.18925339E-01
+  -.17905890E-01  -.16328465E-01  -.14304828E-01  -.11950138E-01  -.93792522E-02
+  -.67032934E-02  -.40265698E-02  -.14439170E-02   .96148255E-03   .31197699E-02
+   .49755497E-02   .64885011E-02   .76334748E-02   .84001065E-02   .87919916E-02
+ Real Space Part
+   .00000000E+00   .79674956E+00   .15859159E+01   .23600635E+01   .31120483E+01
+   .38351532E+01   .45232120E+01   .51707187E+01   .57729178E+01   .63258763E+01
+   .68265322E+01   .72727217E+01   .76631830E+01   .79975380E+01   .82762527E+01
+   .85005780E+01   .86724745E+01   .87945214E+01   .88698160E+01   .89018646E+01
+   .88944696E+01   .88516162E+01   .87773614E+01   .86757301E+01   .85506195E+01
+   .84057148E+01   .82444190E+01   .80697972E+01   .78845365E+01   .76909225E+01
+   .74908310E+01   .72857355E+01   .70767279E+01   .68645513E+01   .66496437E+01
+   .64321882E+01   .62121700E+01   .59894356E+01   .57637521E+01   .55348655E+01
+   .53025546E+01   .50666788E+01   .48272185E+01   .45843073E+01   .43382543E+01
+   .40895568E+01   .38389031E+01   .35871659E+01   .33353872E+01   .30847548E+01
+   .28365735E+01   .25922301E+01   .23531559E+01   .21207871E+01   .18965247E+01
+   .16816961E+01   .14775193E+01   .12850711E+01   .11052602E+01   .93880647E+00
+   .78622548E+00   .64782090E+00   .52368250E+00   .41369091E+00   .31752808E+00
+   .23469302E+00   .16452201E+00   .10621225E+00   .58848150E-01   .21429047E-01
+  -.71024369E-02  -.27832509E-01  -.41849597E-01  -.50219785E-01  -.53964937E-01
+  -.54044003E-01  -.51337836E-01  -.46637720E-01  -.40637642E-01  -.33930212E-01
+  -.27006003E-01  -.20256005E-01  -.13976760E-01  -.83777375E-02  -.35904248E-02
+   .32136120E-03   .33504644E-02   .55351505E-02   .69480767E-02   .76858459E-02
+   .78594557E-02   .75858795E-02   .69809449E-02   .61535968E-02   .52015693E-02
+   .42084251E-02   .32418692E-02   .23532017E-02   .15777427E-02   .93604221E-03
+ Reciprocal Space Part
+   .00000000E+00   .31744093E+00   .62796632E+00   .92479987E+00   .12014407E+01
+   .14517937E+01   .16702913E+01   .18520039E+01   .19927369E+01   .20891120E+01
+   .21386315E+01   .21397237E+01   .20917694E+01   .19951083E+01   .18510259E+01
+   .16617203E+01   .14302515E+01   .11604730E+01   .85694736E+00   .52484880E+00
+   .16985417E+00  -.20197520E+00  -.58431776E+00  -.97071968E+00  -.13547235E+01
+  -.17299949E+01  -.20904447E+01  -.24303437E+01  -.27444280E+01  -.30279929E+01
+  -.32769731E+01  -.34880080E+01  -.36584915E+01  -.37866046E+01  -.38713313E+01
+  -.39124572E+01  -.39105517E+01  -.38669350E+01  -.37836290E+01  -.36632969E+01
+  -.35091693E+01  -.33249628E+01  -.31147888E+01  -.28830588E+01  -.26343861E+01
+  -.23734858E+01  -.21050774E+01  -.18337905E+01  -.15640757E+01  -.13001231E+01
+  -.10457895E+01  -.80453601E+00  -.57937641E+00  -.37283792E+00  -.18693396E+00
+  -.23149557E-01   .11756098E+00   .23476454E+00   .32852852E+00   .39939002E+00
+   .44831599E+00   .47665573E+00   .48608716E+00   .47855846E+00   .45622663E+00
+   .42139471E+00   .37644900E+00   .32379812E+00   .26581491E+00   .20478287E+00
+   .14284783E+00   .81976051E-01   .23919311E-01  -.29812460E-01  -.77970740E-01
+  -.11958010E+00  -.15394216E+00  -.18063212E+00  -.19948839E+00  -.21059606E+00
+  -.21426485E+00  -.21100257E+00  -.20148507E+00  -.18652355E+00  -.16703047E+00
+  -.14398496E+00  -.11839869E+00  -.91283257E-01  -.63619700E-01  -.36331110E-01
+  -.10258728E-01   .13857887E-01   .35396331E-01   .53862293E-01   .68895888E-01
+   .80273504E-01   .87905366E-01   .91829151E-01   .92200087E-01   .89278037E-01
+ Real Space Part
+   .00000000E+00  -.20833035E+01  -.41655263E+01  -.62451081E+01  -.83195511E+01
+  -.10385006E+02  -.12435921E+02  -.14464767E+02  -.16461863E+02  -.18415296E+02
+  -.20310962E+02  -.22132707E+02  -.23862587E+02  -.25481222E+02  -.26968246E+02
+  -.28302832E+02  -.29464273E+02  -.30432608E+02  -.31189254E+02  -.31717642E+02
+  -.32003813E+02  -.32036975E+02  -.31809978E+02  -.31319701E+02  -.30567341E+02
+  -.29558576E+02  -.28303611E+02  -.26817098E+02  -.25117923E+02  -.23228879E+02
+  -.21176227E+02  -.18989155E+02  -.16699160E+02  -.14339360E+02  -.11943772E+02
+  -.95465606E+01  -.71812913E+01  -.48802088E+01  -.26735552E+01  -.58895310E+00
+   .13491329E+01   .31198413E+01   .47062558E+01   .60956367E+01   .72795389E+01
+   .82538163E+01   .90185169E+01   .95776756E+01   .99390140E+01   .10113561E+02
+   .10115209E+02   .99602166E+01   .96666821E+01   .92540003E+01   .87423176E+01
+   .81520050E+01   .75031602E+01   .68151530E+01   .61062235E+01   .53931413E+01
+   .46909323E+01   .40126745E+01   .33693654E+01   .27698580E+01   .22208628E+01
+   .17270086E+01   .12909577E+01   .91356460E+00   .59407062E+00   .33032511E+00
+   .11902304E+00  -.44049687E-01  -.16377201E+00  -.24545238E+00  -.29460892E+00
+  -.31677078E+00  -.31730480E+00  -.30127048E+00  -.27330483E+00  -.23753750E+00
+  -.19753537E+00  -.15627485E+00  -.11613935E+00  -.78938581E-01  -.45946163E-01
+  -.17951420E-01   .46784902E-02   .21930096E-01   .34072423E-01   .41586401E-01
+   .45097684E-01   .45315224E-01   .42977316E-01   .38806326E-01   .33472725E-01
+   .27568557E-01   .21590035E-01   .15928553E-01   .10869144E-01   .65951677E-02
+ PAW radial sets
+ 321 0.721520152002725790
+(5E20.12)                                
+ augmentation charges (non sperical)
+  -.157752259102E+00   .256865056813E-01   .447401437060E-01   .282550287931E-02   .256865056813E-01
+  -.513111026050E-02  -.610189826978E-02   .234333105778E-03   .447401437060E-01  -.610189826978E-02
+   .206642369840E+00  -.512388802954E-01   .282550287931E-02   .234333105778E-03  -.512388802954E-01
+   .161404628631E-01
+ uccopancies in atom
+   .199999999995E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .133333333287E+01   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ grid
+   .292861757568E-04   .302384891324E-04   .312217693632E-04   .322370234141E-04   .332852909940E-04
+   .343676456204E-04   .354851957192E-04   .366390857593E-04   .378304974248E-04   .390606508255E-04
+   .403308057460E-04   .416422629358E-04   .429963654417E-04   .443944999831E-04   .458380983718E-04
+   .473286389788E-04   .488676482478E-04   .504567022590E-04   .520974283424E-04   .537915067449E-04
+   .555406723508E-04   .573467164586E-04   .592114886153E-04   .611368985105E-04   .631249179321E-04
+   .651775827859E-04   .672969951799E-04   .694853255777E-04   .717448150208E-04   .740777774238E-04
+   .764866019442E-04   .789737554287E-04   .815417849398E-04   .841933203642E-04   .869310771058E-04
+   .897578588667E-04   .926765605186E-04   .956901710669E-04   .988017767123E-04   .102014564011E-03
+   .105331823137E-03   .108756951255E-03   .112293455994E-03   .115944959045E-03   .119715199866E-03
+   .123608039513E-03   .127627464593E-03   .131777591350E-03   .136062669876E-03   .140487088466E-03
+   .145055378110E-03   .149772217137E-03   .154642436003E-03   .159671022236E-03   .164863125548E-03
+   .170224063108E-03   .175759324983E-03   .181474579766E-03   .187375680376E-03   .193468670057E-03
+   .199759788562E-03   .206255478546E-03   .212962392164E-03   .219887397881E-03   .227037587508E-03
+   .234420283464E-03   .242043046275E-03   .249913682317E-03   .258040251807E-03   .266431077064E-03
+   .275094751026E-03   .284040146052E-03   .293276423008E-03   .302813040649E-03   .312659765305E-03
+   .322826680882E-03   .333324199190E-03   .344163070606E-03   .355354395080E-03   .366909633507E-03
+   .378840619461E-03   .391159571315E-03   .403879104750E-03   .417012245681E-03   .430572443592E-03
+   .444573585311E-03   .459030009230E-03   .473956519990E-03   .489368403644E-03   .505281443305E-03
+   .521711935319E-03   .538676705943E-03   .556193128586E-03   .574279141596E-03   .592953266629E-03
+   .612234627622E-03   .632142970374E-03   .652698682767E-03   .673922815646E-03   .695837104379E-03
+   .718463991113E-03   .741826647755E-03   .765948999709E-03   .790855750370E-03   .816572406429E-03
+   .843125303987E-03   .870541635532E-03   .898849477784E-03   .928077820446E-03   .958256595896E-03
+   .989416709837E-03   .102159007295E-02   .105480963356E-02   .108910941142E-02   .112452453248E-02
+   .116109126493E-02   .119884705630E-02   .123783057181E-02   .127808173400E-02   .131964176357E-02
+   .136255322161E-02   .140686005323E-02   .145260763247E-02   .149984280887E-02   .154861395536E-02
+   .159897101787E-02   .165096556643E-02   .170465084799E-02   .176008184098E-02   .181731531158E-02
+   .187640987187E-02   .193742603983E-02   .200042630136E-02   .206547517423E-02   .213263927416E-02
+   .220198738308E-02   .227359051949E-02   .234752201127E-02   .242385757072E-02   .250267537214E-02
+   .258405613183E-02   .266808319080E-02   .275484260011E-02   .284442320898E-02   .293691675577E-02
+   .303241796195E-02   .313102462912E-02   .323283773910E-02   .333796155744E-02   .344650374009E-02
+   .355857544374E-02   .367429143961E-02   .379377023099E-02   .391713417460E-02   .404450960591E-02
+   .417602696847E-02   .431182094758E-02   .445203060811E-02   .459679953703E-02   .474627599036E-02
+   .490061304506E-02   .505996875575E-02   .522450631661E-02   .539439422848E-02   .556980647142E-02
+   .575092268290E-02   .593792834175E-02   .613101495811E-02   .633038026953E-02   .653622844353E-02
+   .674877028662E-02   .696822346022E-02   .719481270355E-02   .742877006381E-02   .767033513377E-02
+   .791975529717E-02   .817728598207E-02   .844319092237E-02   .871774242798E-02   .900122166363E-02
+   .929391893683E-02   .959613399516E-02   .990817633326E-02   .102303655097E-01   .105630314745E-01
+   .109065149065E-01   .112611675628E-01   .116273526388E-01   .120054451399E-01   .123958322659E-01
+   .127989138074E-01   .132151025550E-01   .136448247225E-01   .140885203828E-01   .145466439191E-01
+   .150196644899E-01   .155080665096E-01   .160123501446E-01   .165330318254E-01   .170706447755E-01
+   .176257395575E-01   .181988846371E-01   .187906669648E-01   .194016925775E-01   .200325872188E-01
+   .206839969800E-01   .213565889615E-01   .220510519564E-01   .227680971554E-01   .235084588754E-01
+   .242728953116E-01   .250621893137E-01   .258771491876E-01   .267186095236E-01   .275874320505E-01
+   .284845065186E-01   .294107516104E-01   .303671158820E-01   .313545787337E-01   .323741514141E-01
+   .334268780544E-01   .345138367389E-01   .356361406081E-01   .367949389994E-01   .379914186235E-01
+   .392268047802E-01   .405023626127E-01   .418193984038E-01   .431792609133E-01   .445833427591E-01
+   .460330818438E-01   .475299628269E-01   .490755186453E-01   .506713320832E-01   .523190373930E-01
+   .540203219690E-01   .557769280752E-01   .575906546298E-01   .594633590472E-01   .613969591405E-01
+   .633934350851E-01   .654548314468E-01   .675832592756E-01   .697808982676E-01   .720499989972E-01
+   .743928852218E-01   .768119562617E-01   .793096894569E-01   .818886427046E-01   .845514570782E-01
+   .873008595323E-01   .901396656953E-01   .930707827527E-01   .960972124246E-01   .992220540394E-01
+   .102448507708E+00   .105779877601E+00   .109219575332E+00   .112771123452E+00   .116438159057E+00
+   .120224437512E+00   .124133836297E+00   .128170358977E+00   .132338139305E+00   .136641445452E+00
+   .141084684380E+00   .145672406352E+00   .150409309599E+00   .155300245122E+00   .160350221666E+00
+   .165564410850E+00   .170948152458E+00   .176506959912E+00   .182246525918E+00   .188172728291E+00
+   .194291635982E+00   .200609515285E+00   .207132836263E+00   .213868279365E+00   .220822742274E+00
+   .228003346967E+00   .235417447012E+00   .243072635094E+00   .250976750795E+00   .259137888621E+00
+   .267564406289E+00   .276264933290E+00   .285248379723E+00   .294523945424E+00   .304101129382E+00
+   .313989739470E+00   .324199902489E+00   .334742074538E+00   .345627051723E+00   .356865981211E+00
+   .368470372648E+00   .380452109945E+00   .392823463449E+00   .405597102506E+00   .418786108438E+00
+   .432403987941E+00   .446464686913E+00   .460982604738E+00   .475972609033E+00   .491450050872E+00
+   .507430780509E+00   .523931163606E+00   .540968097998E+00   .558559030995E+00   .576721977248E+00
+   .595475537203E+00   .614838916143E+00   .634831943861E+00   .655475094963E+00   .676789509841E+00
+   .698797016317E+00   .721520152003E+00   .744982187373E+00   .769207149603E+00   .794219847171E+00
+   .820045895265E+00
+ aepotential
+   .344620864381E+05   .335729348910E+05   .326607094679E+05   .317298527617E+05   .307850610750E+05
+   .298308294196E+05   .288714423118E+05   .279109409932E+05   .269531004174E+05   .260014122025E+05
+   .250590723857E+05   .241289743073E+05   .232137061556E+05   .223155526546E+05   .214365006885E+05
+   .205782481780E+05   .197422158561E+05   .189295613384E+05   .181411950859E+05   .173777977152E+05
+   .166398382559E+05   .159275929117E+05   .152411639803E+05   .145804985929E+05   .139454070005E+05
+   .133355801830E+05   .127506065798E+05   .121899878290E+05   .116531533851E+05   .111394739797E+05
+   .106482738762E+05   .101788419327E+05   .973044147139E+04   .930231902072E+04   .889371196167E+04
+   .850385516385E+04   .813198665588E+04   .777735243911E+04   .743921050565E+04   .711683412068E+04
+   .680951449358E+04   .651656285928E+04   .623731207683E+04   .597111778273E+04   .571735918511E+04
+   .547543952008E+04   .524478624895E+04   .502485103028E+04   .481510949625E+04   .461506088322E+04
+   .442422753164E+04   .424215429199E+04   .406840786784E+04   .390257606950E+04   .374426708320E+04
+   .359310864864E+04   .344874729194E+04   .331084749161E+04   .317909090091E+04   .305317553308E+04
+   .293281500979E+04   .281773778683E+04   .270768642593E+04   .260241688250E+04   .250169782385E+04
+   .240530996858E+04   .231304545700E+04   .222470724985E+04   .214010855063E+04   .205907226117E+04
+   .198143045752E+04   .190702389788E+04   .183570154950E+04   .176732014469E+04   .170174376187E+04
+   .163884341822E+04   .157849670118E+04   .152058740347E+04   .146500519043E+04   .141164527724E+04
+   .136040813035E+04   .131119918080E+04   .126392855649E+04   .121851082761E+04   .117486476841E+04
+   .113291313152E+04   .109258243223E+04   .105380275072E+04   .101650753965E+04   .980633446472E+03
+   .946120143433E+03   .912910169256E+03   .880948776621E+03   .850183792788E+03   .820565482959E+03
+   .792046425154E+03   .764581390092E+03   .738127227908E+03   .712642762779E+03   .688088691006E+03
+   .664427485954E+03   .641623309210E+03   .619641924627E+03   .598450617897E+03   .578018121645E+03
+   .558314542462E+03   .539311293781E+03   .520981031521E+03   .503297592970E+03   .486235939917E+03
+   .469772103352E+03   .453883132589E+03   .438547046213E+03   .423742785978E+03   .409450172651E+03
+   .395649864932E+03   .382323319715E+03   .369452755171E+03   .357021114941E+03   .345012034961E+03
+   .333409811120E+03   .322199369640E+03   .311366237899E+03   .300896517183E+03   .290776857231E+03
+   .280994431097E+03   .271536912121E+03   .262392451581E+03   .253549657589E+03   .244997574942E+03
+   .236725666004E+03   .228723792657E+03   .220982198738E+03   .213491493677E+03   .206242636794E+03
+   .199226922258E+03   .192435964878E+03   .185861686483E+03   .179496302942E+03   .173332311815E+03
+   .167362480543E+03   .161579835190E+03   .155977649674E+03   .150549435529E+03   .145288932112E+03
+   .140190097209E+03   .135247098073E+03   .130454302933E+03   .125806272739E+03   .121297753428E+03
+   .116923668358E+03   .112679111224E+03   .108559339155E+03   .104559766209E+03   .100675957051E+03
+   .969036209796E+02   .932386061771E+02   .896768941581E+02   .862145945364E+02   .828479399394E+02
+   .795732811790E+02   .763870825897E+02   .732859175903E+02   .702664644175E+02   .673255020247E+02
+   .644599061844E+02   .616666457159E+02   .589427788941E+02   .562854499948E+02   .536918860003E+02
+   .511593934268E+02   .486853553017E+02   .462672282535E+02   .439025397420E+02   .415888854025E+02
+   .393239265054E+02   .371053875305E+02   .349310538513E+02   .327987695257E+02   .307064351866E+02
+   .286520060380E+02   .266334899472E+02   .246489456285E+02   .226964809271E+02   .207742511855E+02
+   .188804577096E+02   .170133463090E+02   .151712059355E+02   .133523673943E+02   .115552021482E+02
+   .977812119341E+01   .801957401914E+01   .627804764882E+01   .455206574938E+01   .284018782908E+01
+   .114100849772E+01  -.546843190099E+00  -.222470432416E+01  -.389387865170E+01  -.555563702498E+01
+  -.721121777413E+01  -.886182701424E+01  -.105086388850E+02  -.121527957221E+02  -.137954081656E+02
+  -.154375552027E+02  -.170802841491E+02  -.187246105688E+02  -.203715181315E+02  -.220219584159E+02
+  -.236768506503E+02  -.253370814013E+02  -.270035042054E+02  -.286769391470E+02  -.303581723845E+02
+  -.320479556231E+02  -.337470055368E+02  -.354560031382E+02  -.371755930961E+02  -.389063829998E+02
+  -.406489425672E+02  -.424038027938E+02  -.441714550387E+02  -.459523500399E+02  -.477468968516E+02
+  -.495554616915E+02  -.513783666850E+02  -.532158884890E+02  -.550682567708E+02  -.569356525179E+02
+  -.588182061426E+02  -.607159953416E+02  -.626290426590E+02  -.645573126945E+02  -.665007088812E+02
+  -.684590697493E+02  -.704321645699E+02  -.724196882588E+02  -.744212553972E+02  -.764363932049E+02
+  -.784645332739E+02  -.805050018497E+02  -.825570084189E+02  -.846196323419E+02  -.866918072559E+02
+  -.887723029672E+02  -.908597045751E+02  -.929523886095E+02  -.950484960626E+02  -.971459023431E+02
+  -.992421844218E+02  -.101334585782E+03  -.103419980279E+03  -.105494836659E+03  -.107555186343E+03
+  -.109596598129E+03  -.111614164704E+03  -.113602507280E+03  -.115555806133E+03  -.117467866281E+03
+  -.119332228743E+03  -.121142338730E+03  -.122891782384E+03  -.124574603359E+03  -.126185709187E+03
+  -.127721375786E+03  -.129179849068E+03  -.130562037348E+03  -.131872249654E+03  -.133118881188E+03
+  -.134314825072E+03  -.135477192987E+03  -.136625659703E+03  -.137778518637E+03  -.138945648412E+03
+  -.140118549526E+03  -.141259817826E+03  -.142297364032E+03  -.143130166505E+03  -.143649392083E+03
+  -.143770896700E+03  -.143466650444E+03  -.142779438341E+03  -.141810639779E+03  -.140684648871E+03
+  -.139508468373E+03  -.138347629848E+03  -.137225671915E+03  -.136138333179E+03  -.135069529969E+03
+  -.134002012204E+03  -.132922043139E+03  -.131820225779E+03  -.130690626727E+03  -.129529519065E+03
+  -.128334338388E+03  -.127103016727E+03  -.125833658340E+03  -.124524453614E+03  -.123173726082E+03
+  -.121780032930E+03  -.120342269386E+03  -.118859752079E+03  -.117332272953E+03  -.115760124514E+03
+  -.114144101237E+03  -.112485482930E+03  -.110786005302E+03  -.109047821948E+03  -.107273460804E+03
+  -.105465777240E+03  -.103627905226E+03  -.101763207541E+03  -.998752256539E+02  -.979676297084E+02
+  -.960441689068E+02  -.941086224963E+02  -.921647514802E+02  -.902162518570E+02  -.882667076453E+02
+  -.863195480576E+02
+ core charge-density
+   .625549835994E-05   .666800504134E-05   .710770694600E-05   .757639628637E-05   .807598331802E-05
+   .860850410778E-05   .917612881239E-05   .978117050118E-05   .104260945584E-04   .111135287033E-04
+   .118462736682E-04   .126273145781E-04   .134598330771E-04   .143472202518E-04   .152930904017E-04
+   .163012957151E-04   .173759419064E-04   .185214048808E-04   .197423484910E-04   .210437434593E-04
+   .224308875404E-04   .239094270056E-04   .254853795358E-04   .271651586146E-04   .289555995192E-04
+   .308639870146E-04   .328980848607E-04   .350661672522E-04   .373770523150E-04   .398401377963E-04
+   .424654390887E-04   .452636297410E-04   .482460846186E-04   .514249258846E-04   .548130719857E-04
+   .584242898380E-04   .622732504215E-04   .663755880027E-04   .707479632232E-04   .754081303033E-04
+   .803750086285E-04   .856687590020E-04   .913108648668E-04   .973242188169E-04   .103733214742E-03
+   .110563845969E-03   .117843809786E-03   .125602618763E-03   .133871719311E-03   .142684617931E-03
+   .152077015675E-03   .162086951316E-03   .172754953815E-03   .184124204661E-03   .196240710731E-03
+   .209153488342E-03   .222914759203E-03   .237580159043E-03   .253208959714E-03   .269864305635E-03
+   .287613465490E-03   .306528100151E-03   .326684547867E-03   .348164127795E-03   .371053463070E-03
+   .395444824619E-03   .421436497058E-03   .449133168056E-03   .478646342645E-03   .510094784058E-03
+   .543604982759E-03   .579311655433E-03   .617358275824E-03   .657897639406E-03   .701092464009E-03
+   .747116028632E-03   .796152852835E-03   .848399419223E-03   .904064941684E-03   .963372182234E-03
+   .102655831945E-02   .109387587165E-02   .116559367828E-02   .124199794286E-02   .132339334157E-02
+   .141010420110E-02   .150247575032E-02   .160087545001E-02   .170569440540E-02   .181734886664E-02
+   .193628182230E-02   .206296469151E-02   .219789912070E-02   .234161889100E-02   .249469194297E-02
+   .265772252544E-02   .283135347583E-02   .301626863953E-02   .321319543645E-02   .342290758323E-02
+   .364622797998E-02   .388403177110E-02   .413724958987E-02   .440687099725E-02   .469394812583E-02
+   .499959954031E-02   .532501432642E-02   .567145642088E-02   .604026919554E-02   .643288030937E-02
+   .685080684263E-02   .729566072830E-02   .776915449617E-02   .827310734610E-02   .880945156718E-02
+   .938023932048E-02   .998764980358E-02   .106339968159E-01   .113217367443E-01   .120534769893E-01
+   .128319848529E-01   .136601969090E-01   .145412288792E-01   .154783860366E-01   .164751741595E-01
+   .175353110613E-01   .186627387172E-01   .198616360155E-01   .211364321554E-01   .224918207178E-01
+   .239327744331E-01   .254645606710E-01   .270927576767E-01   .288232715768E-01   .306623541799E-01
+   .326166215923E-01   .346930736722E-01   .368991143409E-01   .392425727696E-01   .417317254593E-01
+   .443753192252E-01   .471825950990E-01   .501633131551E-01   .533277782643E-01   .566868667757E-01
+   .602520541187E-01   .640354433157E-01   .680497943852E-01   .723085546110E-01   .768258896433E-01
+   .816167153881E-01   .866967306317E-01   .920824503355E-01   .977912395230E-01   .103841347667E+00
+   .110251943473E+00   .117043149927E+00   .124236079476E+00   .131852869168E+00   .139916715573E+00
+   .148451909274E+00   .157483868688E+00   .167039172970E+00   .177145593679E+00   .187832124907E+00
+   .199129011493E+00   .211067774932E+00   .223681236533E+00   .237003537347E+00   .251070154350E+00
+   .265917912286E+00   .281584990564E+00   .298110924537E+00   .315536600407E+00   .333904243004E+00
+   .353257395572E+00   .373640890661E+00   .395100811173E+00   .417684440517E+00   .441440200801E+00
+   .466417577909E+00   .492667032246E+00   .520239893902E+00   .549188240900E+00   .579564759170E+00
+   .611422582830E+00   .644815113329E+00   .679795815970E+00   .716417992322E+00   .754734527020E+00
+   .794797607463E+00   .836658414955E+00   .880366785870E+00   .925970841497E+00   .973516585329E+00
+   .102304746666E+01   .107460390956E+01   .112822280638E+01   .118393697538E+01   .124177458210E+01
+   .130175852453E+01   .136390578269E+01   .142822673320E+01   .149472443039E+01   .156339385578E+01
+   .163422113833E+01   .170718274867E+01   .178224467121E+01   .185936155863E+01   .193847587451E+01
+   .201951703024E+01   .210240052383E+01   .218702708883E+01   .227328186302E+01   .236103358719E+01
+   .245013384581E+01   .254041636236E+01   .263169636304E+01   .272377002387E+01   .281641401710E+01
+   .290938517367E+01   .300242027945E+01   .309523602333E+01   .318752911609E+01   .327897659887E+01
+   .336923636007E+01   .345794787948E+01   .354473321719E+01   .362919826436E+01   .371093427085E+01
+   .378951966301E+01   .386452216249E+01   .393550121345E+01   .400201072252E+01   .406360211102E+01
+   .411982767477E+01   .417024424100E+01   .421441710619E+01   .425192423234E+01   .428236067202E+01
+   .430534318581E+01   .432051500785E+01   .432755070794E+01   .432616109105E+01   .431609806767E+01
+   .429715942168E+01   .426919339592E+01   .423210301053E+01   .418585002452E+01   .413045844838E+01
+   .406601751409E+01   .399268400981E+01   .391068388909E+01   .382031307013E+01   .372193734800E+01
+   .361599135397E+01   .350297650932E+01   .338345793746E+01   .325806031784E+01   .312746268671E+01
+   .299239221437E+01   .285361701458E+01   .271193806915E+01   .256818037860E+01   .242318347665E+01
+   .227779147070E+01   .213284279909E+01   .198915989658E+01   .184753899553E+01   .170874027411E+01
+   .157347856698E+01   .144241483371E+01   .131614854842E+01   .119521112569E+01   .108006043765E+01
+   .971076418067E+00   .868557721402E+00   .772719447114E+00   .683692073759E+00   .601521935591E+00
+   .526173696431E+00   .457535189769E+00   .395424650783E+00   .339599878201E+00   .289768462616E+00
+   .245598123128E+00   .206726459316E+00   .172769862786E+00   .143331658667E+00   .118009628694E+00
+   .964029802611E-01   .781187114291E-01   .627772595572E-01   .500173176187E-01   .394997339384E-01
+   .309104557903E-01   .239625219489E-01   .183971482330E-01   .139839814991E-01   .105206211709E-01
+   .783152347062E-02   .576641243399E-02   .419832401429E-02   .302140579039E-02   .214858584976E-02
+   .150921140926E-02   .104674188219E-02   .716563673537E-03   .483976205693E-03   .322381627428E-03
+   .211695211051E-03   .136980222199E-03   .873004178539E-04   .547754089416E-04   .338188194079E-04
+   .205362239785E-04   .122588804757E-04   .718986054261E-05   .414088618653E-05   .234058876995E-05
+   .129766794578E-05
+ kinetic energy-density
+   .132176025795E+00   .133935190758E+00   .135761668823E+00   .137658262485E+00   .139627986720E+00
+   .141674035833E+00   .143799794426E+00   .146008844928E+00   .148304976284E+00   .150692193057E+00
+   .153174724964E+00   .155757037169E+00   .158443841093E+00   .161240106033E+00   .164151071593E+00
+   .167182260952E+00   .170339495149E+00   .173628908334E+00   .177056964154E+00   .180630473327E+00
+   .184356612448E+00   .188242944155E+00   .192297438694E+00   .196528496986E+00   .200944975290E+00
+   .205556211542E+00   .210372053444E+00   .215402888447E+00   .220659675688E+00   .226153980051E+00
+   .231898008388E+00   .237904648105E+00   .244187508236E+00   .250760963072E+00   .257640198646E+00
+   .264841262088E+00   .272381114163E+00   .280277685096E+00   .288549933816E+00   .297217911178E+00
+   .306302826851E+00   .315827120668E+00   .325814538349E+00   .336290211906E+00   .347280745353E+00
+   .358814305519E+00   .370920718749E+00   .383631573741E+00   .396980330632E+00   .411002437249E+00
+   .425735452489E+00   .441219177486E+00   .457495795227E+00   .474610018769E+00   .492609248970E+00
+   .511543742045E+00   .531466787872E+00   .552434899374E+00   .574508014020E+00   .597749707978E+00
+   .622227423754E+00   .648012712331E+00   .675181490499E+00   .703814314438E+00   .733996670649E+00
+   .765819285087E+00   .799378452009E+00   .834776383364E+00   .872121580296E+00   .911529228018E+00
+   .953121615574E+00   .997028581984E+00   .104338799046E+01   .109234623230E+01   .114405876274E+01
+   .119869066993E+01   .125641728002E+01   .131742479982E+01   .138191099985E+01   .145008593986E+01
+   .152217273989E+01   .159840839916E+01   .167904466597E+01   .176434896181E+01   .185460536262E+01
+   .195011564109E+01   .205120037326E+01   .215820011361E+01   .227147664259E+01   .239141429086E+01
+   .251842134511E+01   .265293153969E+01   .279540564002E+01   .294633312225E+01   .310623395535E+01
+   .327566049175E+01   .345519947206E+01   .364547415152E+01   .384714655437E+01   .406091986370E+01
+   .428754095473E+01   .452780307932E+01   .478254871036E+01   .505267255494E+01   .533912474579E+01
+   .564291422071E+01   .596511230019E+01   .630685647417E+01   .666935440928E+01   .705388818805E+01
+   .746181879232E+01   .789459084458E+01   .835373761891E+01   .884088633706E+01   .935776376336E+01
+   .990620211314E+01   .104881452909E+02   .111056554739E+02   .117609200576E+02   .124562589809E+02
+   .131941324473E+02   .139771490622E+02   .148080744026E+02   .156898400404E+02   .166255530370E+02
+   .176185059297E+02   .186721872297E+02   .197902924519E+02   .209767356968E+02   .222356618045E+02
+   .235714591012E+02   .249887727582E+02   .264925187826E+02   .280878986594E+02   .297804146618E+02
+   .315758858496E+02   .334804647683E+02   .355006548677E+02   .376433286489E+02   .399157465539E+02
+   .423255766040E+02   .448809147943E+02   .475903062448E+02   .504627671092E+02   .535078072330E+02
+   .567354535528E+02   .601562742178E+02   .637814034155E+02   .676225668666E+02   .716921079591E+02
+   .760030144672E+02   .805689458084E+02   .854042607667E+02   .905240456056E+02   .959441424815E+02
+   .101681178049E+03   .107752592143E+03   .114176666392E+03   .120972552609E+03   .128160300793E+03
+   .135760886523E+03   .143796237537E+03   .152289259245E+03   .161263858899E+03   .170744968109E+03
+   .180758563383E+03   .191331684306E+03   .202492448959E+03   .214270066138E+03   .226694843879E+03
+   .239798193771E+03   .253612630490E+03   .268171765933E+03   .283510297290E+03   .299663988351E+03
+   .316669643277E+03   .334565072038E+03   .353389046636E+03   .373181247220E+03   .393982197127E+03
+   .415833185818E+03   .438776178681E+03   .462853712577E+03   .488108776000E+03   .514584672670E+03
+   .542324867365E+03   .571372812760E+03   .601771756058E+03   .633564524166E+03   .666793286221E+03
+   .701499292269E+03   .737722586982E+03   .775501697325E+03   .814873293226E+03   .855871820381E+03
+   .898529104489E+03   .942873926389E+03   .988931567784E+03   .103672332747E+04   .108626600830E+04
+   .113757137544E+04   .119064558683E+04   .124548859720E+04   .130209353751E+04   .136044607208E+04
+   .142052373640E+04   .148229525921E+04   .154571987295E+04   .161074661763E+04   .167731364382E+04
+   .174534752129E+04   .181476256062E+04   .188546015605E+04   .195732815867E+04   .203024028995E+04
+   .210405560636E+04   .217861802691E+04   .225375593595E+04   .232928187445E+04   .240499233356E+04
+   .248066766472E+04   .255607212096E+04   .263095404408E+04   .270504621268E+04   .277806636514E+04
+   .284971791180E+04   .291969084901E+04   .298766288709E+04   .305330080234E+04   .311626202128E+04
+   .317619644332E+04   .323274850470E+04   .328555948400E+04   .333427004551E+04   .337852301282E+04
+   .341796636105E+04   .345225641087E+04   .348106120307E+04   .350406402702E+04   .352096707125E+04
+   .353149515895E+04   .353539952622E+04   .353246159564E+04   .352249669327E+04   .350535765276E+04
+   .348093824682E+04   .344917638314E+04   .341005700022E+04   .336361459689E+04   .330993533011E+04
+   .324915861635E+04   .318147817463E+04   .310714245333E+04   .302645438806E+04   .293977044482E+04
+   .284749891086E+04   .275009740545E+04   .264806959424E+04   .254196110373E+04   .243235464705E+04
+   .231986438895E+04   .220512959614E+04   .208880763954E+04   .197156643697E+04   .185407644573E+04
+   .173700236837E+04   .162099461974E+04   .150668097393E+04   .139465831045E+04   .128548489127E+04
+   .117967334783E+04   .107768468195E+04   .979923607561E+03   .886735573996E+03   .798405745392E+03
+   .715159972906E+03   .637167313519E+03   .564542994768E+03   .497350259215E+03   .435599806459E+03
+   .379246858276E+03   .328187667685E+03   .282258420739E+03   .241239058244E+03   .204862611625E+03
+   .172828208383E+03   .144814513432E+03   .120490951119E+03   .995258554820E+02   .815921605138E+02
+   .663716392437E+02   .535583897932E+02   .428618420638E+02   .340093008571E+02   .267479559883E+02
+   .208462991666E+02   .160949283081E+02   .123067613777E+02   .931671330706E+01   .698090988085E+01
+   .517552365756E+01   .379532122669E+01   .275201013792E+01   .197246887711E+01   .139693522036E+01
+   .977217978443E+00   .674985355080E+00   .460170689103E+00   .309524004753E+00   .205326232749E+00
+   .134272726203E+00   .865241474580E-01   .549161358338E-01   .343144068647E-01   .210989666792E-01
+   .127597318321E-01   .758574113557E-02   .443101963639E-02   .254169787533E-02   .143092283623E-02
+   .790186700406E-03
+ pspotential
+  -.153267498751E+03  -.153268334719E+03  -.153269144358E+03  -.153269928498E+03  -.153270687940E+03
+  -.153271423465E+03  -.153272135824E+03  -.153272825746E+03  -.153273493938E+03  -.153274141086E+03
+  -.153274767850E+03  -.153275374873E+03  -.153275962777E+03  -.153276532163E+03  -.153277083615E+03
+  -.153277617698E+03  -.153278134957E+03  -.153278635922E+03  -.153279121108E+03  -.153279591009E+03
+  -.153280046109E+03  -.153280486871E+03  -.153280913748E+03  -.153281327177E+03  -.153281727581E+03
+  -.153282115370E+03  -.153282490940E+03  -.153282854677E+03  -.153283206952E+03  -.153283548126E+03
+  -.153283878548E+03  -.153284198557E+03  -.153284508479E+03  -.153284808632E+03  -.153285099324E+03
+  -.153285380850E+03  -.153285653501E+03  -.153285917553E+03  -.153286173278E+03  -.153286420936E+03
+  -.153286660782E+03  -.153286893059E+03  -.153287118007E+03  -.153287335853E+03  -.153287546822E+03
+  -.153287751128E+03  -.153287948980E+03  -.153288140580E+03  -.153288326123E+03  -.153288505800E+03
+  -.153288679792E+03  -.153288848278E+03  -.153289011428E+03  -.153289169410E+03  -.153289322383E+03
+  -.153289470504E+03  -.153289613923E+03  -.153289752785E+03  -.153289887232E+03  -.153290017399E+03
+  -.153290143418E+03  -.153290265418E+03  -.153290383520E+03  -.153290497845E+03  -.153290608507E+03
+  -.153290715618E+03  -.153290819284E+03  -.153290919611E+03  -.153291016697E+03  -.153291110640E+03
+  -.153291201533E+03  -.153291289466E+03  -.153291374526E+03  -.153291456797E+03  -.153291536359E+03
+  -.153291613289E+03  -.153291687662E+03  -.153291759550E+03  -.153291829021E+03  -.153291896142E+03
+  -.153291960976E+03  -.153292023584E+03  -.153292084023E+03  -.153292142348E+03  -.153292198613E+03
+  -.153292252867E+03  -.153292305158E+03  -.153292355532E+03  -.153292404029E+03  -.153292450691E+03
+  -.153292495556E+03  -.153292538656E+03  -.153292580026E+03  -.153292619695E+03  -.153292657691E+03
+  -.153292694037E+03  -.153292728756E+03  -.153292761868E+03  -.153292793388E+03  -.153292823331E+03
+  -.153292851708E+03  -.153292878528E+03  -.153292903794E+03  -.153292927509E+03  -.153292949673E+03
+  -.153292970281E+03  -.153292989325E+03  -.153293006793E+03  -.153293022672E+03  -.153293036943E+03
+  -.153293049582E+03  -.153293060563E+03  -.153293069855E+03  -.153293077423E+03  -.153293083226E+03
+  -.153293087219E+03  -.153293089351E+03  -.153293089567E+03  -.153293087804E+03  -.153293083994E+03
+  -.153293078063E+03  -.153293069929E+03  -.153293059505E+03  -.153293046693E+03  -.153293031390E+03
+  -.153293013483E+03  -.153292992849E+03  -.153292969357E+03  -.153292942866E+03  -.153292913222E+03
+  -.153292880262E+03  -.153292843808E+03  -.153292803672E+03  -.153292759650E+03  -.153292711525E+03
+  -.153292659062E+03  -.153292602011E+03  -.153292540105E+03  -.153292473056E+03  -.153292400559E+03
+  -.153292322284E+03  -.153292237881E+03  -.153292146975E+03  -.153292049166E+03  -.153291944026E+03
+  -.153291831096E+03  -.153291709890E+03  -.153291579885E+03  -.153291440524E+03  -.153291291215E+03
+  -.153291131321E+03  -.153290960167E+03  -.153290777030E+03  -.153290581140E+03  -.153290371673E+03
+  -.153290147752E+03  -.153289908442E+03  -.153289652744E+03  -.153289379593E+03  -.153289087853E+03
+  -.153288776312E+03  -.153288443679E+03  -.153288088575E+03  -.153287709530E+03  -.153287304978E+03
+  -.153286873247E+03  -.153286412556E+03  -.153285921003E+03  -.153285396563E+03  -.153284837074E+03
+  -.153284240234E+03  -.153283603586E+03  -.153282924511E+03  -.153282200217E+03  -.153281427727E+03
+  -.153280603866E+03  -.153279725251E+03  -.153278788273E+03  -.153277789085E+03  -.153276723588E+03
+  -.153275587408E+03  -.153274375886E+03  -.153273084050E+03  -.153271706604E+03  -.153270237900E+03
+  -.153268671918E+03  -.153267002237E+03  -.153265222017E+03  -.153263323962E+03  -.153261300295E+03
+  -.153259142728E+03  -.153256842423E+03  -.153254389959E+03  -.153251775295E+03  -.153248987724E+03
+  -.153246015835E+03  -.153242847465E+03  -.153239469645E+03  -.153235868555E+03  -.153232029459E+03
+  -.153227936653E+03  -.153223573395E+03  -.153218921843E+03  -.153213962975E+03  -.153208676519E+03
+  -.153203040866E+03  -.153197032984E+03  -.153190628326E+03  -.153183800728E+03  -.153176522303E+03
+  -.153168763333E+03  -.153160492144E+03  -.153151674979E+03  -.153142275862E+03  -.153132256458E+03
+  -.153121575910E+03  -.153110190681E+03  -.153098054380E+03  -.153085117571E+03  -.153071327580E+03
+  -.153056628283E+03  -.153040959881E+03  -.153024258665E+03  -.153006456759E+03  -.152987481856E+03
+  -.152967256927E+03  -.152945699921E+03  -.152922723439E+03  -.152898234395E+03  -.152872133647E+03
+  -.152844315614E+03  -.152814667865E+03  -.152783070683E+03  -.152749396601E+03  -.152713509918E+03
+  -.152675266173E+03  -.152634511599E+03  -.152591082542E+03  -.152544804840E+03  -.152495493173E+03
+  -.152442950375E+03  -.152386966703E+03  -.152327319066E+03  -.152263770217E+03  -.152196067893E+03
+  -.152123943913E+03  -.152047113229E+03  -.151965272928E+03  -.151878101180E+03  -.151785256138E+03
+  -.151686374786E+03  -.151581071732E+03  -.151468937946E+03  -.151349539448E+03  -.151222415938E+03
+  -.151087079381E+03  -.150943012535E+03  -.150789667437E+03  -.150626463844E+03  -.150452787634E+03
+  -.150267989181E+03  -.150071381702E+03  -.149862239601E+03  -.149639796804E+03  -.149403245124E+03
+  -.149151732663E+03  -.148884362277E+03  -.148600190139E+03  -.148298224436E+03  -.147977424245E+03
+  -.147636698633E+03  -.147274906062E+03  -.146890854152E+03  -.146483299908E+03  -.146050950508E+03
+  -.145592464773E+03  -.145106455457E+03  -.144591492526E+03  -.144046107597E+03  -.143468799752E+03
+  -.142858042941E+03  -.142212295229E+03  -.141530010130E+03  -.140809650298E+03  -.140049703820E+03
+  -.139248703340E+03  -.138405248186E+03  -.137518029605E+03  -.136585859073E+03  -.135607699519E+03
+  -.134582699073E+03  -.133510226679E+03  -.132389908643E+03  -.131221664747E+03  -.130005742202E+03
+  -.128742745182E+03  -.127433657208E+03  -.126079853056E+03  -.124683096318E+03  -.123245518152E+03
+  -.121769572251E+03  -.120257960715E+03  -.118713525584E+03  -.117139101555E+03  -.115537327466E+03
+  -.113910418052E+03  -.112259903701E+03  -.110586354425E+03  -.108889113652E+03  -.107166074813E+03
+  -.105413536199E+03  -.103626169033E+03  -.101788508452E+03  -.999430277917E+02  -.980420648473E+02
+  -.960785627187E+02  -.940556466143E+02  -.921485909176E+02  -.902256659693E+02  -.882744476111E+02
+  -.863187908432E+02
+ core charge-density (pseudized)
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00   .000000000000E+00
+   .000000000000E+00
+ pseudo wavefunction
+   .165601274856E-03   .170986215157E-03   .176546260279E-03   .182287104195E-03   .188214626029E-03
+   .194334896081E-03   .200654182042E-03   .207178955413E-03   .213915898130E-03   .220871909412E-03
+   .228054112820E-03   .235469863558E-03   .243126756002E-03   .251032631476E-03   .259195586288E-03
+   .267623980014E-03   .276326444066E-03   .285311890524E-03   .294589521270E-03   .304168837407E-03
+   .314059648988E-03   .324272085066E-03   .334816604067E-03   .345704004495E-03   .356945435997E-03
+   .368552410777E-03   .380536815389E-03   .392910922904E-03   .405687405487E-03   .418879347365E-03
+   .432500258235E-03   .446564087093E-03   .461085236521E-03   .476078577438E-03   .491559464327E-03
+   .507543750959E-03   .524047806630E-03   .541088532924E-03   .558683381021E-03   .576850369569E-03
+   .595608103136E-03   .614975791265E-03   .634973268142E-03   .655621012910E-03   .676940170642E-03
+   .698952573993E-03   .721680765562E-03   .745148020973E-03   .769378372712E-03   .794396634742E-03
+   .820228427910E-03   .846900206184E-03   .874439283748E-03   .902873862971E-03   .932233063289E-03
+   .962546951024E-03   .993846570176E-03   .102616397421E-02   .105953225889E-02   .109398559615E-02
+   .112955926913E-02   .116628970826E-02   .120421452859E-02   .124337256831E-02   .128380392853E-02
+   .132555001431E-02   .136865357713E-02   .141315875859E-02   .145911113565E-02   .150655776733E-02
+   .155554724285E-02   .160612973141E-02   .165835703357E-02   .171228263430E-02   .176796175772E-02
+   .182545142368E-02   .188481050614E-02   .194609979345E-02   .200938205063E-02   .207472208357E-02
+   .214218680549E-02   .221184530537E-02   .228376891874E-02   .235803130072E-02   .243470850144E-02
+   .251387904391E-02   .259562400442E-02   .268002709556E-02   .276717475196E-02   .285715621874E-02
+   .295006364293E-02   .304599216783E-02   .314504003038E-02   .324730866178E-02   .335290279132E-02
+   .346193055363E-02   .357450359938E-02   .369073720957E-02   .381075041359E-02   .393466611106E-02
+   .406261119765E-02   .419471669497E-02   .433111788476E-02   .447195444729E-02   .461737060442E-02
+   .476751526719E-02   .492254218825E-02   .508261011925E-02   .524788297332E-02   .541852999284E-02
+   .559472592264E-02   .577665118885E-02   .596449208355E-02   .615844095538E-02   .635869640641E-02
+   .656546349531E-02   .677895394718E-02   .699938637020E-02   .722698647920E-02   .746198732663E-02
+   .770462954092E-02   .795516157261E-02   .821383994844E-02   .848092953369E-02   .875670380303E-02
+   .904144512013E-02   .933544502630E-02   .963900453860E-02   .995243445741E-02   .102760556841E-01
+   .106101995490E-01   .109552081499E-01   .113114347013E-01   .116792438955E-01   .120590122749E-01
+   .124511286162E-01   .128559943277E-01   .132740238587E-01   .137056451223E-01   .141512999320E-01
+   .146114444525E-01   .150865496644E-01   .155771018444E-01   .160836030610E-01   .166065716853E-01
+   .171465429196E-01   .177040693415E-01   .182797214664E-01   .188740883277E-01   .194877780754E-01
+   .201214185942E-01   .207756581406E-01   .214511660017E-01   .221486331730E-01   .228687730598E-01
+   .236123221990E-01   .243800410052E-01   .251727145395E-01   .259911533031E-01   .268361940553E-01
+   .277087006579E-01   .286095649458E-01   .295397076241E-01   .305000791949E-01   .314916609108E-01
+   .325154657596E-01   .335725394789E-01   .346639616015E-01   .357908465336E-01   .369543446654E-01
+   .381556435158E-01   .393959689112E-01   .406765862011E-01   .419988015081E-01   .433639630173E-01
+   .447734623020E-01   .462287356896E-01   .477312656669E-01   .492825823258E-01   .508842648510E-01
+   .525379430496E-01   .542452989239E-01   .560080682881E-01   .578280424287E-01   .597070698116E-01
+   .616470578325E-01   .636499746161E-01   .657178508593E-01   .678527817232E-01   .700569287714E-01
+   .723325219554E-01   .746818616470E-01   .771073207187E-01   .796113466687E-01   .821964637939E-01
+   .848652754061E-01   .876204660936E-01   .904648040245E-01   .934011432916E-01   .964324262953E-01
+   .995616861634E-01   .102792049205E+00   .106126737391E+00   .109569070868E+00   .113122470484E+00
+   .116790460339E+00   .120576670337E+00   .124484838752E+00   .128518814779E+00   .132682561076E+00
+   .136980156286E+00   .141415797513E+00   .145993802769E+00   .150718613337E+00   .155594796077E+00
+   .160627045623E+00   .165820186468E+00   .171179174922E+00   .176709100891E+00   .182415189482E+00
+   .188302802382E+00   .194377438986E+00   .200644737239E+00   .207110474140E+00   .213780565882E+00
+   .220661067553E+00   .227758172370E+00   .235078210363E+00   .242627646458E+00   .250413077873E+00
+   .258441230761E+00   .266718955998E+00   .275253224027E+00   .284051118653E+00   .293119829670E+00
+   .302466644194E+00   .312098936569E+00   .322024156685E+00   .332249816565E+00   .342783475014E+00
+   .353632720169E+00   .364805149715E+00   .376308348564E+00   .388149863728E+00   .400337176150E+00
+   .412877669191E+00   .425778593474E+00   .439047027769E+00   .452689835565E+00   .466713616955E+00
+   .481124655463E+00   .495928859375E+00   .511131697159E+00   .526738126515E+00   .542752516577E+00
+   .559178562785E+00   .576019193926E+00   .593276470840E+00   .610951476266E+00   .629044195346E+00
+   .647553386288E+00   .666476440712E+00   .685809233285E+00   .705545960242E+00   .725678966536E+00
+   .746198561387E+00   .767092822191E+00   .788347386848E+00   .809945234816E+00   .831866457373E+00
+   .854088017907E+00   .876583503344E+00   .899322868247E+00   .922272173564E+00   .945393322553E+00
+   .968643796991E+00   .991976397530E+00   .101533899278E+01   .103867428264E+01   .106191958231E+01
+   .108500663448E+01   .110786145843E+01   .113040424569E+01   .115254931351E+01   .117420512822E+01
+   .119527441206E+01   .121565434786E+01   .123523689697E+01   .125390924631E+01   .127155440041E+01
+   .128805193389E+01   .130327891850E+01   .131711103614E+01   .132942388590E+01   .134009448735E+01
+   .134900297496E+01   .135603446881E+01   .136108109375E+01   .136404410364E+01   .136483604759E+01
+   .136338289235E+01   .135962598792E+01   .135352373274E+01   .134505276160E+01   .133420844359E+01
+   .132100444141E+01   .130547105033E+01   .128765200718E+01   .126759944388E+01   .124536666092E+01
+   .122099842355E+01   .119451854586E+01   .116591463800E+01   .113513192355E+01   .110229857916E+01
+   .106760690066E+01   .103126913660E+01   .993503299915E+00   .954531323645E+00   .914577215088E+00
+   .873865221786E+00
+ ae wavefunction
+  -.779383096528E-03  -.804670312887E-03  -.830777581751E-03  -.857731471485E-03  -.885559409570E-03
+  -.914289710274E-03  -.943951603198E-03  -.974575262735E-03  -.100619183847E-02  -.103883348655E-02
+  -.107253340205E-02  -.110732585237E-02  -.114324621168E-02  -.118033099650E-02  -.121861790238E-02
+  -.125814584174E-02  -.129895498293E-02  -.134108679051E-02  -.138458406684E-02  -.142949099492E-02
+  -.147585318269E-02  -.152371770861E-02  -.157313316876E-02  -.162414972543E-02  -.167681915716E-02
+  -.173119491046E-02  -.178733215307E-02  -.184528782898E-02  -.190512071508E-02  -.196689147963E-02
+  -.203066274263E-02  -.209649913792E-02  -.216446737738E-02  -.223463631706E-02  -.230707702532E-02
+  -.238186285320E-02  -.245906950689E-02  -.253877512250E-02  -.262106034307E-02  -.270600839809E-02
+  -.279370518532E-02  -.288423935523E-02  -.297770239805E-02  -.307418873338E-02  -.317379580270E-02
+  -.327662416455E-02  -.338277759273E-02  -.349236317747E-02  -.360549142956E-02  -.372227638785E-02
+  -.384283572975E-02  -.396729088528E-02  -.409576715439E-02  -.422839382787E-02  -.436530431191E-02
+  -.450663625628E-02  -.465253168635E-02  -.480313713910E-02  -.495860380302E-02  -.511908766224E-02
+  -.528474964477E-02  -.545575577518E-02  -.563227733166E-02  -.581449100761E-02  -.600257907796E-02
+  -.619672957020E-02  -.639713644035E-02  -.660399975388E-02  -.681752587179E-02  -.703792764195E-02
+  -.726542459571E-02  -.750024315008E-02  -.774261681542E-02  -.799278640894E-02  -.825100027389E-02
+  -.851751450485E-02  -.879259317897E-02  -.907650859340E-02  -.936954150911E-02  -.967198140099E-02
+  -.998412671452E-02  -.103062851291E-01  -.106387738280E-01  -.109819197754E-01  -.113360599999E-01
+  -.117015418854E-01  -.120787234691E-01  -.124679737464E-01  -.128696729834E-01  -.132842130364E-01
+  -.137119976791E-01  -.141534429365E-01  -.146089774276E-01  -.150790427142E-01  -.155640936577E-01
+  -.160645987838E-01  -.165810406541E-01  -.171139162452E-01  -.176637373357E-01  -.182310308994E-01
+  -.188163395071E-01  -.194202217343E-01  -.200432525764E-01  -.206860238705E-01  -.213491447237E-01
+  -.220332419481E-01  -.227389605007E-01  -.234669639306E-01  -.242179348300E-01  -.249925752914E-01
+  -.257916073683E-01  -.266157735405E-01  -.274658371825E-01  -.283425830349E-01  -.292468176777E-01
+  -.301793700053E-01  -.311410917014E-01  -.321328577144E-01  -.331555667305E-01  -.342101416451E-01
+  -.352975300301E-01  -.364187045964E-01  -.375746636502E-01  -.387664315412E-01  -.399950591018E-01
+  -.412616240742E-01  -.425672315256E-01  -.439130142467E-01  -.453001331341E-01  -.467297775521E-01
+  -.482031656720E-01  -.497215447865E-01  -.512861915962E-01  -.528984124638E-01  -.545595436345E-01
+  -.562709514173E-01  -.580340323242E-01  -.598502131628E-01  -.617209510776E-01  -.636477335360E-01
+  -.656320782528E-01  -.676755330486E-01  -.697796756363E-01  -.719461133288E-01  -.741764826622E-01
+  -.764724489270E-01  -.788357056004E-01  -.812679736711E-01  -.837710008495E-01  -.863465606530E-01
+  -.889964513581E-01  -.917224948098E-01  -.945265350766E-01  -.974104369411E-01  -.100376084214E+00
+  -.103425377862E+00  -.106560233929E+00  -.109782581249E+00  -.113094358924E+00  -.116497513566E+00
+  -.119993996267E+00  -.123585759308E+00  -.127274752560E+00  -.131062919588E+00  -.134952193412E+00
+  -.138944491932E+00  -.143041712971E+00  -.147245728938E+00  -.151558381071E+00  -.155981473248E+00
+  -.160516765342E+00  -.165165966088E+00  -.169930725446E+00  -.174812626431E+00  -.179813176378E+00
+  -.184933797634E+00  -.190175817616E+00  -.195540458251E+00  -.201028824724E+00  -.206641893546E+00
+  -.212380499881E+00  -.218245324131E+00  -.224236877725E+00  -.230355488105E+00  -.236601282866E+00
+  -.242974173035E+00  -.249473835456E+00  -.256099694256E+00  -.262850901371E+00  -.269726316115E+00
+  -.276724483765E+00  -.283843613151E+00  -.291081553233E+00  -.298435768663E+00  -.305903314322E+00
+  -.313480808822E+00  -.321164407001E+00  -.328949771388E+00  -.336832042685E+00  -.344805809276E+00
+  -.352865075782E+00  -.361003230735E+00  -.369213013385E+00  -.377486479727E+00  -.385814967803E+00
+  -.394189062379E+00  -.402598559074E+00  -.411032428077E+00  -.419478777565E+00  -.427924816961E+00
+  -.436356820221E+00  -.444760089293E+00  -.453118917987E+00  -.461416556449E+00  -.469635176497E+00
+  -.477755838092E+00  -.485758457214E+00  -.493621775488E+00  -.501323331879E+00  -.508839436836E+00
+  -.516145149286E+00  -.523214256890E+00  -.530019260023E+00  -.536531359954E+00  -.542720451743E+00
+  -.548555122378E+00  -.554002654726E+00  -.559029037887E+00  -.563598984561E+00  -.567675956067E+00
+  -.571222195686E+00  -.574198770982E+00  -.576565625816E+00  -.578281642748E+00  -.579304716540E+00
+  -.579591839480E+00  -.579099199228E+00  -.577782289902E+00  -.575596037067E+00  -.572494937302E+00
+  -.568433212954E+00  -.563364982657E+00  -.557244448127E+00  -.550026097668E+00  -.541664926755E+00
+  -.532116675918E+00  -.521338086057E+00  -.509287171175E+00  -.495923508326E+00  -.481208544420E+00
+  -.465105919304E+00  -.447581804307E+00  -.428605255216E+00  -.408148578344E+00  -.386187708121E+00
+  -.362702594311E+00  -.337677596716E+00  -.311101884914E+00  -.282969840345E+00  -.253281457808E+00
+  -.222042743227E+00  -.189266104353E+00  -.154970730897E+00  -.119182960394E+00  -.819366258111E-01
+  -.432733805088E-01  -.324299545533E-02   .380963775271E-01   .806779844544E-01   .124426300356E+00
+   .169256927002E+00   .215076575501E+00   .261783156083E+00   .309265998475E+00   .357406219523E+00
+   .406077232836E+00   .455145352347E+00   .504470381268E+00   .553906024273E+00   .603299959640E+00
+   .652493503846E+00   .701320993687E+00   .749609226077E+00   .797177403836E+00   .843837924822E+00
+   .889398035072E+00   .933662031769E+00   .976433575826E+00   .101751780301E+01   .105672315067E+01
+   .109386297533E+01   .112875707838E+01   .116123322551E+01   .119112869576E+01   .121829185458E+01
+   .124258372123E+01   .126387948974E+01   .128206996159E+01   .129706285239E+01   .130878394122E+01
+   .131717803816E+01   .132220975218E+01   .132386404652E+01   .132214657395E+01   .131708378801E+01
+   .130872283014E+01   .129713119621E+01   .128239618878E+01   .126462416508E+01   .124393959283E+01
+   .122048392909E+01   .119441433896E+01   .116590227308E+01   .113513192355E+01   .110229857916E+01
+   .106760690066E+01   .103126913660E+01   .993503299915E+00   .954531323645E+00   .914577215088E+00
+   .873865221786E+00
+ pseudo wavefunction
+  -.412220112469E-04  -.425624482010E-04  -.439464728195E-04  -.453755024641E-04  -.468510005858E-04
+  -.483744782236E-04  -.499474955513E-04  -.515716634757E-04  -.532486452866E-04  -.549801583594E-04
+  -.567679759144E-04  -.586139288326E-04  -.605199075306E-04  -.624878638966E-04  -.645198132893E-04
+  -.666178366018E-04  -.687840823927E-04  -.710207690860E-04  -.733301872437E-04  -.757147019107E-04
+  -.781767550374E-04  -.807188679802E-04  -.833436440837E-04  -.860537713465E-04  -.888520251743E-04
+  -.917412712218E-04  -.947244683276E-04  -.978046715442E-04  -.100985035267E-03  -.104268816463E-03
+  -.107659378009E-03  -.111160192133E-03  -.114774843972E-03  -.118507035241E-03  -.122360588027E-03
+  -.126339448699E-03  -.130447691954E-03  -.134689524986E-03  -.139069291798E-03  -.143591477648E-03
+  -.148260713640E-03  -.153081781474E-03  -.158059618336E-03  -.163199321955E-03  -.168506155828E-03
+  -.173985554604E-03  -.179643129654E-03  -.185484674815E-03  -.191516172325E-03  -.197743798948E-03
+  -.204173932299E-03  -.210813157375E-03  -.217668273302E-03  -.224746300292E-03  -.232054486837E-03
+  -.239600317127E-03  -.247391518721E-03  -.255436070452E-03  -.263742210605E-03  -.272318445350E-03
+  -.281173557452E-03  -.290316615266E-03  -.299756982024E-03  -.309504325423E-03  -.319568627522E-03
+  -.329960194969E-03  -.340689669551E-03  -.351768039092E-03  -.363206648708E-03  -.375017212419E-03
+  -.387211825149E-03  -.399802975108E-03  -.412803556582E-03  -.426226883132E-03  -.440086701234E-03
+  -.454397204349E-03  -.469173047458E-03  -.484429362069E-03  -.500181771710E-03  -.516446407924E-03
+  -.533239926792E-03  -.550579525983E-03  -.568482962361E-03  -.586968570171E-03  -.606055279807E-03
+  -.625762637196E-03  -.646110823808E-03  -.667120677320E-03  -.688813712947E-03  -.711212145472E-03
+  -.734338911988E-03  -.758217695378E-03  -.782872948560E-03  -.808329919522E-03  -.834614677163E-03
+  -.861754137983E-03  -.889776093630E-03  -.918709239353E-03  -.948583203367E-03  -.979428577181E-03
+  -.101127694691E-02  -.104416092559E-02  -.107811418657E-02  -.111317149796E-02  -.114936875821E-02
+  -.118674303286E-02  -.122533259242E-02  -.126517695159E-02  -.130631690962E-02  -.134879459210E-02
+  -.139265349403E-02  -.143793852429E-02  -.148469605160E-02  -.153297395193E-02  -.158282165747E-02
+  -.163429020713E-02  -.168743229878E-02  -.174230234307E-02  -.179895651908E-02  -.185745283172E-02
+  -.191785117100E-02  -.198021337325E-02  -.204460328423E-02  -.211108682442E-02  -.217973205627E-02
+  -.225060925375E-02  -.232379097404E-02  -.239935213163E-02  -.247737007471E-02  -.255792466414E-02
+  -.264109835484E-02  -.272697627989E-02  -.281564633733E-02  -.290719927965E-02  -.300172880635E-02
+  -.309933165926E-02  -.320010772105E-02  -.330416011687E-02  -.341159531922E-02  -.352252325622E-02
+  -.363705742327E-02  -.375531499834E-02  -.387741696092E-02  -.400348821471E-02  -.413365771428E-02
+  -.426805859572E-02  -.440682831139E-02  -.455010876899E-02  -.469804647501E-02  -.485079268268E-02
+  -.500850354455E-02  -.517134026996E-02  -.533946928727E-02  -.551306241133E-02  -.569229701603E-02
+  -.587735621227E-02  -.606842903139E-02  -.626571061432E-02  -.646940240646E-02  -.667971235858E-02
+  -.689685513379E-02  -.712105232080E-02  -.735253265363E-02  -.759153223789E-02  -.783829478379E-02
+  -.809307184612E-02  -.835612307119E-02  -.862771645107E-02  -.890812858518E-02  -.919764494940E-02
+  -.949656017280E-02  -.980517832225E-02  -.101238131949E-01  -.104527886188E-01  -.107924387616E-01
+  -.111431084476E-01  -.115051534833E-01  -.118789409908E-01  -.122648497510E-01  -.126632705538E-01
+  -.130746065579E-01  -.134992736592E-01  -.139377008669E-01  -.143903306890E-01  -.148576195256E-01
+  -.153400380707E-01  -.158380717219E-01  -.163522209980E-01  -.168830019638E-01  -.174309466622E-01
+  -.179966035535E-01  -.185805379595E-01  -.191833325146E-01  -.198055876210E-01  -.204479219077E-01
+  -.211109726928E-01  -.217953964482E-01  -.225018692639E-01  -.232310873126E-01  -.239837673115E-01
+  -.247606469798E-01  -.255624854903E-01  -.263900639122E-01  -.272441856433E-01  -.281256768272E-01
+  -.290353867542E-01  -.299741882405E-01  -.309429779831E-01  -.319426768846E-01  -.329742303434E-01
+  -.340386085044E-01  -.351368064621E-01  -.362698444117E-01  -.374387677378E-01  -.386446470349E-01
+  -.398885780472E-01  -.411716815209E-01  -.424951029540E-01  -.438600122329E-01  -.452676031415E-01
+  -.467190927260E-01  -.482157205004E-01  -.497587474713E-01  -.513494549631E-01  -.529891432198E-01
+  -.546791297580E-01  -.564207474440E-01  -.582153422637E-01  -.600642707520E-01  -.619688970453E-01
+  -.639305895159E-01  -.659507169443E-01  -.680306441808E-01  -.701717272434E-01  -.723753077929E-01
+  -.746427069221E-01  -.769752181897E-01  -.793740998211E-01  -.818405659956E-01  -.843757771268E-01
+  -.869808290391E-01  -.896567409320E-01  -.924044420163E-01  -.952247566937E-01  -.981183881437E-01
+  -.101085900167E+00  -.104127697127E+00  -.107244001807E+00  -.110434831009E+00  -.113699968673E+00
+  -.117038936314E+00  -.120450960536E+00  -.123934937372E+00  -.127489393177E+00  -.131112441808E+00
+  -.134801737757E+00  -.138554424943E+00  -.142367080808E+00  -.146235655364E+00  -.150155404816E+00
+  -.154120819373E+00  -.158125544834E+00  -.162162297548E+00  -.166222772304E+00  -.170297542723E+00
+  -.174375953731E+00  -.178446005655E+00  -.182494229536E+00  -.186505553254E+00  -.190463158067E+00
+  -.194348325228E+00  -.198140272376E+00  -.201815979445E+00  -.205350003927E+00  -.208714285396E+00
+  -.211877939310E+00  -.214807040213E+00  -.217464394627E+00  -.219809304039E+00  -.221797318607E+00
+  -.223379982348E+00  -.224504570832E+00  -.225113822576E+00  -.225145665596E+00  -.224532940792E+00
+  -.223203124070E+00  -.221078049349E+00  -.218073634810E+00  -.214099614936E+00  -.209059281106E+00
+  -.202849233644E+00  -.195359148430E+00  -.186471561366E+00  -.176061674254E+00  -.163997186071E+00
+  -.150138154291E+00  -.134336891962E+00  -.116437908003E+00  -.962779008330E-01  -.736858195368E-01
+  -.484830127511E-01  -.204834941246E-01   .105056345896E-01   .446835448931E-01   .822547466436E-01
+   .123427745979E+00   .168413145922E+00   .217420989654E+00   .270657084570E+00   .328317970202E+00
+   .390584105101E+00   .457610748007E+00   .529515901005E+00   .606351591923E+00   .688292477140E+00
+   .775483611861E+00   .868104097163E+00   .966343881368E+00   .107040649767E+01   .118051230869E+01
+   .129690233012E+01
+ ae wavefunction
+   .151059377480E-03   .155960524120E-03   .161020612578E-03   .166244792305E-03   .171638379267E-03
+   .177206861306E-03   .182955903670E-03   .188891354729E-03   .195019251859E-03   .201345827531E-03
+   .207877515575E-03   .214620957660E-03   .221583009967E-03   .228770750086E-03   .236191484124E-03
+   .243852754039E-03   .251762345212E-03   .259928294254E-03   .268358897063E-03   .277062717136E-03
+   .286048594142E-03   .295325652768E-03   .304903311844E-03   .314791293754E-03   .324999634147E-03
+   .335538691950E-03   .346419159699E-03   .357652074193E-03   .369248827483E-03   .381221178204E-03
+   .393581263265E-03   .406341609899E-03   .419515148098E-03   .433115223427E-03   .447155610239E-03
+   .461650525311E-03   .476614641884E-03   .492063104159E-03   .508011542228E-03   .524476087471E-03
+   .541473388430E-03   .559020627168E-03   .577135536133E-03   .595836415542E-03   .615142151292E-03
+   .635072233421E-03   .655646775136E-03   .676886532411E-03   .698812924191E-03   .721448053199E-03
+   .744814727376E-03   .768936481966E-03   .793837602267E-03   .819543147059E-03   .846078972739E-03
+   .873471758171E-03   .901749030273E-03   .930939190367E-03   .961071541300E-03   .992176315370E-03
+   .102428470306E-02   .105742888264E-02   .109164205057E-02   .112695845284E-02   .116341341721E-02
+   .120104338633E-02   .123988595187E-02   .127997988956E-02   .132136519524E-02   .136408312197E-02
+   .140817621812E-02   .145368836653E-02   .150066482477E-02   .154915226652E-02   .159919882404E-02
+   .165085413180E-02   .170416937133E-02   .175919731719E-02   .181599238422E-02   .187461067603E-02
+   .193511003469E-02   .199755009177E-02   .206199232064E-02   .212850009012E-02   .219713871947E-02
+   .226797553469E-02   .234107992624E-02   .241652340816E-02   .249437967854E-02   .257472468145E-02
+   .265763667029E-02   .274319627253E-02   .283148655597E-02   .292259309636E-02   .301660404653E-02
+   .311361020695E-02   .321370509767E-02   .331698503180E-02   .342354919032E-02   .353349969836E-02
+   .364694170279E-02   .376398345126E-02   .388473637250E-02   .400931515794E-02   .413783784463E-02
+   .427042589925E-02   .440720430340E-02   .454830163989E-02   .469385018009E-02   .484398597219E-02
+   .499884893033E-02   .515858292446E-02   .532333587081E-02   .549325982298E-02   .566851106323E-02
+   .584925019418E-02   .603564223044E-02   .622785669018E-02   .642606768641E-02   .663045401763E-02
+   .684119925789E-02   .705849184563E-02   .728252517141E-02   .751349766390E-02   .775161287407E-02
+   .799707955702E-02   .825011175122E-02   .851092885468E-02   .877975569759E-02   .905682261099E-02
+   .934236549099E-02   .963662585794E-02   .993985090987E-02   .102522935698E-01   .105742125261E-01
+   .109058722650E-01   .112475430948E-01   .115995011607E-01   .119620284495E-01   .123354127833E-01
+   .127199478006E-01   .131159329245E-01   .135236733165E-01   .139434798145E-01   .143756688539E-01
+   .148205623706E-01   .152784876835E-01   .157497773562E-01   .162347690359E-01   .167338052661E-01
+   .172472332744E-01   .177754047297E-01   .183186754705E-01   .188774051983E-01   .194519571368E-01
+   .200426976531E-01   .206499958378E-01   .212742230423E-01   .219157523701E-01   .225749581184E-01
+   .232522151676E-01   .239478983153E-01   .246623815501E-01   .253960372634E-01   .261492353938E-01
+   .269223425006E-01   .277157207625E-01   .285297268961E-01   .293647109914E-01   .302210152575E-01
+   .310989726746E-01   .319989055478E-01   .329211239561E-01   .338659240917E-01   .348335864849E-01
+   .358243741068E-01   .368385303458E-01   .378762768513E-01   .389378112376E-01   .400233046424E-01
+   .411328991343E-01   .422667049611E-01   .434247976343E-01   .446072148414E-01   .458139531821E-01
+   .470449647194E-01   .483001533414E-01   .495793709266E-01   .508824133076E-01   .522090160269E-01
+   .535588498806E-01   .549315162446E-01   .563265421791E-01   .577433753083E-01   .591813784716E-01
+   .606398241459E-01   .621178886351E-01   .636146460304E-01   .651290619393E-01   .666599869875E-01
+   .682061500989E-01   .697661515563E-01   .713384558542E-01   .729213843511E-01   .745131077342E-01
+   .761116383119E-01   .777148221508E-01   .793203310770E-01   .809256545684E-01   .825280915617E-01
+   .841247422088E-01   .857124996153E-01   .872880416035E-01   .888478225428E-01   .903880652988E-01
+   .919047533556E-01   .933936231734E-01   .948501568487E-01   .962695751503E-01   .976468310133E-01
+   .989766035796E-01   .100253292878E+00   .101471015254E+00   .102623599651E+00   .103704584878E+00
+   .104707217978E+00   .105624453851E+00   .106448956270E+00   .107173100449E+00   .107788977341E+00
+   .108288399829E+00   .108662911011E+00   .108903794772E+00   .109002088849E+00   .108948600619E+00
+   .108733925814E+00   .108348470429E+00   .107782476040E+00   .107026048811E+00   .106069192420E+00
+   .104901845194E+00   .103513921706E+00   .101895359105E+00   .100036168453E+00   .979264913315E-01
+   .955566619749E-01   .929172751856E-01   .899992602665E-01   .867939611894E-01   .832932231985E-01
+   .794894860197E-01   .753758838152E-01   .709463519862E-01   .661957408865E-01   .611199364627E-01
+   .557159877905E-01   .499822414220E-01   .439184824105E-01   .375260818220E-01   .308081504919E-01
+   .237696987296E-01   .164178016160E-01   .876176947364E-02   .813323004364E-03  -.741322752467E-02
+  -.159007998325E-01  -.246293549443E-01  -.335757116697E-01  -.427133621408E-01  -.520122910084E-01
+  -.614388017831E-01  -.709553547884E-01  -.805204219704E-01  -.900883637045E-01  -.996093305631E-01
+  -.109029187229E+00  -.118289445417E+00  -.127327179510E+00  -.136074889026E+00  -.144460276770E+00
+  -.152405938844E+00  -.159829009187E+00  -.166640846770E+00  -.172746868312E+00  -.178046592839E+00
+  -.182433887306E+00  -.185797331820E+00  -.188020606003E+00  -.188982836131E+00  -.188558895599E+00
+  -.186619682941E+00  -.183032406141E+00  -.177660891660E+00  -.170365923942E+00  -.161005611726E+00
+  -.149435772257E+00  -.135510322374E+00  -.119081665288E+00  -.100001062586E+00  -.781189819864E-01
+  -.532854121368E-01  -.253501363098E-01   .583704303801E-02   .404261369719E-01   .785668685721E-01
+   .120408646344E+00   .166100622522E+00   .215791847373E+00   .269631532049E+00   .327769434397E+00
+   .390356384479E+00   .457544969431E+00   .529490400826E+00   .606351591923E+00   .688292477140E+00
+   .775483611861E+00   .868104097163E+00   .966343881368E+00   .107040649767E+01   .118051230869E+01
+   .129690233012E+01
+ pseudo wavefunction
+   .876800942919E-08   .934750820283E-08   .996530744023E-08   .106239385109E-07   .113261000886E-07
+   .120746692089E-07   .128727130575E-07   .137235015379E-07   .146305206693E-07   .155974868702E-07
+   .166283621861E-07   .177273705236E-07   .188990149574E-07   .201480961813E-07   .214797321784E-07
+   .228993791914E-07   .244128540793E-07   .260263581512E-07   .277465025757E-07   .295803354691E-07
+   .315353707747E-07   .336196190504E-07   .358416202909E-07   .382104789196E-07   .407359010930E-07
+   .434282344708E-07   .462985106142E-07   .493584901867E-07   .526207111420E-07   .560985400973E-07
+   .598062271014E-07   .637589640228E-07   .679729467968E-07   .724654417870E-07   .772548565319E-07
+   .823608151682E-07   .878042388385E-07   .936074314137E-07   .997941708807E-07   .106389806770E-06
+   .113421364022E-06   .120917653723E-06   .128909391148E-06   .137429321620E-06   .146512354678E-06
+   .156195707115E-06   .166519055469E-06   .177524698598E-06   .189257730987E-06   .201766227524E-06
+   .215101440481E-06   .229318009513E-06   .244474185538E-06   .260632069415E-06   .277857866393E-06
+   .296222157385E-06   .315800188158E-06   .336672177651E-06   .358923646660E-06   .382645768248E-06
+   .407935741319E-06   .434897188879E-06   .463640582620E-06   .494283695562E-06   .526952084616E-06
+   .561779605040E-06   .598908958892E-06   .638492279736E-06   .680691755993E-06   .725680295482E-06
+   .773642233894E-06   .824774090084E-06   .879285371278E-06   .937399431503E-06   .999354386754E-06
+   .106540409064E-05   .113581917451E-05   .121088815635E-05   .129091862290E-05   .137623848999E-05
+   .146719734613E-05   .156416788485E-05   .166754743180E-05   .177775957271E-05   .189525588897E-05
+   .202051780793E-05   .215405857544E-05   .229642535878E-05   .244820148864E-05   .261000884915E-05
+   .278251042597E-05   .296641302275E-05   .316247015708E-05   .337148514794E-05   .359431440709E-05
+   .383187094802E-05   .408512812686E-05   .435512363048E-05   .464296372811E-05   .494982780407E-05
+   .527697318997E-05   .562574031625E-05   .599755820430E-05   .639395032137E-05   .681654082259E-05
+   .726706120540E-05   .774735740376E-05   .825939735129E-05   .880527904412E-05   .938723913663E-05
+   .100076621053E-04   .106690900180E-04   .113742329492E-04   .121259800829E-04   .129274115503E-04
+   .137818110482E-04   .146926792929E-04   .156637483622E-04   .166989969852E-04   .178026668427E-04
+   .189792799449E-04   .202336571571E-04   .215709379492E-04   .229966014514E-04   .245164888998E-04
+   .261368275659E-04   .278642562675E-04   .297058525640E-04   .316691617501E-04   .337622277638E-04
+   .359936261373E-04   .383724991248E-04   .409085931505E-04   .436122987313E-04   .464946930367E-04
+   .495675852597E-04   .528435649859E-04   .563360537566E-04   .600593600386E-04   .640287378248E-04
+   .682604491045E-04   .727718304609E-04   .775813640660E-04   .827087533641E-04   .881750037533E-04
+   .940025085951E-04   .100215140902E-03   .106838351079E-03   .113899271120E-03   .121426825680E-03
+   .129451850478E-03   .138007218521E-03   .147127974656E-03   .156851478992E-03   .167217559805E-03
+   .178268676513E-03   .190050093415E-03   .202610064881E-03   .216000032767E-03   .230274836838E-03
+   .245492939072E-03   .261716662751E-03   .279012447307E-03   .297451119968E-03   .317108185303E-03
+   .338064133837E-03   .360404770996E-03   .384221567711E-03   .409612034101E-03   .436680117756E-03
+   .465536628216E-03   .496299689376E-03   .529095221642E-03   .564057455770E-03   .601329480479E-03
+   .641063826030E-03   .683423086115E-03   .728580580566E-03   .776721061532E-03   .828041465956E-03
+   .882751717358E-03   .941075580128E-03   .100325156974E-02   .106953392247E-02   .114019362857E-02
+   .121551953281E-02   .129581950697E-02   .138142169865E-02   .147267586158E-02   .156995477238E-02
+   .167365573951E-02   .178420221022E-02   .190204548166E-02   .202766652295E-02   .216157791508E-02
+   .230432591607E-02   .245649265950E-02   .261869849446E-02   .279160447600E-02   .297591501533E-02
+   .317238069977E-02   .338180129278E-02   .360502892529E-02   .384297148989E-02   .409659625027E-02
+   .436693367886E-02   .465508153640E-02   .496220920774E-02   .528956230910E-02   .563846758260E-02
+   .601033809478E-02   .640667875647E-02   .682909218230E-02   .727928490893E-02   .775907399167E-02
+   .827039400030E-02   .881530443543E-02   .939599758743E-02   .100148068609E-01   .106742155883E-01
+   .113768663561E-01   .121255708695E-01   .129233203788E-01   .137732966940E-01   .146788838121E-01
+   .156436801832E-01   .166715116379E-01   .177664450033E-01   .189328024277E-01   .201751764366E-01
+   .214984457406E-01   .229077918110E-01   .244087162380E-01   .260070588813E-01   .277090168194E-01
+   .295211640968E-01   .314504722621E-01   .335043316825E-01   .356905736097E-01   .380174929610E-01
+   .404938717663E-01   .431290032176E-01   .459327162362E-01   .489154004572E-01   .520880315025E-01
+   .554621963885E-01   .590501188839E-01   .628646845960E-01   .669194655242E-01   .712287437731E-01
+   .758075340664E-01   .806716046432E-01   .858374960531E-01   .913225372928E-01   .971448586440E-01
+   .103323400480E+00   .109877917210E+00   .116828975410E+00   .124197945074E+00   .132006982779E+00
+   .140279005407E+00   .149037652906E+00   .158307238415E+00   .168112683857E+00   .178479438948E+00
+   .189433381339E+00   .201000695392E+00   .213207726887E+00   .226080810723E+00   .239646068460E+00
+   .253929172356E+00   .268955072346E+00   .284747682278E+00   .301329521590E+00   .318721308578E+00
+   .336941501427E+00   .356005783316E+00   .375926488182E+00   .396711964169E+00   .418365872421E+00
+   .440886419795E+00   .464265525259E+00   .488487921304E+00   .513530193674E+00   .539359765212E+00
+   .565933832605E+00   .593198268522E+00   .621086505922E+00   .649518426467E+00   .678399280811E+00
+   .707618675275E+00   .737049666855E+00   .766548016726E+00   .795951661151E+00   .825080467758E+00
+   .853736354175E+00   .881703854475E+00   .908751226040E+00   .934632194409E+00   .959088435217E+00
+   .981852888934E+00   .100265399395E+01   .102122090455E+01   .103728972981E+01   .105061078496E+01
+   .106095678522E+01   .106813183090E+01   .107198092903E+01   .107239966993E+01   .106934352597E+01
+   .106283606749E+01   .105297520198E+01   .103993634791E+01   .102397126974E+01   .100540114852E+01
+   .984602376785E+00   .961983587564E+00   .937952609537E+00   .912872443939E+00   .887006052763E+00
+   .860452992548E+00
+ ae wavefunction
+   .106376700892E-06   .113087413803E-06   .120167236645E-06   .127639483744E-06   .135528816674E-06
+   .143861331680E-06   .152664652631E-06   .161968029723E-06   .171802444287E-06   .182200720122E-06
+   .193197641780E-06   .204830080265E-06   .217137126625E-06   .230160233977E-06   .243943368496E-06
+   .258533169978E-06   .273979122604E-06   .290333736564E-06   .307652741272E-06   .325995290924E-06
+   .345424183216E-06   .366006092090E-06   .387811815424E-06   .410916538653E-06   .435400115376E-06
+   .461347366055E-06   .488848395999E-06   .517998933913E-06   .548900692345E-06   .581661751487E-06
+   .616396967856E-06   .653228409491E-06   .692285819420E-06   .733707109229E-06   .777638884741E-06
+   .824237005887E-06   .873667183032E-06   .926105612138E-06   .981739651318E-06   .104076854150E-05
+   .110340417408E-05   .116987190869E-05   .124041144428E-05   .131527774710E-05   .139474203931E-05
+   .147909285209E-05   .156863714758E-05   .166370151417E-05   .176463343984E-05   .187180266875E-05
+   .198560264655E-05   .210645206009E-05   .223479647791E-05   .237111009795E-05   .251589760950E-05
+   .266969617698E-05   .283307755347E-05   .300665033235E-05   .319106234635E-05   .338700322333E-05
+   .359520710936E-05   .381645556972E-05   .405158067970E-05   .430146831748E-05   .456706167228E-05
+   .484936498185E-05   .514944751434E-05   .546844781039E-05   .580757820245E-05   .616812962949E-05
+   .655147676623E-05   .695908348745E-05   .739250868932E-05   .785341249074E-05   .834356283974E-05
+   .886484255102E-05   .941925680293E-05   .100089411236E-04   .106361698981E-04   .113033654302E-04
+   .120131075958E-04   .127681441243E-04   .135714015515E-04   .144259968849E-04   .153352500294E-04
+   .163026970217E-04   .173321041264E-04   .184274828491E-04   .195931059255E-04   .208335243507E-04
+   .221535855148E-04   .235584525170E-04   .250536247328E-04   .266449597174E-04   .283386965292E-04
+   .301414805655E-04   .320603900083E-04   .341029639827E-04   .362772325379E-04   .385917485686E-04
+   .410556217999E-04   .436785549684E-04   .464708823404E-04   .494436107148E-04   .526084630715E-04
+   .559779250320E-04   .595652943117E-04   .633847333553E-04   .674513253550E-04   .717811338686E-04
+   .763912662638E-04   .812999412304E-04   .865265606192E-04   .920917858780E-04   .980176193759E-04
+   .104327490922E-03   .111046349803E-03   .118200762693E-03   .125819017788E-03   .133931235567E-03
+   .142569486591E-03   .151767916764E-03   .161562880536E-03   .171993082532E-03   .183099728119E-03
+   .194926683483E-03   .207520645769E-03   .220931323935E-03   .235211630950E-03   .250417888030E-03
+   .266610041664E-03   .283851894174E-03   .302211348653E-03   .321760669129E-03   .342576756879E-03
+   .364741443858E-03   .388341804248E-03   .413470485229E-03   .440226058081E-03   .468713390831E-03
+   .499044043701E-03   .531336688690E-03   .565717554690E-03   .602320899606E-03   .641289511049E-03
+   .682775237216E-03   .726939549682E-03   .773954139915E-03   .824001551398E-03   .877275849343E-03
+   .933983330099E-03   .994343272418E-03   .105858873288E-02   .112696738786E-02   .119974242457E-02
+   .127719348371E-02   .135961765659E-02   .144733053946E-02   .154066734799E-02   .163998409513E-02
+   .174565883545E-02   .185809297922E-02   .197771267987E-02   .210497029824E-02   .224034594739E-02
+   .238434912175E-02   .253752041457E-02   .270043332766E-02   .287369617763E-02   .305795410281E-02
+   .325389117523E-02   .346223262206E-02   .368374716102E-02   .391924945424E-02   .416960268529E-02
+   .443572126384E-02   .471857366264E-02   .501918539142E-02   .533864211224E-02   .567809290071E-02
+   .603875365747E-02   .642191067419E-02   .682892435788E-02   .726123311760E-02   .772035741668E-02
+   .820790399386E-02   .872557025585E-02   .927514884363E-02   .985853237406E-02   .104777183579E-01
+   .111348142943E-01   .118320429415E-01   .125717477618E-01   .133563985387E-01   .141885971617E-01
+   .150710835746E-01   .160067418798E-01   .169986065912E-01   .180498690246E-01   .191638838151E-01
+   .203441755463E-01   .215944454747E-01   .229185783311E-01   .243206491763E-01   .258049302872E-01
+   .273758980435E-01   .290382397858E-01   .307968606070E-01   .326568900396E-01   .346236885944E-01
+   .367028541013E-01   .389002278011E-01   .412219001270E-01   .436742161149E-01   .462637803697E-01
+   .489974615148E-01   .518823960404E-01   .549259914628E-01   .581359287001E-01   .615201635596E-01
+   .650869272297E-01   .688447256561E-01   .728023376806E-01   .769688118071E-01   .813534614566E-01
+   .859658585633E-01   .908158253555E-01   .959134241600E-01   .101268945060E+00   .106892891232E+00
+   .112795961776E+00   .118989031859E+00   .125483129974E+00   .132289412126E+00   .139419132743E+00
+   .146883612124E+00   .154694200223E+00   .162862236587E+00   .171399006251E+00   .180315691438E+00
+   .189623318879E+00   .199332702626E+00   .209454382222E+00   .219998556134E+00   .230975010377E+00
+   .242393042285E+00   .254261379434E+00   .266588093757E+00   .279380510946E+00   .292645115267E+00
+   .306387449993E+00   .320612013705E+00   .335322152738E+00   .350519950160E+00   .366206111659E+00
+   .382379848796E+00   .399038760101E+00   .416178710538E+00   .433793709878E+00   .451875790568E+00
+   .470414885758E+00   .489398708235E+00   .508812631219E+00   .528639572274E+00   .548859882133E+00
+   .569451240978E+00   .590388565945E+00   .611643935260E+00   .633186536732E+00   .654982651249E+00
+   .676995685242E+00   .699186268990E+00   .721512438144E+00   .743929910111E+00   .766392449272E+00
+   .788852279292E+00   .811260446533E+00   .833566980334E+00   .855720670381E+00   .877668337660E+00
+   .899353638918E+00   .920715675787E+00   .941687868576E+00   .962197568574E+00   .982166651298E+00
+   .100151294021E+01   .102015199363E+01   .103799875596E+01   .105496880038E+01   .107097916191E+01
+   .108594890868E+01   .109979961198E+01   .111245582099E+01   .112384558656E+01   .113390103606E+01
+   .114255897893E+01   .114976151523E+01   .115545662016E+01   .115959868275E+01   .116214898256E+01
+   .116307609395E+01   .116235621160E+01   .115997339441E+01   .115591972686E+01   .115019539897E+01
+   .114280870681E+01   .113377597710E+01   .112312142000E+01   .111087691529E+01   .109708173797E+01
+   .108178222991E+01   .106503142466E+01   .104688863309E+01   .102741899727E+01   .100669302004E+01
+   .984786077433E+00   .961777919909E+00   .937752168082E+00   .912795806820E+00   .886998680870E+00
+   .860452992548E+00
+ pseudo wavefunction
+  -.484981210978E-08  -.517034782341E-08  -.551206851094E-08  -.587637433806E-08  -.626475801078E-08
+  -.667881089163E-08  -.712022952007E-08  -.759082256394E-08  -.809251823026E-08  -.862737216586E-08
+  -.919757588020E-08  -.980546572483E-08  -.104535324664E-07  -.111444314922E-07  -.118809936904E-07
+  -.126662370496E-07  -.135033790242E-07  -.143958497179E-07  -.153473059381E-07  -.163616461796E-07
+  -.174430265977E-07  -.185958780382E-07  -.198249241917E-07  -.211352009493E-07  -.225320770357E-07
+  -.240212760075E-07  -.256088997050E-07  -.273014532535E-07  -.291058717175E-07  -.310295485164E-07
+  -.330803657184E-07  -.352667263361E-07  -.375975887573E-07  -.400825034508E-07  -.427316520988E-07
+  -.455558893145E-07  -.485667871188E-07  -.517766823542E-07  -.551987272348E-07  -.588469432353E-07
+  -.627362785426E-07  -.668826693048E-07  -.713031049274E-07  -.760156976854E-07  -.810397569369E-07
+  -.863958682405E-07  -.921059777024E-07  -.981934818985E-07  -.104683323739E-06  -.111602094668E-06
+  -.118978143621E-06  -.126841693181E-06  -.135224963409E-06  -.144162303866E-06  -.153690334354E-06
+  -.163848094962E-06  -.174677206025E-06  -.186222038665E-06  -.198529896590E-06  -.211651209915E-06
+  -.225639741800E-06  -.240552808727E-06  -.256451515356E-06  -.273401004888E-06  -.291470725984E-06
+  -.310734717316E-06  -.331271910937E-06  -.353166455688E-06  -.376508061991E-06  -.401392369417E-06
+  -.427921338563E-06  -.456203668815E-06  -.486355243727E-06  -.518499605835E-06  -.552768462857E-06
+  -.589302227334E-06  -.628250591955E-06  -.669773142891E-06  -.714040013671E-06  -.761232582275E-06
+  -.811544214289E-06  -.865181055189E-06  -.922362874974E-06  -.983323968628E-06  -.104831411609E-05
+  -.111759960569E-05  -.119146432515E-05  -.127021092481E-05  -.135416205761E-05  -.144366170111E-05
+  -.153907656682E-05  -.164079760268E-05  -.174924159491E-05  -.186485287559E-05  -.198810514322E-05
+  -.211950340349E-05  -.225958603841E-05  -.240892701210E-05  -.256813822235E-05  -.273787200769E-05
+  -.291882382001E-05  -.311173507387E-05  -.331739618410E-05  -.353664980411E-05  -.377039427823E-05
+  -.401958732215E-05  -.428524994664E-05  -.456847064045E-05  -.487040982971E-05  -.519230463199E-05
+  -.553547392442E-05  -.590132374684E-05  -.629135306184E-05  -.670715989552E-05  -.715044788386E-05
+  -.762303325178E-05  -.812685225324E-05  -.866396910290E-05  -.923658443192E-05  -.984704430227E-05
+  -.104978498167E-04  -.111916673638E-04  -.119313395390E-04  -.127198967884E-04  -.135605698208E-04
+  -.144568028395E-04  -.154122676493E-04  -.164308786935E-04  -.175168090859E-04  -.186745077006E-04
+  -.199087173907E-04  -.212244944099E-04  -.226272291173E-04  -.241226680492E-04  -.257169374475E-04
+  -.274165683426E-04  -.292285232921E-04  -.311602248837E-04  -.332195861213E-04  -.354150428150E-04
+  -.377555881103E-04  -.402508092948E-04  -.429109270347E-04  -.457468371992E-04  -.487701554451E-04
+  -.519932647415E-04  -.554293660300E-04  -.590925322246E-04  -.629977657738E-04  -.671610600158E-04
+  -.715994645799E-04  -.763311550967E-04  -.813755075024E-04  -.867531772382E-04  -.924861836656E-04
+  -.985980000416E-04  -.105113649416E-03  -.112059806841E-03  -.119464908308E-03  -.127359266843E-03
+  -.135775196248E-03  -.144747142968E-03  -.154311826620E-03  -.164508389768E-03  -.175378557515E-03
+  -.186966807581E-03  -.199320551533E-03  -.212490327900E-03  -.226530007941E-03  -.241497014895E-03
+  -.257452557576E-03  -.274461879255E-03  -.292594522804E-03  -.311924613169E-03  -.332531158267E-03
+  -.354498369521E-03  -.377916003265E-03  -.402879724382E-03  -.429491493587E-03  -.457859979859E-03
+  -.488100999641E-03  -.520337984491E-03  -.554702478997E-03  -.591334670871E-03  -.630383955233E-03
+  -.672009535253E-03  -.716381061407E-03  -.763679311757E-03  -.814096915808E-03  -.867839124620E-03
+  -.925124630025E-03  -.986186435947E-03  -.105127278500E-02  -.112064814366E-02  -.119459424963E-02
+  -.127341122495E-02  -.135741875884E-02  -.144695736438E-02  -.154238971319E-02  -.164410205274E-02
+  -.175250571083E-02  -.186803869227E-02  -.199116737280E-02  -.212238829545E-02  -.226223007509E-02
+  -.241125541661E-02  -.257006325271E-02  -.273929100740E-02  -.291961699125E-02  -.311176293483E-02
+  -.331649666668E-02  -.353463494230E-02  -.376704643060E-02  -.401465486427E-02  -.427844236040E-02
+  -.455945291747E-02  -.485879609456E-02  -.517765087828E-02  -.551726974244E-02  -.587898290465E-02
+  -.626420278338E-02  -.667442865800E-02  -.711125153281E-02  -.757635920484E-02  -.807154153319E-02
+  -.859869590547E-02  -.915983289434E-02  -.975708209415E-02  -.103926981239E-01  -.110690667787E-01
+  -.117887113070E-01  -.125542987846E-01  -.133686465518E-01  -.142347286687E-01  -.151556823396E-01
+  -.161348142443E-01  -.171756067022E-01  -.182817235853E-01  -.194570158786E-01  -.207055267687E-01
+  -.220314961265E-01  -.234393642216E-01  -.249337744894E-01  -.265195751357E-01  -.282018193402E-01
+  -.299857637799E-01  -.318768651574E-01  -.338807743746E-01  -.360033279438E-01  -.382505361751E-01
+  -.406285676186E-01  -.431437291758E-01  -.458024412223E-01  -.486112070040E-01  -.515765754874E-01
+  -.547050967478E-01  -.580032688826E-01  -.614774753320E-01  -.651339113731E-01  -.689784984396E-01
+  -.730167847954E-01  -.772538309642E-01  -.816940781960E-01  -.863411981213E-01  -.911979216348E-01
+  -.962658449377E-01  -.101545210582E+00  -.107034661297E+00  -.112730964337E+00  -.118628704124E+00
+  -.124719941003E+00  -.130993834083E+00  -.137436226395E+00  -.144029190886E+00  -.150750536321E+00
+  -.157573272760E+00  -.164465037129E+00  -.171387480481E+00  -.178295619833E+00  -.185137159123E+00
+  -.191851785719E+00  -.198370451268E+00  -.204614648334E+00  -.210495697360E+00  -.215914062001E+00
+  -.220758714745E+00  -.224906578945E+00  -.228222077845E+00  -.230556825737E+00  -.231749500859E+00
+  -.231625943672E+00  -.229999527507E+00  -.226671850571E+00  -.221433798478E+00  -.214067024019E+00
+  -.204345884891E+00  -.192039869647E+00  -.176916526010E+00  -.158744882936E+00  -.137299327216E+00
+  -.112363856392E+00  -.837365817490E-01  -.512342988727E-01  -.146968800657E-01   .260088236197E-01
+   .709859473943E-01   .120305874995E+00   .174008258681E+00   .232103247571E+00   .294576302991E+00
+   .361395818621E+00   .432523481873E+00   .507926877214E+00   .587593208619E+00   .671542180701E+00
+   .759835015304E+00   .852575310011E+00   .949896029782E+00   .105192549120E+01   .115872396875E+01
+   .127018390490E+01
+ ae wavefunction
+  -.472972142918E-07  -.502809550806E-07  -.534288103841E-07  -.567511463376E-07  -.602589280982E-07
+  -.639637587127E-07  -.678779204502E-07  -.720144186850E-07  -.763870284991E-07  -.810103441839E-07
+  -.858998318329E-07  -.910718852297E-07  -.965438852493E-07  -.102334263003E-06  -.108462566976E-06
+  -.114949534415E-06  -.121817167258E-06  -.129088812886E-06  -.136789250034E-06  -.144944780187E-06
+  -.153583324830E-06  -.162734528931E-06  -.172429871071E-06  -.182702780661E-06  -.193588762704E-06
+  -.205125530605E-06  -.217353147560E-06  -.230314177081E-06  -.244053843261E-06  -.258620201423E-06
+  -.274064319833E-06  -.290440473203E-06  -.307806348753E-06  -.326223265675E-06  -.345756408863E-06
+  -.366475077844E-06  -.388452951924E-06  -.411768372601E-06  -.436504644380E-06  -.462750355197E-06
+  -.490599717748E-06  -.520152933077E-06  -.551516577900E-06  -.584804017213E-06  -.620135843834E-06
+  -.657640346671E-06  -.697454009563E-06  -.739722042725E-06  -.784598948928E-06  -.832249126674E-06
+  -.882847512809E-06  -.936580267150E-06  -.993645501866E-06  -.105425405856E-05  -.111863033617E-05
+  -.118701317300E-05  -.125965678643E-05  -.133683177411E-05  -.141882618059E-05  -.150594663373E-05
+  -.159851955544E-05  -.169689245154E-05  -.180143528606E-05  -.191254194527E-05  -.203063179756E-05
+  -.215615135520E-05  -.228957604481E-05  -.243141209348E-05  -.258219853821E-05  -.274250936664E-05
+  -.291295579765E-05  -.309418871095E-05  -.328690123535E-05  -.349183150611E-05  -.370976560225E-05
+  -.394154067566E-05  -.418804828444E-05  -.445023794372E-05  -.472912090816E-05  -.502577420112E-05
+  -.534134490660E-05  -.567705474085E-05  -.603420492205E-05  -.641418135716E-05  -.681846016657E-05
+  -.724861356850E-05  -.770631614632E-05  -.819335152374E-05  -.871161947402E-05  -.926314349147E-05
+  -.985007885489E-05  -.104747212149E-04  -.111395157389E-04  -.118470668493E-04  -.126001485937E-04
+  -.134017156874E-04  -.142549152716E-04  -.151630994328E-04  -.161298385333E-04  -.171589354034E-04
+  -.182544404518E-04  -.194206677522E-04  -.206622121687E-04  -.219839675864E-04  -.233911463173E-04
+  -.248892997576E-04  -.264843403742E-04  -.281825651068E-04  -.299906802733E-04  -.319158280768E-04
+  -.339656148119E-04  -.361481408815E-04  -.384720327353E-04  -.409464768529E-04  -.435812558999E-04
+  -.463867871929E-04  -.493741636189E-04  -.525551971624E-04  -.559424652033E-04  -.595493597589E-04
+  -.633901398516E-04  -.674799871989E-04  -.718350654298E-04  -.764725830466E-04  -.814108603629E-04
+  -.866694006623E-04  -.922689658382E-04  -.982316567873E-04  -.104580998849E-03  -.111342032598E-03
+  -.118541410310E-03  -.126207498457E-03  -.134370486580E-03  -.143062502931E-03  -.152317737297E-03
+  -.162172571418E-03  -.172665717465E-03  -.183838365057E-03  -.195734337304E-03  -.208400256429E-03
+  -.221885719513E-03  -.236243484964E-03  -.251529670323E-03  -.267803962068E-03  -.285129838100E-03
+  -.303574803640E-03  -.323210641291E-03  -.344113676076E-03  -.366365056271E-03  -.390051050939E-03
+  -.415263365070E-03  -.442099473296E-03  -.470662973201E-03  -.501063959273E-03  -.533419418624E-03
+  -.567853649606E-03  -.604498704550E-03  -.643494857881E-03  -.684991100905E-03  -.729145664640E-03
+  -.776126572096E-03  -.826112221479E-03  -.879292001813E-03  -.935866942584E-03  -.996050398993E-03
+  -.106006877451E-02  -.112816228242E-02  -.120058574819E-02  -.127760945438E-02  -.135952002996E-02
+  -.144662138604E-02  -.153923569969E-02  -.163770444806E-02  -.174238949449E-02  -.185367422883E-02
+  -.197196476371E-02  -.209769118885E-02  -.223130888538E-02  -.237329990186E-02  -.252417439411E-02
+  -.268447213049E-02  -.285476406427E-02  -.303565397484E-02  -.322778017906E-02  -.343181731416E-02
+  -.364847819316E-02  -.387851573387E-02  -.412272496194E-02  -.438194508841E-02  -.465706166164E-02
+  -.494900879337E-02  -.525877145797E-02  -.558738786364E-02  -.593595189361E-02  -.630561561495E-02
+  -.669759185176E-02  -.711315681877E-02  -.755365281070E-02  -.802049094143E-02  -.851515392653E-02
+  -.903919890089E-02  -.959426026278E-02  -.101820525334E-01  -.108043732203E-01  -.114631056710E-01
+  -.121602219014E-01  -.128977853819E-01  -.136779537620E-01  -.145029815117E-01  -.153752224563E-01
+  -.162971321775E-01  -.172712702531E-01  -.183003023012E-01  -.193870017956E-01  -.205342516131E-01
+  -.217450452710E-01  -.230224878088E-01  -.243697962648E-01  -.257902996938E-01  -.272874386674E-01
+  -.288647641945E-01  -.305259359947E-01  -.322747200519E-01  -.341149853699E-01  -.360506998488E-01
+  -.380859251916E-01  -.402248107488E-01  -.424715862004E-01  -.448305529696E-01  -.473060742583E-01
+  -.499025635849E-01  -.526244717049E-01  -.554762717828E-01  -.584624426843E-01  -.615874502485E-01
+  -.648557263988E-01  -.682716459433E-01  -.718395009169E-01  -.755634723093E-01  -.794475990276E-01
+  -.834957439357E-01  -.877115568190E-01  -.920984341201E-01  -.966594753010E-01  -.101397435685E+00
+  -.106314675651E+00  -.111413106042E+00  -.116694129691E+00  -.122158578946E+00  -.127806649124E+00
+  -.133637827802E+00  -.139650819919E+00  -.145843468624E+00  -.152212671869E+00  -.158754294736E+00
+  -.165463077504E+00  -.172332539485E+00  -.179354878656E+00  -.186520867151E+00  -.193819742660E+00
+  -.201239095858E+00  -.208764754003E+00  -.216380660953E+00  -.224068754007E+00  -.231808838183E+00
+  -.239578458923E+00  -.247352774701E+00  -.255104431738E+00  -.262803443932E+00  -.270417082304E+00
+  -.277909779489E+00  -.285243055812E+00  -.292375473379E+00  -.299262621885E+00  -.305857132353E+00
+  -.312108700555E+00  -.317964081005E+00  -.323366991509E+00  -.328257862320E+00  -.332573391282E+00
+  -.336245933981E+00  -.339202846653E+00  -.341365964104E+00  -.342651386442E+00  -.342969647620E+00
+  -.342226187351E+00  -.340321938987E+00  -.337153850317E+00  -.332615249521E+00  -.326596069998E+00
+  -.318982997231E+00  -.309659599289E+00  -.298506478860E+00  -.285401461366E+00  -.270219818938E+00
+  -.252834523455E+00  -.233116520853E+00  -.210935020787E+00  -.186157798852E+00  -.158651511825E+00
+  -.128282029310E+00  -.949147876852E-01  -.584151743313E-01  -.186489519831E-01   .245172652344E-01
+   .712154708464E-01   .121575645247E+00   .175725038559E+00   .233787339000E+00   .295881707164E+00
+   .362121655279E+00   .432613749428E+00   .507456111914E+00   .586736700416E+00   .670531340478E+00
+   .758901488024E+00   .851891699118E+00   .949526784875E+00   .105180863024E+01   .115871265627E+01
+   .127018390490E+01
+ End of Dataset
Index: examples/Vasp/Parallel/INCAR
===================================================================
--- examples/Vasp/Parallel/INCAR	(revision 0)
+++ examples/Vasp/Parallel/INCAR	(revision 1)
@@ -0,0 +1,24 @@
+Bulk de Pt fcc
+
+    PREC  =   NORMAL  # precision generale
+    GGA   =   PE      # choix de la fonctionnelle GGA=Perdew-Burke-Ernzerhof
+    LREAL =   Auto    # on verra
+    NELM  =   200     # nb max de cyles de minimisation elec au cours du SCF
+    EDIFF =   1e-4    # critere d'arret SCF sur l'energie elec totale
+    ALGO  =   FAST    # algo de minimisation elec=RMM-DIIS
+
+    IMAGES = 16        # nb images dans le NEB
+    SPRING = -5        # constante de force (inutile pour PATH)
+    LCLIMB = .FALSE.   # on n'optimize pas le TS en meme temps que le NEB
+
+
+
+    NSW   =   0      # nb max d'iteration d'opt geometrique
+    IBRION =  2       # algo d'opt geom = CG
+    EDIFFG =  -0.01   # critere d'arret sur les forces en eV/Ang
+    POTIM  =  0.5     # pas d'optim geom
+
+    ISMEAR =  2       # occup elec methode de Methfessel-Paxton
+    SIGMA  =  0.2     # largeur a mi-hauteur des gaussiennes
+ 
+    LWAVE = .FALSE.
Index: examples/Vasp/README
===================================================================
--- examples/Vasp/README	(revision 0)
+++ examples/Vasp/README	(revision 1)
@@ -0,0 +1,21 @@
+As VASP can perform NEB calculations, Path can use it in two ways: Serial or Parallel.
+
+** Serial
+In the Serial mode, Path uses Vasp to compute the energy and forces of each image separately (as it does for Gaussian for example).
+Therefore, the INCAR file should not contain any references to the number of images (no IMAGES command!).
+
+** Parallel
+In the Parallel mode, Path uses VASP to compute at once the energies and forces for all the images (as VASP does for a NEB calculation).
+Therefore, the INCAR file MUST contain the IMAGES command.
+More, the directories 00, 01, ... should exist.
+
+************* Home or Scracth ? *******
+On our local cluster, it is adviced to perform the calculations on the /scratch directory that is local rather than on the /home that is mounted 
+via NFS and is thus slow.
+However, when doing so, we sometimes had troubles with VASP, and discovered that all files should be copied on the /scratch of all machines.
+Therefore, the scripts are a bit tricky.
+In case your computer center is similar to ours, we provide 2 SGE scripts:
+run_Path_SGE_home: performs the VASP calculations in the /home directory
+run_Path_SGE_scratch: creates the directories, copies the files and performs the VASP calculations in the local /scratch directories.
+
+
Index: examples/Gaussian/HCN_zmat/HCN_Gaussian.path
===================================================================
--- examples/Gaussian/HCN_zmat/HCN_Gaussian.path	(revision 0)
+++ examples/Gaussian/HCN_zmat/HCN_Gaussian.path	(revision 1)
@@ -0,0 +1,48 @@
+ &path
+  nat=3, ! Number of atoms
+  ngeomi=3, ! Number of initial geometries
+  ngeomf=16,  !Number of geometries along the path
+  OptReac=.F., ! Do you want to optimize the reactants ?
+  OptProd=F,  ! Don't optimize the products
+  Align=T, ! Do not align the molecules when interpolating geometries
+  EReac=0.04937470, ! Energy of the reactant, because it is not calculated
+  EProd=0.07780150,  ! As we don't optimize products, we can give their energy
+  FFrozen=F,  ! Some atoms  are frozen. See FrozenList.
+  PathOnly=.F.,  ! do NOT stop after generating the first path
+  AutoCart=F, ! Determine automatically atom described in cartesian.
+  HesUpd="MS", ! Use Murtagh-Sargent update for the Hessian matrix
+  PathName="Test_Gaussian",  ! Geometries along the path store in 'Test_Gaussian.XXX'
+  prog="gaussian",  ! Use Gaussian to get E and forces.
+  ProgExe="g09", ! Use g09 for Gaussian executable
+  coord='zmat',  ! we use mixed coordinates
+  maxcyc=50, ! Launch 50 iterations
+  IReparam=5, ! re-distribution of points along the path every 5 iterations
+  ISpline=500, ! Start using spline interpolation at iteration   500 (ie no spline !)
+  SMax=0.02   ! Max displacement will be 0.02 a.u.
+/
+ 3
+HCN: E= 0.04937470
+ H     0.0000     0.0000     0.0340
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+ 3
+    TS
+ H     0.0000     1.1000     1.1030
+ C     0.0000     0.0000     1.1030
+ N     0.0000     0.0000     2.2631
+ 3
+ Energy :      0.07780150
+ H     0.000000     0.000000     2.187629
+ C     0.000000     0.000000     0.04206
+ N     0.000000     0.000000     1.220411
+%chk=Test
+#P  AM1 FORCE
+
+ HCN in AM1. Test Case
+
+0,1
+H 0.000000    0.000000    0.000000
+C 0.000000    0.000000    1.000
+N 0.000000    0.000000    3.00
+
+
Index: examples/Gaussian/HCN_zmat/run_Path
===================================================================
--- examples/Gaussian/HCN_zmat/run_Path	(revision 0)
+++ examples/Gaussian/HCN_zmat/run_Path	(revision 1)
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=HCN_Gaussian
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### Gaussian Stuff
+# Change the path for g09root !!!
+export g09root=/home/pfleura2/G09
+export  GAUSS_SCRDIR=/tmp
+source $g09root/g09/bsd/g09.profile
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+#
+# Some libraries...
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+

Property changes on: examples/Gaussian/HCN_zmat/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Gaussian/HCN_zmat/run_Path_PBS
===================================================================
--- examples/Gaussian/HCN_zmat/run_Path_PBS	(revision 0)
+++ examples/Gaussian/HCN_zmat/run_Path_PBS	(revision 1)
@@ -0,0 +1,57 @@
+#PBS -S /bin/bash
+#PBS -N PathIsGreat
+#PBS -l walltime=12:00:00
+#PBS -l nodes=1:OneS
+#PBS -q OneS
+#PBS -j oe
+#PBS -M pfleura2@ens-lyon.fr
+#PBS -m aeb
+
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=HCN_Gaussian
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Carte/src/Path.exe
+#
+### Gaussian Stuff
+# Change the path for g09root !!!
+export g09root=/home/pfleura2/G09
+export  GAUSS_SCRDIR=/tmp
+source $g09root/g09/bsd/g09.profile
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+#
+# Some libraries...
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+cd $PBS_O_WORKDIR
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+
Index: examples/Gaussian/SN2_mixed/run_Path
===================================================================
--- examples/Gaussian/SN2_mixed/run_Path	(revision 0)
+++ examples/Gaussian/SN2_mixed/run_Path	(revision 1)
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=SN2_mixed
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### Gaussian Stuff
+# Change the path for g09root !!!
+export g09root=/home/pfleura2/G09
+export  GAUSS_SCRDIR=/tmp
+source $g09root/g09/bsd/g09.profile
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+#
+# Some libraries...
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+

Property changes on: examples/Gaussian/SN2_mixed/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Gaussian/SN2_mixed/SN2_mixed.path
===================================================================
--- examples/Gaussian/SN2_mixed/SN2_mixed.path	(revision 0)
+++ examples/Gaussian/SN2_mixed/SN2_mixed.path	(revision 1)
@@ -0,0 +1,52 @@
+ &path
+  nat=6, ! Number of atoms
+  ngeomi=2, ! Number of initial geometries
+  ngeomf=18,  !Number of geometries along the path
+  OptReac=.F., ! Do you want to optimize the reactants ?
+  OptProd=F,  ! Don't optimize the products
+  Align=T, ! Do not align the molecules when interpolating geometries
+  EReac=-954.044825716, ! Energy of the reactant, because it is not calculated
+  EProd=-954.044825716,  ! As we don't optimize products, we can give their energy
+  FFrozen=F,  ! Some atoms  are frozen. See FrozenList.
+  PathOnly=.F.,  ! do NOT stop after generating the first path
+  AutoCart=T, ! Determine automatically atom described in cartesian.
+  HesUpd="MS", ! Use Murtagh-Sargent update for the Hessian matrix
+  PathName="Test_Gaussian",  ! Geometries along the path store in 'Test_Gaussian.XXX'
+  prog="gaussian",  ! Use Gaussian to get E and forces.
+  ProgExe="g09", ! Use g09 for Gaussian executable
+  coord='mixed',  ! we use mixed coordinates
+  maxcyc=51, ! Launch 50 iterations
+  IReparam=5, ! re-distribution of points along the path every 5 iterations
+  ISpline=500, ! Start using spline interpolation at iteration   500 (ie no spline !)
+  SMax=0.05   ! Max displacement will be 0.05 a.u.
+/
+  6
+   Cl- + H3CCl
+   C  0.0 0.0 0.0
+   Cl  1.791689 0.0 0.0
+   H  -0.358375 1.037571 0.0
+   H  -0.356525 -0.518921 -0.898137
+   H  -0.360734 -0.518109 0.897921
+   Cl  -6.0         0.001             0.
+    6 
+     ClCH3 + Cl-
+  C           0.0     0.0     0.0
+  Cl          6.0         0.001             0.
+  H           0.358375       1.037571        0.0
+  H           0.356525       -0.518921       -0.898137
+  H           0.360734       -0.518109       0.897921
+  Cl          -1.791689        0.0     0.0
+%chk=Test
+#P  HF/3-21G FORCE
+
+ SN2 Reaction
+
+-1,1
+  C  0.0 0.0 0.0
+  Cl  1.791689 0.0 0.0
+  H  -0.358375 1.037571 0.0
+  H  -0.356525 -0.518921 -0.898137
+  H  -0.360734 -0.518109 0.897921
+  Cl  -6.0         0.                0.
+
+
Index: examples/Gaussian/SN2_cart/SN2_cart.path
===================================================================
--- examples/Gaussian/SN2_cart/SN2_cart.path	(revision 0)
+++ examples/Gaussian/SN2_cart/SN2_cart.path	(revision 1)
@@ -0,0 +1,52 @@
+ &path
+  nat=6, ! Number of atoms
+  ngeomi=2, ! Number of initial geometries
+  ngeomf=18,  !Number of geometries along the path
+  OptReac=.F., ! Do you want to optimize the reactants ?
+  OptProd=F,  ! Don't optimize the products
+  Align=T, ! Do not align the molecules when interpolating geometries
+  EReac=-0.21076866, ! Energy of the reactant, because it is not calculated
+  EProd=-0.21076866,  ! As we don't optimize products, we can give their energy
+  FFrozen=F,  ! Some atoms  are frozen. See FrozenList.
+  PathOnly=.F.,  ! do NOT stop after generating the first path
+  AutoCart=T, ! Determine automatically atom described in cartesian.
+  HesUpd="MS", ! Use Murtagh-Sargent update for the Hessian matrix
+  PathName="Test_Gaussian",  ! Geometries along the path store in 'Test_Gaussian.XXX'
+  prog="gaussian",  ! Use Gaussian to get E and forces.
+  ProgExe="g09", ! Use g09 for Gaussian executable
+  coord='cart',  ! we use mixed coordinates
+  maxcyc=51, ! Launch 50 iterations
+  IReparam=5, ! re-distribution of points along the path every 5 iterations
+  ISpline=500, ! Start using spline interpolation at iteration   500 (ie no spline !)
+  SMax=0.05   ! Max displacement will be 0.02 a.u.
+/
+  6
+   Cl- + H3CCl
+   C  0.0 0.0 0.0
+   Cl  1.791689 0.0 0.0
+   H  -0.358375 1.037571 0.0
+   H  -0.356525 -0.518921 -0.898137
+   H  -0.360734 -0.518109 0.897921
+   Cl  -6.0         0.001             0.
+    6 
+     ClCH3 + Cl-
+  C           0.0     0.0     0.0
+  Cl          6.0         0.001             0.
+  H           0.358375       1.037571        0.0
+  H           0.356525       -0.518921       -0.898137
+  H           0.360734       -0.518109       0.897921
+  Cl          -1.791689        0.0     0.0
+%chk=Test
+#P  HF/3-21G FORCE
+
+ SN2 Reaction
+
+-1,1
+  C  0.0 0.0 0.0
+  Cl  1.791689 0.0 0.0
+  H  -0.358375 1.037571 0.0
+  H  -0.356525 -0.518921 -0.898137
+  H  -0.360734 -0.518109 0.897921
+  Cl  -6.0         0.                0.
+
+
Index: examples/Gaussian/SN2_cart/run_Path
===================================================================
--- examples/Gaussian/SN2_cart/run_Path	(revision 0)
+++ examples/Gaussian/SN2_cart/run_Path	(revision 1)
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=SN2_cart
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### Gaussian Stuff
+# Change the path for g09root !!!
+export g09root=/home/pfleura2/G09
+export  GAUSS_SCRDIR=/tmp
+source $g09root/g09/bsd/g09.profile
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+#
+# Some libraries...
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path > ${Job}.out 2> ${Job}.err
+
+
+

Property changes on: examples/Gaussian/SN2_cart/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/Gaussian/SN2_zmat/SN2_zmat.path
===================================================================
--- examples/Gaussian/SN2_zmat/SN2_zmat.path	(revision 0)
+++ examples/Gaussian/SN2_zmat/SN2_zmat.path	(revision 1)
@@ -0,0 +1,52 @@
+ &path
+  nat=6, ! Number of atoms
+  ngeomi=2, ! Number of initial geometries
+  ngeomf=18,  !Number of geometries along the path
+  OptReac=.F., ! Do you want to optimize the reactants ?
+  OptProd=F,  ! Don't optimize the products
+  Align=T, ! Do not align the molecules when interpolating geometries
+  EReac=-0.21076866, ! Energy of the reactant, because it is not calculated
+  EProd=-0.21076866,  ! As we don't optimize products, we can give their energy
+  FFrozen=F,  ! Some atoms  are frozen. See FrozenList.
+  PathOnly=.F.,  ! do NOT stop after generating the first path
+  AutoCart=T, ! Determine automatically atom described in cartesian.
+  HesUpd="MS", ! Use Murtagh-Sargent update for the Hessian matrix
+  PathName="Test_Gaussian",  ! Geometries along the path store in 'Test_Gaussian.XXX'
+  prog="gaussian",  ! Use Gaussian to get E and forces.
+  ProgExe="g09", ! Use g09 for Gaussian executable
+  coord='zmat',  ! we use mixed coordinates
+  maxcyc=51, ! Launch 50 iterations
+  IReparam=5, ! re-distribution of points along the path every 5 iterations
+  ISpline=500, ! Start using spline interpolation at iteration   500 (ie no spline !)
+  SMax=0.02   ! Max displacement will be 0.02 a.u.
+/
+  6
+   Cl- + H3CCl
+   C  0.0 0.0 0.0
+   Cl  1.791689 0.0 0.0
+   H  -0.358375 1.037571 0.0
+   H  -0.356525 -0.518921 -0.898137
+   H  -0.360734 -0.518109 0.897921
+   Cl  -6.0         0.001             0.
+    6 
+     ClCH3 + Cl-
+  C           0.0     0.0     0.0
+  Cl          6.0         0.001             0.
+  H           0.358375       1.037571        0.0
+  H           0.356525       -0.518921       -0.898137
+  H           0.360734       -0.518109       0.897921
+  Cl          -1.791689        0.0     0.0
+%chk=Test
+#P  HF/3-21G FORCE
+
+ SN2 Reaction
+
+-1,1
+  C  0.0 0.0 0.0
+  Cl  1.791689 0.0 0.0
+  H  -0.358375 1.037571 0.0
+  H  -0.356525 -0.518921 -0.898137
+  H  -0.360734 -0.518109 0.897921
+  Cl  -6.0         0.                0.
+
+
Index: examples/Gaussian/SN2_zmat/run_Path
===================================================================
--- examples/Gaussian/SN2_zmat/run_Path	(revision 0)
+++ examples/Gaussian/SN2_zmat/run_Path	(revision 1)
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+######################################
+#
+# you might have to change the following variables
+#
+######################################
+#
+# Name of the input file
+#
+Job=SN2_zmat
+#
+# Where is Path.exe ??
+#
+PathExe=~/Programs/Chemin/OpenPath/src/Path.exe
+#
+### Gaussian Stuff
+# Change the path for g09root !!!
+export g09root=/home/pfleura2/G09
+export  GAUSS_SCRDIR=/tmp
+source $g09root/g09/bsd/g09.profile
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/
+#
+# Some libraries...
+#
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib:/usr/lib:/opt/intel/mkl/8.1/lib/32
+export PATH=/opt/intel/fc/9.1.037/bin/:/opt/intel/cc/9.1.045/bin/:$PATH:$HOME/bin:/usr/local/mpich-intel9/bin
+export LD_RUN_PATH=$LD_RUN_PATH:/opt/intel/fc/9.1.037/lib/:/opt/intel/cc/9.1.045/lib
+export MANPATH=$MANPATH:/opt/intel/fc/9.1.037/man/:/opt/intel/cc/9.1.045/man
+export LANG=C
+#
+#Usually nothing has to be changed after this line
+#
+#################################################
+
+###############################
+#
+# We launch PATH
+#
+###############################
+ln -fs ${PathExe} .
+
+./Path.exe ${Job}.path &> ${Job}.out
+
+
+

Property changes on: examples/Gaussian/SN2_zmat/run_Path
___________________________________________________________________
Added: svn:executable
   + 

Index: examples/README
===================================================================
--- examples/README	(revision 0)
+++ examples/README	(revision 1)
@@ -0,0 +1,10 @@
+This directory contains some examples for different programs.
+The names of the directory should be the name that is used for the PROG variable in the
+Path input file.
+In each directory, you will find different examples. You might also find a README file to
+explain a bit more about a specific example. 
+For each example, you should find at least: an input file, and a script to launch Path on this input file.
+You might find 3 types of script to launch path, they are all named 'run_Path_XXX':
+** run_Path: allows to run Path interactively, without any queuing system.
+** run_Path_PBS: if present, allows to run Path via the PBS queuing system.
+** run_Path_SGE: if present, allows to run Path via the SGE queuing system.
