anchor.diff:  
   !
   !
  -!PROCEDURE mqc_get_command_argument
  -      Subroutine mqc_get_command_argument(argNum,argument)
  -!
  -!     This subroutine is used to dynamically allocate command line arguments.
  -!     <argument> should be passed as deferred length allocatable character.  
  -!     
  -!     -L. M. Thompson, 2017.
  -!
  -!
  -      implicit none
  -      character(len=:),allocatable::argument
  -      integer,intent(in)::argNum
  -      integer::argLen
  -!
  -!     Do the work...
  -!
  -      call get_command_argument(argNum,length=argLen)
  -      allocate(character(len=argLen)::argument)
  -      call get_command_argument(argNum,argument)
  -!
  -      Return
  -      End Subroutine mqc_get_command_argument
  +!----------------------------------------------------------------
  +!                                                               |
  +!     Other                                                     |
  +!                                                               |
  +!----------------------------------------------------------------
  +!
  +
   !
   !
         End Module MQC_General
  
positive.code: 
  
  !
  !PROCEDURE MQC_Print_Scalar_Integer
        Subroutine MQC_Print_Scalar_Integer(iOut,scalar,Header,Blank_At_Top, &
          Blank_At_Bottom,formatString)
  !
  !     This subroutine is used to print an integer scalar.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::iOut
        Integer,Intent(In)::scalar
        Character(Len=*),Intent(In),optional::Header,formatString
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        character(len=256)::lineToPrint
  !
        if(PRESENT(Blank_At_Top)) then
          if(Blank_At_Top) write(iOut,*)
        endIf
        if(PRESENT(header)) then
          lineToPrint = TRIM(header)
        else
          lineToPrint = ' '
        endIf
        if(PRESENT(formatString)) then
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar,formatString))
        else
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar))
        endIf
        lineToPrint = ADJUSTL(lineToPrint)
        write(iOut,'(A)') TRIM(lineToPrint)
        if(PRESENT(Blank_At_Bottom)) then
          if(Blank_At_Bottom) write(iOut,*)
        endIf
  !
        return
        end subroutine MQC_Print_Scalar_Integer
  
  
  !
  !PROCEDURE MQC_Print_Scalar_Real
        Subroutine MQC_Print_Scalar_Real(iOut,scalar,Header,Blank_At_Top, &
          Blank_At_Bottom,formatString)
  !
  !     This subroutine is used to print an real scalar.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::iOut
        Real,Intent(In)::scalar
        Character(Len=*),Intent(In),optional::Header,formatString
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        character(len=256)::lineToPrint
  !
        if(PRESENT(Blank_At_Top)) then
          if(Blank_At_Top) write(iOut,*)
        endIf
        if(PRESENT(header)) then
          lineToPrint = TRIM(header)
        else
          lineToPrint = ' '
        endIf
        if(PRESENT(formatString)) then
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar,formatString))
        else
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar))
        endIf
        lineToPrint = ADJUSTL(lineToPrint)
        write(iOut,'(A)') TRIM(lineToPrint)
        if(PRESENT(Blank_At_Bottom)) then
          if(Blank_At_Bottom) write(iOut,*)
        endIf
  !
        return
        end subroutine MQC_Print_Scalar_Real
  
  
  !
  !PROCEDURE MQC_Print_Matrix_Array_Integer
        Subroutine MQC_Print_Matrix_Array_Integer(IOut,Array,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print an integer Matrix array variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Integer,dimension(:,:),Intent(In)::Array
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,J,NCols,NRows,IFirst,ILast
        Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  !
  !
   1000 Format(1x,A)
   1001 Format(5x,10(7x,I7))
   2001 Format(1x,I7,10I14)
  
        NRows = Size(Array,1)
        NCols = Size(Array,2)
  
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
  
        Do IFirst = 1,NCols,ColWidth
          ILast = Min(IFirst+ColWidth-1,NCols)
          Write(IOut,1001) (I,I=IFirst,ILast)
          Do I = 1,NRows
            Write(IOut,2001) I, (Array(I,J),J=IFirst,ILast)
          EndDo
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
      End Subroutine MQC_Print_Matrix_Array_Integer
  
  
  !PROCEDURE MQC_Print_Matrix_Array_Real
        Subroutine MQC_Print_Matrix_Array_Real(IOut,Array,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a real Matrix array variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Real,dimension(:,:),Intent(In)::Array
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,J,NCols,NRows,IFirst,ILast
        Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  !
   1000 Format(1x,A)
   1001 Format(5x,10(7x,I7))
   2002 Format(1x,I7,10F14.6)
  !
        NRows = Size(Array,1)
        NCols = Size(Array,2)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
  
        Do IFirst = 1,NCols,ColWidth
          ILast = Min(IFirst+ColWidth-1,NCols)
          Write(IOut,1001) (I,I=IFirst,ILast)
          do I = 1,NRows
            Write(IOut,2002) I, (Array(I,J),J=IFirst,ILast)
          enddo
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Matrix_Array_Real
  
  
  !PROCEDURE MQC_Print_Vector_Array_Integer
        subroutine MQC_Print_Vector_Array_Integer(IOut,Vector,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a Vector array type variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        implicit none
        integer,Intent(In)::IOut
        integer,Dimension(:),Intent(In)::Vector
        character(Len=*),Intent(In),Optional::Header
        logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        integer::I,Length
  !
   1000 Format(1x,A)
   1001 Format(1x,I7,2x,I14)
   1002 Format(1x,I7,2X,F14.6)
   1003 Format(1x,I7,2x,A)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        if(Present(Header)) Write(IOut,1000) TRIM(Header)
        Length = Size(Vector)
        Do I = 1, Length
          Write(IOut,1001) I, Vector(I)
        EndDo
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Vector_Array_Integer
  
  
  !PROCEDURE MQC_Print_Vector_Array_Real
        Subroutine MQC_Print_Vector_Array_Real(IOut,Vector,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a Vector array type variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Real,Dimension(:),Intent(In)::Vector
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,Length
  !
   1000 Format(1x,A)
   1002 Format(1x,I7,2X,F14.6)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
        Length = Size(Vector)
        Do I = 1, Length
          Write(IOut,1002) I, Vector(I)
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Vector_Array_Real
  
  
  !
  !PROCEDURE mqc_packedDiagonalMatrix2FullMatrix_integer
        Subroutine mqc_packedDiagonalMatrix2FullMatrix_integer(matrixDiagonal,  &
  
negative.code:       Return
        End Subroutine MQC_Error
  
  
  !
  !PROCEDURE mqc_get_command_argument
        Subroutine mqc_get_command_argument(argNum,argument)
  !
  !     This subroutine is used to dynamically allocate command line arguments.
  !     <argument> should be passed as deferred length allocatable character.  
  !     
  !     -L. M. Thompson, 2017.
  !
  !
        implicit none
        character(len=:),allocatable::argument
        integer,intent(in)::argNum
        integer::argLen
  !
  !     Do the work...
  !
        call get_command_argument(argNum,length=argLen)
        allocate(character(len=argLen)::argument)
        call get_command_argument(argNum,argument)
  !
        Return
        End Subroutine mqc_get_command_argument
  
  !
  !----------------------------------------------------------------
  !                                                               |
  !     Printing                                                  |
  !                                                               |
  !----------------------------------------------------------------
  !
  !
  !PROCEDURE MQC_Print_Scalar_Integer
        Subroutine MQC_Print_Scalar_Integer(iOut,scalar,Header,Blank_At_Top, &
          Blank_At_Bottom,formatString)
  !
  !     This subroutine is used to print an integer scalar.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::iOut
        Integer,Intent(In)::scalar
        Character(Len=*),Intent(In),optional::Header,formatString
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        character(len=256)::lineToPrint
  !
        if(PRESENT(Blank_At_Top)) then
          if(Blank_At_Top) write(iOut,*)
        endIf
        if(PRESENT(header)) then
          lineToPrint = TRIM(header)
        else
          lineToPrint = ' '
        endIf
        if(PRESENT(formatString)) then
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar,formatString))
        else
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar))
        endIf
        lineToPrint = ADJUSTL(lineToPrint)
        write(iOut,'(A)') TRIM(lineToPrint)
        if(PRESENT(Blank_At_Bottom)) then
          if(Blank_At_Bottom) write(iOut,*)
        endIf
  !
        return
        end subroutine MQC_Print_Scalar_Integer
  
  
  !
  !PROCEDURE MQC_Print_Scalar_Real
        Subroutine MQC_Print_Scalar_Real(iOut,scalar,Header,Blank_At_Top, &
          Blank_At_Bottom,formatString)
  !
  !     This subroutine is used to print an real scalar.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::iOut
        Real,Intent(In)::scalar
        Character(Len=*),Intent(In),optional::Header,formatString
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        character(len=256)::lineToPrint
  !
        if(PRESENT(Blank_At_Top)) then
          if(Blank_At_Top) write(iOut,*)
        endIf
        if(PRESENT(header)) then
          lineToPrint = TRIM(header)
        else
          lineToPrint = ' '
        endIf
        if(PRESENT(formatString)) then
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar,formatString))
        else
          lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar))
        endIf
        lineToPrint = ADJUSTL(lineToPrint)
        write(iOut,'(A)') TRIM(lineToPrint)
        if(PRESENT(Blank_At_Bottom)) then
          if(Blank_At_Bottom) write(iOut,*)
        endIf
  !
        return
        end subroutine MQC_Print_Scalar_Real
  
  
  !
  !PROCEDURE MQC_Print_Matrix_Array_Integer
        Subroutine MQC_Print_Matrix_Array_Integer(IOut,Array,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print an integer Matrix array variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Integer,dimension(:,:),Intent(In)::Array
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,J,NCols,NRows,IFirst,ILast
        Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  !
  !
   1000 Format(1x,A)
   1001 Format(5x,10(7x,I7))
   2001 Format(1x,I7,10I14)
  
        NRows = Size(Array,1)
        NCols = Size(Array,2)
  
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
  
        Do IFirst = 1,NCols,ColWidth
          ILast = Min(IFirst+ColWidth-1,NCols)
          Write(IOut,1001) (I,I=IFirst,ILast)
          Do I = 1,NRows
            Write(IOut,2001) I, (Array(I,J),J=IFirst,ILast)
          EndDo
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
      End Subroutine MQC_Print_Matrix_Array_Integer
  
  
  !PROCEDURE MQC_Print_Matrix_Array_Real
        Subroutine MQC_Print_Matrix_Array_Real(IOut,Array,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a real Matrix array variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Real,dimension(:,:),Intent(In)::Array
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,J,NCols,NRows,IFirst,ILast
        Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  !
   1000 Format(1x,A)
   1001 Format(5x,10(7x,I7))
   2002 Format(1x,I7,10F14.6)
  !
        NRows = Size(Array,1)
        NCols = Size(Array,2)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
  
        Do IFirst = 1,NCols,ColWidth
          ILast = Min(IFirst+ColWidth-1,NCols)
          Write(IOut,1001) (I,I=IFirst,ILast)
          do I = 1,NRows
            Write(IOut,2002) I, (Array(I,J),J=IFirst,ILast)
          enddo
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Matrix_Array_Real
  
  
  !PROCEDURE MQC_Print_Vector_Array_Integer
        subroutine MQC_Print_Vector_Array_Integer(IOut,Vector,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a Vector array type variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        implicit none
        integer,Intent(In)::IOut
        integer,Dimension(:),Intent(In)::Vector
        character(Len=*),Intent(In),Optional::Header
        logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        integer::I,Length
  !
   1000 Format(1x,A)
   1001 Format(1x,I7,2x,I14)
   1002 Format(1x,I7,2X,F14.6)
   1003 Format(1x,I7,2x,A)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        if(Present(Header)) Write(IOut,1000) TRIM(Header)
        Length = Size(Vector)
        Do I = 1, Length
          Write(IOut,1001) I, Vector(I)
        EndDo
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Vector_Array_Integer
  
  
  !PROCEDURE MQC_Print_Vector_Array_Real
        Subroutine MQC_Print_Vector_Array_Real(IOut,Vector,Header,Blank_At_Top, &
          Blank_At_Bottom)
  !
  !     This subroutine is used to print a Vector array type variable.
  !
  !     L. M. Thompson, 2016.
  !     H. P. Hratchian, 2017.
  !
  !
  !     Variable Declarations.
        Implicit None
        Integer,Intent(In)::IOut
        Real,Dimension(:),Intent(In)::Vector
        Character(Len=*),Intent(In),Optional::Header
        Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
        Integer::I,Length
  !
   1000 Format(1x,A)
   1002 Format(1x,I7,2X,F14.6)
  !
        If(PRESENT(Blank_At_Top)) then
          If(Blank_At_Top) Write(IOut,*)
        EndIf
        Write(IOut,1000) TRIM(Header)
        Length = Size(Vector)
        Do I = 1, Length
          Write(IOut,1002) I, Vector(I)
        EndDo
  
        If(PRESENT(Blank_At_Bottom)) then
          If(Blank_At_Bottom) Write(IOut,*)
        EndIf
  !
        Return
        End Subroutine MQC_Print_Vector_Array_Real
  
  
  !
  !----------------------------------------------------------------
  !                                                               |
  !     Character Conversion and Manipulation                     |
  !                                                               |
  !----------------------------------------------------------------
  !
  !
  !PROCEDURE String_Change_Case
        Subroutine String_Change_Case(string,upperlower,stringOut)
  